Skip to content

Commit 984416d

Browse files
committed
Merge branch 'PHP-8.5'
* PHP-8.5: Fix phpGH-20122: getColumnMeta() for JSON-column in MySQL
2 parents ad9c60f + 02bd332 commit 984416d

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

ext/mysqli/tests/mysqli_fetch_field_types.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ require_once 'skipifconnectfailure.inc';
9090
// MYSQLI_TYPE_GEOMETRY => array('GEOMETRY', 'TODO add testing'),
9191
MYSQLI_TYPE_NEWDECIMAL => array('DECIMAL', '1.1'),
9292
MYSQLI_TYPE_BIT => array('BIT', 0),
93+
MYSQLI_TYPE_JSON => array('JSON', '[]'),
9394
);
9495

9596
foreach ($datatypes as $php_type => $datatype) {

ext/pdo_mysql/mysql_statement.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,12 @@ static char *type_to_name_native(int type) /* {{{ */
746746
PDO_MYSQL_NATIVE_TYPE_NAME(DATE)
747747
#ifdef FIELD_TYPE_NEWDATE
748748
PDO_MYSQL_NATIVE_TYPE_NAME(NEWDATE)
749+
#endif
750+
#ifdef FIELD_TYPE_VECTOR
751+
PDO_MYSQL_NATIVE_TYPE_NAME(VECTOR)
752+
#endif
753+
#ifdef FIELD_TYPE_JSON
754+
PDO_MYSQL_NATIVE_TYPE_NAME(JSON)
749755
#endif
750756
PDO_MYSQL_NATIVE_TYPE_NAME(TIME)
751757
PDO_MYSQL_NATIVE_TYPE_NAME(DATETIME)

ext/pdo_mysql/tests/gh20122.phpt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--TEST--
2+
GH-20122 (getColumnMeta() for JSON-column in MySQL)
3+
--EXTENSIONS--
4+
pdo
5+
pdo_mysql
6+
--SKIPIF--
7+
<?php
8+
require __DIR__ . '/config.inc';
9+
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
10+
PDOTest::skip();
11+
?>
12+
--FILE--
13+
<?php
14+
require __DIR__ . '/config.inc';
15+
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
16+
$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
17+
18+
$db->exec('CREATE TABLE test (bar JSON)');
19+
$db->exec('INSERT INTO test VALUES("[]")');
20+
21+
$stmt = $db->query('SELECT * from test');
22+
$meta = $stmt->getColumnMeta(0);
23+
24+
// Note: JSON is an alias for LONGTEXT on MariaDB!
25+
echo $meta['native_type'], "\n";
26+
?>
27+
--CLEAN--
28+
<?php
29+
require __DIR__ . '/mysql_pdo_test.inc';
30+
MySQLPDOTest::dropTestTable();
31+
?>
32+
--EXPECTF--
33+
%r(JSON|LONGTEXT)%r

0 commit comments

Comments
 (0)