5 create or replace function parallel_restricted(int) returns int as
6 $$begin return $1; end$$ language plpgsql parallel restricted;
8 -- Serializable isolation would disable parallel query, so explicitly use an
9 -- arbitrary other level.
10 begin isolation level repeatable read;
12 -- setup parallel test
13 set parallel_setup_cost=0;
14 set parallel_tuple_cost=0;
15 set max_parallel_workers_per_gather=4;
18 select count(*) from a_star;
19 select count(*) from a_star;
21 -- test that parallel_restricted function doesn't run in worker
22 alter table tenk1 set (parallel_workers = 4);
23 explain (verbose, costs off)
24 select parallel_restricted(unique1) from tenk1
25 where stringu1 = 'GRAAAA' order by 1;
27 set force_parallel_mode=1;
30 select stringu1::int2 from tenk1 where unique1 = 1;
33 -- Provoke error, possibly in worker. If this error happens to occur in
34 -- the worker, there will be a CONTEXT line which must be hidden.
35 perform stringu1::int2 from tenk1 where unique1 = 1;
38 raise 'SQLERRM: %', sqlerrm;