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 1pXJPO-0005eW-Ga for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Mar 2023 10:10:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pXJPN-00015y-AY for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Mar 2023 10:10:01 +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 1pXJPM-00015p-Sl for pgsql-hackers@lists.postgresql.org; Wed, 01 Mar 2023 10:10:01 +0000 Received: from wnew3-smtp.messagingengine.com ([64.147.123.17]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXJPJ-0003VO-65 for pgsql-hackers@postgresql.org; Wed, 01 Mar 2023 10:09:59 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.west.internal (Postfix) with ESMTP id 5290D2B06FB2 for ; Wed, 1 Mar 2023 05:09:55 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 01 Mar 2023 05:09:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1677665394; x= 1677672594; bh=1wv9XKBaGi9iFaexI5K/33MTfrUxOe1eHxfYDljyUmE=; b=k Hv65fgAcUCGOVyN4CJiYvydTmCUbTw1nsxV3oDRnRB4EIC7IgEafvwaPuCCu0euk EyxIjyHOn/AnDu3wk7m710TSky32L9FerHYAwy2GrI0a5Iikr4JBf1AvKIM5plLf BEA8xIIitR48/ecTyAdhAK/PlTa52dR/vs7todreUKK41wzAwDqo6wTIddGiaUyS bb9M7r+okmpNaRg/b+6YTp32+hP+Gf4xjQM+61eHiwyske77Bec1vXTZYRpoHAeI FgAFprLztmh5eiNOagTD83XY+hLFrOAf9GOcUza5zk44kgaHrzQMNxf9psqijvhY woP5TuF4jYcQrfOxZNqIw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudelhedgtdehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvg hrnhepteevuedvieekieeghfevfffhhfdvjeevleelfeeikeeikedvffegteekuddtfeel necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvth gvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 1 Mar 2023 05:09:54 -0500 (EST) Content-Type: multipart/mixed; boundary="------------GlH0bbe00N29RSvM0fSKWIjf" Message-ID: <1293e382-2093-a2bf-a397-c04e8f83d3c2@enterprisedb.com> Date: Wed, 1 Mar 2023 11:09:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US From: Peter Eisentraut Subject: Add standard collation UNICODE To: pgsql-hackers 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. --------------GlH0bbe00N29RSvM0fSKWIjf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The SQL standard defines several standard collations. Most of them are only of legacy interest (IMO), but two are currently relevant: UNICODE and UCS_BASIC. UNICODE sorts by the default Unicode collation algorithm specifications and UCS_BASIC sorts by codepoint. When collation support was added to PostgreSQL, we added UCS_BASIC, since that could easily be mapped to the C locale. But there was no straightforward way to provide the UNICODE collation. (Recall that collation support came several releases before ICU support.) With ICU support, we can provide the UNICODE collation, since it's just the root locale. I suppose one hesitation was that ICU was not a standard feature, so this would create variations in the default catalog contents, or something like that. But I think now that we are drifting to make ICU more prominent, we can just add that anyway. I think being able to say COLLATE UNICODE instead of COLLATE "und-x-icu" or whatever it is, is pretty useful. So, attached is a small patch to add this. --------------GlH0bbe00N29RSvM0fSKWIjf Content-Type: text/plain; charset=UTF-8; name="0001-Add-standard-collation-UNICODE.patch" Content-Disposition: attachment; filename="0001-Add-standard-collation-UNICODE.patch" Content-Transfer-Encoding: base64 RnJvbSA5OGZjZTMwZTQ5OTcyNTNlNWIwMTBiNmFjNzJkNjYyNTViYzc3YmY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxIE1hciAyMDIzIDEwOjM4OjE5ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIHN0YW5kYXJkIGNvbGxhdGlvbiBVTklDT0RFCgotLS0KIGRvYy9zcmMv c2dtbC9jaGFyc2V0LnNnbWwgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0K IHNyYy9iaW4vaW5pdGRiL2luaXRkYi5jICAgfCAxMCArKysrKysrLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NoYXJzZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwK aW5kZXggMzAzMjM5MmI4MC4uMTNlYzIzOGE4MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NoYXJzZXQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCkBAIC02NTks OSArNjU5LDMzIEBAIDx0aXRsZT5TdGFuZGFyZCBDb2xsYXRpb25zPC90aXRsZT4KICAgIDwv cGFyYT4KIAogICAgPHBhcmE+Ci0gICAgQWRkaXRpb25hbGx5LCB0aGUgU1FMIHN0YW5kYXJk IGNvbGxhdGlvbiBuYW1lIDxsaXRlcmFsPnVjc19iYXNpYzwvbGl0ZXJhbD4KLSAgICBpcyBh dmFpbGFibGUgZm9yIGVuY29kaW5nIDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+LiAgSXQgaXMg ZXF1aXZhbGVudAotICAgIHRvIDxsaXRlcmFsPkM8L2xpdGVyYWw+IGFuZCBzb3J0cyBieSBV bmljb2RlIGNvZGUgcG9pbnQuCisgICAgQWRkaXRpb25hbGx5LCB0d28gU1FMIHN0YW5kYXJk IGNvbGxhdGlvbiBuYW1lcyBhcmUgYXZhaWxhYmxlIGZvciBlbmNvZGluZworICAgIDxsaXRl cmFsPlVURjg8L2xpdGVyYWw+OgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPnVuaWNvZGU8L2xpdGVyYWw+PC90ZXJt PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNvbGxh dGlvbiBzb3J0cyB1c2luZyB0aGUgVW5pY29kZSBDb2xsYXRpb24gQWxnb3JpdGhtIHdpdGgg dGhlCisgICAgICAgIERlZmF1bHQgVW5pY29kZSBDb2xsYXRpb24gRWxlbWVudCBUYWJsZS4g IChUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yCisgICAgICAgIGFzIHRoZSBJQ1Ugcm9vdCBs b2NhbGU7IHNlZSA8eHJlZgorICAgICAgICBsaW5rZW5kPSJjb2xsYXRpb24tbWFuYWdpbmct cHJlZGVmaW5lZC1pY3UtdW5kLXgtaWN1Ii8+LikgIFRoaXMKKyAgICAgICAgY29sbGF0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gSUNVIHN1cHBvcnQgaXMgY29uZmlndXJlZC4KKyAg ICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+dWNzX2Jhc2lj PC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhpcyBjb2xsYXRpb24gc29ydHMgYnkgVW5pY29kZSBjb2RlIHBvaW50LiAgKFRo aXMgaXMgdGhlIHNhbWUKKyAgICAgICAgYmVoYXZpb3IgYXMgdGhlIGxpYmMgbG9jYWxlIHNw ZWNpZmljYXRpb24gPGxpdGVyYWw+QzwvbGl0ZXJhbD4uKQorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVs aXN0PgogICAgPC9wYXJhPgogICA8L3NlY3QzPgogCmRpZmYgLS1naXQgYS9zcmMvYmluL2lu aXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IDdhNThjMzNh Y2UuLjUyNWJlYzRiNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisr KyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xNDgyLDEwICsxNDgyLDE0IEBAIHN0 YXRpYyB2b2lkCiBzZXR1cF9jb2xsYXRpb24oRklMRSAqY21kZmQpCiB7CiAJLyoKLQkgKiBB ZGQgYW4gU1FMLXN0YW5kYXJkIG5hbWUuICBXZSBkb24ndCB3YW50IHRvIHBpbiB0aGlzLCBz byBpdCBkb2Vzbid0IGdvCi0JICogaW4gcGdfY29sbGF0aW9uLmguICBCdXQgYWRkIGl0IGJl Zm9yZSByZWFkaW5nIHN5c3RlbSBjb2xsYXRpb25zLCBzbwotCSAqIHRoYXQgaXQgd2lucyBp ZiBsaWJjIGRlZmluZXMgYSBsb2NhbGUgbmFtZWQgdWNzX2Jhc2ljLgorCSAqIEFkZCBTUUwt c3RhbmRhcmQgbmFtZXMuICBXZSBkb24ndCB3YW50IHRvIHBpbiB0aGVzZSwgc28gdGhleSBk b24ndCBnbworCSAqIGluIHBnX2NvbGxhdGlvbi5oLiAgQnV0IGFkZCB0aGVtIGJlZm9yZSBy ZWFkaW5nIHN5c3RlbSBjb2xsYXRpb25zLCBzbworCSAqIHRoYXQgdGhleSB3aW4gaWYgbGli YyBkZWZpbmVzIGEgbG9jYWxlIHdpdGggdGhlIHNhbWUgbmFtZS4KIAkgKi8KKwlQR19DTURf UFJJTlRGKCJJTlNFUlQgSU5UTyBwZ19jb2xsYXRpb24gKG9pZCwgY29sbG5hbWUsIGNvbGxu YW1lc3BhY2UsIGNvbGxvd25lciwgY29sbHByb3ZpZGVyLCBjb2xsaXNkZXRlcm1pbmlzdGlj LCBjb2xsZW5jb2RpbmcsIGNvbGxpY3Vsb2NhbGUpIgorCQkJCSAgIlZBTFVFUyAocGdfbmV4 dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xsYXRpb24nLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdf Y29sbGF0aW9uX29pZF9pbmRleCcpLCAndW5pY29kZScsICdwZ19jYXRhbG9nJzo6cmVnbmFt ZXNwYWNlLCAldSwgJyVjJywgdHJ1ZSwgJWQsICd1bmQnKTtcblxuIiwKKwkJCQkgIEJPT1RT VFJBUF9TVVBFUlVTRVJJRCwgQ09MTFBST1ZJREVSX0lDVSwgUEdfVVRGOCk7CisKIAlQR19D TURfUFJJTlRGKCJJTlNFUlQgSU5UTyBwZ19jb2xsYXRpb24gKG9pZCwgY29sbG5hbWUsIGNv bGxuYW1lc3BhY2UsIGNvbGxvd25lciwgY29sbHByb3ZpZGVyLCBjb2xsaXNkZXRlcm1pbmlz dGljLCBjb2xsZW5jb2RpbmcsIGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpIgogCQkJCSAgIlZB TFVFUyAocGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xsYXRpb24nLCAnb2lkJywgJ3Bn X2NhdGFsb2cucGdfY29sbGF0aW9uX29pZF9pbmRleCcpLCAndWNzX2Jhc2ljJywgJ3BnX2Nh dGFsb2cnOjpyZWduYW1lc3BhY2UsICV1LCAnJWMnLCB0cnVlLCAlZCwgJ0MnLCAnQycpO1xu XG4iLAogCQkJCSAgQk9PVFNUUkFQX1NVUEVSVVNFUklELCBDT0xMUFJPVklERVJfTElCQywg UEdfVVRGOCk7Ci0tIAoyLjM5LjIKCg== --------------GlH0bbe00N29RSvM0fSKWIjf--