Re: REPACK CONCURRENTLY fails on tables with generated columns
Álvaro Herrera <alvherre@kurilemu.de>
From: Alvaro Herrera <alvherre@kurilemu.de>
To: Ewan Young <kdbase.hack@gmail.com>
Cc: Antonin Houska <ah@cybertec.at>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
mihailnikalayeu@gmail.com
Date: 2026-07-03T11:12:39Z
Lists: pgsql-hackers
Attachments
Hello, On 2026-Jun-22, Ewan Young wrote: > I applied the patch and ran it through an injection-point reproducer > (cassert). Without the fix the bug reproduces (ERROR: no generation > expression found for column number 3 ...); with it, REPACK CONCURRENTLY > succeeds under a concurrent non-HOT UPDATE for a STORED generated column, an > index directly on the generated column, and a VIRTUAL column, with correct > values afterwards. Your repack.spec change passes. > > The approach is right and I've confirmed it fixes the bug, so +1 from me in > this direction. Cool, thanks for reviewing -- I have pushed this fix, with some stylistic changes and one bigger change: these catalog rows are only needed in concurrent mode, so there was no reason to copy them in the other case. So I restricted the copying to that case. I've been looking at the other proposed change, and I agree with it. Here's it, again with some style changes, and only one other proposed change: for setting up updatedCols, ignore dropped columns. I don't think this should change anything in practice, but it just feels wrong to claim that a dropped column is being changed by an update. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
Commits
-
REPACK CONCURRENTLY: Initialize the range table more honestly
- 5ee9d7c299f2 master landed
- 5e450df50dc8 19 (unreleased) landed
-
Fix REPACK CONCURRENTLY for stored generated columns
- fb284f2f9bdb 19 (unreleased) landed
- 3be823486f2c master landed