1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-11 20:28:21 +03:00

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 <bt22nakamorit@oss.nttdata.com>
Discussion: https://postgr.es/m/bt22nakamorit@oss.nttdata.com
This commit is contained in:
Alvaro Herrera
2022-10-15 19:24:26 +02:00
parent 1054c604bc
commit cba4e78f35
3 changed files with 29 additions and 0 deletions

View File

@ -8284,6 +8284,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 *;

View File

@ -2207,6 +2207,10 @@ select tableoid::regclass, * FROM remp2;
delete from itrtest;
-- MERGE ought to fail cleanly
merge into itrtest using (select 1, 'foo') as source on (true)
when matched then do nothing;
create unique index loct1_idx on loct1 (a);
-- DO NOTHING without an inference specification is supported