@@ -29,37 +29,59 @@ def test_aql_attributes(db, username):
29
29
30
30
31
31
def test_aql_query_management (db_version , db , bad_db , col , docs ):
32
- plan_fields = [
32
+ explain_fields = [
33
33
"estimatedNrItems" ,
34
34
"estimatedCost" ,
35
35
"rules" ,
36
36
"variables" ,
37
37
"collections" ,
38
38
"stats" ,
39
39
]
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
+
40
52
# Test explain invalid query
41
53
with assert_raises (AQLQueryExplainError ) as err :
42
54
db .aql .explain ("INVALID QUERY" )
43
55
assert err .value .error_code == 1501
44
56
45
57
# Test explain valid query with all_plans set to False
46
- plan = db .aql .explain (
58
+ explain = db .aql .explain (
47
59
f"FOR d IN { col .name } RETURN d" ,
48
60
all_plans = False ,
49
61
opt_rules = ["-all" , "+use-index-range" ],
50
62
)
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 )
52
69
53
70
# Test explain valid query with all_plans set to True
54
- plans = db .aql .explain (
71
+ explanations = db .aql .explain (
55
72
f"FOR d IN { col .name } RETURN d" ,
56
73
all_plans = True ,
57
74
opt_rules = ["-all" , "+use-index-range" ],
58
75
max_plans = 10 ,
59
76
)
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
63
85
64
86
# Test validate invalid query
65
87
with assert_raises (AQLQueryValidateError ) as err :
0 commit comments