problem with dots in order by

Started by Ruben Oliveiraabout 21 years ago4 messagesgeneral
Jump to latest
#1Ruben Oliveira
ruben_dig@netcabo.pt

Hello everybody !

I have this order by :
select lalala from tablex order by field_y;
where field_y is a text column.

that returns something like :
2.1004.11
21.00.461
2.1006.21

in PostgreSQL 7.3.2 in Linux Mandrake 9.1

but in PostgreSQL 8.0.0 in Windows XP it works as I expected ...

2.1004.11
2.1006.21
21.00.461

the two config share the same Encoding when the database was created and
the client enconding is the same in the two cases :

H:\Documents and Settings\User>psql -l -U postgres
List of databases
Name | Owner | Encoding
-----------+----------+-----------
bd2005 | postgres | SQL_ASCII

Can anybody tell me if there is something I can do in the Linux config
to have the same order by result ??
Using XP is only for tests... I love my Mandrake server :P

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ruben Oliveira (#1)
Re: problem with dots in order by

Ruben Oliveira <ruben_dig@netcabo.pt> writes:

Can anybody tell me if there is something I can do in the Linux config
to have the same order by result ??

Sort order is determined by locale, not encoding. You did the Linux
initdb in the wrong locale (possibly something like en_US where you'd
rather have had C locale).

regards, tom lane

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Ruben Oliveira (#1)
Re: problem with dots in order by

On Tue, 15 Feb 2005, Ruben Oliveira wrote:

Hello everybody !

I have this order by :
select lalala from tablex order by field_y;
where field_y is a text column.

that returns something like :
2.1004.11
21.00.461
2.1006.21

in PostgreSQL 7.3.2 in Linux Mandrake 9.1

but in PostgreSQL 8.0.0 in Windows XP it works as I expected ...

2.1004.11
2.1006.21
21.00.461

the two config share the same Encoding when the database was created and
the client enconding is the same in the two cases :

It's not encoding that's important. It's locale (LC_COLLATE).
The linux box is probably running the server with en_US which sorts like
you've shown the above (ignoring most/all symbols and spaces in first pass
sorting).

You could re-initdb in "C" locale to change the sort ordering.

#4Ruben Oliveira
ruben_dig@netcabo.pt
In reply to: Tom Lane (#2)
Re: problem with dots in order by

Thanks for the quick reply :)

I missed the localization part of the manual , shame on me !!
http://www.postgresql.org/docs/current/static/charset.html

LC_COLLATE String sort order

I did:
set|grep LC
and because I am portuguese it returns pt_PT

just a quick question if you please :
is there any implication in changing Postgresql to the C locale ...
other than
the order by and to_char handling ?

I'm running Postgresql as an ERP Database done by me and any mistakes I
do: I'm dead meat :P

If you have experience with this I welcome any reply ...
Other than that I will try in some other machine the
initdb --locale=C
just to be safe ...

Thanks again ,
Ruben Oliveira
-

Tom Lane wrote:

Show quoted text

Ruben Oliveira <ruben_dig@netcabo.pt> writes:

Can anybody tell me if there is something I can do in the Linux config
to have the same order by result ??

Sort order is determined by locale, not encoding. You did the Linux
initdb in the wrong locale (possibly something like en_US where you'd
rather have had C locale).

regards, tom lane