aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2017-02-08 22:51:09 -0500
committerPeter Eisentraut <peter_e@gmx.net>2017-02-15 10:01:28 -0500
commit6d16ecc646d21b39092970c591fd0f73b4cfc26b (patch)
tree39a31e88e1e82ae5a76eddf446d2c128dbf2b80b /src/backend/parser
parente403732ef66d368f0a9a154d8f756f5d28615b8a (diff)
downloadpostgresql-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.y20
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; }