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-27 09:59:04
Message-ID: b4139280-073a-4226-8bea-3ea9a3ad6e3f@eisentraut.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 15.01.25 20:37, Peter Eisentraut wrote:
> On 15.01.25 15:12, Dean Rasheed wrote:
>> On Tue, 14 Jan 2025 at 13:37, Peter Eisentraut <peter(at)eisentraut(dot)org>
>> wrote:
>>>
>>> Here is a new patch with that fixed and also a few
>>> tweaks suggested by Jian.
>>>
>>
>> I'm hoping to push my RETURNING OLD/NEW patch [1] soon, so I thought
>> that I would check how it works together with this patch. The good
>> news is that AFAICS everything just works, and it's possible to return
>> old/new virtual generated columns in DML queries as expected.
>>
>> It did require a minor update, because my patch adds a new
>> "result_relation" argument to ReplaceVarsFromTargetList() -- needed in
>> DML queries because, when propagating a Var's old/new
>> varreturningtype, replacement Vars need to be handled differently
>> depending on whether or not they refer to the result relation. So that
>> affects expand_generated_columns_internal(), when called from
>> fireRIRrules(). OTOH, from expand_generated_columns_in_expr() it's OK
>> to just pass 0 as the result relation index, because there won't be
>> any old/new Vars in an expression that's not part of a DML query.
>>
>> Attached is the delta patch I used to handle this, along with a couple
>> of simple test cases. It doesn't really matter which feature makes it
>> in first, but the one that comes second will need to do something like
>> this.
>
> Ok, I'll wait if you want to go ahead with yours soon.

Here is an updated patch that integrates the above changes and also
makes some adjustments now that the logical replication configuration
questions are resolved. I think this is complete now.

But I'm seeing mysterious CI failures that have me stumped. For example:

https://cirrus-ci.com/task/5924251028422656

I have seen this particular pgbench test failure sporadically but
several times, and I have not seen it anywhere without this patch, and
never locally. The macOS task on the cfbot CI is very flaky right now,
so it's hard to get a good baseline. Also, it seems to me that this
failing test could not possibly be further away from the code that the
patch changes, so I'm thinking timing problems, but it only happens on
the macOS task. Really weird.

Attachment Content-Type Size
v13-0001-Virtual-generated-columns.patch text/plain 226.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2025-01-27 10:50:05 Re: Introduce XID age and inactive timeout based replication slot invalidation
Previous Message Laurenz Albe 2025-01-27 09:55:34 Re: Disabling vacuum truncate for autovacuum