mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Improve publication error messages
Commit 81d5995b4b
introduced more fine-grained errormessages for
incorrect relkinds for publication, while unlogged and temporary
tables were reported with using the same message. This provides
separate error messages for these types of relpersistence.
Author: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Reviewed-by: Jeevan Ladhe <jeevan.ladhe@enterprisedb.com>
Reviewed-by: Euler Taveira <euler@eulerto.com>
Discussion: https://postgr.es/m/CALj2ACW9S=AswyQHjtO6WMcsergMkCBTtzXGrM8DX26DzfeTLQ@mail.gmail.com
This commit is contained in:
parent
3374a87b62
commit
aa12781b0d
@ -256,6 +256,12 @@ SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again
|
||||
ANALYZE ft1;
|
||||
ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_estimate 'true');
|
||||
-- ===================================================================
|
||||
-- test error case for create publication on foreign table
|
||||
-- ===================================================================
|
||||
CREATE PUBLICATION testpub_ftbl FOR TABLE ft1; -- should fail
|
||||
ERROR: cannot add relation "ft1" to publication
|
||||
DETAIL: This operation is not supported for foreign tables.
|
||||
-- ===================================================================
|
||||
-- simple queries
|
||||
-- ===================================================================
|
||||
-- single table without alias
|
||||
|
@ -247,6 +247,11 @@ SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again
|
||||
ANALYZE ft1;
|
||||
ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_estimate 'true');
|
||||
|
||||
-- ===================================================================
|
||||
-- test error case for create publication on foreign table
|
||||
-- ===================================================================
|
||||
CREATE PUBLICATION testpub_ftbl FOR TABLE ft1; -- should fail
|
||||
|
||||
-- ===================================================================
|
||||
-- simple queries
|
||||
-- ===================================================================
|
||||
|
@ -70,12 +70,18 @@ check_publication_add_relation(Relation targetrel)
|
||||
errdetail("This operation is not supported for system tables.")));
|
||||
|
||||
/* UNLOGGED and TEMP relations cannot be part of publication. */
|
||||
if (!RelationIsPermanent(targetrel))
|
||||
if (targetrel->rd_rel->relpersistence == RELPERSISTENCE_TEMP)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
errmsg("cannot add relation \"%s\" to publication",
|
||||
RelationGetRelationName(targetrel)),
|
||||
errdetail("Temporary and unlogged relations cannot be replicated.")));
|
||||
errdetail("This operation is not supported for temporary tables.")));
|
||||
else if (targetrel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
errmsg("cannot add relation \"%s\" to publication",
|
||||
RelationGetRelationName(targetrel)),
|
||||
errdetail("This operation is not supported for unlogged tables.")));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -258,6 +258,22 @@ DROP TABLE testpub_tbl4;
|
||||
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view;
|
||||
ERROR: cannot add relation "testpub_view" to publication
|
||||
DETAIL: This operation is not supported for views.
|
||||
CREATE TEMPORARY TABLE testpub_temptbl(a int);
|
||||
-- fail - temporary table
|
||||
CREATE PUBLICATION testpub_fortemptbl FOR TABLE testpub_temptbl;
|
||||
ERROR: cannot add relation "testpub_temptbl" to publication
|
||||
DETAIL: This operation is not supported for temporary tables.
|
||||
DROP TABLE testpub_temptbl;
|
||||
CREATE UNLOGGED TABLE testpub_unloggedtbl(a int);
|
||||
-- fail - unlogged table
|
||||
CREATE PUBLICATION testpub_forunloggedtbl FOR TABLE testpub_unloggedtbl;
|
||||
ERROR: cannot add relation "testpub_unloggedtbl" to publication
|
||||
DETAIL: This operation is not supported for unlogged tables.
|
||||
DROP TABLE testpub_unloggedtbl;
|
||||
-- fail - system table
|
||||
CREATE PUBLICATION testpub_forsystemtbl FOR TABLE pg_publication;
|
||||
ERROR: cannot add relation "pg_publication" to publication
|
||||
DETAIL: This operation is not supported for system tables.
|
||||
SET client_min_messages = 'ERROR';
|
||||
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk;
|
||||
RESET client_min_messages;
|
||||
|
@ -150,6 +150,20 @@ DROP TABLE testpub_tbl4;
|
||||
|
||||
-- fail - view
|
||||
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view;
|
||||
|
||||
CREATE TEMPORARY TABLE testpub_temptbl(a int);
|
||||
-- fail - temporary table
|
||||
CREATE PUBLICATION testpub_fortemptbl FOR TABLE testpub_temptbl;
|
||||
DROP TABLE testpub_temptbl;
|
||||
|
||||
CREATE UNLOGGED TABLE testpub_unloggedtbl(a int);
|
||||
-- fail - unlogged table
|
||||
CREATE PUBLICATION testpub_forunloggedtbl FOR TABLE testpub_unloggedtbl;
|
||||
DROP TABLE testpub_unloggedtbl;
|
||||
|
||||
-- fail - system table
|
||||
CREATE PUBLICATION testpub_forsystemtbl FOR TABLE pg_publication;
|
||||
|
||||
SET client_min_messages = 'ERROR';
|
||||
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk;
|
||||
RESET client_min_messages;
|
||||
|
Loading…
Reference in New Issue
Block a user