mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
get_object_address: separate domain constraints from table constraints
Apart from enabling comments on domain constraints, this enables a future project to replicate object dropping to remote servers: with the current mechanism there's no way to distinguish between the two types of constraints, so there's no way to know what to drop. Also added support for the domain constraint comments in psql's \dd and pg_dump. Catalog version bumped due to the change in ObjectType enum.
This commit is contained in:
@ -478,3 +478,24 @@ UPDATE deferred_excl SET f1 = 3;
|
||||
ALTER TABLE deferred_excl ADD EXCLUDE (f1 WITH =);
|
||||
|
||||
DROP TABLE deferred_excl;
|
||||
|
||||
-- Comments
|
||||
CREATE TABLE constraint_comments_tbl (a int CONSTRAINT the_constraint CHECK (a > 0));
|
||||
CREATE DOMAIN constraint_comments_dom AS int CONSTRAINT the_constraint CHECK (value > 0);
|
||||
|
||||
COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS 'yes, the comment';
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment';
|
||||
|
||||
-- no such constraint
|
||||
COMMENT ON CONSTRAINT no_constraint ON constraint_comments_tbl IS 'yes, the comment';
|
||||
COMMENT ON CONSTRAINT no_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment';
|
||||
|
||||
-- no such table/domain
|
||||
COMMENT ON CONSTRAINT the_constraint ON no_comments_tbl IS 'bad comment';
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN no_comments_dom IS 'another bad comment';
|
||||
|
||||
COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS NULL;
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS NULL;
|
||||
|
||||
DROP TABLE constraint_comments_tbl;
|
||||
DROP DOMAIN constraint_comments_dom;
|
||||
|
@ -645,3 +645,22 @@ ALTER TABLE deferred_excl ADD EXCLUDE (f1 WITH =);
|
||||
ERROR: could not create exclusion constraint "deferred_excl_f1_excl"
|
||||
DETAIL: Key (f1)=(3) conflicts with key (f1)=(3).
|
||||
DROP TABLE deferred_excl;
|
||||
-- Comments
|
||||
CREATE TABLE constraint_comments_tbl (a int CONSTRAINT the_constraint CHECK (a > 0));
|
||||
CREATE DOMAIN constraint_comments_dom AS int CONSTRAINT the_constraint CHECK (value > 0);
|
||||
COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS 'yes, the comment';
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment';
|
||||
-- no such constraint
|
||||
COMMENT ON CONSTRAINT no_constraint ON constraint_comments_tbl IS 'yes, the comment';
|
||||
ERROR: constraint "no_constraint" for table "constraint_comments_tbl" does not exist
|
||||
COMMENT ON CONSTRAINT no_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment';
|
||||
ERROR: constraint "no_constraint" for domain "constraint_comments_dom" does not exist
|
||||
-- no such table/domain
|
||||
COMMENT ON CONSTRAINT the_constraint ON no_comments_tbl IS 'bad comment';
|
||||
ERROR: relation "no_comments_tbl" does not exist
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN no_comments_dom IS 'another bad comment';
|
||||
ERROR: type "no_comments_dom" does not exist
|
||||
COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS NULL;
|
||||
COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS NULL;
|
||||
DROP TABLE constraint_comments_tbl;
|
||||
DROP DOMAIN constraint_comments_dom;
|
||||
|
Reference in New Issue
Block a user