Re: Fix SET EXPRESSION for virtual columns with whole-row dependencies - Mailing list pgsql-hackers

From jian he
Subject Re: Fix SET EXPRESSION for virtual columns with whole-row dependencies
Date
Msg-id CACJufxHTK0Qk7AwdrHK=y8OtK--zEVY-Ossxx4UUgxaE2NCAXA@mail.gmail.com
Whole thread
In response to Fix SET EXPRESSION for virtual columns with whole-row dependencies  (Chao Li <li.evan.chao@gmail.com>)
Responses Re: Fix SET EXPRESSION for virtual columns with whole-row dependencies
List pgsql-hackers
On Tue, Jun 9, 2026 at 2:23 PM Chao Li <li.evan.chao@gmail.com> wrote:
>
> Hi,
>
> While testing “[f80bedd52] Allow ALTER COLUMN SET EXPRESSION on virtual columns”, I found that the feature missed
handlingwhole-row check constraints. 
>
> Here is a repro:
> ```
> evantest=# create table t(
> evantest(#   a int,
> evantest(#   b int generated always as (a*2) virtual,
> evantest(#   constraint row_c check (t is not null)
> evantest(# );
> CREATE TABLE
> evantest=# insert into t(a) values(1);
> INSERT 0 1
> evantest=# alter table t alter b set expression as (nullif(a, 1));
> ALTER TABLE
> evantest=# select * from t;
>  a | b
> ---+---
>  1 |
> (1 row)
> ```
>
> The ALTER TABLE should fail, because it makes b become NULL, which breaks the constraint row_c.
>

Hi.

In case you are wondering whole-row objects:
ALTER TABLE DROP COLUMN and ALTER COLUMN SET DATA TYPE are covered by
https://commitfest.postgresql.org/patch/5988 and
https://commitfest.postgresql.org/patch/6055.

Meanwhile, ALTER TABLE SET EXPRESSION is being handled over in
https://commitfest.postgresql.org/patch/6755



pgsql-hackers by date:

Previous
From: Tingchuan Sun
Date:
Subject: Re: Fix unqualified catalog references in psql describe queries
Next
From: Chao Li
Date:
Subject: Re: Fix SET EXPRESSION for virtual columns with whole-row dependencies