Skip to content

Commit 8c1d9d5

Browse files
committed
Add regression test for 04ae11f.
The code in this area needs further revision, and it would be best not to re-break the things we've already fixed. Per a gripe from Tom Lane.
1 parent 9901d8a commit 8c1d9d5

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

src/test/regress/expected/select_parallel.out

+48
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
--
22
-- PARALLEL
33
--
4+
create or replace function parallel_restricted(int) returns int as $$
5+
begin
6+
perform * from pg_stat_activity where client_port is null;
7+
if (found) then
8+
raise 'parallel restricted function run in worker';
9+
end if;
10+
return $1;
11+
end$$ language plpgsql parallel restricted;
412
-- Serializable isolation would disable parallel query, so explicitly use an
513
-- arbitrary other level.
614
begin isolation level repeatable read;
715
-- setup parallel test
816
set parallel_setup_cost=0;
917
set parallel_tuple_cost=0;
18+
set max_parallel_workers_per_gather=4;
1019
explain (costs off)
1120
select count(*) from a_star;
1221
QUERY PLAN
@@ -30,6 +39,45 @@ select count(*) from a_star;
3039
50
3140
(1 row)
3241

42+
-- test that parallel_restricted function doesn't run in worker
43+
alter table tenk1 set (parallel_workers = 4);
44+
explain (verbose, costs off)
45+
select parallel_restricted(unique1) from tenk1
46+
where stringu1 = 'GRAAAA' order by 1;
47+
QUERY PLAN
48+
---------------------------------------------------------
49+
Sort
50+
Output: (parallel_restricted(unique1))
51+
Sort Key: (parallel_restricted(tenk1.unique1))
52+
-> Gather
53+
Output: parallel_restricted(unique1)
54+
Workers Planned: 4
55+
-> Parallel Seq Scan on public.tenk1
56+
Output: unique1
57+
Filter: (tenk1.stringu1 = 'GRAAAA'::name)
58+
(9 rows)
59+
60+
select parallel_restricted(unique1) from tenk1
61+
where stringu1 = 'GRAAAA' order by 1;
62+
parallel_restricted
63+
---------------------
64+
448
65+
1124
66+
1800
67+
2476
68+
3152
69+
3828
70+
4504
71+
5180
72+
5856
73+
6532
74+
7208
75+
7884
76+
8560
77+
9236
78+
9912
79+
(15 rows)
80+
3381
set force_parallel_mode=1;
3482
explain (costs off)
3583
select stringu1::int2 from tenk1 where unique1 = 1;

src/test/regress/sql/select_parallel.sql

+18
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,36 @@
22
-- PARALLEL
33
--
44

5+
create or replace function parallel_restricted(int) returns int as $$
6+
begin
7+
perform * from pg_stat_activity where client_port is null;
8+
if (found) then
9+
raise 'parallel restricted function run in worker';
10+
end if;
11+
return $1;
12+
end$$ language plpgsql parallel restricted;
13+
514
-- Serializable isolation would disable parallel query, so explicitly use an
615
-- arbitrary other level.
716
begin isolation level repeatable read;
817

918
-- setup parallel test
1019
set parallel_setup_cost=0;
1120
set parallel_tuple_cost=0;
21+
set max_parallel_workers_per_gather=4;
1222

1323
explain (costs off)
1424
select count(*) from a_star;
1525
select count(*) from a_star;
1626

27+
-- test that parallel_restricted function doesn't run in worker
28+
alter table tenk1 set (parallel_workers = 4);
29+
explain (verbose, costs off)
30+
select parallel_restricted(unique1) from tenk1
31+
where stringu1 = 'GRAAAA' order by 1;
32+
select parallel_restricted(unique1) from tenk1
33+
where stringu1 = 'GRAAAA' order by 1;
34+
1735
set force_parallel_mode=1;
1836

1937
explain (costs off)

0 commit comments

Comments
 (0)