| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Fix usage of "tableoid" in GENERATED expressions. |
| Date: | 2021-05-21 19:02:20 |
| Message-ID: | E1lkAPc-0004Oy-B9@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Fix usage of "tableoid" in GENERATED expressions.
We consider this supported (though I've got my doubts that it's a
good idea, because tableoid is not immutable). However, several
code paths failed to fill the field in soon enough, causing such
a GENERATED expression to see zero or the wrong value. This
occurred when ALTER TABLE adds a new GENERATED column to a table
with existing rows, and during regular INSERT or UPDATE on a
foreign table with GENERATED columns.
Noted during investigation of a report from Vitaly Ustinov.
Back-patch to v12 where GENERATED came in.
Discussion: https://postgr.es/m/CAM_DEiWR2DPT6U4xb-Ehigozzd3n3G37ZB1+867zbsEVtYoJww@mail.gmail.com
Branch
------
REL_12_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/dfe51ffbe78a16368073c2838c04e603d3d76915
Modified Files
--------------
src/backend/commands/tablecmds.c | 13 ++++++++-----
src/backend/executor/nodeModifyTable.c | 24 ++++++++++++++++++------
src/test/regress/expected/generated.out | 13 ++++++++-----
src/test/regress/sql/generated.sql | 5 ++++-
4 files changed, 38 insertions(+), 17 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2021-05-21 19:13:27 | pgsql: Disallow whole-row variables in GENERATED expressions. |
| Previous Message | Tom Lane | 2021-05-21 18:04:21 | pgsql: Restore the portal-level snapshot after procedure COMMIT/ROLLBAC |