diff --git a/ext/mysqli/tests/mysqli_fetch_field_types.phpt b/ext/mysqli/tests/mysqli_fetch_field_types.phpt index feb72cabf7a..80e5cda06e9 100644 --- a/ext/mysqli/tests/mysqli_fetch_field_types.phpt +++ b/ext/mysqli/tests/mysqli_fetch_field_types.phpt @@ -90,6 +90,7 @@ require_once 'skipifconnectfailure.inc'; // MYSQLI_TYPE_GEOMETRY => array('GEOMETRY', 'TODO add testing'), MYSQLI_TYPE_NEWDECIMAL => array('DECIMAL', '1.1'), MYSQLI_TYPE_BIT => array('BIT', 0), + MYSQLI_TYPE_JSON => array('JSON', '[]'), ); foreach ($datatypes as $php_type => $datatype) { diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c index cf01791407e..dc62fd66a67 100644 --- a/ext/pdo_mysql/mysql_statement.c +++ b/ext/pdo_mysql/mysql_statement.c @@ -746,6 +746,12 @@ static char *type_to_name_native(int type) /* {{{ */ PDO_MYSQL_NATIVE_TYPE_NAME(DATE) #ifdef FIELD_TYPE_NEWDATE PDO_MYSQL_NATIVE_TYPE_NAME(NEWDATE) +#endif +#ifdef FIELD_TYPE_VECTOR + PDO_MYSQL_NATIVE_TYPE_NAME(VECTOR) +#endif +#ifdef FIELD_TYPE_JSON + PDO_MYSQL_NATIVE_TYPE_NAME(JSON) #endif PDO_MYSQL_NATIVE_TYPE_NAME(TIME) PDO_MYSQL_NATIVE_TYPE_NAME(DATETIME) diff --git a/ext/pdo_mysql/tests/gh20122.phpt b/ext/pdo_mysql/tests/gh20122.phpt new file mode 100644 index 00000000000..28369fefaf6 --- /dev/null +++ b/ext/pdo_mysql/tests/gh20122.phpt @@ -0,0 +1,33 @@ +--TEST-- +GH-20122 (getColumnMeta() for JSON-column in MySQL) +--EXTENSIONS-- +pdo +pdo_mysql +--SKIPIF-- + +--FILE-- +exec('CREATE TABLE test (bar JSON)'); +$db->exec('INSERT INTO test VALUES("[]")'); + +$stmt = $db->query('SELECT * from test'); +$meta = $stmt->getColumnMeta(0); + +// Note: JSON is an alias for LONGTEXT on MariaDB! +echo $meta['native_type'], "\n"; +?> +--CLEAN-- + +--EXPECTF-- +%r(JSON|LONGTEXT)%r