diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/collationcmds.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c index 6db72d919cc..18e88d2653f 100644 --- a/src/backend/commands/collationcmds.c +++ b/src/backend/commands/collationcmds.c @@ -15,6 +15,7 @@ #include "postgres.h" #include "access/heapam.h" +#include "access/xact.h" #include "catalog/dependency.h" #include "catalog/indexing.h" #include "catalog/namespace.h" @@ -30,6 +31,7 @@ #include "utils/acl.h" #include "utils/builtins.h" #include "utils/lsyscache.h" +#include "utils/pg_locale.h" #include "utils/syscache.h" static void AlterCollationOwner_internal(Relation rel, Oid collationOid, @@ -51,6 +53,7 @@ DefineCollation(List *names, List *parameters) DefElem *lcctypeEl = NULL; char *collcollate = NULL; char *collctype = NULL; + Oid newoid; collNamespace = QualifiedNameGetCreationNamespace(names, &collName); @@ -130,12 +133,16 @@ DefineCollation(List *names, List *parameters) check_encoding_locale_matches(GetDatabaseEncoding(), collcollate, collctype); - CollationCreate(collName, + newoid = CollationCreate(collName, collNamespace, GetUserId(), GetDatabaseEncoding(), collcollate, collctype); + + /* check that the locales can be loaded */ + CommandCounterIncrement(); + pg_newlocale_from_collation(newoid); } /* |