default to 4000 as the maximal length, which is the biggest size possible
without using a LONG type (if you specify anything larger than this, you'll end
up with ORA-1461).
Don't assume that all parameters were output parameters after execution, as
this would clobber the input values when used in a loop.
NULLs into empty strings as well as the other way around. It still doesn't
help a great deal in the long run, but at least the option is there.
Make sure hash tables are nulled out to avoid double freeing them.
While I'm here, rewrite the PHP_AUTOCONF-related code to more closely
match the conventions used elsewhere in this section. The result should
be functionally the same as before.
rely on that and use the real count which is kept in st_mysql_stmt
#of course using internal values is bad idea but the comment already says
#that this should be fixed
Additional ugliness required because mysql does stupid stuff like this:
mysql> CREATE TABLE foo (id int) TYPE=innodb;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> SHOW CREATE TABLE foo;
CREATE TABLE `foo` (
`id` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
In addition, BEGIN, COMMIT and ROLLBACK all succeed, even when no tables
support transactions.
- execute() would not re-fetch meta data after nextRowset() had been called.
- buffered mode would only be enabled on the first execute on a statement handle.
proto bool PDOStatement::closeCursor()
Closes the cursor, leaving the statement ready for re-execution.
The purpose of the function is to free up the connection to the server so that
other queries may be issued, but leaving the statement in a state that it can
be re-executed.
This is implemented either as an optional driver specific method (allowing for
maximum efficiency), or as the generic PDO fallback if no driver specific
function is installed.
The PDO generic fallback is semantically the same as writing the following code
in your PHP script:
do {
while ($stmt->fetch())
;
if (!$stmt->nextRowset())
break;
} while (true);