From 5018b95aaadda6120c2516d4f0481edd1613219d Mon Sep 17 00:00:00 2001 From: Richard Guo Date: Thu, 4 Aug 2022 11:02:32 +0800 Subject: [PATCH v1] Test we disallow pushing down SRF pathkeys --- src/test/regress/expected/select_parallel.out | 26 +++++++++++++++++++ src/test/regress/sql/select_parallel.sql | 8 ++++++ 2 files changed, 34 insertions(+) diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out index 4ea1aa7dfd..3ca5263a0e 100644 --- a/src/test/regress/expected/select_parallel.out +++ b/src/test/regress/expected/select_parallel.out @@ -1194,4 +1194,30 @@ SELECT 1 FROM tenk1_vw_sec Filter: (f1 < tenk1_vw_sec.unique1) (9 rows) +-- Disallow SRFs when considering sorts below Gather Merge +SET enable_indexonlyscan TO OFF; +EXPLAIN (VERBOSE, COSTS OFF) +SELECT generate_subscripts(ARRAY[]::integer[], 1) AS id, + unnest(ARRAY[]::jsonb[]) ->> 'timestamp' AS timestamp +FROM tenk1 t1 JOIN tenk1 t2 ON TRUE +ORDER BY timestamp; + QUERY PLAN +------------------------------------------------------------------------------------------------------------ + Sort + Output: (generate_subscripts('{}'::integer[], 1)), (((unnest('{}'::jsonb[])) ->> 'timestamp'::text)) + Sort Key: (((unnest('{}'::jsonb[])) ->> 'timestamp'::text)) + -> Result + Output: (generate_subscripts('{}'::integer[], 1)), ((unnest('{}'::jsonb[])) ->> 'timestamp'::text) + -> ProjectSet + Output: generate_subscripts('{}'::integer[], 1), unnest('{}'::jsonb[]) + -> Nested Loop + -> Gather + Workers Planned: 4 + -> Parallel Seq Scan on public.tenk1 t1 + -> Materialize + -> Gather + Workers Planned: 4 + -> Parallel Seq Scan on public.tenk1 t2 +(15 rows) + rollback; diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql index f924731248..f9ba63065e 100644 --- a/src/test/regress/sql/select_parallel.sql +++ b/src/test/regress/sql/select_parallel.sql @@ -455,4 +455,12 @@ EXPLAIN (COSTS OFF) SELECT 1 FROM tenk1_vw_sec WHERE (SELECT sum(f1) FROM int4_tbl WHERE f1 < unique1) < 100; +-- Disallow SRFs when considering sorts below Gather Merge +SET enable_indexonlyscan TO OFF; +EXPLAIN (VERBOSE, COSTS OFF) +SELECT generate_subscripts(ARRAY[]::integer[], 1) AS id, + unnest(ARRAY[]::jsonb[]) ->> 'timestamp' AS timestamp +FROM tenk1 t1 JOIN tenk1 t2 ON TRUE +ORDER BY timestamp; + rollback; -- 2.31.0