pgsql: Fix system column accesses in ON CONFLICT ... RETURNING. - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Fix system column accesses in ON CONFLICT ... RETURNING.
Date
Msg-id E1hqSxx-0004eP-48@gemulon.postgresql.org
Whole thread Raw
List 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
------
master

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

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(-)


pgsql-committers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: pgsql: Improve stability of TAP test for synchronous replication
Next
From: Andres Freund
Date:
Subject: pgsql: Fix system column accesses in ON CONFLICT ... RETURNING.