On Sat, Feb 15, 2025 at 8:37 PM Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> wrote:
>
> On Fri, 14 Feb 2025 at 10:59, Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
> >
> > On 13.02.25 14:06, jian he wrote:
> > > I didn't solve the out join semantic issue.
> > > i am wondering, can we do the virtual generated column expansion in
> > > the rewrite stage as is,
> > > and wrap the expressions in PHVs if the virtual generated
> > > columns come from the nullable side of an outer join.
> >
> > PlaceHolderVar looks like a fitting mechanism for this. But it's so far
> > a planner node, so it might take some additional consideration if we
> > want to expand where it's used.
>
> It seems pretty baked into how PHVs work that they should only be
> added by the planner, so I think that I agree with Richard -- virtual
> generated columns probably have to be expanded in the planner rather
> than the rewriter.
>
> > Maybe a short-term fix would be to error out if we find ourselves about
> > to expand a Var with varnullingrels != NULL. That would mean you
> > couldn't use a virtual generated column on the nullable output side of
> > an outer join, which is annoying but not fatal, and we could fix it
> > incrementally later.
>
> I think that would be rather a sad limitation to have. It would be
> nice to have this fully working for the next release.
>
error out seems not that hard, IMHO.
i think, we still have time to figure out how to make it fully working in v18.
> Attached is a rough patch that moves the expansion of virtual
> generated columns to the planner. It needs a lot more testing (and
> some regression tests), but it does seem to fix all the issues
> mentioned in this thread.
>
I will review it later.
In the meantime,
I also came up with my patch (including tests) that solves all the issues.