Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Matheus Alcantara <matheusssilv97(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint
Date: 2026-01-19 16:11:48
Message-ID: CACJufxFefRWT6wTkShcMoZ+enEXpyEb7if+GziFMSoMUZN_Csw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Jan 17, 2026 at 12:07 AM Matheus Alcantara
<matheusssilv97(at)gmail(dot)com> wrote:
>
> >
> > <varlistentry id="sql-altertable-desc-set-expression">
> > <term><literal>SET EXPRESSION AS</literal></term>
> > <listitem>
> > <para>
> > This form replaces the expression of a generated column. Existing data
> > in a stored generated column is rewritten and all the future changes
> > will apply the new generation expression.
> > + Virtual generated columns do not require a table rewrite.
> > + However if the column is part of a <literal>CHECK</literal> constraint
> > + expression, the constraint will be rebuilt, requiring a table scan to
> > + ensure that existing rows meet the constraint.
> > </para>
>
> Sounds good.
>

hi.

I ultimately settled on the following:
+ Replacing the expression of a virtual generated columns do not require a
+ table rewrite, however if the column is part of a
<literal>CHECK</literal>
+ constraint expression, the constraint will be rebuilt, requiring a table
+ scan to ensure that existing rows meet the constraint.

--
jian
https://www.enterprisedb.com

Attachment Content-Type Size
v4-0001-Allow-ALTER-COLUMN-SET-EXPRESSION-on-virtual-columns-with-CHECK-c.patch text/x-patch 9.2 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2026-01-19 16:14:40 Re: tablecmds: clarify recurse vs recusing
Previous Message Ashutosh Bapat 2026-01-19 16:02:54 Re: tablecmds: clarify recurse vs recusing