1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Fix GH-20122: getColumnMeta() for JSON-column in MySQL

While at it, also add VECTOR.

Closes GH-20143.
This commit is contained in:
Niels Dossche
2025-10-12 00:40:28 +02:00
parent 94625a0e4c
commit 94284df7b2
4 changed files with 41 additions and 0 deletions

1
NEWS
View File

@@ -29,6 +29,7 @@ PHP NEWS
- MySQLnd:
. Fixed bug GH-8978 (SSL certificate verification fails (port doubled)).
(nielsdos)
. Fixed bug GH-20122 (getColumnMeta() for JSON-column in MySQL). (nielsdos)
- Opcache:
. Fixed bug GH-20081 (access to uninitialized vars in preload_load()).

View File

@@ -94,6 +94,7 @@ require_once 'skipifconnectfailure.inc';
MYSQLI_TYPE_NEWDATE => 'MYSQLI_TYPE_NEWDATE - TODO add testing',
MYSQLI_TYPE_INTERVAL => 'MYSQLI_TYPE_INTERVAL - TODO add testing',
MYSQLI_TYPE_GEOMETRY => 'MYSQLI_TYPE_GEOMETRY - TODO add testing',
MYSQLI_TYPE_JSON => array('JSON', '[]'),
);
$datatypes[MYSQLI_TYPE_NEWDECIMAL] = array('DECIMAL', '1.1');

View File

@@ -748,6 +748,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)

View File

@@ -0,0 +1,33 @@
--TEST--
GH-20122 (getColumnMeta() for JSON-column in MySQL)
--EXTENSIONS--
pdo
pdo_mysql
--SKIPIF--
<?php
require __DIR__ . '/config.inc';
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
PDOTest::skip();
?>
--FILE--
<?php
require __DIR__ . '/config.inc';
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
$db->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--
<?php
require __DIR__ . '/mysql_pdo_test.inc';
MySQLPDOTest::dropTestTable();
?>
--EXPECTF--
%r(JSON|LONGTEXT)%r