Re: Re: [pgsql-ru-general] Re:

Lists: pgsql-ru-general
From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: ILIKE с русскими не работает?
Date: 2005-04-25 03:38:14
Message-ID: 426C6626.1050903@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Собственно subj?

Проверяю:
template1=# CREATE DATABASE tmp WITH ENCODING='utf8';
CREATE DATABASE
template1=# CREATE TABLE tmp_tbl (id int not null primary key, name
varchar(20));
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс
"tmp_tbl_pkey" для таблицы "tmp_tbl"
CREATE TABLE
template1=# INSERT INTO tmp_tbl VALUES(1, 'Вагон');
INSERT 17182 1
template1=# SELECT * FROM tmp_tbl WHERE name ILIKE ('Ва%');
id | name
----+------------
1 | Вагон
(1 запись)

template1=# select * from tmp_tbl where name ILIKE ('ва%');
id | name
----+------
(записей: 0)

template1=#

Есть проблема или я что-то не так делаю?

--
С уважением, Виктор


From: Sergey Suleymanov <solt(at)eatpbank(dot)ru>
To: vvislobokov(at)lukoilperm(dot)ru
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: ILIKE с русскими не раб
Date: 2005-04-25 04:37:39
Message-ID: 87hdhvxyi4.fsf@boo.eatpbank.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

>>>>> Viktor Vislobokov writes:

Viktor> Собственно subj? Проверяю: template1=# CREATE DATABASE tmp

А собственно переключиться в новую базу?

Viktor> WITH ENCODING='utf8'; CREATE DATABASE template1=# CREATE
Viktor> TABLE tmp_tbl (id int not null primary key, name
Viktor> varchar(20)); NOTICE: CREATE TABLE / PRIMARY KEY создаст
Viktor> подразумеваемый индекс "tmp_tbl_pkey" для таблицы "tmp_tbl"
Viktor> CREATE TABLE template1=# INSERT INTO tmp_tbl VALUES(1,
Viktor> 'Вагон'); INSERT 17182 1 template1=# SELECT * FROM tmp_tbl
Viktor> WHERE name ILIKE ('Ва%'); id | name ----+------------ 1 |
Viktor> Вагон (1 запись)

Viktor> template1=# select * from tmp_tbl where name ILIKE ('ва%');
Viktor> id | name ----+------ (записей: 0)

Viktor> template1=#

Viktor> Есть проблема или я что-то не так делаю?

Viktor> -- С уважением, Виктор

--
Sergey Suleymanov


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: ILIKE с русски
Date: 2005-04-25 04:56:21
Message-ID: 426C7875.6080701@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


> А собственно переключиться в новую базу?
>
>
Да, забыл здесь привести. Переключался, конечно.
Пробовал даже создавать базу в KOI8-R, а не только в utf-8.

--
С уважением, Виктор


From: Sergey Suleymanov <solt(at)eatpbank(dot)ru>
To: vvislobokov(at)lukoilperm(dot)ru
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: ILIKE с русски
Date: 2005-04-25 05:13:42
Message-ID: 8764ybwi9l.fsf@boo.eatpbank.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

>>>>> Viktor Vislobokov writes:

Viktor> Да, забыл здесь привести. Переключался, конечно. Пробовал
Viktor> даже создавать базу в KOI8-R, а не только в utf-8.

Есть подозрение, что тут играет роль значение LC_COLLATE
самого процесса. Что говорит pg_controldata?

У меня база создана в KOI8, и

postgres(at)dragon:~$ pg_controldata
...
LC_COLLATE: ru_RU.KOI8-R
LC_CTYPE: ru_RU.KOI8-R

всякие ilike, ~*, order by работают замечательно. С индексами
правда облом.

А вот попробовал создать в UNICODE, таки да - не
работают. Правда проверить с LC_COLLATE=ru_RU.utf-8 не могу,
боюсь пользователи меня не поймут. :)

--
Sergey Suleymanov


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To: Sergey Suleymanov <solt(at)eatpbank(dot)ru>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: ILIKE с русски
Date: 2005-04-25 05:25:30
Message-ID: 426C7F4A.7040502@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Ясно. Т.е. у тебя системная локаль koi8-r
У меня - utf-8
Т.е. надо чтобы системная локаль была koi8-r, чтобы нормально работал ilike?
Интересно, а как это работает в винде?

Народы, у кого postgreSQL на винде? Что скажите?

> Viktor> даже создавать базу в KOI8-R, а не только в utf-8.
>
> Есть подозрение, что тут играет роль значение LC_COLLATE
> самого процесса. Что говорит pg_controldata?
>
> У меня база создана в KOI8, и
>
>postgres(at)dragon:~$ pg_controldata
>...
>LC_COLLATE: ru_RU.KOI8-R
>LC_CTYPE: ru_RU.KOI8-R
>
> всякие ilike, ~*, order by работают замечательно. С индексами
> правда облом.
>
> А вот попробовал создать в UNICODE, таки да - не
> работают. Правда проверить с LC_COLLATE=ru_RU.utf-8 не могу,
> боюсь пользователи меня не поймут. :)
>
>
>

--
С уважением, Виктор


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: vvislobokov(at)lukoilperm(dot)ru
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-25 06:59:05
Message-ID: Pine.GSO.4.62.0504251058350.4489@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-869693583-1114412345=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

Это у тебя с локаое проблема, проверь. В koi8-r все работает как положено.

On Mon, 25 Apr 2005, Viktor Vislobokov wrote:

> Собственно subj?
>
> Проверяю:
> template1=# CREATE DATABASE tmp WITH ENCODING='utf8';
> CREATE DATABASE
> template1=# CREATE TABLE tmp_tbl (id int not null primary key, name
> varchar(20));
> NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс
> "tmp_tbl_pkey" для таблицы "tmp_tbl"
> CREATE TABLE
> template1=# INSERT INTO tmp_tbl VALUES(1, 'Вагон');
> INSERT 17182 1
> template1=# SELECT * FROM tmp_tbl WHERE name ILIKE ('Ва%');
> id | name
> ----+------------
> 1 | Вагон
> (1 запись)
>
> template1=# select * from tmp_tbl where name ILIKE ('ва%');
> id | name
> ----+------
> (записей: 0)
>
> template1=#
>
> Есть проблема или я что-то не так делаю?
>
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-869693583-1114412345=:4489--


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To:
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-25 07:06:04
Message-ID: 426C96DC.6030707@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Oleg Bartunov wrote:

> Это у тебя с локаое проблема, проверь. В koi8-r все работает как
> положено.
>
Это получается, что не у меня с локалью проблема, а у PostgreSQL.
Да, у меня системная локаль utf-8. Но почему бы нет? Тем более, что
количество
дистрибутивов Linux, которые используют ru_RU.koi8r вместо ru_RU.utf-8
уже стремится к нулю. В общем бага, однозначно. Будем знать.

--
С уважением, Виктор


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: vvislobokov(at)lukoilperm(dot)ru
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Re: [pgsql-ru-general] Re: [pgsql-ru-
Date: 2005-04-25 07:26:41
Message-ID: Pine.GSO.4.62.0504251122190.4489@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-1817792895-1114414001=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Mon, 25 Apr 2005, Viktor Vislobokov wrote:

> Oleg Bartunov wrote:
>
>> Это у тебя с локаое проблема, проверь. В koi8-r все работает как
>> положено.
>>
> Это получается, что не у меня с локалью проблема, а у PostgreSQL.
> Да, у меня системная локаль utf-8. Но почему бы нет? Тем более, что
> количество
> дистрибутивов Linux, которые используют ru_RU.koi8r вместо ru_RU.utf-8
> уже стремится к нулю. В общем бага, однозначно. Будем знать.

Ты бы подробнее проблему описал ! Значит, что я понял:
1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
работает нормально. Проверь в perl, например.
2. как ты делали initdb ?
3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
в unicode :)

После этого, я смогу проверить у себя.

>
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1817792895-1114414001=:4489--


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To:
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-25 08:03:05
Message-ID: 426CA439.4090105@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


> Ты бы подробнее проблему описал ! Значит, что я понял:
> 1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
> работает нормально. Проверь в perl, например.

Работает, например
#!/usr/bin/perl

use utf8;

$s = "Проба";

print uc($s) . "\n";
print lc($s) . "\n";

> 2. как ты делали initdb ?

initdb делается автоматом при первом запуске службы PostgreSQL.
Делается, насколько я понимаю в системной локали, но для PostgreSQL
как ASCII (судя по выводу \l в psql).

> 3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
> в unicode :)

Вводил в psql. Да ничем не отличается работа в utf-8 локали для пользователя
от любой другой локали. Только вот такими заморочками как с ILIKE.
Базу ессно, создаём с WITH ENCODING 'UTF8';

--
С уважением, Виктор


From: Sergey Suleymanov <solt(at)eatpbank(dot)ru>
To: PostgreSQL on Russian <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Re: [pgsql-ru-general] Re:
Date: 2005-04-25 08:03:16
Message-ID: 87y8b7qo57.fsf@boo.eatpbank.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

>>>>> Viktor Vislobokov writes:

Viktor> Это получается, что не у меня с локалью проблема, а у
Viktor> PostgreSQL. Да, у меня системная локаль utf-8. Но почему бы
Viktor> нет? Тем более, что количество дистрибутивов Linux, которые
Viktor> используют ru_RU.koi8r вместо ru_RU.utf-8 уже стремится к
Viktor> нулю. В общем бага, однозначно. Будем знать.

Кстати да. Вот что нашел:

> the caseinsensitive patternmatch-operators seems not to work with
> multibyte, while lower() and upper()-functions finally works perfect.

It looks to me like iwchareq() in src/backend/utils/adt/like.c still needs
work to handle multibyte characters in a sane fashion. Feel free to
submit a patch ...

regards, tom lane

Речь шла правда об 8.0b3. Но похоже, ибо order by, upper, lower
работают, а ilike и ~* - нет.

--
Sergey Suleymanov


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: vvislobokov(at)lukoilperm(dot)ru
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Re: [pgsql-ru-general] Re: [pgsql-ru-
Date: 2005-04-25 12:00:34
Message-ID: Pine.GSO.4.62.0504251600110.4489@ra.sai.msu.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-1691952160-1114430434=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Mon, 25 Apr 2005, Viktor Vislobokov wrote:

>
>> Ты бы подробнее проблему описал ! Значит, что я понял:
>> 1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
>> работает нормально. Проверь в perl, например.
>
> Работает, например
> #!/usr/bin/perl
>
> use utf8;
>
> $s = "Проба";
>
> print uc($s) . "\n";
> print lc($s) . "\n";
>
>
>> 2. как ты делали initdb ?
>
> initdb делается автоматом при первом запуске службы PostgreSQL.
> Делается, насколько я понимаю в системной локали, но для PostgreSQL
> как ASCII (судя по выводу \l в psql).

сделай в ru_RU.UTF8

>
>> 3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
>> в unicode :)
>
> Вводил в psql. Да ничем не отличается работа в utf-8 локали для пользователя
> от любой другой локали. Только вот такими заморочками как с ILIKE.
> Базу ессно, создаём с WITH ENCODING 'UTF8';
>
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1691952160-1114430434=:4489--


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To:
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-26 03:13:32
Message-ID: 426DB1DC.5010308@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


>> initdb делается автоматом при первом запуске службы PostgreSQL.
>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>> как ASCII (судя по выводу \l в psql).
>
>
> сделай в ru_RU.UTF8

Хм. А в чём разница будет?
Я ведь саму базу создаю с явным указанием кодировки KOI8?
Т.е. я всегда считал, что если указать кодировку при initdb, то эта
кодировка влияет
только на базу template1. На остальные базы это влияет только, если при
создании
базы явно не указана кодировка. Я не прав?

--
С уважением, Виктор


From: Sergey Suleymanov <solt(at)eatpbank(dot)ru>
To: PostgreSQL on Russian <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Re: [pgsql-ru-general] Re:
Date: 2005-04-26 04:44:15
Message-ID: 871x8ytae8.fsf@boo.eatpbank.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

>>>>> Viktor Vislobokov writes:

Viktor> Хм. А в чём разница будет? Я ведь саму базу создаю с явным
Viktor> указанием кодировки KOI8? Т.е. я всегда считал, что если
Viktor> указать кодировку при initdb, то эта кодировка влияет только
Viktor> на базу template1. На остальные базы это влияет только, если
Viktor> при создании базы явно не указана кодировка. Я не прав?

Полагаю нет. Кодировка базы влияет только на трансляцию
ввода/вывода. А сортировка и прочая от локали initdb. Оно и
смотрится по разному: SHOW LC_COLLATE/LC_* или SHOW
SERVER_ENCODING/CLIENT_ENCODING

--
Sergey Suleymanov


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-29 05:02:53
Message-ID: 4271BFFD.7060905@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


>>
>>> 2. как ты делали initdb ?
>>
>>
>> initdb делается автоматом при первом запуске службы PostgreSQL.
>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>> как ASCII (судя по выводу \l в psql).
>
>
> сделай в ru_RU.UTF8
>
Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.

--
С уважением, Виктор


From: Nick Gazaloff <nick(at)sbin(dot)org>
To:
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-29 09:59:48
Message-ID: 42720594.8050407@sbin.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Viktor Vislobokov wrote:
>
>>>
>>>> 2. как ты делали initdb ?
>>>
>>>
>>>
>>> initdb делается автоматом при первом запуске службы PostgreSQL.
>>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>>> как ASCII (судя по выводу \l в psql).
>>
>>
>>
>> сделай в ru_RU.UTF8
>>
> Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.

Покажи вывод
show LC_COLLATE;
show LC_CTYPE;

--

С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)


From: "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru>
To:
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает?
Date: 2005-04-29 10:10:45
Message-ID: 42720825.4040304@lukoilperm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


>>>> initdb делается автоматом при первом запуске службы PostgreSQL.
>>>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>>>> как ASCII (судя по выводу \l в psql).
>>>
>>>
>>>
>>>
>>> сделай в ru_RU.UTF8
>>>
>> Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.
>
>
> Покажи вывод
> show LC_COLLATE;
> show LC_CTYPE;
>
>
tmp=# SHOW LC_COLLATE;
lc_collate
-------------
ru_RU.utf-8
(1 запись)

tmp=# SHOW LC_CTYPE;
lc_ctype
-------------
ru_RU.utf-8
(1 запись)

tmp=#

--
С уважением, Виктор