diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-02-08 22:51:09 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-02-15 10:01:28 -0500 |
commit | 6d16ecc646d21b39092970c591fd0f73b4cfc26b (patch) | |
tree | 39a31e88e1e82ae5a76eddf446d2c128dbf2b80b /src/backend/parser | |
parent | e403732ef66d368f0a9a154d8f756f5d28615b8a (diff) | |
download | postgresql-6d16ecc646d21b39092970c591fd0f73b4cfc26b.tar.gz postgresql-6d16ecc646d21b39092970c591fd0f73b4cfc26b.zip |
Add CREATE COLLATION IF NOT EXISTS clause
The core of the functionality was already implemented when
pg_import_system_collations was added. This just exposes it as an
option in the SQL command.
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/gram.y | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 174773bdf31..5cb82977d5d 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -5610,6 +5610,16 @@ DefineStmt: n->definition = $4; $$ = (Node *)n; } + | CREATE COLLATION IF_P NOT EXISTS any_name definition + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = $6; + n->definition = $7; + n->if_not_exists = true; + $$ = (Node *)n; + } | CREATE COLLATION any_name FROM any_name { DefineStmt *n = makeNode(DefineStmt); @@ -5619,6 +5629,16 @@ DefineStmt: n->definition = list_make1(makeDefElem("from", (Node *) $5, @5)); $$ = (Node *)n; } + | CREATE COLLATION IF_P NOT EXISTS any_name FROM any_name + { + DefineStmt *n = makeNode(DefineStmt); + n->kind = OBJECT_COLLATION; + n->args = NIL; + n->defnames = $6; + n->definition = list_make1(makeDefElem("from", (Node *) $8, @8)); + n->if_not_exists = true; + $$ = (Node *)n; + } ; definition: '(' def_list ')' { $$ = $2; } |