Re: parallelize queries containing initplans
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Haribabu Kommi <kommi.haribabu@gmail.com>, Kuntal Ghosh <kuntalghosh.2007@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-11-10T19:39:31Z
Lists: pgsql-hackers
On Fri, Nov 10, 2017 at 2:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <robertmhaas@gmail.com> writes: >> I decided to try instead teaching the planner to keep track of the >> types of PARAM_EXEC parameters as they were created, and that seems to >> work fine. See 0001, attached. > > I did not look at the other part, but 0001 looks reasonable to me. Thanks for looking. > I might quibble with the grammar in the generate_new_param comment: > > - * need to record the PARAM_EXEC slot number as being allocated. > + * need to make sure we have record the type in paramExecTypes (otherwise, > + * there won't be a slot allocated for it). > */ > > I'd just go with "need to record the type in ..." Noted. > Also, I wonder whether the InvalidOid hack in SS_assign_special_param > requires commentary. It might be safer to use a valid type OID there, > perhaps VOIDOID or INTERNALOID. I think it's pretty straightforward -- if, as the existing comments say, no Param node will be present and no value will be stored, then we do not and cannot record the type of the value that we're not storing. There is existing precedent for using InvalidOid to denote the absence of a parameter -- cf. copyParamList, SerializeParamList. That convention was not invented by me or the parallel query stuff, although it has become more widespread for that reason. I am disinclined to have this patch invent a New Way To Do It. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Pass InitPlan values to workers via Gather (Merge).
- e89a71fb449a 11.0 landed
-
Track in the plan the types associated with PARAM_EXEC parameters.
- e64861c79bda 11.0 landed
-
Force rescanning of parallel-aware scan nodes below a Gather[Merge].
- 7df2c1f8daeb 11.0 cited