Обсуждение: String operators <= and >=

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

String operators <= and >=

От
"Patrick Vachon"
Дата:
Hi

We have a strange problem when searching for a string using <= and >=
operators on Solaris.
It did work with 7.3, but not with 7.3.3, 7.3.4 and 7.4.1.
The database have been initialized with locale en_US.ISO8859-1

Have a simple table testtbl:
create table testtbl ( id int, name varchar(20));
Insert this record:
insert into testtbl values(10, 'PEREZ');
Now do that search:
select * from testtbl where name >= 'PERE' and name <= 'PERE\377';

It should return the record of the table, but it will not return it with
version 7.3.3 and later.
We still found that workaround works:
select * from testtbl where name >= 'PERE' and name <= 'PEREzz';

Which is pretty strange...
Any comments about that? Is it a bug?

Thanks,
Patrick

_________________________________________________________________
Add photos to your messages with MSN 8. Get 2 months FREE*.

http://join.msn.com/?page=dept/features&pgmarket=en-ca&RU=http%3a%2f%2fjoin.msn.com%2f%3fpage%3dmisc%2fspecialoffers%26pgmarket%3den-ca


Re: String operators <= and >=

От
Tom Lane
Дата:
"Patrick Vachon" <kaleidelf@hotmail.com> writes:
> We have a strange problem when searching for a string using <= and >=
> operators on Solaris.
> It did work with 7.3, but not with 7.3.3, 7.3.4 and 7.4.1.
> The database have been initialized with locale en_US.ISO8859-1

> Have a simple table testtbl:
> create table testtbl ( id int, name varchar(20));
> Insert this record:
> insert into testtbl values(10, 'PEREZ');
> Now do that search:
> select * from testtbl where name >= 'PERE' and name <= 'PERE\377';

I would expect this not to find PEREZ in that locale, no matter which PG
version you use.  Try putting the three strings in a file and sorting
them with the sort(1) command-line tool --- in en_US locale you'll
likely find that 'PERE\377' comes between the others.  For instance,
on HPUX I get:

$ cat zzz
PEREZ
PERE
PERE�
$ LC_ALL=C sort zzz
PERE
PEREZ
PERE�
$ LC_ALL=en_US.iso88591 sort zzz
PERE
PERE�
PEREZ
$

My guess is that your 7.3 installation used C locale, and you failed to
reproduce that setting when you installed the newer versions.

            regards, tom lane

Re: String operators <= and >=

От
"Patrick Vachon"
Дата:
It is quite possible!
I will have to test that to confirm.
Is there any way to change the locale without having to re-initdb?

Thanks
Patrick


>From: Tom Lane <tgl@sss.pgh.pa.us>
>To: "Patrick Vachon" <kaleidelf@hotmail.com>
>CC: pgsql-ports@postgresql.org
>Subject: Re: [PORTS] String operators <= and >= Date: Thu, 26 Feb 2004
>14:33:19 -0500
>
>"Patrick Vachon" writes:
> > We have a strange problem when searching for a string using <= and >=
> > operators on Solaris.
> > It did work with 7.3, but not with 7.3.3, 7.3.4 and 7.4.1.
> > The database have been initialized with locale en_US.ISO8859-1
>
> > Have a simple table testtbl:
> > create table testtbl ( id int, name varchar(20));
> > Insert this record:
> > insert into testtbl values(10, 'PEREZ');
> > Now do that search:
> > select * from testtbl where name >= 'PERE' and name <= 'PERE\377';
>
>I would expect this not to find PEREZ in that locale, no matter which PG
>version you use.  Try putting the three strings in a file and sorting
>them with the sort(1) command-line tool --- in en_US locale you'll
>likely find that 'PERE\377' comes between the others.  For instance,
>on HPUX I get:
>
>$ cat zzz
>PEREZ
>PERE
>PERE�
>$ LC_ALL=C sort zzz
>PERE
>PEREZ
>PERE�
>$ LC_ALL=en_US.iso88591 sort zzz
>PERE
>PERE�
>PEREZ
>$
>
>My guess is that your 7.3 installation used C locale, and you failed to
>reproduce that setting when you installed the newer versions.
>
>            regards, tom lane

_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8.

http://join.msn.com/?page=dept/bcomm&pgmarket=en-ca&RU=http%3a%2f%2fjoin.msn.com%2f%3fpage%3dmisc%2fspecialoffers%26pgmarket%3den-ca


Re: String operators <= and >=

От
Tom Lane
Дата:
"Patrick Vachon" <kaleidelf@hotmail.com> writes:
> Is there any way to change the locale without having to re-initdb?

Nope :-(.

            regards, tom lane