diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-07-21 07:40:05 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-07-21 07:52:10 +0200 |
commit | 81d5995b4b78017ef9e5c6f151361d1fb949924c (patch) | |
tree | f0c558de57c1c99fc91de212b9cceb2de627b1fc /src | |
parent | 90b6c339b2b37ee320ff6125ef8c8ad0073aa31b (diff) | |
download | postgresql-81d5995b4b78017ef9e5c6f151361d1fb949924c.tar.gz postgresql-81d5995b4b78017ef9e5c6f151361d1fb949924c.zip |
More improvements of error messages about mismatching relkind
Follow-up to 2ed532ee8c474e9767e76e1f3251cc3a0224358c, a few error
messages in the logical replication area currently only deal with
tables, but if we're anticipating more relkinds such as sequences
being handled, then these messages also fall into the category
affected by the previous patch, so adjust them too.
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/c9ba5c6a-4bd5-e12c-1b3c-edbcaedbf392@enterprisedb.com
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/pg_publication.c | 10 | ||||
-rw-r--r-- | src/backend/executor/execReplication.c | 14 | ||||
-rw-r--r-- | src/test/regress/expected/publication.out | 8 |
3 files changed, 10 insertions, 22 deletions
diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c index 36bfff97069..2a2fe03c13f 100644 --- a/src/backend/catalog/pg_publication.c +++ b/src/backend/catalog/pg_publication.c @@ -54,23 +54,23 @@ check_publication_add_relation(Relation targetrel) RelationGetForm(targetrel)->relkind != RELKIND_PARTITIONED_TABLE) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("\"%s\" is not a table", + errmsg("cannot add relation \"%s\" to publication", RelationGetRelationName(targetrel)), - errdetail("Only tables can be added to publications."))); + errdetail_relkind_not_supported(RelationGetForm(targetrel)->relkind))); /* Can't be system table */ if (IsCatalogRelation(targetrel)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("\"%s\" is a system table", + errmsg("cannot add relation \"%s\" to publication", RelationGetRelationName(targetrel)), - errdetail("System tables cannot be added to publications."))); + errdetail("This operation is not supported for system tables."))); /* UNLOGGED and TEMP relations cannot be part of publication. */ if (!RelationIsPermanent(targetrel)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("table \"%s\" cannot be replicated", + errmsg("cannot add relation \"%s\" to publication", RelationGetRelationName(targetrel)), errdetail("Temporary and unlogged relations cannot be replicated."))); } diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index 1e285e0349f..574d7d27fd9 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -608,22 +608,10 @@ void CheckSubscriptionRelkind(char relkind, const char *nspname, const char *relname) { - /* - * Give a more specific error for foreign tables. - */ - if (relkind == RELKIND_FOREIGN_TABLE) - ereport(ERROR, - (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("cannot use relation \"%s.%s\" as logical replication target", - nspname, relname), - errdetail("\"%s.%s\" is a foreign table.", - nspname, relname))); - if (relkind != RELKIND_RELATION && relkind != RELKIND_PARTITIONED_TABLE) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("cannot use relation \"%s.%s\" as logical replication target", nspname, relname), - errdetail("\"%s.%s\" is not a table.", - nspname, relname))); + errdetail_relkind_not_supported(relkind))); } diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index b5b065a1b6f..4a5ef0bc249 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -160,8 +160,8 @@ DROP TABLE testpub_parted1; DROP PUBLICATION testpub_forparted, testpub_forparted1; -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; -ERROR: "testpub_view" is not a table -DETAIL: Only tables can be added to publications. +ERROR: cannot add relation "testpub_view" to publication +DETAIL: This operation is not supported for views. SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk; RESET client_min_messages; @@ -182,8 +182,8 @@ Tables: -- fail - view ALTER PUBLICATION testpub_default ADD TABLE testpub_view; -ERROR: "testpub_view" is not a table -DETAIL: Only tables can be added to publications. +ERROR: cannot add relation "testpub_view" to publication +DETAIL: This operation is not supported for views. ALTER PUBLICATION testpub_default ADD TABLE testpub_tbl1; ALTER PUBLICATION testpub_default SET TABLE testpub_tbl1; ALTER PUBLICATION testpub_default ADD TABLE pub_test.testpub_nopk; |