The simpletest 'Invalid data' currently has one fail in Postgresql (and most likely sqlite too) because of this:
// 23000 means "Integrity constraint violation" according to ANSI SQL.
$this->assertEqual($e->errorInfo[0], '23000', t('Exception has proper SQLSTATE.'));
This error code is only returned from MySQL. PostgreSQL returns 23505 - "duplicate key value violates unique constraint", which is more accurate than what MySQL reports back. It would seem to me that were looking for error codes between in the 23000s is that how we want to patch this?
| Comment | File | Size | Author |
|---|---|---|---|
| #3 | 505812-remove-ANSI-SQLSTATE-error-codes.patch | 975 bytes | josh waihi |
Comments
Comment #1
andypostSuppose testing environment should know db type and use local code
Comment #2
andypostAnother trouble with that issue - this exception handler works inside simpletest's exception handler so sometimes (depends on php version and env config) bring unpredictable results, for example broke batch while returning exception after JSON data
Comment #3
josh waihi commentedThe simple fact that databases will return different error codes means that this is an unreliable way to write code. It is not a condition Drupal can rely on due to its inconsistantcy between databases.
So lets just remove it and not encourage the use of it in code.
Comment #4
andypostSuppose much better to remove this test at all then leave without assert
Comment #5
josh waihi commented@andypost, this test does other assertions that are usefull, its merely the error code assertion that is not of any use.
Comment #6
andypostSo lets commit this, I see no useful info in this assertion
Comment #7
dries commentedCommitted to CVS HEAD. Thanks!
Comment #9
c960657 commentedFWIW, Sqlite also returns 23000.
Comment #10
andypostFollow-up #1376778: Consistent 'duplicate key' detection in core