From 4442e1975d3c4c96a0b573b7abd864b0cbe26f9d Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 4 Mar 2011 22:14:37 +0200 Subject: When creating a collation, check that the locales can be loaded This is the same check that would happen later when the collation is used, but it's friendlier to check the collation already when it is created. --- src/backend/commands/collationcmds.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/backend/commands/collationcmds.c') 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); } /* -- cgit v1.2.3