diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-05-16 22:57:16 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-05-16 22:57:16 -0400 |
commit | 944dc0f9cec7c3d33648f41aaecfbd976106e975 (patch) | |
tree | 62b2499c3f057a28e0f8e7cac96e769929115a3f /src/backend/executor/execReplication.c | |
parent | 0fbfb65d4bfd429651dc28faf3ad1846c965e18d (diff) | |
download | postgresql-944dc0f9cec7c3d33648f41aaecfbd976106e975.tar.gz postgresql-944dc0f9cec7c3d33648f41aaecfbd976106e975.zip |
Check relkind of tables in CREATE/ALTER SUBSCRIPTION
We used to only check for a supported relkind on the subscriber during
replication, which is needed to ensure that the setup is valid and we
don't crash. But it's also useful to tell the user immediately when
CREATE or ALTER SUBSCRIPTION is executed that the relation being added
to the subscription is not of a supported relkind.
Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Reported-by: tushar <tushar.ahuja@enterprisedb.com>
Diffstat (limited to 'src/backend/executor/execReplication.c')
-rw-r--r-- | src/backend/executor/execReplication.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index 327a0bad388..6af8018b711 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -551,3 +551,23 @@ CheckCmdReplicaIdentity(Relation rel, CmdType cmd) RelationGetRelationName(rel)), errhint("To enable deleting from the table, set REPLICA IDENTITY using ALTER TABLE."))); } + + +/* + * Check if we support writing into specific relkind. + * + * The nspname and relname are only needed for error reporting. + */ +void +CheckSubscriptionRelkind(char relkind, const char *nspname, + const char *relname) +{ + /* + * We currently only support writing to regular tables. + */ + if (relkind != RELKIND_RELATION) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("logical replication target relation \"%s.%s\" is not a table", + nspname, relname))); +} |