Re: Fix tuple deformation with virtual generated NOT NULL columns

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Chao Li <li.evan.chao@gmail.com>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-06-08T13:01:24Z
Lists: pgsql-hackers
Hi,

On 2026-06-06 16:50:29 +1200, David Rowley wrote:
> On Thu, 4 Jun 2026 at 17:57, Chao Li <li.evan.chao@gmail.com> wrote:
> > While testing "Optimize tuple deformation”, I found a bug:
> 
> > I think the problem is in finding the first non-guaranteed attribute where virtual generated attributes are not considered:
> 
> Thanks for the report and fix. I pushed a slightly adjusted version.
> Form_pg_attribute.attgenerated is '\0' for non-generated columns, so
> there's no point in checking cattr->attgenerated as well as that.
> 
> I also added an Assert() to help catch any other reason that the
> guaranteed column gets set incorrectly again in TupleDescFinalize().

Seems like a test for some of this would be good too?

Greetings,

Andres Freund



Commits

  1. Update JIT tuple deforming code for virtual generated columns

  2. Add tuple deformation test for virtual generated columns

  3. Fix tuple deforming with virtual generated columns