Re: [E] Regexp_replace bug / does not terminate on long strings

Поиск
Список
Период
Сортировка
От Mark Dilger
Тема Re: [E] Regexp_replace bug / does not terminate on long strings
Дата
Msg-id 060D9E3A-C827-4EDD-AFB7-C70EF5DCD186@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [E] Regexp_replace bug / does not terminate on long strings  (Miles Elam <miles.elam@productops.com>)
Список pgsql-general

> On Aug 20, 2021, at 12:51 PM, Miles Elam <miles.elam@productops.com> wrote:
>
> Unbounded ranges seem like a problem.

Seems so.  The problem appears to be in regcomp.c's repeat() function which handles {1,SOME} differently than {1,INF}

> Seems worth trying a range from 1 to N where you play around with N to find your optimum performance/functionality
tradeoff.{1,20} is like '+' but clamps at 20. 

For any such value (5, 20, whatever) there can always be a string with more repeated words than the number you've
chosen,and the call to regexp_replace won't do what you want.  There is also an upper bound at work, because values
above255 will draw a regex compilation error.  So it seems worth a bit of work to determine why the regex engine has
badperformance in these cases. 

It sounds like the OP will be working around this problem by refactoring to call regexp_replace multiple times until
allrepeats are eradicated, but I don't think such workarounds should be necessary. 

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






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

Предыдущее
От: Miles Elam
Дата:
Сообщение: Re: [E] Regexp_replace bug / does not terminate on long strings
Следующее
От: Mladen Gogala
Дата:
Сообщение: Re: Make bloom extension trusted, but can not drop with normal user