From: benjcarson at digitaljunkies dot ca Operating system: Linux PHP version: 5CVS-2004-02-17 (dev) PHP Bug Type: PostgreSQL related Bug description: pg_convert: interval type regex does not compile
Description: ------------ When trying to call pg_convert for a table with an interval column, php throws a warning indicating that it can not compile the regex used to match interval values. The regex is on line 3999 of ext/pgsql/pgsql.c I think the regex is missing a ')' as the second last character. However, this regex also contains other semantic errors and rejects valid values as well as accepts some bogus ones. I have written a replacement regex and created a patch, available at http://www.digitaljunkies.ca/~benj/pgsql.c.diff.txt. Reproduce code: --------------- <?php error_reporting(E_ALL); $con = pg_connect("dbname=database"); $arr = array("interval_col" => "1 day"); // Presumably tmp_table contains a column 'interval_col' with type 'interval' $sql = pg_convert($con, "tmp_table", $arr); print_r($sql); echo "\n"; exit(0); ?> Expected result: ---------------- Array ( [interval_col] => '1 day' ) Actual result: -------------- Notice: pg_convert(): '1 day' does not match with '^[+-]{0,1}[ \t]+((second|seconds|minute|minute|hour|hour|day|days|week|weeks|month|monthes|year|years|decade|decades|century|centuries|millennium|millenniums){1,1}[ \t]+)+([ \t]+ago){0,1}$' in pg_convert.php on line 8 Warning: pg_convert(): Cannot compile regex in pg_convert.php on line 8 Notice: pg_convert(): Expects NULL or string for PostgreSQL interval field (interval_col) in pg_convert.php on line 8 -- Edit bug report at http://bugs.php.net/?id=27300&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=27300&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=27300&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=27300&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=27300&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=27300&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=27300&r=needscript Try newer version: http://bugs.php.net/fix.php?id=27300&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=27300&r=support Expected behavior: http://bugs.php.net/fix.php?id=27300&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=27300&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=27300&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=27300&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=27300&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=27300&r=dst IIS Stability: http://bugs.php.net/fix.php?id=27300&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=27300&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=27300&r=float