From da5d4ea5aaac4fc02f2e2aec272efe438dd4e171 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 13 Sep 2022 14:18:45 +0200 Subject: [PATCH] Make locale option behavior more consistent Locale options can be specified for initdb, createdb, and CREATE DATABASE. In initdb, it has always been possible to specify --locale and then some --lc-* option to override a category. CREATE DATABASE and createdb didn't allow that, requiring either the all-categories option or only per-category options. In f2553d43060edb210b36c63187d52a632448e1d2, this was changed in CREATE DATABASE (perhaps by accident?) to be more like the initdb behavior, but createdb still had the old behavior. Now we change createdb to match the behavior of CREATE DATABASE and initdb, and also update the documentation of CREATE DATABASE to match the new behavior, which was not done in the above commit. Author: Marina Polyakova Reviewed-by: Justin Pryzby Discussion: https://www.postgresql.org/message-id/7c99c132dc9c0ac630e0127f032ac480@postgrespro.ru --- doc/src/sgml/ref/create_database.sgml | 3 +-- src/bin/scripts/createdb.c | 10 ++++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/doc/src/sgml/ref/create_database.sgml b/doc/src/sgml/ref/create_database.sgml index 0ce0bd8a1a..ea38c64731 100644 --- a/doc/src/sgml/ref/create_database.sgml +++ b/doc/src/sgml/ref/create_database.sgml @@ -145,8 +145,7 @@ CREATE DATABASE name This is a shortcut for setting LC_COLLATE - and LC_CTYPE at once. If you specify this, - you cannot specify either of those parameters. + and LC_CTYPE at once. diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c index e523e58b21..a1482df3d9 100644 --- a/src/bin/scripts/createdb.c +++ b/src/bin/scripts/createdb.c @@ -161,12 +161,10 @@ main(int argc, char *argv[]) if (locale) { - if (lc_ctype) - pg_fatal("only one of --locale and --lc-ctype can be specified"); - if (lc_collate) - pg_fatal("only one of --locale and --lc-collate can be specified"); - lc_ctype = locale; - lc_collate = locale; + if (!lc_ctype) + lc_ctype = locale; + if (!lc_collate) + lc_collate = locale; } if (encoding)