On Wed, Nov 12, 2008 at 06:45:27PM +0000, chris wood wrote:
> I apologize in advance for not testing on 8.3.5, but that would be very
> difficult for me.
> I e-mailed this same problem from chris.wood@bookitnow.ca and it got
> blocked
http://www.postgresql.org/docs/current/interactive/release-8-3-2.html
...
Fix a corner case in regular-expression substring matching
(substring(string from pattern)) (Tom)
The problem occurs when there is a match to the pattern overall but the
user has specified a parenthesized subexpression and that subexpression
hasn't got a match. An example is substring('foo' from 'foo(bar)?').
This should return NULL, since (bar) isn't matched, but it was
mistakenly returning the whole-pattern match instead (ie, foo).
...
so basically - it is that the code that worked before is considered to
be bad.
how to fix it:
1. change the regexpin substring to:
'^[0-9]{10}(?:,[0-9]{10})*$'
2. change check to:
CHECK ((public_phone ~ '^([0-9]{10}(,[0-9]{10})*)?$')));
choose whichever you prefer.
Best regards,
depesz
--
Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007