From 61c22c2722ddcc36af13f2538192f62ddc28aa97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artur=20Zaw=C5=82ocki?= Date: Mon, 20 Jul 2026 11:54:33 +0200 Subject: [PATCH 1/3] Adjust assertions in test_select_query_stats() --- tests/integration/test_dbapi_integration.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/integration/test_dbapi_integration.py b/tests/integration/test_dbapi_integration.py index 35ef0b30..ebc7310b 100644 --- a/tests/integration/test_dbapi_integration.py +++ b/tests/integration/test_dbapi_integration.py @@ -1306,7 +1306,6 @@ def test_select_query_stats(trino_connection): completed_splits = cur.stats["completedSplits"] cpu_time_millis = cur.stats["cpuTimeMillis"] processed_bytes = cur.stats["processedBytes"] - processed_rows = cur.stats["processedRows"] wall_time_millis = cur.stats["wallTimeMillis"] while cur.fetchone() is not None: @@ -1314,14 +1313,17 @@ def test_select_query_stats(trino_connection): assert completed_splits <= cur.stats["completedSplits"] assert cpu_time_millis <= cur.stats["cpuTimeMillis"] assert processed_bytes <= cur.stats["processedBytes"] - assert processed_rows <= cur.stats["processedRows"] assert wall_time_millis <= cur.stats["wallTimeMillis"] + # No similar assertion for "processedRows" as it may decrease across responses. + # For example, when multiple Trino workers execute a LIMIT query, tasks for some workers + # may be cancelled once the row count reaches the limit, which can cause processedRows. + # to decrease in a subsequent response (it's an aggregation over active tasks). + assert "processedRows" in cur.stats query_id = cur.stats["queryId"] completed_splits = cur.stats["completedSplits"] cpu_time_millis = cur.stats["cpuTimeMillis"] processed_bytes = cur.stats["processedBytes"] - processed_rows = cur.stats["processedRows"] wall_time_millis = cur.stats["wallTimeMillis"] From d7f94b7a25f8a48b4fd856f1a77561ffe699204b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artur=20Zaw=C5=82ocki?= Date: Wed, 29 Jul 2026 16:12:44 +0200 Subject: [PATCH 2/3] Adjust getting query tags in dbapi tests to changes in Trino 483 API --- tests/integration/test_dbapi_integration.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tests/integration/test_dbapi_integration.py b/tests/integration/test_dbapi_integration.py index ebc7310b..00afc8ad 100644 --- a/tests/integration/test_dbapi_integration.py +++ b/tests/integration/test_dbapi_integration.py @@ -1535,11 +1535,20 @@ def retrieve_client_tags_from_query(run_trino, client_tags): cur.fetchall() api_url = "http://" + trino_connection.host + ":" + str(trino_connection.port) - query_info = requests.post(api_url + "/ui/login", data={ - "username": "admin", - "password": "", - "redirectPath": api_url + '/ui/api/query/' + cur._query.query_id - }).json() + + if trino_version() >= 483: + session = requests.Session() + resp = session.post(api_url + "/ui/auth/login", json={ + "username": "admin", "password": "" + }) + assert resp.ok, f"POST request to /ui/auth/login failed: {resp.status_code} {resp.reason}" + query_info = session.get(api_url + "/ui/api/query/" + cur._query.query_id).json() + else: + query_info = requests.post(api_url + "/ui/login", data={ + "username": "admin", + "password": "", + "redirectPath": api_url + '/ui/api/query/' + cur._query.query_id + }).json() query_client_tags = query_info['session']['clientTags'] return query_client_tags From 3968a9f471438365c89a4b2c2cf03238e87eae0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artur=20Zaw=C5=82ocki?= Date: Wed, 29 Jul 2026 16:13:59 +0200 Subject: [PATCH 3/3] Print Trino image tags and digest on dev server startup --- tests/development_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/development_server.py b/tests/development_server.py index 27bd3795..e404b015 100644 --- a/tests/development_server.py +++ b/tests/development_server.py @@ -123,6 +123,9 @@ def start_development_server(port=None, trino_version=TRINO_VERSION): # Wait for logs indicating the service has started wait_for_logs(trino, "SERVER STARTED", timeout=60) + if (wrapped := trino.get_wrapped_container()) and (image := wrapped.image): + print(f"Trino image tags: {image.tags}, digest: {image.id}") + # Otherwise some tests fail with No nodes available time.sleep(2)