ID: 42443 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Analyzed +Status: Closed Bug Type: SQLite related Operating System: * PHP Version: 6CVS-2007-08-27 (CVS) 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. In 5.3+ at the moment. Previous Comments: ------------------------------------------------------------------------ [2008-01-16 14:43:10] lapo at lapo dot it Thanks, I'll try it this evening. =) The only remaining inconvenience may be that PHP strings can contain "\0" while SQLite texts apparently do not... but for short binary values in PHP strings are more common, such as in the result of serialize(), while PARAM_LOB *must* be used as a stream. On the other hand I really wouldn't know how to solve the problem otherwise (except creating a PARAM_BINARY that acts like PARAM_LOG but is used like PARAM_STR, but that would "break" the PDO API...). ------------------------------------------------------------------------ [2008-01-15 15:30:21] [EMAIL PROTECTED] I have a patch to deal with both of these issues here, just waiting to here back from Wez about adding it. http://server.macvicar.net/patches/php-bug42443.patch ------------------------------------------------------------------------ [2008-01-14 22:27:08] lapo at lapo dot it Even worse than the integer case (which leads to inefficience) is the case of BLOBs, which leads to corruption of data: text values can't contain \0, while blob data can. E.g. from command line sqlite3: sqlite> SELECT LENGTH(X'12000000'); 4 sqlite> SELECT LENGTH(CAST(X'12000000' AS text)); 1 Because "case PDO_PARAM_LOB" falls through to "case PDO_PARAM_STR", which uses sqlite3_bind_text... using PDO is impossible to store BLOB data in Sqlite3. ------------------------------------------------------------------------ [2007-08-27 10:42:16] [EMAIL PROTECTED] Description: ------------ PDO SQLite3 calls sqlite3_bind_text() for all non-blob and non-null parameter types regardless of whether integer data is provided. Integer data can be bound with sqlite3_bind_int(), which saves memory space and improves efficiency, as well as storing the intended type in a database which uses SQLite3's value typing. Patch is at: http://news.php.net/php.internals/31935 Reproduce code: --------------- Difficult to show reproduction. Expected result: ---------------- Difficult to show reproduction. Actual result: -------------- Difficult to show reproduction. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=42443&edit=1