Re: BUG #17803: Rule "ALSO INSERT ... SELECT ..." fails to substitute default values

Dean Rasheed <dean.a.rasheed@gmail.com>

From: Dean Rasheed <dean.a.rasheed@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alexander Lakhin <exclusion@gmail.com>, pgsql-bugs@lists.postgresql.org
Date: 2023-02-25T15:08:25Z
Lists: pgsql-bugs
On Fri, 24 Feb 2023 at 16:53, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> It might be worth doing
>
> +        if (rte->rtekind == RTE_SUBQUERY && !rte->lateral &&
> +            contain_vars_of_level((Node *) rte->subquery, 1))
> +            rte->lateral = true;
>
> so as to save the expense of contain_vars_of_level() when the flag
> is already set.  However, it's arguable that no users would bother
> with writing LATERAL, so this might be pointless.
>

OK, maybe not essential, but that does seem more consistent with what
we do in other places.

> More importantly, I think the comment could do with a bit more
> information.  Maybe like ...
>

Yeah I thought about adding more detail to that comment, but couldn't
come up with the right set of words. That looks reasonable to me.

Pushed.

Regards,
Dean



Commits

  1. Fix mishandling of OLD/NEW references in subqueries in rule actions.

  2. Fix multi-row DEFAULT handling for INSERT ... SELECT rules.

  3. Fix DEFAULT-handling in multi-row VALUES lists for updatable views.