Re: [E] Regexp_replace bug / does not terminate on long strings - Mailing list pgsql-general

From Miles Elam
Subject Re: [E] Regexp_replace bug / does not terminate on long strings
Date
Msg-id CAALojA-uQ+C_SOa2tfX3-sZypVZJJasxaOS2JLbgPDoGaMtFGQ@mail.gmail.com
Whole thread Raw
In response to Re: [E] Regexp_replace bug / does not terminate on long strings  (Mark Dilger <mark.dilger@enterprisedb.com>)
Responses Re: [E] Regexp_replace bug / does not terminate on long strings  (Mark Dilger <mark.dilger@enterprisedb.com>)
List pgsql-general
On Fri, Aug 20, 2021 at 12:32 PM Mark Dilger <mark.dilger@enterprisedb.com> wrote:

The following queries take radically different time to run:

Unbounded ranges seem like a problem. 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.

select regexp_replace(
  repeat('someone,one,one,one,one,one,one,', 60),
  '(?<=^|,)([^,]+)(?:,\1){1,20}(?=$|,)',
  '\1', -- replacement
  'g'  -- apply globally (all matches)
);
- Miles Elam

pgsql-general by date:

Previous
From: Mark Dilger
Date:
Subject: Re: [E] Regexp_replace bug / does not terminate on long strings
Next
From: Mark Dilger
Date:
Subject: Re: [E] Regexp_replace bug / does not terminate on long strings