Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint - Mailing list pgsql-hackers

From jian he
Subject Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint
Date
Msg-id CACJufxGKnTwTLfEfKkL7dhn0-cy8W6J_KpiU1n0eoUV4yU-o5Q@mail.gmail.com
Whole thread Raw
In response to Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint  ("Matheus Alcantara" <matheusssilv97@gmail.com>)
Responses Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint
List pgsql-hackers
On Thu, Jan 15, 2026 at 11:29 PM Matheus Alcantara
<matheusssilv97@gmail.com> wrote:
>
> +       /*
> +        * Find everything that depends on the column (constraints, indexes, etc),
> +        * and record enough information to let us recreate the objects after
> +        * rewrite.
> +        */
> +       RememberAllDependentForRebuilding(tab, AT_SetExpression, rel, attnum, colName);
> +
> Perhaps this comments should be updated since we are now collecting
> these dependencies for virtual generated columns too that it not require
> a table rewrite.
>
> ---

I guess we can change it as:

    /*
     * Find everything that depends on the column (constraints, indexes, etc),
     * and record enough information to let us recreate the objects.
     */
    RememberAllDependentForRebuilding(tab, AT_SetExpression, rel,
attnum, colName);

>
> I think that it would be good to update the SET EXPRESSION AS
> documentation on doc/src/sgml/ref/alter_table.sgml to mention that for
> virtual columns the table is not rewritten but a full table scan may
> still be needed if the column has check constraints.
>
> --
> Matheus Alcantara
> EDB: https://www.enterprisedb.com

In doc/src/sgml/ref/alter_table.sgml, I intended to change it as follows:

   <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>



pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Skipping schema changes in publication
Next
From: Nazir Bilal Yavuz
Date:
Subject: Re: meson vs. llvm bitcode files