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 по дате отправления: