Re: Virtual generated columns

Поиск
Список
Период
Сортировка
От Richard Guo
Тема Re: Virtual generated columns
Дата
Msg-id CAMbWs4-ow3ZCj=+07GBr6-umNQ6Bg-HkQAofyXDxZET1aJa63g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Virtual generated columns  (Alexander Lakhin <exclusion@gmail.com>)
Список pgsql-hackers
On Fri, May 16, 2025 at 1:00 PM Alexander Lakhin <exclusion@gmail.com> wrote:
> I've discovered yet another way to trigger that error:
> create table vt (a int, b int generated always as (a * 2), c int);
> insert into vt values(1);
> alter table vt alter column c type bigint using b + c;
>
> ERROR:  XX000: unexpected virtual generated column reference
> LOCATION:  CheckVarSlotCompatibility, execExprInterp.c:2410

Thank you for the report.  It seems that we fail to expand references
to virtual generated columns in the NewColumnValues expression when
altering tables.  We might be able to fix it by:

@@ -6203,7 +6203,7 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
        NewColumnValue *ex = lfirst(l);

        /* expr already planned */
-       ex->exprstate = ExecInitExpr((Expr *) ex->expr, NULL);
+       ex->exprstate = ExecInitExpr((Expr *)
expand_generated_columns_in_expr((Node *) ex->expr, oldrel, 1), NULL);

Thanks
Richard



В списке pgsql-hackers по дате отправления: