Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXGWN-003A73-1o for pgsql-bugs@arkaria.postgresql.org; Wed, 10 Jun 2026 10:50:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXGWM-00ApZ4-1f for pgsql-bugs@arkaria.postgresql.org; Wed, 10 Jun 2026 10:50:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXGWM-00ApYu-0j for pgsql-bugs@lists.postgresql.org; Wed, 10 Jun 2026 10:50:54 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wXGWJ-00000002Je7-4Bo1 for pgsql-bugs@lists.postgresql.org; Wed, 10 Jun 2026 10:50:53 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-3965adfd75fso58215761fa.1 for ; Wed, 10 Jun 2026 03:50:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781088651; cv=none; d=google.com; s=arc-20240605; b=HuGb4uU6DwQ3ktuLX4R1gf7HyeiBf9fxLTT3LoScRO+tfR7DnBKtJqfBxM743V6Ng8 dWpRZuFs4HL2FlNxIQrr7yXS2xcZe0lMVh7Mz4yQBM181tBbJQcyPKovD3GcTmi5GlxA 6s1YVKcPAVP3rGhXXiPHlTeMNIt1R4k9NN2kYsyNqN1Mq3AgBxCzqHAhH+ch1ACn2xOD v91jmdhAvq5xM9IhEOpfOT0cpG2ZAhIIQ4ShqPi9ly3UMnFqB9lyhvQQUc6YmCFpD9eP JCjc0+EBs+Np04+0TIVdoC5D++RClZLDjhpt8AHVVeg7qboSd+4nSeXo5dMJQ9IGlj0z Wqgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=fyjITrrszDC7jKxq1sdrOyL3Qodero6yDvIzOKYXoj4=; fh=/gQe77b11iMZdcPj/nJr/Ghqi6rQp5FPrPbdO93bmOA=; b=PCAL63m2yZ0BWZKg2mEzPyolwb6LgcqrPHsO8WS1e52G4L6LjHT6TsxGe8wJbFMwNW abkZPEfXwHPgnx7eWHMFzP2kel2ia6Qd1l41KY8b5knJNa49izxsGAPe9DPM7acORK+R 5xQz/ovQt2S1a7ufEPWxokoFjbMbMiCPMG0fxgT3YZjf1NvgJpMIIeb4P3eEqfz7cM+8 rONMDyEZGaR/vMadTkMo8VRqf3IyROsegVkFHn3MPrtBFkG9Lhst4QyfNBwK8s1XxQax JE9M4kEBnc2k7KhQSjCqJngzbqZLxIoKdsUwj++INyjPvSziV3NYfXxrS4eJw//MEmuu vHmA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781088651; x=1781693451; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=fyjITrrszDC7jKxq1sdrOyL3Qodero6yDvIzOKYXoj4=; b=MECaIGRLBrhSXxFd/ZCPhk6u4MNHvLS1iPJPiYS08eDz0SW5OZKtPDktQTYSV5xYd/ zWjm6d49yWdsyPMfTioX/cAvk1aTxDDDO9GSiJipQpF1FVF72rZk/1aqISfA5lNUW0W/ ERt4p/MuiyynqyqVme3DoyFuompVScmj5bmtM3BHGS6guY6aq6EqREDecO5q6IDX6MCc n1YIaeWrlHEf4Y8n8iwjWHm0xR2kQ+r9OwIgr+tVuVa6/fQAm04npc/FhOATA44C8ZdP AKguGX8rSXxTckzdVPGjoDZ9M5bkanEgfCx3Erq1Xc+G9XwBMsnSDjfsO+f2zTSwkRpK 4Xkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781088651; x=1781693451; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fyjITrrszDC7jKxq1sdrOyL3Qodero6yDvIzOKYXoj4=; b=aIvNNnexh/pwOlHbHnOhRAMxZoCJj3WRf+vUErtqQ2NhTSaIPUZ+cPsR6kNymo4Eb2 WAI3vwtcwGYyEUAbZcr9F8R+WjwPFzVYtG7QcUxcl7fMRoUfLMIgqPEEcd0TPUYPD44i 8uwLS2gkI1ULqjAX0aJfwmpdqFyQpZbemyiTndKM0zMKBlgj/N1qX6It/2a/BUGElrde OsBlRmhGh40WKTd+8swlI3889IbNHzr79PSXuH+g0XBYfppeb1vLx+6xA4K/t4ChW/Vu axoHzlG+8KKwSS8NfgFneuAAzTSugi/0LiYwlDw0x8Dxft8oOOjDLxL9B7zZRfcDNkM3 MXIg== X-Gm-Message-State: AOJu0Yym/YGMtEBYPtqSiJpmp1Vgel2qyWrgFMOJ2wFWN1keB6Zq1tEp yTDcU2Vrja1ghzT5IuzT5g2IZt5tWgA5INcFOw+rWt3tc0u7x84S0opyr2RJ9muRv3fHWf2BHov 2FJ+aCkUux1lexbnVfJ+kmCdXNIZB3MCw9G0BpC8= X-Gm-Gg: Acq92OFjaMewJeSRwEo/UFFJIIDT6IslTG0PhzAmn2Y4QXzEVyjG8WIx+Kav9eDpaFk zkbSPur3KfICQpY9hegMBhh70OFI4pqxkECkj3QIBbzUyZsoRZE2c6iMCkoU92u4TaXler/O171 xpfOYFuxyTkryPE6SqQPLwFt3bJUlYAcTSqLsIvFxfpJkgbSakqUWNLKVOe5/UYHVNBX3BctCMg 8cv6zikV6bM2SEJeQHr5K7aJBHZT4pm6TE1U2bufIyjFTnW0kPStvawoJd+sEKyt8n38gYdCPR0 3wZTevHWvSII5s9HFsz7fiiXtSJPHi85E4Jvog4FGY/NX1zzIyDOsGYM5wJLM5JYlMo0GG1PO1r 5S/TSKQ== X-Received: by 2002:a2e:2203:0:b0:38e:d3e6:a89a with SMTP id 38308e7fff4ca-396d08d90bbmr47974641fa.20.1781088650857; Wed, 10 Jun 2026 03:50:50 -0700 (PDT) MIME-Version: 1.0 References: <19516-97e045ee5e78c98d@postgresql.org> In-Reply-To: <19516-97e045ee5e78c98d@postgresql.org> From: Marko Grujic Date: Wed, 10 Jun 2026 12:50:39 +0200 X-Gm-Features: AVVi8CcYcddEN_esSOrQ5WzpJVQV8QjPu2vwy8Hjxp4LKe2Yxu7l0kMaXjUo-MM Message-ID: Subject: Re: BUG #19516: Mixup of OLD/NEW with RETURNING when parenthesized To: pgsql-bugs@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000005911e00653e4045e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005911e00653e4045e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Proposed patch: https://www.postgresql.org/message-id/CAOvwyF2cO_5mAt%3Dw%3Dy-dFnaG5UkZ%2B3= H8nSDoKF_iuWZHsU2ARg%40mail.gmail.com On Wed, Jun 10, 2026 at 12:10=E2=80=AFPM 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=3D# create table t(a int, b text); > CREATE TABLE > postgres=3D# 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=3D# update t set b =3D '1' where a =3D 1 returning (old).b, old.= b, > (new).b, new.b; > b | b | b | b > ---+-----+---+--- > 1 | one | 1 | 1 > (1 row) > > UPDATE 1 > postgres=3D# delete from t where a =3D 1 returning (old).b, old.b, (new).= b, > new.b; > b | b | b | b > ---+---+---+--- > 1 | 1 | 1 | > (1 row) > > DELETE 1 > postgres=3D# select version(); > version > > -------------------------------------------------------------------------= ------------------------------------------- > PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1) on x86_64-pc-linux-gnu, compile= d > by gcc (Debian 14.2.0-19) 14.2.0, 64-bit > (1 row) > > > --0000000000005911e00653e4045e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On W= ed, Jun 10, 2026 at 12:10=E2=80=AFPM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has b= een logged on the website:

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

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=3D# create table t(a int, b text);
CREATE TABLE
postgres=3D# insert into t values (1, 'one') returning (old).b, old= .b,
(new).b, new.b;
=C2=A0 b=C2=A0 | b |=C2=A0 b=C2=A0 |=C2=A0 b
-----+---+-----+-----
=C2=A0one |=C2=A0 =C2=A0| one | one
(1 row)

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

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

DELETE 1
postgres=3D# select version();
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 version
---------------------------------------------------------------------------= -----------------------------------------
=C2=A0PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1) on x86_64-pc-linux-gnu, comp= iled
by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
(1 row)


--0000000000005911e00653e4045e--