Re: BUG #16333: position() function not equivalent to strpos()function when comparing citext

Поиск
Список
Период
Сортировка
Искать
От
Peter Eisentraut
Тема
Re: BUG #16333: position() function not equivalent to strpos()function when comparing citext
Дата
Msg-id
9817af55-fbe4-b342-b641-637f1308ef96@2ndquadrant.com
Ответ на
Список
Дерево обсуждения
BUG #16333: position() function not equivalent to strpos() function when comparing citext PG Bug reporting form <noreply@postgresql.org>
Re: BUG #16333: position() function not equivalent to strpos() function when comparing citext Tom Lane <tgl@sss.pgh.pa.us>
Re: BUG #16333: position() function not equivalent to strpos()function when comparing citext Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: BUG #16333: position() function not equivalent to strpos() function when comparing citext Tom Lane <tgl@sss.pgh.pa.us>
Re: BUG #16333: position() function not equivalent to strpos()function when comparing citext Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: BUG #16333: position() function not equivalent to strpos()function when comparing citext "David G. Johnston" <david.g.johnston@gmail.com>
On 2020-04-02 03:04, Tom Lane wrote:
> PG Bug reporting form  writes:
>> SELECT position('foo'::citext IN 'Foobar'::citext) =
>> strpos('Foobar'::citext, 'foo'::citext) as "positionEqualsStrpos";
> 
>> Citext does not create an overload for position() supporting citext
>> parameters, therefore position(a in b) always runs case-sensitive.
> 
> Well, the citext documentation specifies which functions have
> case-insensitive mappings.  strpos() is listed, position() is not,
> so I'd say it's acting precisely as documented.

Arguably, there is a misdesign here, however.  Any function that does 
some kind of text-in-text search where citext could plausbily offer 
case-insensitive behavior will automatically fall back to the 
case-sensitive version if citext doesn't offer its own variant.  The fix 
would technically need to be that citext offers its own variant of every 
potential such function, which is clearly not possible, or that casts 
between text and citext are more restricted, which would make citext 
nearly unusable.

Doesn't seem fixable.  Collations are probably a better way of dealing 
with this.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


В списке pgsql-bugs по дате отправления
От: Tom Lane
Дата:
От: Tom Lane
Дата:
FAQ