On Fri, Nov 10, 2017 at 2:24 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@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 -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers