Home » Database » DB » Bug #2399
DB_pgsql->errorCode() regexp test fails
Details
| Submitted | 2004-09-25 21:29 UTC |
|---|---|
| From | crain at fuse dot net |
| Assigned | danielc |
| Status | Closed |
| Package | DB |
| PHP Version | 4.3.4 |
| OS | WinXP |
| Roadmaps | (Not assigned) |
Comments
[2004-09-25 21:29 UTC] crain at fuse dot net
Description:
------------
errorCode() fails to detect a pgsql "relation...does not exist" error returned when nextId() attempts to increment a sequence and, failing, attempts to create a new one. This appears to be because of the regexp entry for this error type in DB_pgsql->errorCode(), line 246. There is a caret (^) symbol anchoring the beginning of this regexp:
'/^(([Rr]elation|[Ss]equence|[Tt]able)( [\"\'].*[\"\'])? does not exist|[Cc]lass ".+" not found)$/' => DB_ERROR_NOSUCHTABLE
As a result, the regexp will not match an error string such as:
'ERROR: relation "src_main_seq" does not exist'
And errorCode() therefore returns the default DB_ERROR, while nextId() is expecting DB_ERROR_NOSUCHTABLE. nextId() as a result will not create a new sequence when one is not found.
Previous versions do not have this caret symbol and so the bug is new.