Thread: BUG #2309: Wrong string comparison

BUG #2309: Wrong string comparison

From
"Yury Don"
Date:
The following bug has been logged online:

Bug reference:      2309
Logged by:          Yury Don
Email address:      yura@vpcit.ru
PostgreSQL version: 8.1.3
Operating system:   Linux (Debian)
Description:        Wrong string comparison
Details:

Looks like string comparison operators ignore spaces isnside of string.
Because of this sorting on text fields is wrong.

mdb=# select 'a z'::text>'ad'::text;
 ?column?
----------
 t

Re: BUG #2309: Wrong string comparison

From
Tom Lane
Date:
"Yury Don" <yura@vpcit.ru> writes:
> Looks like string comparison operators ignore spaces isnside of string.

It's not wrong, it's just following the rules of the locale.  You should
initdb the database with LANG=C if you want plain ASCII sorting.

            regards, tom lane

Re: BUG #2309: Wrong string comparison

From
Volkan YAZICI
Date:
Hi,

On Mar 09 02:00, Yury Don wrote:
> Looks like string comparison operators ignore spaces isnside of string.
> Because of this sorting on text fields is wrong.
>
> mdb=# select 'a z'::text>'ad'::text;
>  ?column?
> ----------
>  t

PostgreSQL relies on your locale for collation. Therefore, first you
need to check if your locale settings are working. For instance:

$ TEXT="a z\nad"
$ echo -e $TEXT | LC_COLLATE=tr_TR.iso88599 sort
ad
a z
$ echo -e $TEXT | LC_COLLATE=C sort
a z
ad


Regards.

Re: BUG #2309: Wrong string comparison

From
Yury Don
Date:
On Friday 10 March 2006 12:36, Volkan YAZICI wrote:
> Hi,
>
> On Mar 09 02:00, Yury Don wrote:
> > Looks like string comparison operators ignore spaces isnside of string.
> > Because of this sorting on text fields is wrong.
> >
> > mdb=# select 'a z'::text>'ad'::text;
> >  ?column?
> > ----------
> >  t
>
> PostgreSQL relies on your locale for collation. Therefore, first you
> need to check if your locale settings are working. For instance:
>
> $ TEXT="a z\nad"
> $ echo -e $TEXT | LC_COLLATE=tr_TR.iso88599 sort
> ad
> a z
> $ echo -e $TEXT | LC_COLLATE=C sort
> a z
> ad
>
>
> Regards.
>

My locale is KOI8-R and sorting in PostgreSQL corresponds to sorting in
locale. I just didn't expect that sorting will be this way ...

--
Best regards,
Yury Don