On 16/01/26 08:31, jian he wrote:
> 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);
>
It looks good.
>>
>> 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.
>>
>
> 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>
Sounds good.
--
Matheus Alcantara
EDB: https://www.enterprisedb.com