php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #78596 getColumnMeta() doesn't return native_type for JSON
Submitted: 2019-09-25 14:23 UTC Modified: 2019-09-25 15:48 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: phpbug at discosucks dot it Assigned:
Status: Analyzed Package: PDO MySQL
PHP Version: 7.2.22 OS: linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: phpbug at discosucks dot it
New email:
PHP Version: OS:

 

 [2019-09-25 14:23 UTC] phpbug at discosucks dot it
Description:
------------
PDOStatement::getColumnMeta() doesn't return native_type for JSON type columns (i suppose it should be "string"). 


Test script:
---------------
$DB=new PDO('mysql:host=localhost;dbname=test','user','pass');
$DB->exec('CREATE TABLE `test` (`a` JSON)');
$DB->exec("INSERT INTO `test` VALUES('[]')");
$statement=$DB->query('SELECT `a` FROM `test`');
$meta=$statement->getColumnMeta(0);

var_dump(isset($meta['native_type']));

Expected result:
----------------
bool(true)

Actual result:
--------------
bool(false)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-09-25 15:48 UTC] requinix@php.net
-Status: Open +Status: Analyzed
 [2019-09-25 15:48 UTC] requinix@php.net
PHP is testing for the field type (reported by MySQL) using a variety of #defined FIELD_TYPE_* constants:
https://github.com/php/php-src/blob/PHP-7.2.22/ext/pdo_mysql/mysql_statement.c#L781
https://dev.mysql.com/doc/dev/mysql-server/latest/mysql__com_8h.html (Ctrl+F)
Note there is no constant for JSON. No constant means PHP can't identify the type.

However those FIELD_TYPEs are aliases for MYSQL_TYPE_* constants:
https://dev.mysql.com/doc/dev/mysql-server/latest/field__types_8h.html
In that list there is a JSON type; it's documented as "used for replication only" but it seems like other projects are using it.
https://github.com/search?q=%22MYSQL_TYPE_JSON%22&type=Commits

Perhaps pdo_mysql should switch to using the MYSQL_TYPEs?
 [2024-05-14 04:28 UTC] carol1987grayson at outlook dot com
Thanks for making my work a lot easier. your post are appreciated.(https://github.com)(https://www.myaarpmedicares.us/)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 17:01:32 2024 UTC