| 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-16 11:31:35 |
| Message-ID: | CACJufxGKnTwTLfEfKkL7dhn0-cy8W6J_KpiU1n0eoUV4yU-o5Q@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Thu, Jan 15, 2026 at 11:29 PM Matheus Alcantara
<matheusssilv97(at)gmail(dot)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>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Nazir Bilal Yavuz | 2026-01-16 11:33:31 | Re: meson vs. llvm bitcode files |
| Previous Message | Amit Kapila | 2026-01-16 11:29:08 | Re: Skipping schema changes in publication |