Postgres-Sortierungsunterschiede. osx v ubuntu

Vor kurzem wurde mir klar, dass die Kollatierung für Postgres ein großes Problem darstellt und dass viele Kommentare die OSX / Locale-Unterstützung als "defekt" bezeichnen, was mich nicht aufgeklärt hat. Für die Zwecke dieser Frage ignoriere ich die Standardaspekte der Sortierung für Tabellen / Spalten und spezifiziere sie explizit.

mein laptop ist osx mit postgres 9.2.4mein server ist ubuntu mit postgres 9.1.9

Gemeinsam ist beiden:

  # show lc_collate ;
   en_US.UTF-8
  # show lc_ctype ;
   en_US.UTF-8

Auf meinem Laptop:

select ',' < '-' collate "en_US.UTF-8" as result;
  true

Jetzt hat mein Server nicht die Kollatierung "en_US.UTF-8", sondern "en_US.utf8" (was ich erkenne, ist nicht dasselbe, obwohl ich erwarten würde, dass es sich gleich verhält).

select ',' < '-' collate "en_US.utf8" as result;
 false

Also, hier flippe ich aus. "C" würde immer (für beide Maschinen) sagen, dass "," weniger als "-" ist, womit mein Gehirn einverstanden wäre.

Welche UTF8-Implementierung ist korrekt? und wenn jemand mich auf die Definition hinweisen könnte, die helfen würde, da ich meistens nur Vorwürfe von "gebrochenem" Niveau bei osx finden konnte. Also würde ich mir Sorgen machen, dass ich mein ganzes Leben lang falsch gelegen habe und dachte, dass Kommas vor dem Bindestrich stehen, aber einen einigermaßen verlässlichen Arbiter für Text, Unicode usw. Python eingeben. was auf dem Ubuntu-Server ergibt:

>>> print u',' < u'-', ',' < '-'
True True

Daher habe ich das Gefühl, dass dieses Kollatierungskonzept auf meinem Ubuntu-Server mehr kaputt ist als auf meinem Osx-Server. aber ich habe keine "richtige" Kollatierung, um meine "en_US.UTF-8" -Kollatierung von ala "Kollatierung erstellen" zu erstellen, so dass ich nicht weiß, wie Parität erstellt werden soll oder welche Antwort (wahr / falsch) i sollte als korrekte Referenz verwendet werden. (Neben der persönlichen Seite mit ASCII-Reihenfolge für was sind schließlich ASCII-Zeichen).

Also, kurz gesagt, welche ist die richtige Antwort für en_US.UTF-8?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage