Disallow whole-row variables in GENERATED expressions.
Tom Lane <tgl@sss.pgh.pa.us>
Disallow whole-row variables in GENERATED expressions. This was previously allowed, but I think that was just an oversight. It's a clear violation of the rule that a generated column cannot depend on itself or other generated columns. Moreover, because the code was relying on the assumption that no such cross-references exist, it was pretty easy to crash ALTER TABLE and perhaps other places. Even if you managed not to crash, you got quite unstable, implementation-dependent results. Per report from Vitaly Ustinov. Back-patch to v12 where GENERATED came in. Discussion: https://postgr.es/m/CAM_DEiWR2DPT6U4xb-Ehigozzd3n3G37ZB1+867zbsEVtYoJww@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/heap.c | modified | +13 −2 |
| src/test/regress/expected/generated.out | modified | +7 −0 |
| src/test/regress/sql/generated.sql | modified | +3 −0 |
Discussion
- Generated column is not updated (Postgres 13) 10 messages · 2021-05-19 → 2021-05-20