@@ -144,6 +144,36 @@ def response_handler(resp: Response) -> bool:
144
144
145
145
return self ._execute (request , response_handler )
146
146
147
+ def plan_entries (self ) -> Result [Jsons ]:
148
+ """Return a list of all AQL query plan cache entries.
149
+
150
+ :return: List of AQL query plan cache entries.
151
+ :rtype: list
152
+ :raise arango.exceptions.AQLCacheEntriesError: If retrieval fails.
153
+ """
154
+ request = Request (method = "get" , endpoint = "/_api/query-plan-cache" )
155
+
156
+ def response_handler (resp : Response ) -> Jsons :
157
+ if not resp .is_success :
158
+ raise AQLCacheEntriesError (resp , request )
159
+ result : Jsons = resp .body
160
+ return result
161
+
162
+ return self ._execute (request , response_handler )
163
+
164
+ def clear_plan (self ) -> Result [None ]:
165
+ """Clear the AQL query plan cache.
166
+
167
+ :raises arango.exceptions.AQLCacheClearError: If clearing the cache fails.
168
+ """
169
+ request = Request (method = "delete" , endpoint = "/_api/query-plan-cache" )
170
+
171
+ def response_handler (resp : Response ) -> None :
172
+ if not resp .is_success :
173
+ raise AQLCacheClearError (resp , request )
174
+
175
+ return self ._execute (request , response_handler )
176
+
147
177
148
178
class AQL (ApiGroup ):
149
179
"""AQL (ArangoDB Query Language) API wrapper.
@@ -277,6 +307,7 @@ def execute(
277
307
allow_dirty_read : bool = False ,
278
308
allow_retry : bool = False ,
279
309
force_one_shard_attribute_value : Optional [str ] = None ,
310
+ use_plan_cache : Optional [bool ] = None ,
280
311
) -> Result [Cursor ]:
281
312
"""Execute the query and return the result cursor.
282
313
@@ -388,6 +419,8 @@ def execute(
388
419
shipped to a wrong DB server and may not return results
389
420
(i.e. empty result set). Use at your own risk.
390
421
:param force_one_shard_attribute_value: str | None
422
+ :param use_plan_cache: If set to True, the query plan cache is used.
423
+ :param use_plan_cache: bool | None
391
424
:return: Result cursor.
392
425
:rtype: arango.cursor.Cursor
393
426
:raise arango.exceptions.AQLQueryExecuteError: If execute fails.
@@ -399,8 +432,6 @@ def execute(
399
432
data ["ttl" ] = ttl
400
433
if bind_vars is not None :
401
434
data ["bindVars" ] = bind_vars
402
- if cache is not None :
403
- data ["cache" ] = cache
404
435
if memory_limit is not None :
405
436
data ["memoryLimit" ] = memory_limit
406
437
@@ -437,6 +468,10 @@ def execute(
437
468
options ["allowRetry" ] = allow_retry
438
469
if force_one_shard_attribute_value is not None :
439
470
options ["forceOneShardAttributeValue" ] = force_one_shard_attribute_value
471
+ if cache is not None :
472
+ options ["cache" ] = cache
473
+ if use_plan_cache is not None :
474
+ options ["usePlanCache" ] = use_plan_cache
440
475
441
476
if options :
442
477
data ["options" ] = options
0 commit comments