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 1pakE9-0008L6-R9 for pgsql-committers@arkaria.postgresql.org; Fri, 10 Mar 2023 21:24:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pakE8-0004fh-7e for pgsql-committers@arkaria.postgresql.org; Fri, 10 Mar 2023 21:24:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pakE7-0004fX-Sf for pgsql-committers@lists.postgresql.org; Fri, 10 Mar 2023 21:24:36 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pakE4-0003yV-B3 for pgsql-committers@lists.postgresql.org; Fri, 10 Mar 2023 21:24:35 +0000 Received: by mail-pj1-x102a.google.com with SMTP id nn12so6539423pjb.5 for ; Fri, 10 Mar 2023 13:24:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20210112.gappssmtp.com; s=20210112; t=1678483469; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=zj0sG6JE0uICLh9N65mSADfujr8p0ydh1KJLd5PH+2k=; b=uIPhwL/urrGkKNDcP9w+5kWxQccpg4720BWZqyDlZtQfMjlSWV2B0Ki4Fj5Gih6J1/ MAgxK8R9tfCkBBirkL/TnVuHeG/Um8C52W/EBkmiO8XF5LcjGVppHwvcfRofTMcSWi4i ftH8oUSiflD0wVjkD3Qft0H49O8IXpE5Bje06H7iIu4kHRyktJjP/auk9FzdE8O1WCHS PTftCBvODh4bjwgWA2BLxtPI1Stu18dHf8ZqX7SGYOZ1prKhvjgY8MIk3/rxekSeFCMe aJeXDWMT90rTrU7VDbjSViSdu2fRZKqGhpiwAfxXVwlsyUFVThAUBjPzrTOuJmmY9W/4 yHkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678483469; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=zj0sG6JE0uICLh9N65mSADfujr8p0ydh1KJLd5PH+2k=; b=4N6CfS/vlSzyvxmi3HyveNJF/a6uO5dk7foxfWVPU81uKDaLLLrF+oPXcCdBiRl9SX 8FGSffT9MLeOta4ZXOUaNoo4wyzMAopnVMVeDNq3z1bi0oVzepyk1zJllRz5z+aeuTpq B/tBFvZTwDQtTlkKpvlYQVcWCMtIM0H0sNEqh2h7ad+YdHNHv0fUexzf4mT1hJolj3Gz uoC2n7jVQ4D/H9nMucP7zI+0NU+u5tF2ks0l/dxn+Q/6v6mb9SPzfPo13Sx6XVkv4HAd 1i4yFMMe31n+ik0vNsIHPKFTkW4drQgbA6B9BV6L3akY4QqUlh/JT6STOfuA2mLQ3K8w 3djA== X-Gm-Message-State: AO0yUKVHJsWGnmQN7ExBGVc7wK8LGxM72Bs/Wpol7/Ck9HXTzPdNf3kE jvDRZZXbevTsn0cOhqWIeTfiYb6QvfFGXuPJZW0= X-Google-Smtp-Source: AK7set+MUiqmOwOwWKmjZTOSnYzOAijvLdpZfQrRTMvCE9IXmCrQHfQ1x3upaIWxwJ51599lNesEfQ== X-Received: by 2002:a17:90b:4a06:b0:233:bd59:5719 with SMTP id kk6-20020a17090b4a0600b00233bd595719mr3097141pjb.0.1678483469289; Fri, 10 Mar 2023 13:24:29 -0800 (PST) Received: from jeff-laptop.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id 4-20020a17090a174400b00233aeec339fsm405578pjm.1.2023.03.10.13.24.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Mar 2023 13:24:28 -0800 (PST) Message-ID: Subject: Re: pgsql: Add standard collation UNICODE From: Jeff Davis To: "Jonathan S. Katz" Cc: Peter Eisentraut , pgsql-committers@lists.postgresql.org Date: Fri, 10 Mar 2023 13:24:27 -0800 In-Reply-To: <6648546F-52B6-4525-A13B-414D99655033@postgresql.org> References: <582e43d0a814e09c62ea662dd851f43bfc137a16.camel@j-davis.com> <6648546F-52B6-4525-A13B-414D99655033@postgresql.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, 2023-03-10 at 11:52 -0800, Jonathan S. Katz wrote: >=20 > The capitals should be first. That is not true in a lot of natural language locales, whether libc or ICU. The following return true for me (collencoding UTF-8): select 'abc' collate "en_US" < 'ABC' collate "en_US"; select 'abc' collate "fr_FR" < 'ABC' collate "fr_FR"; select 'abc' collate "de_DE" < 'ABC' collate "de_DE"; select 'abc' collate "de_AT" < 'ABC' collate "de_AT"; select 'abc' collate "es_ES" < 'ABC' collate "es_ES"; select 'abc' collate "en-US-x-icu" < 'ABC' collate "en-US-x-icu"; select 'abc' collate "fr-CA-x-icu" < 'ABC' collate "fr-CA-x-icu"; select 'abc' collate "ja-JP-x-icu" < 'ABC' collate "ja-JP-x-icu"; select 'abc' collate "tr-TR-x-icu" < 'ABC' collate "tr-TR-x-icu"; There are some cases that return false, as well: select 'abc' collate "ja_JP" < 'ABC' collate "ja_JP"; select 'abc' collate "fr_CA" < 'ABC' collate "fr_CA"; select 'abc' collate "en-US-u-va-posix-x-icu" <=C2=A0 'ABC' collate "en-US-u-va-posix-x-icu"; The cases where it's false appear to be more common in libc locales, but most libc locales that I tested still sort lowercase first. Regards, Jeff Davis