Add proper regression test for the recent SRFs-in-pathkeys problem.
Remove the test case added by commit fac1b470a, which never actually worked to expose the problem it claimed to test. Replace it with a case that does expose the problem, and also covers the SRF-not- at-the-top deficiency repaired in 1aa8dad41. Richard Guo, with some editorialization by me Discussion: https://postgr.es/m/17564-c7472c2f90ef2da3@postgresql.org
This commit is contained in:
parent
f8f20203c2
commit
cc11647991
@ -1672,15 +1672,3 @@ order by 1, 2;
|
||||
-> Function Scan on generate_series
|
||||
(7 rows)
|
||||
|
||||
-- Disallow pushing down sort when pathkey is an SRF.
|
||||
explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]);
|
||||
QUERY PLAN
|
||||
-------------------------------------------------------------------------
|
||||
Sort
|
||||
Sort Key: (unnest('{1,2}'::integer[]))
|
||||
-> Gather
|
||||
Workers Planned: 2
|
||||
-> ProjectSet
|
||||
-> Parallel Index Only Scan using tenk1_unique1 on tenk1
|
||||
(6 rows)
|
||||
|
||||
|
@ -1149,6 +1149,30 @@ SELECT generate_series(1, two), array(select generate_series(1, two))
|
||||
-> Result
|
||||
(16 rows)
|
||||
|
||||
-- must disallow pushing sort below gather when pathkey contains an SRF
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey
|
||||
FROM tenk1 t1 JOIN tenk1 t2 ON TRUE
|
||||
ORDER BY pathkey;
|
||||
QUERY PLAN
|
||||
-----------------------------------------------------------------------------------------------------
|
||||
Sort
|
||||
Output: (((unnest('{}'::integer[])) + 1))
|
||||
Sort Key: (((unnest('{}'::integer[])) + 1))
|
||||
-> Result
|
||||
Output: ((unnest('{}'::integer[])) + 1)
|
||||
-> ProjectSet
|
||||
Output: unnest('{}'::integer[])
|
||||
-> Nested Loop
|
||||
-> Gather
|
||||
Workers Planned: 4
|
||||
-> Parallel Index Only Scan using tenk1_hundred on public.tenk1 t1
|
||||
-> Materialize
|
||||
-> Gather
|
||||
Workers Planned: 4
|
||||
-> Parallel Index Only Scan using tenk1_hundred on public.tenk1 t2
|
||||
(15 rows)
|
||||
|
||||
-- test passing expanded-value representations to workers
|
||||
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||
$$declare x int[];
|
||||
|
@ -281,5 +281,3 @@ from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub;
|
||||
explain (costs off) select sub.unique1, stringu1 || random()::text
|
||||
from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub
|
||||
order by 1, 2;
|
||||
-- Disallow pushing down sort when pathkey is an SRF.
|
||||
explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]);
|
||||
|
@ -433,6 +433,12 @@ EXPLAIN (VERBOSE, COSTS OFF)
|
||||
SELECT generate_series(1, two), array(select generate_series(1, two))
|
||||
FROM tenk1 ORDER BY tenthous;
|
||||
|
||||
-- must disallow pushing sort below gather when pathkey contains an SRF
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey
|
||||
FROM tenk1 t1 JOIN tenk1 t2 ON TRUE
|
||||
ORDER BY pathkey;
|
||||
|
||||
-- test passing expanded-value representations to workers
|
||||
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||
$$declare x int[];
|
||||
|
Loading…
x
Reference in New Issue
Block a user