Thread: lower или LIKE?

lower или LIKE?

From
Nick Gazaloff
Date:
Господа!

Я вижу, что заработали lower и upper для русских строк. Но: я привык
делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно
делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование
индексов для LIKE.

Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по
индексу?


--

Best regards,
Nick
(GPG Key ID: 4396B2D0)


Re: lower или LIKE?

From
Oleg Bartunov
Date:
  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-953690185-1106252533=:8381
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Thu, 20 Jan 2005, Nick Gazaloff wrote:

> Господа!
>
> Я вижу, что заработали lower и upper для русских строк. Но: я привык делать
> базы в UNICODE, а чтобы при этом работали lower/upper, нужно делать initdb с
> локалью ru_RU.UTF-8. Но тогда отваливается использование индексов для LIKE.
>
> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по
> индексу?
>

можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по
чьей-то просьбе.


>
>

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

Re: lower

From
"Alexander M. Pravking"
Date:
On Thu, Jan 20, 2005 at 09:44:49PM +0300, Nick Gazaloff wrote:
> Господа!
>
> Я вижу, что заработали lower и upper для русских строк. Но: я привык
> делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно
> делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование
> индексов для LIKE.
>
> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по
> индексу?

Начиная вроде с 7.4 можно задать индексу opclass varchar_pattern_ops,
тогда он будет использоваться для LIKE и регекспов (рагумеется, только
для LIKE 'string%' и ~ '^string'):

http://borg.postgresql.org/docs/7.4/static/indexes-opclass.html

Неудобно только, что отдельный индекс приходится строить.

Между прочим, регекспы работают в разы быстрее LIKE.


--
Fduch M. Pravking

Re: lower или LIKE?

From
Nick Gazaloff
Date:
Oleg Bartunov wrote:
> On Thu, 20 Jan 2005, Nick Gazaloff wrote:
>
>> Господа!
>>
>> Я вижу, что заработали lower и upper для русских строк. Но: я привык
>> делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно
>> делать initdb с локалью ru_RU.UTF-8. Но тогда отваливается
>> использование индексов для LIKE.
>>
>> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE
>> по индексу?
>>
>
> можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по
> чьей-то просьбе.

Было бы неплохо...

А что правит патч?

--

Best regards,
Nick
(GPG Key ID: 4396B2D0)


Re: lower или LIKE?

From
Oleg Bartunov
Date:
  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-1489380298-1106258077=:8381
Content-Type: TEXT/PLAIN; CHARSET=koi8-r; FORMAT=flowed
Content-Transfer-Encoding: 8BIT
Content-ID: <Pine.GSO.4.61.0501210842211.8381@ra.sai.msu.su>

On Fri, 21 Jan 2005, Nick Gazaloff wrote:

> Oleg Bartunov wrote:
>> On Thu, 20 Jan 2005, Nick Gazaloff wrote:
>>
>>> Господа!
>>>
>>> Я вижу, что заработали lower и upper для русских строк. Но: я привык
>>> делать базы в UNICODE, а чтобы при этом работали lower/upper, нужно делать
>>> initdb с локалью ru_RU.UTF-8. Но тогда отваливается использование индексов
>>> для LIKE.
>>>
>>> Получается, что это непреодолимая дилемма? Или lower/upper, или LIKE по
>>> индексу?
>>>
>>
>> можно патчик сделать на пару строчек :) я когда-то делал для 7.4 по
>> чьей-то просьбе.
>
> Было бы неплохо...
>
> А что правит патч?
>

Да там явным текстом написано запретить использование индекса для non-C
локале. Надо взять и поправить это условие. Никак не могу вспомнить
где это место было :)

>

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

Re: lower или LIKE?

From
"Viktor Vislobokov"
Date:
>>
>> А что правит патч?
>>
>
> Да там явным текстом написано запретить использование индекса для non-C
> локале. Надо взять и поправить это условие. Никак не могу вспомнить
> где это место было :)

Вот как вспомнишь и всё это в нормальном виде будет - будет готов первый
вопрос
для русской части FAQ.

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