Thread: BUG #11478: regexp_matches regression in 9.2
The following bug has been logged on the website: Bug reference: 11478 Logged by: Christoph Berg Email address: myon@debian.org PostgreSQL version: 9.2.9 Operating system: any Description: The following was reported in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760564 : select regexp_matches('foo/bar/baz', '^([^/]+?)(?:/([^/]+?))(?:/([^/]+?))?$', ''); Correct 9.1 result: regexp_matches ---------------- {foo,bar,baz} Bad 9.2 and later result: regexp_matches ---------------- (0 rows) Removing the last or second-last ? brings the match back. Perl also thinks the regexp should match: $ perl -wle 'print "$1 $2 $3" if "foo/bar/baz" =~ m!^([^/]+?)(?:/([^/]+?))(?:/([^/]+?))?$!' foo bar baz (There should probably be much less ? in the regexp in the first place, but a regression/bug is a bug.)
myon@debian.org writes: > select regexp_matches('foo/bar/baz', > '^([^/]+?)(?:/([^/]+?))(?:/([^/]+?))?$', ''); > Correct 9.1 result: > regexp_matches > ---------------- > {foo,bar,baz} > Bad 9.2 and later result: > regexp_matches > ---------------- > (0 rows) Even better, it Asserts() in an assert-enabled build :-(. Fixed, thanks for the report! regards, tom lane