Fix MERGE with DO NOTHING actions into a partitioned table.
authorDean Rasheed <dean.a.rasheed@gmail.com>
Sat, 29 Mar 2025 09:58:40 +0000 (09:58 +0000)
committerDean Rasheed <dean.a.rasheed@gmail.com>
Sat, 29 Mar 2025 09:58:40 +0000 (09:58 +0000)
commit8b6a0e2392b9fc3f9b821da705797bb54c982dc1
tree85794f1bba2c72fffc3b59a1d6fb60ce39bf13af
parenta0ed19e0a9efe93b3b83d6e3fe8f77656be253a2
Fix MERGE with DO NOTHING actions into a partitioned table.

ExecInitPartitionInfo() duplicates much of the logic in
ExecInitMerge(), except that it failed to handle DO NOTHING
actions. This would cause an "unknown action in MERGE WHEN clause"
error if a MERGE with any DO NOTHING actions attempted to insert into
a partition not already initialised by ExecInitModifyTable().

Bug: #18871
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Tender Wang <tndrwang@gmail.com>
Reviewed-by: Gurjeet Singh <gurjeet@singh.im>
Discussion: https://postgr.es/m/18871-b44e3c96de3bd2e8%40postgresql.org
Backpatch-through: 15
src/backend/executor/execPartition.c
src/backend/executor/nodeModifyTable.c
src/test/regress/expected/merge.out
src/test/regress/sql/merge.sql