Re: BUG #19516: Mixup of OLD/NEW with RETURNING when parenthesized - Mailing list pgsql-bugs

From Marko Grujic
Subject Re: BUG #19516: Mixup of OLD/NEW with RETURNING when parenthesized
Date
Msg-id CAKQrOnpOSFrQ=cdSeHfoBFOwNT3=aa55t2VRZMt_xeOf9dMO8Q@mail.gmail.com
Whole thread
List pgsql-bugs

On Wed, Jun 10, 2026 at 12:10 PM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      19516
Logged by:          Marko Grujic
Email address:      markoog@gmail.com
PostgreSQL version: 18.4
Operating system:   MacOS, Debian
Description:       

Hi, reporting a basic bug which involves a RETURNING clause on DML with
parenthesized OLD/NEW.

Effectively, the (parenthesized) row reference isn't being honored, and
instead the default behavior is applied.

Seeing this on tip of master as well (19beta1).

postgres=# create table t(a int, b text);
CREATE TABLE
postgres=# insert into t values (1, 'one') returning (old).b, old.b,
(new).b, new.b;
  b  | b |  b  |  b
-----+---+-----+-----
 one |   | one | one
(1 row)

INSERT 0 1
postgres=# update t set b = '1' where a = 1 returning (old).b, old.b,
(new).b, new.b;
 b |  b  | b | b
---+-----+---+---
 1 | one | 1 | 1
(1 row)

UPDATE 1
postgres=# delete from t where a = 1 returning (old).b, old.b, (new).b,
new.b;
 b | b | b | b
---+---+---+---
 1 | 1 | 1 |
(1 row)

DELETE 1
postgres=# select version();
                                                      version
--------------------------------------------------------------------------------------------------------------------
 PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1) on x86_64-pc-linux-gnu, compiled
by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
(1 row)


pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #19516: Mixup of OLD/NEW with RETURNING when parenthesized
Next
From: "Matheus Alcantara"
Date:
Subject: Re: BUG #19484: Segmentation fault triggered by FDW