diff --git a/aqo.conf b/aqo.conf index b53b5a5d..586f5147 100644 --- a/aqo.conf +++ b/aqo.conf @@ -1,4 +1,5 @@ autovacuum = off shared_preload_libraries = 'postgres_fdw, aqo' max_parallel_maintenance_workers = 1 # switch off parallel workers because of unsteadiness -aqo.wide_search = 'on' \ No newline at end of file +aqo.wide_search = 'on' +compute_query_id = 'regress' \ No newline at end of file diff --git a/expected/aqo_fdw.out b/expected/aqo_fdw.out index a52ba851..e568e993 100644 --- a/expected/aqo_fdw.out +++ b/expected/aqo_fdw.out @@ -57,7 +57,7 @@ SELECT x FROM frgn; SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT x FROM frgn WHERE x < 10; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; str ----------------------------------------------------------- Foreign Scan on public.frgn (actual rows=1 loops=1) @@ -72,7 +72,7 @@ SELECT str FROM expln(' SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT x FROM frgn WHERE x < 10; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; str ----------------------------------------------------------- Foreign Scan on public.frgn (actual rows=1 loops=1) @@ -114,7 +114,7 @@ SELECT str FROM expln(' SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT * FROM frgn AS a, frgn AS b WHERE a.x=b.x; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; str -------------------------------------------------------------------------------------------------------- Foreign Scan (actual rows=1 loops=1) @@ -183,10 +183,13 @@ INSERT INTO main SELECT i, 'val_' || i FROM generate_series(1,100) i; INSERT INTO ref SELECT i, mod(i, 10) + 1, 'val_' || i FROM generate_series(1,1000) i; ANALYZE local_main_p0, local_main_p1, main_p2; ANALYZE local_ref_p0, local_ref_p1, ref_p2; +SELECT str AS result +FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT * from main AS a, ref AS b -WHERE a.aid = b.aid AND b.bval like 'val%'; - QUERY PLAN +WHERE a.aid = b.aid AND b.bval like ''val%''') AS str +WHERE str NOT LIKE '%Memory%'; + result -------------------------------------------------------------------- Append (actual rows=1000 loops=1) AQO not used @@ -203,18 +206,20 @@ WHERE a.aid = b.aid AND b.bval like 'val%'; AQO not used Filter: (bval ~~ 'val%'::text) -> Hash (actual rows=38 loops=1) - Buckets: 1024 Batches: 1 Memory Usage: 10kB -> Seq Scan on main_p2 a_3 (actual rows=38 loops=1) AQO not used Using aqo: true AQO mode: LEARN JOINS: 1 -(21 rows) +(20 rows) +SELECT str AS result +FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT * from main AS a, ref AS b -WHERE a.aid = b.aid AND b.bval like 'val%'; - QUERY PLAN +WHERE a.aid = b.aid AND b.bval like ''val%''') AS str +WHERE str NOT LIKE '%Memory%'; + result -------------------------------------------------------------------- Append (actual rows=1000 loops=1) AQO not used @@ -231,13 +236,12 @@ WHERE a.aid = b.aid AND b.bval like 'val%'; AQO: rows=300, error=0% Filter: (bval ~~ 'val%'::text) -> Hash (actual rows=38 loops=1) - Buckets: 1024 Batches: 1 Memory Usage: 10kB -> Seq Scan on main_p2 a_3 (actual rows=38 loops=1) AQO: rows=38, error=0% Using aqo: true AQO mode: LEARN JOINS: 1 -(21 rows) +(20 rows) DROP TABLE main, local_main_p0, local_main_p1; DROP TABLE ref, local_ref_p0, local_ref_p1; @@ -259,7 +263,7 @@ SELECT * FROM frgn AS a, frgn AS b WHERE a.x 10 group by(x);') AS str -WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%'; +WHERE str NOT LIKE '%Memory%'; result ---------------------------------------------------------- HashAggregate (actual rows=0 loops=1) @@ -200,7 +196,7 @@ WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%'; SELECT str AS result FROM expln(' SELECT x,y FROM A,B WHERE x < 10 and y > 10 AND A.x = B.y;') AS str -WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%' +WHERE str NOT LIKE '%Memory%' ; result ---------------------------------------------------------- diff --git a/expected/unsupported.out b/expected/unsupported.out index efbbc36b..f8b15cc5 100644 --- a/expected/unsupported.out +++ b/expected/unsupported.out @@ -530,7 +530,7 @@ SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1; SELECT str FROM expln(' EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1') AS str -WHERE str NOT LIKE '%Heap Blocks%' AND str NOT LIKE '%Query Identifier%'; +WHERE str NOT LIKE '%Heap Blocks%'; str ----------------------------------------------------------------- Aggregate (actual rows=1 loops=1) diff --git a/sql/aqo_fdw.sql b/sql/aqo_fdw.sql index fcfc535b..bd211326 100644 --- a/sql/aqo_fdw.sql +++ b/sql/aqo_fdw.sql @@ -47,11 +47,11 @@ SELECT x FROM frgn; SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT x FROM frgn WHERE x < 10; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT x FROM frgn WHERE x < 10; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT x FROM frgn WHERE x < -10; -- AQO ignores constants @@ -65,7 +65,7 @@ SELECT str FROM expln(' SELECT str FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE) SELECT * FROM frgn AS a, frgn AS b WHERE a.x=b.x; -') AS str WHERE str NOT LIKE '%Query Identifier%'; +') AS str; CREATE TABLE local_a(aid int primary key, aval text); CREATE TABLE local_b(bid int primary key, aid int references local_a(aid), bval text); @@ -114,13 +114,19 @@ INSERT INTO ref SELECT i, mod(i, 10) + 1, 'val_' || i FROM generate_series(1,100 ANALYZE local_main_p0, local_main_p1, main_p2; ANALYZE local_ref_p0, local_ref_p1, ref_p2; +SELECT str AS result +FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT * from main AS a, ref AS b -WHERE a.aid = b.aid AND b.bval like 'val%'; +WHERE a.aid = b.aid AND b.bval like ''val%''') AS str +WHERE str NOT LIKE '%Memory%'; +SELECT str AS result +FROM expln(' EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT * from main AS a, ref AS b -WHERE a.aid = b.aid AND b.bval like 'val%'; +WHERE a.aid = b.aid AND b.bval like ''val%''') AS str +WHERE str NOT LIKE '%Memory%'; DROP TABLE main, local_main_p0, local_main_p1; DROP TABLE ref, local_ref_p0, local_ref_p1; @@ -133,7 +139,7 @@ SELECT * FROM frgn AS a, frgn AS b WHERE a.x 10 group by(x);') AS str -WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%'; +WHERE str NOT LIKE '%Memory%'; -- -- TODO: @@ -75,7 +71,7 @@ WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%'; SELECT str AS result FROM expln(' SELECT x,y FROM A,B WHERE x < 10 and y > 10 AND A.x = B.y;') AS str -WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%' +WHERE str NOT LIKE '%Memory%' ; RESET enable_material; diff --git a/sql/unsupported.sql b/sql/unsupported.sql index fcf0896f..db673788 100644 --- a/sql/unsupported.sql +++ b/sql/unsupported.sql @@ -165,7 +165,7 @@ SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1; SELECT str FROM expln(' EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, SUMMARY OFF, TIMING OFF) SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1') AS str -WHERE str NOT LIKE '%Heap Blocks%' AND str NOT LIKE '%Query Identifier%'; +WHERE str NOT LIKE '%Heap Blocks%'; -- Best choice is ... ANALYZE t;