mirror of
https://github.com/postgres/postgres.git
synced 2025-07-09 22:41:56 +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:
doc/src/sgml/ref
src
backend
catalog
commands
parser
tcop
bin
include
nodes
test
regress
@ -5572,6 +5572,7 @@ opt_restart_seqs:
|
||||
* CAST (<src type> AS <dst type>) |
|
||||
* COLUMN <relname>.<colname> |
|
||||
* CONSTRAINT <constraintname> ON <relname> |
|
||||
* CONSTRAINT <constraintname> ON DOMAIN <domainname> |
|
||||
* FUNCTION <funcname> (arg1, arg2, ...) |
|
||||
* LARGE OBJECT <oid> |
|
||||
* OPERATOR <op> (leftoperand_typ, rightoperand_typ) |
|
||||
@ -5623,12 +5624,21 @@ CommentStmt:
|
||||
| COMMENT ON CONSTRAINT name ON any_name IS comment_text
|
||||
{
|
||||
CommentStmt *n = makeNode(CommentStmt);
|
||||
n->objtype = OBJECT_CONSTRAINT;
|
||||
n->objtype = OBJECT_TABCONSTRAINT;
|
||||
n->objname = lappend($6, makeString($4));
|
||||
n->objargs = NIL;
|
||||
n->comment = $8;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| COMMENT ON CONSTRAINT name ON DOMAIN_P any_name IS comment_text
|
||||
{
|
||||
CommentStmt *n = makeNode(CommentStmt);
|
||||
n->objtype = OBJECT_DOMCONSTRAINT;
|
||||
n->objname = lappend($7, makeString($4));
|
||||
n->objargs = NIL;
|
||||
n->comment = $9;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| COMMENT ON POLICY name ON any_name IS comment_text
|
||||
{
|
||||
CommentStmt *n = makeNode(CommentStmt);
|
||||
@ -7355,8 +7365,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
|
||||
| ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name
|
||||
{
|
||||
RenameStmt *n = makeNode(RenameStmt);
|
||||
n->renameType = OBJECT_CONSTRAINT;
|
||||
n->relationType = OBJECT_DOMAIN;
|
||||
n->renameType = OBJECT_DOMCONSTRAINT;
|
||||
n->object = $3;
|
||||
n->subname = $6;
|
||||
n->newname = $8;
|
||||
@ -7624,8 +7633,7 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
|
||||
| ALTER TABLE relation_expr RENAME CONSTRAINT name TO name
|
||||
{
|
||||
RenameStmt *n = makeNode(RenameStmt);
|
||||
n->renameType = OBJECT_CONSTRAINT;
|
||||
n->relationType = OBJECT_TABLE;
|
||||
n->renameType = OBJECT_TABCONSTRAINT;
|
||||
n->relation = $3;
|
||||
n->subname = $6;
|
||||
n->newname = $8;
|
||||
|
@ -896,7 +896,7 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
|
||||
{
|
||||
CommentStmt *stmt = makeNode(CommentStmt);
|
||||
|
||||
stmt->objtype = OBJECT_CONSTRAINT;
|
||||
stmt->objtype = OBJECT_TABCONSTRAINT;
|
||||
stmt->objname = list_make3(makeString(cxt->relation->schemaname),
|
||||
makeString(cxt->relation->relname),
|
||||
makeString(n->conname));
|
||||
|
Reference in New Issue
Block a user