Re: Virtual generated columns

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: jian he <jian(dot)universality(at)gmail(dot)com>, Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
Subject: Re: Virtual generated columns
Date: 2025-01-14 13:37:49
Message-ID: 831d7f99-0618-48e5-8557-f3d57137f339@eisentraut.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 13.01.25 19:15, Dean Rasheed wrote:
> On Wed, 8 Jan 2025 at 16:14, Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
>>
>> Here is a new patch version
>
> In expand_generated_columns_in_expr():
>
> + RangeTblEntry *rte;
> +
> + rte = makeNode(RangeTblEntry);
> + rte->relid = RelationGetRelid(rel);
> +
> + node = expand_generated_columns_internal(node, rel, rt_index, rte);
>
> This dummy RTE is a bit too minimal.
>
> I think it should explicitly set rte->rtekind to RTE_RELATION, even
> though that's technically not necessary since RTE_RELATION is zero.
>
> In addition, it needs to set rte->eref, because expandRTE() (called
> from ReplaceVarsFromTargetList()) needs that when expanding whole-row
> variables. Here's a simple reproducer which crashes:
>
> CREATE TABLE foo (a int, b int GENERATED ALWAYS AS (a*2) VIRTUAL);
> ALTER TABLE foo ADD CONSTRAINT foo_check CHECK (foo IS NOT NULL);

Thanks, fixed. Here is a new patch with that fixed and also a few
tweaks suggested by Jian.

I've also added a patch that addresses logical replication. It
basically adds back some of the prohibitions against including generated
columns in publications that have been lifted, but this time only for
virtual generated columns, and amends the documentation. It doesn't
rename the publication option "publish_generated_columns", but maybe
that should be done.

Attachment Content-Type Size
v12-0001-Virtual-generated-columns.patch text/plain 233.6 KB
v12-0002-Logical-replication-vs.-virtual-generated-column.patch text/plain 14.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2025-01-14 13:39:13 Re: postgres_fdw: Provide better emulation of READ COMMITTED behavior
Previous Message Aleksander Alekseev 2025-01-14 13:25:19 Re: [PATCH] Add get_bytes() and set_bytes() functions