Fix regexp_matches() handling of zero-length matches.
Tom Lane <tgl@sss.pgh.pa.us>
Fix regexp_matches() handling of zero-length matches. We'd find the same match twice if it was of zero length and not immediately adjacent to the previous match. replace_text_regexp() got similar cases right, so adjust this search logic to match that. Note that even though the regexp_split_to_xxx() functions share this code, they did not display equivalent misbehavior, because the second match would be considered degenerate and ignored. Jeevan Chalke, with some cosmetic changes by me.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/regexp.c | modified | +6 −7 |
| src/backend/utils/adt/varlena.c | modified | +4 −1 |
| src/test/regress/expected/strings.out | modified | +58 −0 |
| src/test/regress/sql/strings.sql | modified | +7 −0 |