bug: ALTER TABLE ADD VIRTUAL GENERATED COLUMN with table rewrite

Started by jian heabout 1 year ago3 messageshackers
Jump to latest
#1jian he
jian.universality@gmail.com

hi.

bug demo:
CREATE TABLE gtest20a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a
* 2) VIRTUAL);
ALTER TABLE gtest20a ADD COLUMN c float8 DEFAULT RANDOM() CHECK (b < 60);
ERROR: no generation expression found for column number 2 of table
"pg_temp_17306"

issue is that
in ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
we need use existing (tab->relid) relation get the generated
expression, not use OIDNewHeap,
since we don't populate OIDNewHeap related generated expressions.

The attached patch fixes this issue.

Attachments:

v1-0001-fix-ALTER-TABLE-ADD-VIRTUAL-GENERATED-COLUMN-when.patchtext/x-patch; charset=US-ASCII; name=v1-0001-fix-ALTER-TABLE-ADD-VIRTUAL-GENERATED-COLUMN-when.patchDownload+8-2
#2Srinath Reddy Sadipiralla
srinath2133@gmail.com
In reply to: jian he (#1)
Re: bug: ALTER TABLE ADD VIRTUAL GENERATED COLUMN with table rewrite

Hi,
I have applied the patch and verified,and patch LGTM.

Thanks and regards
Srinath Reddy Sadipiralla
EDB: https://www.enterprisedb.com/

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Srinath Reddy Sadipiralla (#2)
Re: bug: ALTER TABLE ADD VIRTUAL GENERATED COLUMN with table rewrite

On 28.02.25 14:36, Srinath Reddy wrote:

Hi,
I have applied the patch and verified,and patch LGTM.

committed, thanks