mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-30 00:37:19 +02:00
Add proper regression test for the recent SRFs-in-pathkeys problem.
Remove the test case added by commitfac1b470a
, 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 in1aa8dad41
. Richard Guo, with some editorialization by me Discussion: https://postgr.es/m/17564-c7472c2f90ef2da3@postgresql.org
This commit is contained in:
parent
da4ed75881
commit
8d38ccafca
@ -1672,15 +1672,3 @@ order by 1, 2;
|
|||||||
-> Function Scan on generate_series
|
-> Function Scan on generate_series
|
||||||
(7 rows)
|
(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)
|
|
||||||
|
|
||||||
|
@ -1151,6 +1151,30 @@ SELECT generate_series(1, two), array(select generate_series(1, two))
|
|||||||
-> Result
|
-> Result
|
||||||
(16 rows)
|
(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
|
-- test passing expanded-value representations to workers
|
||||||
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||||
$$declare x int[];
|
$$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
|
explain (costs off) select sub.unique1, stringu1 || random()::text
|
||||||
from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub
|
from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub
|
||||||
order by 1, 2;
|
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[]);
|
|
||||||
|
@ -435,6 +435,12 @@ EXPLAIN (VERBOSE, COSTS OFF)
|
|||||||
SELECT generate_series(1, two), array(select generate_series(1, two))
|
SELECT generate_series(1, two), array(select generate_series(1, two))
|
||||||
FROM tenk1 ORDER BY tenthous;
|
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
|
-- test passing expanded-value representations to workers
|
||||||
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||||
$$declare x int[];
|
$$declare x int[];
|
||||||
|
Loading…
Reference in New Issue
Block a user