Re: Virtual generated columns

From: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: jian he <jian(dot)universality(at)gmail(dot)com>, 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-15 12:37:45
Message-ID: CAEZATCUpzF0XZGVpuJ-O4WLnDWBmddSc+yMWvg6zsz_ekegfPg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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.

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.

Regards,
Dean

Attachment Content-Type Size
expand-virt-gen-cols-in-planner.patch text/x-patch 20.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2025-02-15 13:10:39 Re: Decision by Monday: PQescapeString() vs. encoding violation
Previous Message Christoph Berg 2025-02-15 12:33:54 Re: pg17.3 PQescapeIdentifier() ignores len