I am a member of the monday morning murder association. I murdered bugs. As said earlier, the modification of PDO_MYSQL to support both the MySQL native driver for PHP (mysqlnd) and the MySQL Client Library (AKA libmysql) is progressing. A good number of known and unknown bugs has been killed. But some new have been found as well – an overview.
Please note that the status information is based on Linux 32bit and Linux 64bit testing only. We still have not done cross-platform testing recently. I spend too much time with blogging 😉 Also, I have not included some PDO_MYSQL feature requests such as the support of cursor attributes. Technically it should be possible to implement but we will focus on making "release ready" what we have today before we consider adding new features.
The following list is not ordered. Bugs have not been assigned a priority and/or severity. Its a “status quo” description that needs to be read with care.
Fixed with the current PDO_MYSQLND development version
- Bug #41997
pdo_mysql: stored procedure call returning single rowset blocks future queries – FIXED- Regression test:
bug_41997.phpt
- mysqlnd: OK, libmysql: OK
- See also PDO_MYSQLND: Calling Stored Procedures works fine with mysqlnd
- Regression test:
- Bug #42499 PDO_MYSQL: multi-statement execution via PDO::exec() makes connection unusable – FIXED
- Regression test:
bug_42499.phpt
- mysqlnd: OK, libmysql: OK
- See also PDO_MYSQLND: Mighty multiple-queries and PDOStatement::nextRowset()
- Regression test:
- Bug #12794 PDOStatement->nextRowset() doesn’t work – FIXED
- Regression test:
pdo_mysql_stmt_multiquery.phpt
and other - mysqlnd: OK, libmysql: OK
- See also PDO_MYSQLND: Mighty multiple-queries and PDOStatement::nextRowset()
- Regression test:
- Request #12401
Add support for ATTR_FETCH_TABLE_NAMES – FEATURE IMPLEMENTED- New feature, not a bug
- Regression test:
pdo_mysql_attr_fetch_table_names.phpt
- mysqlnd: OK, libmysql: OK
- Usage example:
$db->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, 1); $stmt = $db->query('SELECT label FROM test LIMIT 1'); var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); $stmt->closeCursor(); ---> array(1) { [0]=> array(1) { ["test.label"]=> string(1) "a" } }
Issues not related to the MySQL driver itself
- Bug #40740
PDO::execute() errors when parameters are used in LIMIT clause- The PDO SQL parser creates invalid SQL
- See also PDO: Learn how the PDO SQL parser causes bug reports
- Bug #44707 The MySQL PDO driver resets variable content after bindParam on tinyint field
- PDOs SQL parser breaks a simple INSERT
- See also PDO: Learn how the PDO SQL parser causes bug reports
- See also PDO_MYSQLND: Prepared Statements, again
- Related Bug #44643 bound parameters ignore explicit type definitions
- Related Bug #44639 PDO quotes integers in prepared statement
- Bug #42322 pdo_mysql fetch() throws exception on INSERT statements
- PDO does not specify a desired behavior
- Exceptions thrown by: MySQL, Postgres, OracleXE, DB2 Express. No exception thrown by: SQLite
- Bug #43443 PDO::prepare() throws PDOException instead of returning FALSE
- This is neither a PDO nor a driver bug. Its just how PDO is designed and works. Maybe a documentation issue.
prepare()
calls the constructor of PDOStatement. A constructor cannot return false. Errors must be indicated by exceptions,
- Bug #41125 PDO mysql + quote() + prepare() can result in seg fault
- PDO SQL parser is crashing on
$sql = "SELECT 1 FROM DUAL WHERE 'test' LIKE 'O'chaos' AND :id";
$stmt = $db->prepare($sql); - See also PDO: Learn how the PDO SQL parser causes bug reports
- PDO SQL parser is crashing on
To be done, to be checked again
- Bug #39858 Lost connection to MySQL server during query by a repeated call stored proced – TODO
- Regression test:
bug_39858.phpt
- Reported as Windows only issue, works fine on Linux
- Needs to be checked on Windows
- PDOs persistent connection management can crash
- Regression test:
- Bug #43371 Memory errors in PDO constructor
- Regression test:
bug_43371.phpt
- Reported as Windows only issue, works fine on Linux
- Needs to be checked on Windows
- PDOs persistent connection management can crash
- Regression test:
Issues reported by us and not related to PDO_MYSQL[ND]
- Bug #45432 PDO: persistent connection leak – OPEN
- Reported while writing this
- Bug #44409 PDO::FETCH_SERIALIZE calls __construct() – OPEN
- Calling the constructor might be wrong
- PDO::FETCH_SERIALIZE documentation request
- Bug #44173 PDO->query() parameter parsing/checking needs an update – OPEN
- Cosmetics
- Bug #44154 PDO->errorInfo() does not always return three element array – OPEN
- Cosmetics and/or documentation request
- Bug #44151 Errors not cleaned properly – OPEN
- Cosmetics and/or documentation request
- Bug #44337 PDO::FETCH_CLASS and visibility private (private constructor, private property) – OPEN
- Don’t know: bogus, feature request, bug – needs to be discussed
- Bug #44362 fetchAll(PDO::FETCH_COLUMN|<other>, …) and column index -1/PHP_INT_MAX + 1 – OPEN
- Don’t know: bogus, feature request, bug – needs to be discussed
- Bug #44159 Crash: $pdo->setAttribute(PDO::STATEMENT_ATTR_CLASS, NULL) – FIXED
- Bug #44202 PDO_PGSQL crash when trying to use emulated PS – FIXED
- Bug #44200 PDO_PGSQL crash on SELECT “?” – FIXED
- Bug #44166 Parameter handling flaw in PDO::getAvailableDrivers() – FIXED
- Cosmetics
- Bug #44189 PDO::setAttribute(PDO::ATTR_ERRMODE, <bogus>) parameter checks> – FIXED
- Cosmetics
- Bug #44169 Limitations of emulated PS / PDO::prepare() docs are wrong – DOCUMENTATION REQUEST
- Bug #44158 Several PDO attributes are documented with the wrong type – DOCUMENTATION REQUEST
- Bug #44155 pdo_drivers() not documented – DOCUMENTATION REQUEST
- Bug #44327 PDORow::queryString property & numeric offsets / Crash – BOGUS?
- Someone needs to check it, maybe “Bogus”?
- Crash seems gone