public inbox for pgsql-bugs@postgresql.org
help / color / mirror / Atom feedFrom: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: 303677365@qq.com
Subject: BUG #19462: MERGE on partitioned table with INSERT DEFAULT VALUES fails with "unknown action in MERGE WHEN clau
Date: Mon, 20 Apr 2026 09:34:09 +0000
Message-ID: <19462-563c85bec169995a@postgresql.org> (raw)
The following bug has been logged on the website:
Bug reference: 19462
Logged by: chunling qin
Email address: 303677365@qq.com
PostgreSQL version: 15.0
Operating system: centos
Description:
## Summary
A MERGE statement targeting a partitioned table fails with `ERROR: unknown
action in MERGE WHEN clause` when the NOT MATCHED clause uses `INSERT
DEFAULT VALUES`.
## PostgreSQL Version
```
PostgreSQL 15devel on x86_64-pc-linux-gnu, compiled by clang version 17.0.6,
64-bit
```
Tested on REL_15_STABLE branch.
## Steps to Reproduce
```sql
-- Setup: Create partitioned target table
CREATE TABLE pmerge_tgt (id INT) PARTITION BY RANGE (id);
CREATE TABLE pmerge_tgt_lo PARTITION OF pmerge_tgt FOR VALUES FROM
(MINVALUE) TO (100);
CREATE TABLE pmerge_tgt_hi PARTITION OF pmerge_tgt FOR VALUES FROM (100) TO
(MAXVALUE);
CREATE TABLE pmerge_tgt_def PARTITION OF pmerge_tgt DEFAULT;
-- Create source table
CREATE TABLE pmerge_src (id INT);
-- Insert test data
INSERT INTO pmerge_tgt VALUES (50);
INSERT INTO pmerge_src VALUES (200);
-- Bug reproduction
MERGE INTO pmerge_tgt t USING pmerge_src s ON t.id > 1000
WHEN MATCHED THEN DO NOTHING
WHEN NOT MATCHED THEN INSERT DEFAULT VALUES;
```
This issue could not be reproduced with the latest version, but we can
easily reproduced by PostgreSQL 15devel. I am submitting this report for
official confirmation.
-- Bug reproduction
MERGE INTO pmerge_tgt t USING pmerge_src s ON t.id > 1000
WHEN MATCHED THEN DO NOTHING
WHEN NOT MATCHED THEN INSERT DEFAULT VALUES;ERROR: relation "pmerge_tgt"
already exists
postgres=# ERROR: relation "pmerge_tgt_lo" already exists
postgres=# ERROR: relation "pmerge_tgt_hi" already exists
postgres=# ERROR: relation "pmerge_tgt_def" already exists
postgres=# postgres=# postgres=# ERROR: relation "pmerge_src" already
exists
postgres=# postgres=# postgres=# INSERT 0 1
postgres=# INSERT 0 1
postgres=# postgres=# postgres=# postgres-# postgres-#
ERROR: unknown action in MERGE WHEN clause
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, 303677365@qq.com
Subject: Re: BUG #19462: MERGE on partitioned table with INSERT DEFAULT VALUES fails with "unknown action in MERGE WHEN clau
In-Reply-To: <19462-563c85bec169995a@postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox