Re: like/ilike improvements

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: like/ilike improvements
Дата
Msg-id 46546536.9070700@dunslane.net
обсуждение исходный текст
Ответ на Re: like/ilike improvements  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: like/ilike improvements  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

Andrew Dunstan wrote:
>
>
> Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>  
>>> We should only be able to get out of step from the "%_" case, I 
>>> believe, so we should only need to do the first-byte test in that 
>>> case (which is in a different code path from the normal "_" case. 
>>> Does that seem right?
>>>     
>>
>> At least put Assert(IsFirstByte()) in the main path.
>>
>> I'm a bit suspicious of the separate-path business anyway.  Will it do
>> the right thing with say "%%%_" ?
>>
>>            
>>   
>
> Yes:
>
>
>            /* %% is the same as % according to the SQL standard */
>            /* Advance past all %'s */
>            while ((plen > 0) && (*p == '%'))
>                NextByte(p, plen);

I am also wondering if it might be sensible to make this choice once at 
backend startup and store a function pointer, instead of doing it for 
every string processed by like/ilike:
   if (pg_database_encoding_max_length() == 1)       return SB_MatchText(s, slen, p, plen);   else if
(GetDatabaseEncoding()== PG_UTF8)       return UTF8_MatchText(s, slen, p, plen);   else       return MB_MatchText(s,
slen,p, plen);
 

I guess that might make matters harder if we ever got per-column encodings.

cheers

andrew




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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: like/ilike improvements
Следующее
От: Tom Lane
Дата:
Сообщение: Re: like/ilike improvements