summaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorAndrew Dunstan2015-07-30 01:30:00 +0000
committerAndrew Dunstan2015-07-30 01:30:00 +0000
commit2cd40adb85d1d5a7fd448721b326e73c1e318750 (patch)
tree31a9ac16f905a9c7774f660ae623239b1c5d84e8 /src/backend/parser
parent632cd9f892119858bc5b617bb60c0377a8a2ed13 (diff)
Add IF NOT EXISTS processing to ALTER TABLE ADD COLUMN
Fabrízio de Royes Mello, reviewed by Payal Singh, Alvaro Herrera and Michael Paquier.
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 8f053e47e82..6b02cecac14 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -1942,6 +1942,16 @@ alter_table_cmd:
AlterTableCmd *n = makeNode(AlterTableCmd);
n->subtype = AT_AddColumn;
n->def = $2;
+ n->missing_ok = false;
+ $$ = (Node *)n;
+ }
+ /* ALTER TABLE <name> ADD IF NOT EXISTS <coldef> */
+ | ADD_P IF_P NOT EXISTS columnDef
+ {
+ AlterTableCmd *n = makeNode(AlterTableCmd);
+ n->subtype = AT_AddColumn;
+ n->def = $5;
+ n->missing_ok = true;
$$ = (Node *)n;
}
/* ALTER TABLE <name> ADD COLUMN <coldef> */
@@ -1950,6 +1960,16 @@ alter_table_cmd:
AlterTableCmd *n = makeNode(AlterTableCmd);
n->subtype = AT_AddColumn;
n->def = $3;
+ n->missing_ok = false;
+ $$ = (Node *)n;
+ }
+ /* ALTER TABLE <name> ADD COLUMN IF NOT EXISTS <coldef> */
+ | ADD_P COLUMN IF_P NOT EXISTS columnDef
+ {
+ AlterTableCmd *n = makeNode(AlterTableCmd);
+ n->subtype = AT_AddColumn;
+ n->def = $6;
+ n->missing_ok = true;
$$ = (Node *)n;
}
/* ALTER TABLE <name> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */