From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
---|---|
To: | Amul Sul <sulamul(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>, Vaibhav Dalvi <vaibhav(dot)dalvi(at)enterprisedb(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: ALTER COLUMN ... SET EXPRESSION to alter stored generated column's expression |
Date: | 2023-12-18 09:31:03 |
Message-ID: | 70d7eac3-1532-488d-856d-0ec55e94a92b@eisentraut.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 11.12.23 13:22, Amul Sul wrote:
>
> create table t1 (a int, b int generated always as (a + 1) stored);
> alter table t1 add column c int, alter column b set expression as (a
> + c);
> ERROR: 42703: column "c" does not exist
>
> I think intuitively, this ought to work. Maybe just moving the new
> pass
> after AT_PASS_ADD_COL would do it.
>
>
> I think we can't support that (like alter type) since we need to place
> this new
> pass before AT_PASS_OLD_INDEX & AT_PASS_OLD_CONSTR to re-add indexes and
> constraints for the validation.
Could we have AT_PASS_ADD_COL before AT_PASS_OLD_*? So overall it would be
...
AT_PASS_ALTER_TYPE,
AT_PASS_ADD_COL, // moved
AT_PASS_SET_EXPRESSION, // new
AT_PASS_OLD_INDEX,
AT_PASS_OLD_CONSTR,
AT_PASS_ADD_CONSTR,
...
This appears to not break any existing tests.
From | Date | Subject | |
---|---|---|---|
Next Message | Japin Li | 2023-12-18 09:32:22 | Re: Transaction timeout |
Previous Message | Peter Eisentraut | 2023-12-18 09:10:51 | Re: trying again to get incremental backup |