From 7ef831dfa8f063fb41fc0e9ec7944f578f4b56ea Mon Sep 17 00:00:00 2001 From: Alex Petenchea Date: Mon, 23 Mar 2026 13:05:02 +0800 Subject: [PATCH] Adding support for slowStreamingQueryThreshold property of "/_api/query/properties" and for the exitCode property of "_api/query/slow" --- arango/aql.py | 6 ++++++ arango/formatter.py | 4 ++++ tests/test_aql.py | 2 ++ 3 files changed, 12 insertions(+) diff --git a/arango/aql.py b/arango/aql.py index fdf92f84..b71dc88d 100644 --- a/arango/aql.py +++ b/arango/aql.py @@ -579,6 +579,7 @@ def set_tracking( enabled: Optional[bool] = None, max_slow_queries: Optional[int] = None, slow_query_threshold: Optional[int] = None, + slow_streaming_query_threshold: Optional[int] = None, max_query_string_length: Optional[int] = None, track_bind_vars: Optional[bool] = None, track_slow_queries: Optional[bool] = None, @@ -593,6 +594,9 @@ def set_tracking( :param slow_query_threshold: Runtime threshold (in seconds) for treating a query as slow. :type slow_query_threshold: int + :param slow_streaming_query_threshold: Runtime threshold (in seconds) for + treating a streaming query as slow. + :type slow_query_threshold: int :param max_query_string_length: Max query string length (in bytes) tracked. :type max_query_string_length: int :param track_bind_vars: If set to True, track bind variables used in queries. @@ -614,6 +618,8 @@ def set_tracking( data["maxQueryStringLength"] = max_query_string_length if slow_query_threshold is not None: data["slowQueryThreshold"] = slow_query_threshold + if slow_streaming_query_threshold is not None: + data["slowStreamingQueryThreshold"] = slow_streaming_query_threshold if track_bind_vars is not None: data["trackBindVars"] = track_bind_vars if track_slow_queries is not None: diff --git a/arango/formatter.py b/arango/formatter.py index eeb50e77..71686b4f 100644 --- a/arango/formatter.py +++ b/arango/formatter.py @@ -375,6 +375,10 @@ def format_aql_query(body: Json) -> Json: result["modification_query"] = body["modificationQuery"] if "warnings" in body: result["warnings"] = body["warnings"] + + if "exitCode" in body: + result["exit_code"] = body["exitCode"] + return verify_format(body, result) diff --git a/tests/test_aql.py b/tests/test_aql.py index b2defa01..61d07d8c 100644 --- a/tests/test_aql.py +++ b/tests/test_aql.py @@ -169,6 +169,7 @@ def test_aql_query_management(db_version, db, sys_db, bad_db, col, docs): max_query_string_length=4000, max_slow_queries=60, slow_query_threshold=15, + slow_streaming_query_threshold=20, track_bind_vars=not tracking["track_bind_vars"], track_slow_queries=not tracking["track_slow_queries"], ) @@ -176,6 +177,7 @@ def test_aql_query_management(db_version, db, sys_db, bad_db, col, docs): assert new_tracking["max_query_string_length"] == 4000 assert new_tracking["max_slow_queries"] == 60 assert new_tracking["slow_query_threshold"] == 15 + assert new_tracking["slow_streaming_query_threshold"] == 20 assert new_tracking["track_bind_vars"] != tracking["track_bind_vars"] assert new_tracking["track_slow_queries"] != tracking["track_slow_queries"]