#48724 [Opn]: getColumnMeta() doesn't return native_type for BIT, TINYINT and YEAR
| From: | an0nym at narod dot ru | Date: | Fri, 03 Jul 2009 14:13:42 +0000 |
| Subject: | #48724 [Opn]: getColumnMeta() doesn't return native_type for BIT, TINYINT and YEAR | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-139209@lists.php.net to get a copy of this message | ||
ID: 48724
User updated by: an0nym at narod dot ru
Reported By: an0nym at narod dot ru
Status: Open
Bug Type: PDO related
Operating System: *
PHP Version: 5.3.0
New Comment:
If function has expected behaviour for 35 of 38 cases (that's how many
different types has MySQL), it is rather clear how should it behave for
remaining 3.
> How can there be a bug if behaviour is undefined?
Behaviour is not undefined. According to the link you provided,
behaviour can be changed without notice, but on the moment of writing
it
is surely defined and has a bug.
Previous Comments:
------------------------------------------------------------------------
[2009-07-03 13:27:23] uw@php.net
Warning
This function is EXPERIMENTAL. The behaviour of this function, its
name, and surrounding documentation may change without notice in a
future release of PHP. This function should be used at your own risk.
http://de2.php.net/manual/en/pdostatement.getcolumnmeta.php
How can there be a bug if behaviour is undefined?
------------------------------------------------------------------------
[2009-06-30 15:33:29] an0nym at narod dot ru
Tested - this bug remains actual with PHP 5.3.0 and mysqlnd.
------------------------------------------------------------------------
[2009-06-29 18:02:58] an0nym at narod dot ru
Description:
------------
PDOStatement::getColumnMeta() doesn't return native_type for BIT,
TINYINT and YEAR type columns (these should be 'BIT', 'TINY' and
'YEAR'
respectively).
This bug was partly discussed within bug #46533, but that bug is
generally about another thing.
Reproduce code:
---------------
$DB=new PDO('mysql:host=localhost;dbname=test','anyone','anyone');
$DB->exec('CREATE TABLE
test(
bit bit(1)
,tinyint tinyint
,year year)');
$DB->exec('INSERT INTO test VALUES(1,1,2000)');
$statement=$DB->query('SELECT bit,tinyint,year FROM
test');
$bit=$statement->getColumnMeta(0);
$tinyint=$statement->getColumnMeta(1);
$year=$statement->getColumnMeta(2);
var_dump(isset($bit['native_type']),isset($tinyint['native_type']),isset($year['native_type']));
Expected result:
----------------
bool(true) bool(true) bool(true)
Actual result:
--------------
bool(false) bool(false) bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48724&edit=1