From 16d11d68437a6a37af1fea08d4a29ef463f0d62c Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Sat, 15 Oct 2022 19:24:26 +0200 Subject: Disallow MERGE cleanly for foreign partitions While directly targetting a foreign table with MERGE was already expressly forbidden, we failed to catch the case of a partitioned table that has a foreign table as a partition; and the result if you try is an incomprehensible error. Fix that by adding a specific check. Backpatch to 15. Reported-by: Tatsuhiro Nakamori Discussion: https://postgr.es/m/bt22nakamorit@oss.nttdata.com --- contrib/postgres_fdw/expected/postgres_fdw.out | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'contrib/postgres_fdw/expected') diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out index 1ca248f3379..499bf503866 100644 --- a/contrib/postgres_fdw/expected/postgres_fdw.out +++ b/contrib/postgres_fdw/expected/postgres_fdw.out @@ -8251,6 +8251,11 @@ select tableoid::regclass, * FROM remp2; (3 rows) delete from itrtest; +-- MERGE ought to fail cleanly +merge into itrtest using (select 1, 'foo') as source on (true) + when matched then do nothing; +ERROR: cannot execute MERGE on relation "remp1" +DETAIL: This operation is not supported for foreign tables. create unique index loct1_idx on loct1 (a); -- DO NOTHING without an inference specification is supported insert into itrtest values (1, 'foo') on conflict do nothing returning *; -- cgit v1.2.3