summaryrefslogtreecommitdiff
path: root/src/backend/parser/gram.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/gram.y')
-rw-r--r--src/backend/parser/gram.y52
1 files changed, 50 insertions, 2 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index d4c879f770..e1fad41b0e 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.383 2002/11/25 21:29:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.384 2002/12/06 03:28:33 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -128,7 +128,7 @@ static void doNegateFloat(Value *v);
}
%type <node> stmt schema_stmt
- AlterDatabaseSetStmt AlterGroupStmt
+ AlterDatabaseSetStmt AlterDomainStmt AlterGroupStmt
AlterTableStmt AlterUserStmt AlterUserSetStmt
AnalyzeStmt ClosePortalStmt ClusterStmt CommentStmt
ConstraintsSetStmt CopyStmt CreateAsStmt CreateCastStmt
@@ -479,6 +479,7 @@ stmtmulti: stmtmulti ';' stmt
stmt :
AlterDatabaseSetStmt
+ | AlterDomainStmt
| AlterGroupStmt
| AlterTableStmt
| AlterUserStmt
@@ -3729,6 +3730,53 @@ CreateDomainStmt:
}
;
+AlterDomainStmt:
+ /* ALTER DOMAIN <domain> {SET DEFAULT <expr>|DROP DEFAULT} */
+ ALTER DOMAIN_P any_name alter_column_default
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'T';
+ n->typename = $3;
+ n->def = $4;
+ $$ = (Node *)n;
+ }
+ /* ALTER DOMAIN <domain> DROP NOT NULL */
+ | ALTER DOMAIN_P any_name DROP NOT NULL_P
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'N';
+ n->typename = $3;
+ $$ = (Node *)n;
+ }
+ /* ALTER DOMAIN <domain> SET NOT NULL */
+ | ALTER DOMAIN_P any_name SET NOT NULL_P
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'O';
+ n->typename = $3;
+ $$ = (Node *)n;
+ }
+ /* ALTER DOMAIN <domain> ADD CONSTRAINT ... */
+ | ALTER DOMAIN_P any_name ADD TableConstraint
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'C';
+ n->typename = $3;
+ n->def = $5;
+ $$ = (Node *)n;
+ }
+ /* ALTER DOMAIN <domain> DROP CONSTRAINT <name> [RESTRICT|CASCADE] */
+ | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'X';
+ n->typename = $3;
+ n->name = $6;
+ n->behavior = $7;
+ $$ = (Node *)n;
+ }
+ ;
+
opt_as: AS {}
| /* EMPTY */ {}
;