Обсуждение: BUG #2231: Incorrect Order By

Поиск
Список
Период
Сортировка

BUG #2231: Incorrect Order By

От
"Garoso, Fernando"
Дата:
The following bug has been logged online:

Bug reference:      2231
Logged by:          Garoso, Fernando
Email address:      fgaroso@ig.com.br
PostgreSQL version: 8.x
Operating system:   GNU Linux Debian
Description:        Incorrect Order By
Details:

create table tmp ( name char(30) );
create index tmp_idx on tmp (name);
insert into tmp values ( 'SUEKO' );
insert into tmp values ( 'SUE E' );
insert into tmp values ( 'SUE T' );

select * from tmp order by name;


### Result ###

teste=# select * from tmp order by name desc;
              name
--------------------------------
 SUE T
 SUEKO
 SUE E
(3 registros)

### Note ###

Version for windows => OK Order ;)

Re: BUG #2231: Incorrect Order By

От
Stephan Szabo
Дата:
On Wed, 1 Feb 2006, Garoso, Fernando wrote:

>
> The following bug has been logged online:
>
> Bug reference:      2231
> Logged by:          Garoso, Fernando
> Email address:      fgaroso@ig.com.br
> PostgreSQL version: 8.x
> Operating system:   GNU Linux Debian
> Description:        Incorrect Order By
> Details:
>
> create table tmp ( name char(30) );
> create index tmp_idx on tmp (name);
> insert into tmp values ( 'SUEKO' );
> insert into tmp values ( 'SUE E' );
> insert into tmp values ( 'SUE T' );
>
> select * from tmp order by name;
>
>
> ### Result ###
>
> teste=# select * from tmp order by name desc;
>               name
> --------------------------------
>  SUE T
>  SUEKO
>  SUE E
> (3 registros)

What locale are you using?  The above looks correct to my eye for en_US
locale on most linux systems which use dictionary sorting.

Re: BUG #2231: Incorrect Order By

От
Stephan Szabo
Дата:
On Thu, 2 Feb 2006, Stephan Szabo wrote:

> On Wed, 1 Feb 2006, Garoso, Fernando wrote:
>
> >
> > The following bug has been logged online:
> >
> > Bug reference:      2231
> > Logged by:          Garoso, Fernando
> > Email address:      fgaroso@ig.com.br
> > PostgreSQL version: 8.x
> > Operating system:   GNU Linux Debian
> > Description:        Incorrect Order By
> > Details:
> >
> > create table tmp ( name char(30) );
> > create index tmp_idx on tmp (name);
> > insert into tmp values ( 'SUEKO' );
> > insert into tmp values ( 'SUE E' );
> > insert into tmp values ( 'SUE T' );
> >
> > select * from tmp order by name;
> >
> >
> > ### Result ###
> >
> > teste=# select * from tmp order by name desc;
> >               name
> > --------------------------------
> >  SUE T
> >  SUEKO
> >  SUE E
> > (3 registros)
>
> What locale are you using?  The above looks correct to my eye for en_US
> locale on most linux systems which use dictionary sorting.

Hit send accidentally. :( Dictionary sorting rules generally skip spaces
in first pass comparisons. If you're expecting byte order sorting, you'll
want "C" locale. We currently use the system locales for sorting, so if
you want something which say uses non-byte order sorting but also doesn't
skip spaces, you'd need such a locale definition for the system.