ID: 27300 Updated by: [EMAIL PROTECTED] Reported By: benjcarson at digitaljunkies dot ca -Status: Verified +Status: Closed Bug Type: PostgreSQL related Operating System: * PHP Version: 4CVS, 5CVS (2004-02-17) New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2004-03-13 03:55:35] mike at musicplace dot com These probably all get fixed in the same place, but just in case: Ditto for pg_insert(), haven't tried pg_delete() or pg_update()... ------------------------------------------------------------------------ [2004-02-17 21:58:15] benjcarson at digitaljunkies dot ca 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 this bug report at http://bugs.php.net/?id=27300&edit=1