On Fri, Oct 14, 2022 at 12:07 PM Richard Guo <guofengli...@gmail.com> wrote:
> > On Fri, Oct 14, 2022 at 10:59 AM bt22nakamorit < > bt22nakamo...@oss.nttdata.com> wrote: > >> Hi, >> >> MERGE command does not accept foreign tables as targets. >> When a foreign table is specified as a target, it shows error messages >> like this: >> >> -- ERROR: cannot execute MERGE on relation "child1" >> -- DETAIL: This operation is not supported for foreign tables. >> >> However, when a partitioned table includes foreign tables as partitions >> and MERGE is executed on the partitioned table, following error message >> shows. >> >> -- ERROR: unexpected operation: 5 >> >> The latter error message is unclear, and should be the same as the >> former one. >> The attached patch adds the code to display error the former error >> messages in the latter case. >> Any thoughts? > > > +1. The new message is an improvement to the default one. > > I wonder if we can provide more details in the error message, such as > foreign table name. > Maybe something like below, so that we keep it consistent with the case of a foreign table being specified as a target. --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -1872,6 +1872,13 @@ postgresPlanForeignModify(PlannerInfo *root, returningList, &retrieved_attrs); break; + case CMD_MERGE: + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot execute MERGE on relation \"%s\"", + RelationGetRelationName(rel)), + errdetail_relkind_not_supported(rel->rd_rel->relkind))); + break; Thanks Richard