Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oaa28-00020V-13 for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Sep 2022 09:59:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oaa25-0004Hw-Bl for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Sep 2022 09:59:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oaa24-0004Hm-Te for pgsql-hackers@lists.postgresql.org; Tue, 20 Sep 2022 09:59:13 +0000 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oaa21-0005iL-A0 for pgsql-hackers@postgresql.org; Tue, 20 Sep 2022 09:59:11 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 0CB4B32009B7; Tue, 20 Sep 2022 05:59:06 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Tue, 20 Sep 2022 05:59:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1663667946; x=1663754346; bh=4xcpreZ7BFVPT3DkGVYoYTQyAz6A nH+lY6Jp5nhgWwc=; b=FJhWN2OSt3gWlbI6gj12aWcfii0oeQ/FGj3UwqF8eMLi ILAPi/J8FnvEyEQKTZZjlcb1qw2oxRdtIrbiSQrRA5jAMAund/yAYVCMKhmQTbeQ H6lY9CljpjRXsdDpuZFbXADUhyadZ3pBQy4oHwtZw+nY3/QHwvOc5mGcvVR7QH4l 8IiIfyjmm67qu3QZZ/m2Tk3Rf73bffccHzpzgFGOMOj5ncbl5v6z3d/K0EjcTZKB TuW4Ieb3aVHhAto8ZaSY3N8O/TD4d2U6+LP4jnUbeCX/f1PSphNpH1aIeUM2FoSu LrkmrVJu55HQ9Vd+fNoScZy8V0avzFw40Yc3XJ/xPw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfedvledgvddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvg hrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepuedtkeehueehtddvgfff heelteefhfeifeduiedtffeitdeludejhfejudefffffnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhht segvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 20 Sep 2022 05:59:05 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------OIswMznfw56qgqZ7BDhhq9xv" Message-ID: <218b963e-dd66-626a-abd8-962afb587876@enterprisedb.com> Date: Tue, 20 Sep 2022 05:59:04 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: ICU for global collation Content-Language: en-US To: Marina Polyakova Cc: Kyotaro Horiguchi , pgsql-hackers@postgresql.org, pryzby@telsasoft.com, rjuju123@gmail.com, daniel@manitou-mail.org, AndrewBille@gmail.com, michael@paquier.xyz References: <1f86f120-7b02-68f6-a434-132d054afe33@enterprisedb.com> <38d2aac40a991b20adf032e509c6eff5@postgrespro.ru> <6dd6db0984d86a51b7255ba79f111971@postgrespro.ru> <20220915.155210.529619933474389138.horikyota.ntt@gmail.com> <65ef1a8a-1fc3-3dc3-c7aa-6b9f649014b2@enterprisedb.com> <9ba4cd1ea6ed6b7b15c0ff15e6f540cd@postgrespro.ru> From: Peter Eisentraut In-Reply-To: <9ba4cd1ea6ed6b7b15c0ff15e6f540cd@postgrespro.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------OIswMznfw56qgqZ7BDhhq9xv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 17.09.22 10:33, Marina Polyakova wrote: > Thanks to Kyotaro Horiguchi review we found out that there're > interesting cases due to the order of some ICU checks: > > 1. ICU locale vs supported encoding: > > 1.1. > > On 2022-09-15 09:52, Kyotaro Horiguchi wrote: >> If I executed initdb as follows, I would be told to specify >> --icu-locale option. >> >>> $ initdb --encoding sql-ascii --locale-provider icu hoge >>> ... >>> initdb: error: ICU locale must be specified >> >> However, when I reran the command, it complains about incompatible >> encoding this time.  I think it's more user-friendly to check for the >> encoding compatibility before the check for missing --icu-locale >> option. This a valid point, but it would require quite a bit of work to move all those checks around and re-verify the result, so I don't want to do it in PG15. > 1.2. (ok?) > > $ initdb --encoding sql-ascii --icu-locale en-US hoge > initdb: error: --icu-locale cannot be specified unless locale provider > "icu" is chosen > > $ initdb --encoding sql-ascii --icu-locale en-US --locale-provider icu hoge > ... > initdb: error: encoding mismatch > initdb: detail: The encoding you selected (SQL_ASCII) is not supported > with the ICU provider. > initdb: hint: Rerun initdb and either do not specify an encoding > explicitly, or choose a matching combination. > > $ createdb --encoding sql-ascii --icu-locale en-US hoge > createdb: error: database creation failed: ERROR:  ICU locale cannot be > specified unless locale provider is ICU > $ createdb --encoding sql-ascii --icu-locale en-US --locale-provider icu > hoge > createdb: error: database creation failed: ERROR:  encoding "SQL_ASCII" > is not supported with ICU provider I don't see a problem here. > 2. For builds without ICU: > > 2.1. > > $ initdb --locale-provider icu hoge > ... > initdb: error: ICU locale must be specified > > $ initdb --locale-provider icu --icu-locale en-US hoge > ... > initdb: error: ICU is not supported in this build > > $ createdb --locale-provider icu hoge > createdb: error: database creation failed: ERROR:  ICU locale must be > specified > > $ createdb --locale-provider icu --icu-locale en-US hoge > createdb: error: database creation failed: ERROR:  ICU is not supported > in this build > > IMO, it would be more user-friendly to inform an unsupported build in > the first runs too.. Again, this would require reorganizing a bunch of code to get some cosmetic benefit, which isn't a good idea now for PG15. > 2.2. (ok?) > 2.3. same here > 3. > > The locale provider is ICU, but it has not yet been set from the > template database: > >> $ initdb --locale-provider icu --icu-locale en-US -D data && >> pg_ctl -D data -l logfile start && >> createdb --icu-locale ru-RU --template template0 mydb >> ... >> createdb: error: database creation failed: ERROR:  ICU locale cannot be >> specified unless locale provider is ICU Please see attached patch for a fix. Does that work for you? --------------OIswMznfw56qgqZ7BDhhq9xv Content-Type: text/plain; charset=UTF-8; name="0001-Improve-ICU-option-handling-in-CREATE-DATABASE.patch" Content-Disposition: attachment; filename*0="0001-Improve-ICU-option-handling-in-CREATE-DATABASE.patch" Content-Transfer-Encoding: base64 RnJvbSA1YmIwN2UzOTBiYWY4YTQ3MWY3ZDMwNTgyNDY5MjY4YzhhNmQ3MWNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyMCBTZXAgMjAyMiAwNTo1MDo0MSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0hdIEltcHJvdmUgSUNVIG9wdGlvbiBoYW5kbGluZyBpbiBDUkVBVEUgREFUQUJB U0UKCldlIGNoZWNrIHRoYXQgdGhlIElDVSBsb2NhbGUgaXMgb25seSBzcGVjaWZpZWQgaWYg dGhlIElDVSBsb2NhbGUKcHJvdmlkZXIgaXMgc2VsZWN0ZWQuICBCdXQgd2UgZGlkIHRoYXQg dG9vIGVhcmx5LiAgV2UgbmVlZCB0byB3YWl0CnVudGlsIHdlIGxvYWQgdGhlIHNldHRpbmdz IG9mIHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZSwgc2luY2UgdGhhdCBjb3VsZAphbHNvIHNldCB3 aGF0IHRoZSBsb2NhbGUgcHJvdmlkZXIgaXMuCgpSZXBvcnRlZC1ieTogTWFyaW5hIFBvbHlh a292YSA8bS5wb2x5YWtvdmFAcG9zdGdyZXNwcm8ucnU+CkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvOWJhNGNkMWVhNmVkNmI3YjE1YzBmZjE1 ZTZmNTQwY2RAcG9zdGdyZXNwcm8ucnUKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNv bW1hbmRzLmMgfCAxMSArKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKaW5k ZXggY2JhOTI5YjdmOTk4Li41ZGZlYzVjNmIwNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RiY29tbWFuZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNv bW1hbmRzLmMKQEAgLTkwNywxMCArOTA3LDYgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCQkJCSBlcnJtc2coInVucmVjb2du aXplZCBsb2NhbGUgcHJvdmlkZXI6ICVzIiwKIAkJCQkJCQlsb2Nwcm92aWRlcnN0cikpKTsK IAl9Ci0JaWYgKGRpY3Vsb2NhbGUgJiYgZGJsb2Nwcm92aWRlciAhPSBDT0xMUFJPVklERVJf SUNVKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCi0JCQkJIGVycm1zZygiSUNVIGxvY2FsZSBjYW5ub3QgYmUg c3BlY2lmaWVkIHVubGVzcyBsb2NhbGUgcHJvdmlkZXIgaXMgSUNVIikpKTsKIAlpZiAoZGlz dGVtcGxhdGUgJiYgZGlzdGVtcGxhdGUtPmFyZykKIAkJZGJpc3RlbXBsYXRlID0gZGVmR2V0 Qm9vbGVhbihkaXN0ZW1wbGF0ZSk7CiAJaWYgKGRhbGxvd2Nvbm5lY3Rpb25zICYmIGRhbGxv d2Nvbm5lY3Rpb25zLT5hcmcpCkBAIC0xMDUwLDYgKzEwNDYsMTMgQEAgY3JlYXRlZGIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAKIAkJY2hlY2tf aWN1X2xvY2FsZShkYmljdWxvY2FsZSk7CiAJfQorCWVsc2UKKwl7CisJCWlmIChkYmljdWxv Y2FsZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coIklDVSBsb2NhbGUgY2Fubm90 IGJlIHNwZWNpZmllZCB1bmxlc3MgbG9jYWxlIHByb3ZpZGVyIGlzIElDVSIpKSk7CisJfQog CiAJLyoKIAkgKiBDaGVjayB0aGF0IHRoZSBuZXcgZW5jb2RpbmcgYW5kIGxvY2FsZSBzZXR0 aW5ncyBtYXRjaCB0aGUgc291cmNlCi0tIAoyLjM3LjMKCg== --------------OIswMznfw56qgqZ7BDhhq9xv--