Diferencias de colación postgres. osx v ubuntu

Por lo tanto, recientemente me he dado cuenta de que la recopilación es un gran problema en postgres, y que muchos comentarios se refieren al soporte de OSX / locale como "roto", lo que no me ha iluminado. a los efectos de esta pregunta, estoy ignorando los aspectos predeterminados de la tabla / columna de la intercalación, y los especifico explícitamente.

Mi laptop es osx con postgres 9.2.4mi servidor es ubuntu con postgres 9.1.9

comunes a ambos

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

en mi portátil:

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

ahora, mi servidor no tiene intercalación "en_US.UTF-8", pero sí tiene "en_US.utf8" (que reconozco que no es lo mismo, aunque espero que se comporte de la misma manera)

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

Entonces, aquí es donde me estoy volviendo loco. La orden "C" siempre diría (para ambas máquinas) que ',' es menor que '-', con lo que mi cerebro estaría de acuerdo.

¿Qué implementación de utf8 es correcta? y si alguien pudiera señalarme la definición que ayudaría, ya que en su mayoría solo he podido encontrar acusaciones de "quebrantado" nivelado en osx. Por lo tanto, me preocuparía haber estado equivocado toda mi vida al pensar que la coma ordena antes del guión, pero ingresar a un árbitro del texto y unicode Python bastante confiable. que en el servidor ubuntu produce:

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

Entonces, me siento muy parecido a que este concepto de intercalación está más roto en mi servidor ubuntu que en mi servidor osx. pero no tengo una recopilación "adecuada" para crear mi "en_US.UTF-8" recopilación de ala "crear intercalación", por lo que estoy perdido en cuanto a cómo crear paridad, o qué respuesta (verdadero / falso) i Se debe utilizar como referencia correcta. (además de apartarse personalmente de los ascii para lo que son, después de todo, los caracteres ascii).

Entonces, en pocas palabras, ¿cuál es la respuesta correcta para en_US.UTF-8?

Respuestas a la pregunta(1)

Su respuesta a la pregunta