diff --git a/src/serving/semantic_layer/query/engine.py b/src/serving/semantic_layer/query/engine.py index 10efc3f..336d994 100644 --- a/src/serving/semantic_layer/query/engine.py +++ b/src/serving/semantic_layer/query/engine.py @@ -222,7 +222,7 @@ def render(value: str) -> str: sql = f"{sql} WHERE {' AND '.join(where_clauses)}" order_column = time_column or "event_id" if newest_first: - sql = f"{sql} ORDER BY {order_column} DESC" + sql = f"{sql} ORDER BY {order_column} DESC, event_id DESC" else: sql = f"{sql} ORDER BY {order_column} ASC, event_id ASC" if limit is not None: diff --git a/tests/unit/test_pipeline_events_scan.py b/tests/unit/test_pipeline_events_scan.py index 86b2fc9..49edba9 100644 --- a/tests/unit/test_pipeline_events_scan.py +++ b/tests/unit/test_pipeline_events_scan.py @@ -84,7 +84,7 @@ def test_family_filters_and_limit_are_static_sql() -> None: ((sql, _),) = backend.calls assert "topic = 'events.validated'" in sql assert "event_type IN ('click', 'page_view', 'add_to_cart')" in sql - assert sql.endswith("ORDER BY processed_at DESC LIMIT 10") + assert sql.endswith("ORDER BY processed_at DESC, event_id DESC LIMIT 10") def test_missing_journal_returns_empty_without_query() -> None: