Re: Case insensitive selects?

Поиск
Список
Период
Сортировка
От Martijn van Oosterhout
Тема Re: Case insensitive selects?
Дата
Msg-id 3A8E881C.31CFC4EF@svana.org
обсуждение исходный текст
Ответ на Re: Case insensitive selects?  (David Wheeler <david@wheeler.net>)
Ответы Re: Case insensitive selects?  (David Wheeler <david@wheeler.net>)
Список pgsql-general
Tom Lane wrote:

[snip]

> > Hmmm...I'd hate to have two indexes on every field I query like this, one
> > case-senstive, one case-insensitve (like the one you create here). Is
> > there a configuration option or something that will tell pgsql to do
> > case-insensitive comparisons (kinda like MS SQL Server has)? That could
> > save us on indexing overhead, since we want all of our WHERE comparisons
> > to be case-insensitive, anyway.
>
> Then why are you bothering to maintain a case-sensitive index?
>
> There's no free lunch available here; if you think there is, then you
> are misunderstanding what an index is.  Either the index is in
> case-sensitive order, or it's not.

I've actually been thinking about this and maybe this is possible with
some smarts in the query parser. If you have an index on
lower(fieldname) then consider the following query:

select *
from table1, table2
where table1.a = table2.b;

(the index is on lower(table1.a).

Now, it should be true that a = b implies lower(a) = lower(b), so the
above query is equivalent to:

select *
from table1, table2
where table1.a = table2.b
and lower(table1.a) = lower(table2.b);

This query can use the index and produce the correct result. Am I
missing anything?
--
Martijn van Oosterhout <kleptog@cupid.suninternet.com>
http://cupid.suninternet.com/~kleptog/

В списке pgsql-general по дате отправления:

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: how to return more than 1 arg with a function ?
Следующее
От: Bruce Momjian
Дата:
Сообщение: Last day for O'Reilly proposals