Re: Fix error message for MERGE foreign tables - Mailing list pgsql-hackers

From Richard Guo
Subject Re: Fix error message for MERGE foreign tables
Date
Msg-id CAMbWs4_-Gn_gW-36+JW_4wLFi+z6e3SxiHOTyjXZYnHfV8N8Qw@mail.gmail.com
Whole thread Raw
In response to Re: Fix error message for MERGE foreign tables  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: Fix error message for MERGE foreign tables
List pgsql-hackers

On Fri, Oct 14, 2022 at 12:07 PM Richard Guo <guofenglinux@gmail.com> wrote:

On Fri, Oct 14, 2022 at 10:59 AM bt22nakamorit <bt22nakamorit@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

pgsql-hackers by date:

Previous
From: Richard Guo
Date:
Subject: Re: Fix error message for MERGE foreign tables
Next
From: Amit Kapila
Date:
Subject: Re: Perform streaming logical transactions by background workers and parallel apply