Hi,
I have strange behaviour when EXPLAIN returns parallel execution plan but the query execution is not parallel. The query looks as
SELECT
plpgsql_function(...parameters…)
FROM table as t
WHERE id=1
UNION ALL
SELECT
plpgsql_function(...parameters…)
FROM table as t
WHERE id=2
UNION ALL
...
EXPLAIN outputs looks ok:
Append (cost=0.00..10.25 rows=8 width=32)
-> Gather (cost=0.00..1.27 rows=1 width=32)
Workers Planned: 8
-> Parallel Seq Scan on table t (cost=0.00..1.27 rows=1 width=32)
Filter: (id = 1)
-> Gather (cost=0.00..1.27 rows=1 width=32)
Workers Planned: 8
-> Parallel Seq Scan on table t_1 (cost=0.00..1.27 rows=1 width=32)
Filter: (id = 2)
-> Gather (cost=0.00..1.27 rows=1 width=32)
...
But the query still uses just one core and I see sequential RAISE NOTICE outputs from the function plpgsql_function().
select version();
version
---------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 12.4 (Ubuntu 12.4-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit