@@ -29,37 +29,59 @@ def test_aql_attributes(db, username):
2929
3030
3131def test_aql_query_management (db_version , db , bad_db , col , docs ):
32- plan_fields = [
32+ explain_fields = [
3333 "estimatedNrItems" ,
3434 "estimatedCost" ,
3535 "rules" ,
3636 "variables" ,
3737 "collections" ,
3838 "stats" ,
3939 ]
40+ stats_fields = {
41+ "0.0.0" : [
42+ "rulesExecuted" ,
43+ "rulesSkipped" ,
44+ "plansCreated" ,
45+ ],
46+ "3.10.4" : [
47+ "peakMemoryUsage" ,
48+ "executionTime" ,
49+ ],
50+ }
51+
4052 # Test explain invalid query
4153 with assert_raises (AQLQueryExplainError ) as err :
4254 db .aql .explain ("INVALID QUERY" )
4355 assert err .value .error_code == 1501
4456
4557 # Test explain valid query with all_plans set to False
46- plan = db .aql .explain (
58+ explain = db .aql .explain (
4759 f"FOR d IN { col .name } RETURN d" ,
4860 all_plans = False ,
4961 opt_rules = ["-all" , "+use-index-range" ],
5062 )
51- assert all (field in plan for field in plan_fields )
63+ assert all (field in explain for field in explain_fields )
64+ for v , fields in stats_fields .items ():
65+ if db_version >= version .parse (v ):
66+ assert all (field in explain ["stats" ] for field in fields )
67+ else :
68+ assert all (field not in explain ["stats" ] for field in fields )
5269
5370 # Test explain valid query with all_plans set to True
54- plans = db .aql .explain (
71+ explanations = db .aql .explain (
5572 f"FOR d IN { col .name } RETURN d" ,
5673 all_plans = True ,
5774 opt_rules = ["-all" , "+use-index-range" ],
5875 max_plans = 10 ,
5976 )
60- for plan in plans :
61- assert all (field in plan for field in plan_fields )
62- assert len (plans ) < 10
77+ for explain in explanations :
78+ assert all (field in explain for field in explain_fields )
79+ for v , fields in stats_fields .items ():
80+ if db_version >= version .parse (v ):
81+ assert all (field in explain ["stats" ] for field in fields )
82+ else :
83+ assert all (field not in explain ["stats" ] for field in fields )
84+ assert len (explanations ) < 10
6385
6486 # Test validate invalid query
6587 with assert_raises (AQLQueryValidateError ) as err :
0 commit comments