ID:               48724
 Updated by:       u...@php.net
 Reported By:      an0nym at narod dot ru
 Status:           Open
 Bug Type:         PDO related
 Operating System: *
 PHP Version:      5.3.0
 New Comment:

According to the test behaviour is not to set for certain types. This
is what you get.


Previous Comments:
------------------------------------------------------------------------

[2009-07-03 14:28:26] u...@php.net

libmysql and mysqlnd behave the same way. If this is decided to be
considered as a bug it is not a mysqlnd bug.







------------ libmysql -----------------------

nixn...@ulflinux:~/src/login/php5> sapi/cli/php -i | grep -C5
pdo_mysql
PDO

PDO support => enabled
PDO drivers => mysql, sqlite, sqlite2

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => 5.1.35

pdo_sqlite
nixn...@ulflinux:~/src/login/php5> sapi/cli/php -i | grep configure
Configure Command =>  './configure' 
'--with-pdo-mysql=/usr/local/mysql/bin/mysql_config'

nixn...@ulflinux:~/src/login/php5> sapi/cli/php pdo.php

int(0)
int(0)
object(PDOStatement)#2 (1) {
  ["queryString"]=>
  string(36) "SELECT cbit,ctinyint,cyear FROM test"
}
array(6) {
  ["flags"]=>
  array(0) {
  }
  ["table"]=>
  string(4) "test"
  ["name"]=>
  string(5) "cyear"
  ["len"]=>
  int(4)
  ["precision"]=>
  int(0)
  ["pdo_type"]=>
  int(2)
}
bool(false)
bool(false)
bool(false)
array(1) {
  [0]=>
  array(2) {
    ["VERSION()"]=>
    string(6) "5.1.35"
    [0]=>
    string(6) "5.1.35"
  }
}


------ mysqlnd --------------------

nixn...@ulflinux:~/src/login/php5> sapi/cli/php -i | grep configure
Configure Command =>  './configure'  '--with-pdo-mysql=mysqlnd'
'--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--enable-debug'
nixn...@ulflinux:~/src/login/php5> sapi/cli/php -i | grep -C5
pdo_mysql
PDO

PDO support => enabled
PDO drivers => mysql, sqlite, sqlite2

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27
$
Persistent cache => enabled
put_hits => 0
--
size => 2000
free_items => 2000
references => 2

Directive => Local Value => Master Value
pdo_mysql.cache_size => 2000 => 2000
pdo_mysql.debug => no value => no value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.6.16
nixn...@ulflinux:~/src/login/php5> sapi/cli/php pdo.php

int(0)
int(0)
object(PDOStatement)#2 (1) {
  ["queryString"]=>
  string(36) "SELECT cbit,ctinyint,cyear FROM test"
}
array(6) {
  ["pdo_type"]=>
  int(2)
  ["flags"]=>
  array(0) {
  }
  ["table"]=>
  string(4) "test"
  ["name"]=>
  string(5) "cyear"
  ["len"]=>
  int(4)
  ["precision"]=>
  int(0)
}
bool(false)
bool(false)
bool(false)
array(1) {
  [0]=>
  array(2) {
    ["VERSION()"]=>
    string(6) "5.1.35"
    [0]=>
    string(6) "5.1.35"
  }
}



------------------------------------------------------------------------

[2009-07-03 14:13:41] an0nym at narod dot ru

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.

------------------------------------------------------------------------

[2009-07-03 13:27:23] u...@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

Reply via email to