Re: Virtual generated columns

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
Cc: Peter Eisentraut <peter(at)eisentraut(dot)org>, Richard Guo <guofenglinux(at)gmail(dot)com>, Zhang Mingli <zmlpostgres(at)gmail(dot)com>, Alexander Lakhin <exclusion(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Virtual generated columns
Date: 2025-02-17 06:48:18
Message-ID: CACJufxHiwAjogRfuv+R9E-TiQuO3_sJGLwmcC6QUu73t_2mHcw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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.

Attachment Content-Type Size
0001-fix-expand-virtual-generated-column-Var-node-varnull.patch application/x-patch 18.0 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bertrand Drouvot 2025-02-17 06:59:40 Re: per backend WAL statistics
Previous Message Paul Jungwirth 2025-02-17 06:42:15 Re: SQL:2011 application time