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 |
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 |