Re: BUG #18871: Cross-partition MERGE fails with unclear internal error
Tender Wang <tndrwang@gmail.com>
From: Tender Wang <tndrwang@gmail.com>
To: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2025-03-29T02:39:12Z
Lists: pgsql-bugs
Attachments
- 0001-Fix-cross-partition-merge-fail.patch (text/plain) patch 0001
Dean Rasheed <dean.a.rasheed@gmail.com> 于2025年3月29日周六 02:29写道: > On Fri, 28 Mar 2025 at 16:40, Tender Wang <tndrwang@gmail.com> wrote: > > > > I tried a quick fix by adding "case CMD_NOTHING" after "case CMD_DELETE" > like below: > > > > case CMD_DELETE: > > case CMD_NOTHING: > > break; > > > > It can work, and all regression tests pass. But I don't look into more > details. This solution may not fix the root cause. > > Yes, that looks like the right fix. > > This appears to be a trivial oversight in ExecInitPartitionInfo(). I > did a quick scan of other places that look at action->commandType and > I didn't see any others that overlook CMD_NOTHING. > Yes, indeed. I double-check it. In ExecInitPartitionInfo(), it has comments like: * This duplicates much of the logic in ExecInitMerge(), so something * changes there, look here too. ExecInitMerge() considers CMD_NOTHING operation. I give the attached fix. -- Thanks, Tender Wang
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix MERGE with DO NOTHING actions into a partitioned table.
- 8b6a0e2392b9 18.0 landed
- 14a33d3f0ae6 15.13 landed
- 8d4cd3b4a887 16.9 landed
- 25303678a1d3 17.5 landed