Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion aqo.conf
Original file line number Diff line number Diff line change
@@ -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'
aqo.wide_search = 'on'
compute_query_id = 'regress'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это никак не повлияет на другие тесты, выполняемые installcheck ? И почему?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас сейчас есть schedule-файл с порядком выполнения тестов. Почему бы не устанавливать это значение в первом тесте и не сбрасывать в последнем?

Copy link

@MarinaPolyakova MarinaPolyakova Oct 26, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это никак не повлияет на другие тесты, выполняемые installcheck ? И почему?

compute_query_id = 'regress' => не выводить query id, даже если он посчитался. Вроде тогда мы и другие тесты не ломаем, и функциональность по факту тестируется?.. (если что-то упадет при подсчете, то это будет заметно?)

Copy link

@MarinaPolyakova MarinaPolyakova Oct 26, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас сейчас есть schedule-файл с порядком выполнения тестов. Почему бы не устанавливать это значение в первом тесте и не сбрасывать в последнем?

Во-первых, compute_query_id = 'regress' в любом случае нужен, чтобы не сломался make installcheck в дереве исходников postgres с загруженным aqo. Как писала Алена, мы проверили, что pg_stat_statements от этого спасает только NO_INSTALLCHECK = 1 в contrib/pg_stat_statements/Makefile. aqo себе такого позволить не может.

Во-вторых, вроде каждый тест = отдельное соединение в psql? Т.е. переменная сбросится между тестами?..

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас сейчас есть schedule-файл с порядком выполнения тестов. Почему бы не устанавливать это значение в первом тесте и не сбрасывать в последнем?

Не поможет. sheduller настроен на прогон aqo тестов и соответствующие настройки с параметрами, как понимаю, применяются к ним. У нас изначально возникла проблема с ванильными тестами.
Или ты говоришь про sheduller ванильных тестов? Но тогда, это пойдут изменения в ванильный код, чего мы хотим избежать

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это никак не повлияет на другие тесты, выполняемые installcheck ? И почему?

Ты имеешь в виду другие расширения, которые работают одновременно с AQO и данная настройка их коснется или про тесты в AQO? Или вообще про другое? Можешь уточнить вопрос, пожалуйста.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это никак не повлияет на другие тесты, выполняемые installcheck ? И почему?

compute_query_id = 'regress' => не выводить query id, даже если он посчитался. Вроде тогда мы и другие тесты не ломаем, и функциональность по факту тестируется?.. (если что-то упадет при подсчете, то это будет заметно?)

Ну так и сделайте это глобальным параметром своих тестов, если возможно, зачем это в открытое расширение складывать?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас сейчас есть schedule-файл с порядком выполнения тестов. Почему бы не устанавливать это значение в первом тесте и не сбрасывать в последнем?

Во-первых, compute_query_id = 'regress' в любом случае нужен, чтобы не сломался make installcheck в дереве исходников postgres с загруженным aqo. Как писала Алена, мы проверили, что pg_stat_statements от этого спасает только NO_INSTALL CHECK = 1 в contrib/pg_stat_statements/Makefile. aqo себе такого позволить не может.
AQO построен так же, как и pg_stat_statements. По крайней мере гитхабовская версия проекта желательно должна выглядеть традиционно. А патчи для различных энтерпрайзных версий можно и внутри хранить ...

Во-вторых, вроде каждый тест = отдельное соединение в psql? Т.е. переменная сбросится между тестами?..
ALTER SYSTEM + pg_reload_conf() там не срабатывает?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну так и сделайте это глобальным параметром своих тестов, если возможно, зачем это в открытое расширение складывать?

Потому что тесты падают только с загруженным расширением (в данном случае - aqo). Без вас все норм.

Copy link

@MarinaPolyakova MarinaPolyakova Oct 27, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ALTER SYSTEM + pg_reload_conf() там не срабатывает?

  1. pg_reload_conf вроде только отправляет сигнал postmaster? В смысле, надеюсь, в тестах не будет гонок..
  2. Если запустить паралельный installcheck-world (make -jN installcheck-world), с помощью ALTER SYSTEM вы повлияете на другие тесты?..

28 changes: 16 additions & 12 deletions expected/aqo_fdw.out
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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;
Expand All @@ -259,7 +263,7 @@ SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
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=0 loops=1)
Expand Down
17 changes: 11 additions & 6 deletions expected/gucs.out
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ $$ LANGUAGE PLPGSQL;
SET aqo.join_threshold = 0;
SET aqo.mode = 'learn';
SET aqo.show_details = true;
SET compute_query_id = 'auto';
CREATE TABLE t(x int);
INSERT INTO t (x) (SELECT * FROM generate_series(1, 100) AS gs);
ANALYZE t;
Expand All @@ -20,33 +21,37 @@ SELECT true FROM aqo_reset(); -- Remember! DROP EXTENSION doesn't remove any AQO
(1 row)

-- Check AQO addons to explain (the only stable data)
SELECT str FROM expln('
SELECT regexp_replace(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А зачем здесь тебе таки показывать Query Identifier ?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Видимо, проверяется, что он вообще выводится..

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, делала проверку на вывод Query Identifier. Показалось логичным оставить это только в gucs тесте.
Специально добавила установку параметра compute_query_id в 'auto'.
В других тестах не добавляла и убрала Query Identifier из-за его ненужности там.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Видимо, проверяется, что он вообще выводится..

Ну, это достаточно слабое объяснение. Query Identifier вообще ванильная штука, чего его проверять? Я бы скорее сказал, что проверяются другие параметры экплейна, AQO-специфичные. А для них Identifier не нужен

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тогда здесь можно убрать, как это сделано в остальных тестах?

str,'Query Identifier: -?\m\d+\M','Query Identifier: N','g') as str FROM expln('
EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMING OFF, SUMMARY OFF)
SELECT x FROM t;
') AS str WHERE str NOT LIKE '%Query Identifier%';
') AS str;
str
------------------------------------------------
Seq Scan on public.t (actual rows=100 loops=1)
AQO not used
Output: x
Query Identifier: N
Using aqo: true
AQO mode: LEARN
JOINS: 0
(6 rows)
(7 rows)

SELECT str FROM expln('
SELECT regexp_replace(
str,'Query Identifier: -?\m\d+\M','Query Identifier: N','g') as str FROM expln('
EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMING OFF, SUMMARY OFF)
SELECT x FROM t;
') AS str WHERE str NOT LIKE '%Query Identifier%';
') AS str;
str
------------------------------------------------
Seq Scan on public.t (actual rows=100 loops=1)
AQO: rows=100, error=0%
Output: x
Query Identifier: N
Using aqo: true
AQO mode: LEARN
JOINS: 0
(6 rows)
(7 rows)

SET aqo.mode = 'disabled';
-- Check existence of the interface functions.
Expand Down
16 changes: 6 additions & 10 deletions expected/look_a_like.out
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ $$ LANGUAGE PLPGSQL;
-- in the next queries with the same fss_hash
SELECT str AS result
FROM expln('
SELECT x FROM A where x = 5;') AS str
WHERE str NOT LIKE 'Query Identifier%';
SELECT x FROM A where x = 5;') AS str;
result
------------------------------------------------
Seq Scan on public.a (actual rows=100 loops=1)
Expand All @@ -42,7 +41,6 @@ WHERE str NOT LIKE 'Query Identifier%';
SELECT str AS result
FROM expln('
SELECT x FROM A,B WHERE x = 5 AND A.x = B.y;') AS str
WHERE str NOT LIKE 'Query Identifier%'
; -- Find cardinality for SCAN A(x=5) from a neighbour class, created by the
result
--------------------------------------------------------
Expand All @@ -68,7 +66,6 @@ WHERE str NOT LIKE 'Query Identifier%'
SELECT str AS result
FROM expln('
SELECT x, sum(x) FROM A,B WHERE y = 5 AND A.x = B.y group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%'
; -- Find the JOIN cardinality from a neighbour class.
result
--------------------------------------------------------------
Expand Down Expand Up @@ -97,8 +94,7 @@ WHERE str NOT LIKE 'Query Identifier%'
-- cardinality 100 in the first Seq Scan on a
SELECT str AS result
FROM expln('
SELECT x, sum(x) FROM A WHERE x = 5 group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%';
SELECT x, sum(x) FROM A WHERE x = 5 group by(x);') AS str;
result
------------------------------------------------------
GroupAggregate (actual rows=1 loops=1)
Expand All @@ -120,7 +116,7 @@ WHERE str NOT LIKE 'Query Identifier%';
SELECT str AS result
FROM expln('
SELECT x FROM A where 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=10 loops=1)
Expand All @@ -140,7 +136,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 A.x = B.y;') AS str
WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%';
WHERE str NOT LIKE '%Memory%';
result
-------------------------------------------------------------
Merge Join (actual rows=100000 loops=1)
Expand Down Expand Up @@ -169,7 +165,7 @@ WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%';
SELECT str AS result
FROM expln('
SELECT x FROM A,B where x < 10 and y > 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)
Expand Down Expand Up @@ -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
----------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion expected/unsupported.out
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
18 changes: 12 additions & 6 deletions sql/aqo_fdw.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -133,7 +139,7 @@ SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
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;

DROP EXTENSION aqo CASCADE;
DROP EXTENSION postgres_fdw CASCADE;
Expand Down
11 changes: 7 additions & 4 deletions sql/gucs.sql
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,24 @@ $$ LANGUAGE PLPGSQL;
SET aqo.join_threshold = 0;
SET aqo.mode = 'learn';
SET aqo.show_details = true;
SET compute_query_id = 'auto';

CREATE TABLE t(x int);
INSERT INTO t (x) (SELECT * FROM generate_series(1, 100) AS gs);
ANALYZE t;

SELECT true FROM aqo_reset(); -- Remember! DROP EXTENSION doesn't remove any AQO data gathered.
-- Check AQO addons to explain (the only stable data)
SELECT str FROM expln('
SELECT regexp_replace(
str,'Query Identifier: -?\m\d+\M','Query Identifier: N','g') as str FROM expln('
EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMING OFF, SUMMARY OFF)
SELECT x FROM t;
') AS str WHERE str NOT LIKE '%Query Identifier%';
SELECT str FROM expln('
') AS str;
SELECT regexp_replace(
str,'Query Identifier: -?\m\d+\M','Query Identifier: N','g') as str FROM expln('
EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMING OFF, SUMMARY OFF)
SELECT x FROM t;
') AS str WHERE str NOT LIKE '%Query Identifier%';
') AS str;
SET aqo.mode = 'disabled';

-- Check existence of the interface functions.
Expand Down
16 changes: 6 additions & 10 deletions sql/look_a_like.sql
Original file line number Diff line number Diff line change
Expand Up @@ -28,45 +28,41 @@ $$ LANGUAGE PLPGSQL;
-- in the next queries with the same fss_hash
SELECT str AS result
FROM expln('
SELECT x FROM A where x = 5;') AS str
WHERE str NOT LIKE 'Query Identifier%';
SELECT x FROM A where x = 5;') AS str;

SELECT str AS result
FROM expln('
SELECT x FROM A,B WHERE x = 5 AND A.x = B.y;') AS str
WHERE str NOT LIKE 'Query Identifier%'
; -- Find cardinality for SCAN A(x=5) from a neighbour class, created by the
-- query, executed above.

SELECT str AS result
FROM expln('
SELECT x, sum(x) FROM A,B WHERE y = 5 AND A.x = B.y group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%'
; -- Find the JOIN cardinality from a neighbour class.

-- cardinality 100 in the first Seq Scan on a
SELECT str AS result
FROM expln('
SELECT x, sum(x) FROM A WHERE x = 5 group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%';
SELECT x, sum(x) FROM A WHERE x = 5 group by(x);') AS str;

-- no one predicted rows. we use knowledge cardinalities of the query
-- in the next queries with the same fss_hash
SELECT str AS result
FROM expln('
SELECT x FROM A where x < 10 group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%';
WHERE str NOT LIKE '%Memory%';
-- cardinality 1000 in Seq Scan on a
SELECT str AS result
FROM expln('
SELECT x,y FROM A,B WHERE x < 10 AND A.x = B.y;') AS str
WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%';
WHERE str NOT LIKE '%Memory%';

-- cardinality 100 in Seq Scan on a and Seq Scan on b
SELECT str AS result
FROM expln('
SELECT x FROM A,B where x < 10 and y > 10 group by(x);') AS str
WHERE str NOT LIKE 'Query Identifier%' and str NOT LIKE '%Memory%';
WHERE str NOT LIKE '%Memory%';

--
-- TODO:
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion sql/unsupported.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down