pgsql: Fix system column accesses in ON CONFLICT ... RETURNING.

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix system column accesses in ON CONFLICT ... RETURNING.
Date: 2019-07-25 01:54:46
Message-ID: E1hqSxy-0004el-Jk@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix system column accesses in ON CONFLICT ... RETURNING.

After 277cb789836 ON CONFLICT ... SET ... RETURNING failed with
ERROR: virtual tuple table slot does not have system attributes
when taking the update path, as the slot used to insert into the
table (and then process RETURNING) was defined to be a virtual slot in
that commit. Virtual slots don't support system columns except for
tableoid and ctid, as the other system columns are AM dependent.

Fix that by using a slot of the table's type. Add tests for system
column accesses in ON CONFLICT ... RETURNING.

Reported-By: Roby, bisected to the relevant commit by Jeff Janes
Author: Andres Freund
Discussion: https://postgr.es/m/73436355-6432-49B1-92ED-1FE4F7E7E100@finefun.com.au
Backpatch: 12-, where the bug was introduced in 277cb789836

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/f9257cffef3bb16aba2dbbe05fd8bf0afaa6b1f2

Modified Files
--------------
src/backend/executor/nodeModifyTable.c | 9 +++++++--
src/test/regress/expected/update.out | 23 +++++++++++++++++++++++
src/test/regress/sql/update.sql | 15 +++++++++++++++
3 files changed, 45 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2019-07-25 12:42:39 pgsql: doc: Fix typo
Previous Message Andres Freund 2019-07-25 01:54:45 pgsql: Fix system column accesses in ON CONFLICT ... RETURNING.