różnice sortowania postgres. osx v ubuntu
Ostatnio zdałem sobie sprawę, że sortowanie jest ogromną sprawą dla postgres, i że wiele komentarzy odnosi się do wsparcia OSX / locale jako „złamanego”, co mnie nie oświeciło. na potrzeby tego pytania ignoruję domyślne aspekty sortowania tabeli / kolumny i precyzuję je wyraźnie.
mój laptop to osx z postgres 9.2.4mój serwer jest ubuntu z postgres 9.1.9wspólne dla obu:
# show lc_collate ;
en_US.UTF-8
# show lc_ctype ;
en_US.UTF-8
na moim laptopie:
select ',' < '-' collate "en_US.UTF-8" as result;
true
teraz mój serwer nie ma sortowania „en_US.UTF-8”, ale ma „en_US.utf8” (co, jak rozumiem, nie jest tym samym, chociaż spodziewałbym się, że będzie się zachowywał tak samo)
select ',' < '-' collate "en_US.utf8" as result;
false
więc oto, gdzie jestem wariatem. Porządek „C” zawsze mówił (dla obu maszyn), że „,” jest mniejszy niż „-”, z którym mój mózg by się zgodził.
która implementacja utf8 jest poprawna? i jeśli ktoś mógłby wskazać mi definicję, która mogłaby pomóc, ponieważ w większości osx był w stanie znaleźć oskarżenia o „złamanie”. Więc martwiłbym się, że myliłem się przez całe życie, myśląc, że przed łącznikiem są porządki przecinkowe, ale wchodzę w dość zależnego arbitra tekstu i unicode itd. Python. który na serwerze ubuntu daje:
>>> print u',' < u'-', ',' < '-'
True True
Tak więc, czuję się bardzo jak ta koncepcja sortowania jest bardziej zepsuta na moim serwerze ubuntu niż mój serwer osx. ale nie mam „właściwego” sortowania, aby utworzyć zestawienie „en_US.UTF-8” z ala „utwórz sortowanie”, więc straciłem pewność, jak utworzyć parzystość lub która odpowiedź (prawda / fałsz) i powinien być używany jako poprawne odniesienie. (oprócz osobowej bocznicy z poleceniem ascii, które są przecież znakami ascii).
więc, w skrócie, jaka jest właściwa odpowiedź na en_US.UTF-8?