> On Jun 8, 2026, at 21:01, Andres Freund <[email protected]> wrote: > > Hi, > > On 2026-06-06 16:50:29 +1200, David Rowley wrote: >> On Thu, 4 Jun 2026 at 17:57, Chao Li <[email protected]> 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
Okay, I tried to add a test matching my repro. With this test in place, I
reverted the fix and ran make check; it failed by hitting the Assert David
added:
```
TRAP: failed Assert("first_null_attr(tup->t_bits, natts) >= firstNullAttr"),
File: "execTuples.c", Line: 1083, PID: 65804
0 postgres 0x0000000104e883b8 ExceptionalCondition
+ 216
1 postgres 0x00000001048e5ebc
slot_deform_heap_tuple + 456
2 postgres 0x00000001048e2a18
tts_buffer_heap_getsomeattrs + 112
3 postgres 0x00000001048c5044 slot_getsomeattrs +
68
4 postgres 0x00000001048b97a4 ExecInterpExpr + 416
5 postgres 0x00000001048b8ea0
ExecInterpExprStillValid + 76
6 postgres 0x000000010492ec68 ExecEvalExprNoReturn
+ 44
7 postgres 0x000000010492ec28
ExecEvalExprNoReturnSwitchContext + 48
8 postgres 0x000000010492eb20 ExecProject + 72
9 postgres 0x000000010492e680 ExecScanExtended +
288
10 postgres 0x000000010492d7cc
ExecSeqScanWithProject + 220
11 postgres 0x00000001048db508 ExecProcNodeFirst +
92
12 postgres 0x00000001048d1eb8 ExecProcNode + 60
```
See the attached patch for details.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
v1-0001-Add-regression-test-for-virtual-generated-column-.patch
Description: Binary data
