I apologize in advance for not testing on 8.3.5, but that would be very
difficult for me.
here is where it works in 8.3.1:
protocalte=> select version() ;
version
----------------------------------------------------------------------------------------
PostgreSQL 8.3.1 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3
(Debian 4.2.3-2)
(1 row)
protocalte=> CREATE TABLE locn (
locn_key integer NOT NULL,
public_phone text NOT NULL,
CONSTRAINT public_phone_ch CHECK (((public_phone = ''::text) OR
("substring"(public_phone, '^[0-9]{10}(,[0-9]{10})*$'::text) IS NOT NULL)))
);
CREATE TABLE
protocalte=> insert into locn values(10, '1231231234') ;
INSERT 0 1
and here is where it does not work in 8.3.4:
postgresbugs=# select version() ;
version
--------------------------------------------------------------------------------------------
PostgreSQL 8.3.4 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian
4.3.2-1) 4.3.2
(1 row)
postgresbugs=# CREATE TABLE locn (
locn_key integer NOT NULL,
public_phone text NOT NULL,
CONSTRAINT public_phone_ch CHECK (((public_phone = ''::text) OR
("substring"(public_phone, '^[0-9]{10}(,[0-9]{10})*$'::text) IS NOT NULL)))
);
CREATE TABLE
postgresbugs=# insert into locn values(10, '1231231234') ;
ERROR: new row for relation "locn" violates check constraint
"public_phone_ch"