On Tue, Dec 10, 2019 at 10:29 PM Noah Misch <noah@leadboat.com> wrote:
> On Tue, Dec 10, 2019 at 03:41:15PM +1300, Thomas Munro wrote:
> > I ran a variation of your program on Appveyor's Studio/Server 2019
> > image, and the result was the same: it thinks that cmp(s1, s2) == 0,
> > cmp(s2, s3) == 0, but cmp(s1, s3) == 1, so the operator fails to be
> > transitive.
>
> If that test is captured in self-contained artifacts (a few config files, a
> public git repository, etc.), could you share them? If not, no need to
> assemble such artifacts. I probably won't use them, but I'd be curious to
> browse them if you've already assembled them.
https://ci.appveyor.com/project/macdice/locale-sort
https://github.com/macdice/locale-sort
To understand which operating systems the images mentioned in
appveyor.yml correspond to:
https://www.appveyor.com/docs/windows-images-software/
> This does suggest some set of CompareString* parameters is free from the
> problem. If that's right, we could offer collations based on that. (I'm not
> sure it would be worth offering; ICU may be enough.)
It would be nice to get to the bottom of that (for example, what is
the relationship between names like "Korean_XXX" and names like
"ko-KR"?), but I'm unlikely to investigate further (I have enough
trouble getting N kinds of Unix to do what I want). Generally I like
the idea of continuing to support and recommend both operating system
and ICU locales for different use cases. It should be easy to get all
the software on your system to agree on ordering, which seems like a
thing you should want as an application designer. The lack of
versioning is not a problem on Windows (see
https://commitfest.postgresql.org/26/2351/).