mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Test passing expanded-value representations to workers.
Currently, we don't have an explicit test to pass expanded-value representations to workers, so we don't know whether it works on all kind of platforms. We suspect that the current code won't work on alignment-sensitive hardware. This commit will test that aspect and can lead to failure on some of the buildfarm machines which we will fix in the later commit. Author: Tom Lane and Amit Kapila Discussion: https://postgr.es/m/11629.1536550032@sss.pgh.pa.us
This commit is contained in:
parent
e3a25ab9ea
commit
0fd6a8a7d0
@ -1088,7 +1088,34 @@ ORDER BY 1, 2, 3;
|
|||||||
------------------------------+---------------------------+-------------+--------------
|
------------------------------+---------------------------+-------------+--------------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
-- test interation between subquery and partial_paths
|
-- test passing expanded-value representations to workers
|
||||||
|
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||||
|
$$declare x int[];
|
||||||
|
begin
|
||||||
|
x[1] := $1;
|
||||||
|
x[2] := $2;
|
||||||
|
return x;
|
||||||
|
end$$ language plpgsql parallel safe;
|
||||||
|
CREATE TABLE fooarr(f1 text, f2 int[], f3 text);
|
||||||
|
INSERT INTO fooarr VALUES('1', ARRAY[1,2], 'one');
|
||||||
|
PREPARE pstmt(text, int[]) AS SELECT * FROM fooarr WHERE f1 = $1 AND f2 = $2;
|
||||||
|
EXPLAIN (COSTS OFF) EXECUTE pstmt('1', make_some_array(1,2));
|
||||||
|
QUERY PLAN
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Gather
|
||||||
|
Workers Planned: 3
|
||||||
|
-> Parallel Seq Scan on fooarr
|
||||||
|
Filter: ((f1 = '1'::text) AND (f2 = '{1,2}'::integer[]))
|
||||||
|
(4 rows)
|
||||||
|
|
||||||
|
EXECUTE pstmt('1', make_some_array(1,2));
|
||||||
|
f1 | f2 | f3
|
||||||
|
----+-------+-----
|
||||||
|
1 | {1,2} | one
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DEALLOCATE pstmt;
|
||||||
|
-- test interaction between subquery and partial_paths
|
||||||
SET LOCAL min_parallel_table_scan_size TO 0;
|
SET LOCAL min_parallel_table_scan_size TO 0;
|
||||||
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1;
|
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1;
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
|
@ -410,7 +410,23 @@ ORDER BY 1;
|
|||||||
SELECT * FROM information_schema.foreign_data_wrapper_options
|
SELECT * FROM information_schema.foreign_data_wrapper_options
|
||||||
ORDER BY 1, 2, 3;
|
ORDER BY 1, 2, 3;
|
||||||
|
|
||||||
-- test interation between subquery and partial_paths
|
-- test passing expanded-value representations to workers
|
||||||
|
CREATE FUNCTION make_some_array(int,int) returns int[] as
|
||||||
|
$$declare x int[];
|
||||||
|
begin
|
||||||
|
x[1] := $1;
|
||||||
|
x[2] := $2;
|
||||||
|
return x;
|
||||||
|
end$$ language plpgsql parallel safe;
|
||||||
|
CREATE TABLE fooarr(f1 text, f2 int[], f3 text);
|
||||||
|
INSERT INTO fooarr VALUES('1', ARRAY[1,2], 'one');
|
||||||
|
|
||||||
|
PREPARE pstmt(text, int[]) AS SELECT * FROM fooarr WHERE f1 = $1 AND f2 = $2;
|
||||||
|
EXPLAIN (COSTS OFF) EXECUTE pstmt('1', make_some_array(1,2));
|
||||||
|
EXECUTE pstmt('1', make_some_array(1,2));
|
||||||
|
DEALLOCATE pstmt;
|
||||||
|
|
||||||
|
-- test interaction between subquery and partial_paths
|
||||||
SET LOCAL min_parallel_table_scan_size TO 0;
|
SET LOCAL min_parallel_table_scan_size TO 0;
|
||||||
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1;
|
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1;
|
||||||
EXPLAIN (COSTS OFF)
|
EXPLAIN (COSTS OFF)
|
||||||
|
Loading…
Reference in New Issue
Block a user