Thread

  1. BUG #2309: Wrong string comparison

    Yury Don <yura@vpcit.ru> — 2006-03-09T14:00:53Z

    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
    
    
  2. Re: BUG #2309: Wrong string comparison

    Tom Lane <tgl@sss.pgh.pa.us> — 2006-03-10T00:48:17Z

    "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
    
    
  3. Re: BUG #2309: Wrong string comparison

    Volkan YAZICI <yazicivo@ttnet.net.tr> — 2006-03-10T07:36:11Z

    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.
    
    
  4. Re: BUG #2309: Wrong string comparison

    Yury Don <yura@vpcit.ru> — 2006-03-10T07:57:30Z

    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