Missed parallelism option in plpgsql?
I happened to notice that while writing this in plpgsql
will consider a parallel plan:
select count(*) into s from tenk1 where ten = x;
writing this will not:
s := count(*) from tenk1 where ten = x;
Is that intentional? Seems to me these cases ought to be
treated the same.
The reason for it is that exec_assign_expr's call of
exec_prepare_plan does not specify CURSOR_OPT_PARALLEL_OK.
regards, tom lane
On Wed, Dec 20, 2017 at 2:26 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
I happened to notice that while writing this in plpgsql
will consider a parallel plan:select count(*) into s from tenk1 where ten = x;
writing this will not:
s := count(*) from tenk1 where ten = x;
Is that intentional? Seems to me these cases ought to be
treated the same.The reason for it is that exec_assign_expr's call of
exec_prepare_plan does not specify CURSOR_OPT_PARALLEL_OK.
Hmm, I think I didn't realize that you could include a "from" clause
in an assignment statement. I assumed it would just be a simple
expression getting evaluated, which wouldn't make sense to do in
parallel.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company