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

Reply via email to