aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2009-07-20 02:42:28 +0000
committerAndrew Dunstan <andrew@dunslane.net>2009-07-20 02:42:28 +0000
commite73131a16af9fc175c889b9b7673975c7edf6e38 (patch)
tree690ed2c0103c13b9b4c56fb59e2e8d1a23622fd6 /src/backend/parser
parent31d1f2330277a91f59fe050cc85ced25ee55f95d (diff)
downloadpostgresql-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.y24
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 */