Re: Missing rows with index scan when collation is not "C" (PostgreSQL 9.5)
От | Stephen Frost |
---|---|
Тема | Re: Missing rows with index scan when collation is not "C" (PostgreSQL 9.5) |
Дата | |
Msg-id | 20160323011509.GJ3127@tamriel.snowman.net обсуждение исходный текст |
Ответ на | Re: Missing rows with index scan when collation is not "C" (PostgreSQL 9.5) (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
* Tom Lane (tgl@sss.pgh.pa.us) wrote: > Robert Haas <robertmhaas@gmail.com> writes: > > I was a little worried that it was too much to hope for that all libc > > vendors on earth would ship a strxfrm() implementation that was actually > > consistent with strcoll(), and here we are. >=20 > Indeed. To try to put some scope on the problem, I made an idiot little > program that just generates some random UTF8 strings and sees whether > strcoll and strxfrm sort them alike. Attached are that program, a even > more idiot little shell script that runs it over all available UTF8 > locales, and the results on my RHEL6 box. While de_DE seems to be the > worst-broken locale, it's far from the only one. >=20 > Please try this on as many platforms as you can get hold of ... Results for Ubuntu 15.10: Using LC_COLLATE =3D "C.UTF-8" Using LC_CTYPE =3D "en_US.UTF-8" C.UTF-8 good Using LC_COLLATE =3D "de_DE.utf8" Using LC_CTYPE =3D "en_US.UTF-8" de_DE.utf8 good Using LC_COLLATE =3D "en_AG.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_AG.utf8 good Using LC_COLLATE =3D "en_AU.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_AU.utf8 good Using LC_COLLATE =3D "en_BW.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_BW.utf8 good Using LC_COLLATE =3D "en_CA.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_CA.utf8 good Using LC_COLLATE =3D "en_DK.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_DK.utf8 good Using LC_COLLATE =3D "en_GB.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_GB.utf8 good Using LC_COLLATE =3D "en_HK.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_HK.utf8 good Using LC_COLLATE =3D "en_IE.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_IE.utf8 good Using LC_COLLATE =3D "en_IN.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_IN.utf8 good Using LC_COLLATE =3D "en_NG.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_NG.utf8 good Using LC_COLLATE =3D "en_NZ.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_NZ.utf8 good Using LC_COLLATE =3D "en_PH.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_PH.utf8 good Using LC_COLLATE =3D "en_SG.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_SG.utf8 good Using LC_COLLATE =3D "en_US.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_US.utf8 good Using LC_COLLATE =3D "en_ZA.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_ZA.utf8 good Using LC_COLLATE =3D "en_ZM.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_ZM.utf8 good Using LC_COLLATE =3D "en_ZW.utf8" Using LC_CTYPE =3D "en_US.UTF-8" en_ZW.utf8 good Will try on others. Thanks! Stephen
В списке pgsql-bugs по дате отправления: