#42443 [Com]: PDO SQLite3 lacks integer type support

2008-01-16 Thread lapo at lapo dot it
 ID:   42443
 Comment by:   lapo at lapo dot it
 Reported By:  [EMAIL PROTECTED]
 Status:   Analyzed
 Bug Type: SQLite related
 Operating System: *
 PHP Version:  6CVS-2007-08-27 (CVS)
 New Comment:

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...).


Previous Comments:


[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'1200');
4
sqlite SELECT LENGTH(CAST(X'1200' 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=42443edit=1


#42443 [Com]: PDO SQLite3 lacks integer type support

2008-01-14 Thread lapo at lapo dot it
 ID:   42443
 Comment by:   lapo at lapo dot it
 Reported By:  [EMAIL PROTECTED]
 Status:   Open
 Bug Type: SQLite related
 Operating System: *
 PHP Version:  6CVS-2007-08-27 (CVS)
 New Comment:

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'1200');
4
sqlite SELECT LENGTH(CAST(X'1200' 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.


Previous Comments:


[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=42443edit=1