From 544b452a5a598dd14d7a38d15a778932e58d18b0 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 9 Mar 2023 08:09:40 +0100 Subject: [PATCH] Disallow specifying ICU rules unless locale provider is ICU Follow-up for 30a53b7929; this was not checked in all cases. Reported-by: Jeff Davis --- src/backend/commands/collationcmds.c | 5 +++++ src/backend/commands/dbcommands.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c index c51e3afdb4..8949684afe 100644 --- a/src/backend/commands/collationcmds.c +++ b/src/backend/commands/collationcmds.c @@ -271,6 +271,11 @@ DefineCollation(ParseState *pstate, List *names, List *parameters, bool if_not_e (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("nondeterministic collations not supported with this provider"))); + if (collicurules && collprovider != COLLPROVIDER_ICU) + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("ICU rules cannot be specified unless locale provider is ICU"))); + if (collprovider == COLLPROVIDER_ICU) { #ifdef USE_ICU diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 7063a5a7ed..4d5d5d6866 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -1066,6 +1066,11 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("ICU locale cannot be specified unless locale provider is ICU"))); + + if (dbicurules) + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("ICU rules cannot be specified unless locale provider is ICU"))); } /*