Skip to content

Commit a268489

Browse files
committed
mysqli: build fix with no mysqlnd option while using mariadb (fix #81658)
1 parent 7a6fb97 commit a268489

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

ext/mysqli/mysqli.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ PHP_MINIT_FUNCTION(mysqli)
596596
REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT);
597597
REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT);
598598
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT);
599-
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
599+
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
600600
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT);
601601
#endif
602602
REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT);
@@ -772,6 +772,12 @@ PHP_MINIT_FUNCTION(mysqli)
772772
REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT);
773773
REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT);
774774

775+
#ifdef MARIADB_BASE_VERSION
776+
REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 1, CONST_CS | CONST_PERSISTENT);
777+
#else
778+
REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 0, CONST_CS | CONST_PERSISTENT);
779+
#endif
780+
775781

776782
#ifdef MYSQLI_USE_MYSQLND
777783
mysqlnd_reverse_api_register_api(&mysqli_reverse_api);

ext/mysqli/mysqli_api.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1720,7 +1720,7 @@ static int mysqli_options_get_option_zval_type(int option)
17201720
#if MYSQL_VERSION_ID > 50605 || defined(MYSQLI_USE_MYSQLND)
17211721
case MYSQL_SERVER_PUBLIC_KEY:
17221722
#endif
1723-
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
1723+
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
17241724
case MYSQL_OPT_LOAD_DATA_LOCAL_DIR:
17251725
#endif
17261726
return IS_STRING;

ext/mysqli/mysqli_nonapi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, bool is_real_connect, b
333333
unsigned int allow_local_infile = MyG(allow_local_infile);
334334
mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&allow_local_infile);
335335

336-
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
336+
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
337337
if (MyG(local_infile_directory) && !php_check_open_basedir(MyG(local_infile_directory))) {
338338
mysql_options(mysql->mysql, MYSQL_OPT_LOAD_DATA_LOCAL_DIR, MyG(local_infile_directory));
339339
}

ext/mysqli/tests/mysqli_constants.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ mysqli.allow_local_infile=1
1010
$IS_MYSQLND = stristr(mysqli_get_client_info(), "mysqlnd");
1111
$constants = get_defined_constants(true);
1212
sort($constants);
13+
$IS_MARIADB = $constant('MYSQLI_IS_MARIADB');
1314

1415
$expected_constants = array(
1516
'MYSQLI_READ_DEFAULT_GROUP' => true,
@@ -47,6 +48,7 @@ $expected_constants = array(
4748
"MYSQLI_GROUP_FLAG" => true,
4849
"MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED"=> true,
4950
"MYSQLI_SERVER_QUERY_NO_INDEX_USED" => true,
51+
"MYSQLI_IS_MARIADB" => true,
5052

5153
"MYSQLI_TYPE_DECIMAL" => true,
5254
"MYSQLI_TYPE_TINY" => true,
@@ -180,7 +182,7 @@ if ($IS_MYSQLND) {
180182
$expected_constants["MYSQLI_TYPE_JSON"] = true;
181183
}
182184

183-
if ($version > 80021 || $IS_MYSQLND) {
185+
if ($version > 80021 && !$IS_MARIADB || $IS_MYSQLND) {
184186
$expected_constants['MYSQLI_OPT_LOAD_DATA_LOCAL_DIR'] = true;
185187
}
186188

0 commit comments

Comments
 (0)