diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2009-07-20 02:42:28 +0000 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2009-07-20 02:42:28 +0000 |
commit | e73131a16af9fc175c889b9b7673975c7edf6e38 (patch) | |
tree | 690ed2c0103c13b9b4c56fb59e2e8d1a23622fd6 /src/backend/parser | |
parent | 31d1f2330277a91f59fe050cc85ced25ee55f95d (diff) | |
download | postgresql-e73131a16af9fc175c889b9b7673975c7edf6e38.tar.gz postgresql-e73131a16af9fc175c889b9b7673975c7edf6e38.zip |
DROP IF EXISTS for columns and constraints. Andres Freund.
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/gram.y | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 1e633ca73ca..7e6d55be712 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.670 2009/07/16 06:33:43 petere Exp $ + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.671 2009/07/20 02:42:28 adunstan Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -1610,6 +1610,16 @@ alter_table_cmd: n->def = (Node *) makeString($6); $$ = (Node *)n; } + /* ALTER TABLE <name> DROP [COLUMN] IF EXISTS <colname> [RESTRICT|CASCADE] */ + | DROP opt_column IF_P EXISTS ColId opt_drop_behavior + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropColumn; + n->name = $5; + n->behavior = $6; + n->missing_ok = TRUE; + $$ = (Node *)n; + } /* ALTER TABLE <name> DROP [COLUMN] <colname> [RESTRICT|CASCADE] */ | DROP opt_column ColId opt_drop_behavior { @@ -1617,6 +1627,7 @@ alter_table_cmd: n->subtype = AT_DropColumn; n->name = $3; n->behavior = $4; + n->missing_ok = FALSE; $$ = (Node *)n; } /* @@ -1640,6 +1651,16 @@ alter_table_cmd: n->def = $2; $$ = (Node *)n; } + /* ALTER TABLE <name> DROP CONSTRAINT IF EXISTS <name> [RESTRICT|CASCADE] */ + | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropConstraint; + n->name = $5; + n->behavior = $6; + n->missing_ok = TRUE; + $$ = (Node *)n; + } /* ALTER TABLE <name> DROP CONSTRAINT <name> [RESTRICT|CASCADE] */ | DROP CONSTRAINT name opt_drop_behavior { @@ -1647,6 +1668,7 @@ alter_table_cmd: n->subtype = AT_DropConstraint; n->name = $3; n->behavior = $4; + n->missing_ok = FALSE; $$ = (Node *)n; } /* ALTER TABLE <name> SET WITH OIDS */ |