Re: Bug in statement trigger for MERGE operations that move rows between partitions

From: Michael Ries <mries(at)salesforce(dot)com>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: dean(dot)a(dot)rasheed(at)gmail(dot)com
Subject: Re: Bug in statement trigger for MERGE operations that move rows between partitions
Date: 2026-10-20 15:36:44
Message-ID: CAKWDHLiXMhzWxyY4KxPurX1-S=ZftX6EB13gGT2xDkP-GgKLeQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Following up on my bug report on October 8th, I think putting it in a
markdown file was not the convention for this mailing list.
The bug occurs after PG 15.6+ or PG 16.2+. When a MERGE UPDATE action
moves a row to another partition, the row is missing from the
statement-level AFTER UPDATE transition tables (OLD TABLE/ NEW TABLE).
A plain UPDATE that moves the row is correct on every version I
tested. The row movement can be seen on a local build before commit
c0bfdaf2b (REL_15) / 06a546382 (REL_16) / a4f7d33a9 (master)

A brief psql repro is in the markdown file along with a minimal patch
to fix the issue on REL_15. I'm happy to help open a PR or otherwise
suggest fixes, but I first wanted to open the bug and see if anyone
has guidance on how to handle it from here.

On Thu, Oct 8, 2026 at 3:44 PM Michael Ries <mries(at)salesforce(dot)com> wrote:
>
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Rui Zhao 2026-10-20 15:43:41 GIN jsonb_ops misses root strings in strict jsonpath queries
Previous Message Staroverov Ilja 2026-10-20 13:20:41 Re: BUG #19644: byteaout, float8out and float4out are marked IMMUTABLE but depend on GUCs