summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-17 11:32:01 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-09-17 11:32:01 +0200
commitd591e1c4f5114cd5ebf3a68ea07741b0bd598e7f (patch)
tree94857e5c1d6e6b8a531d673915ffd207a3e3c1f4
parentf0d2efbadcab95596679e2f78e204299c96ad9b4 (diff)
parent1aab7db6c870441046007c792c7fc5ecdff2ea51 (diff)
downloadphp-git-d591e1c4f5114cd5ebf3a68ea07741b0bd598e7f.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: pdo_mysql/mysqli (native) libmysqlclient_r no-longer used mysql: native mysql-8.0 uses _Bool mysqli: use native api
-rw-r--r--ext/mysqli/config.m48
-rw-r--r--ext/mysqli/mysqli.c2
-rw-r--r--ext/mysqli/mysqli_api.c8
-rw-r--r--ext/mysqli/mysqli_nonapi.c3
-rw-r--r--ext/mysqli/php_mysqli_structs.h16
-rw-r--r--ext/pdo_mysql/config.m49
-rw-r--r--ext/pdo_mysql/php_pdo_mysql_int.h3
7 files changed, 17 insertions, 32 deletions
diff --git a/ext/mysqli/config.m4 b/ext/mysqli/config.m4
index c78eb2bedc..e6f0760fda 100644
--- a/ext/mysqli/config.m4
+++ b/ext/mysqli/config.m4
@@ -47,14 +47,8 @@ if test "$PHP_MYSQLI" = "yes" || test "$PHP_MYSQLI" = "mysqlnd"; then
elif test "$PHP_MYSQLI" != "no"; then
MYSQL_CONFIG=$PHP_MYSQLI
-
MYSQL_LIB_NAME='mysqlclient'
- if test "$enable_maintainer_zts" = "yes"; then
- MYSQL_LIB_CFG='--libs_r'
- MYSQL_LIB_NAME='mysqlclient_r'
- else
- MYSQL_LIB_CFG='--libs'
- fi
+ MYSQL_LIB_CFG='--libs'
if test -x "$MYSQL_CONFIG" && $MYSQL_CONFIG $MYSQL_LIB_CFG > /dev/null 2>&1; then
MYSQLI_INCLINE=`$MYSQL_CONFIG --cflags | $SED -e "s/'//g"`
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index dc2e0e7e33..dcc5a16d5e 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -699,7 +699,7 @@ PHP_MINIT_FUNCTION(mysqli)
#ifdef MYSQLND_STRING_TO_INT_CONVERSION
REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT);
#endif
-#if MYSQL_VERSION_ID > 50110 || defined(MYSQLI_USE_MYSQLND)
+#if (MYSQL_VERSION_ID > 50110 && MYSQL_VERSION_ID < 80000) || (MYSQL_VERSION_ID >= 100000) || defined(MYSQLI_USE_MYSQLND)
REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
#endif
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 438c6cce55..06eb3c3d32 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -614,7 +614,7 @@ PHP_FUNCTION(mysqli_change_user)
size_t user_len, password_len, dbname_len;
zend_ulong rc;
#if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET)
- const CHARSET_INFO * old_charset;
+ MY_CHARSET_INFO old_charset;
#endif
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Osss!", &mysql_link, mysqli_link_class_entry, &user, &user_len, &password, &password_len, &dbname, &dbname_len) == FAILURE) {
@@ -623,7 +623,7 @@ PHP_FUNCTION(mysqli_change_user)
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
#if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET)
- old_charset = mysql->mysql->charset;
+ mysql_get_character_set_info(mysql->mysql, &old_charset);
#endif
#if defined(MYSQLI_USE_MYSQLND)
@@ -643,7 +643,7 @@ PHP_FUNCTION(mysqli_change_user)
5.0 doesn't support it. Support added in 5.1.23 by fixing the following bug :
Bug #30472 libmysql doesn't reset charset, insert_id after succ. mysql_change_user() call
*/
- rc = mysql_set_character_set(mysql->mysql, old_charset->csname);
+ rc = mysql_set_character_set(mysql->mysql, old_charset.csname);
}
#endif
@@ -1701,10 +1701,12 @@ static int mysqli_options_get_option_zval_type(int option)
#endif /* MySQL 4.1.0 */
case MYSQL_OPT_READ_TIMEOUT:
case MYSQL_OPT_WRITE_TIMEOUT:
+#ifdef MYSQL_OPT_GUESS_CONNECTION /* removed in MySQL-8.0 */
case MYSQL_OPT_GUESS_CONNECTION:
case MYSQL_OPT_USE_EMBEDDED_CONNECTION:
case MYSQL_OPT_USE_REMOTE_CONNECTION:
case MYSQL_SECURE_AUTH:
+#endif
#ifdef MYSQL_OPT_RECONNECT
case MYSQL_OPT_RECONNECT:
#endif /* MySQL 5.0.13 */
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index e8b1e34875..fdacd74d2a 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -328,7 +328,8 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql));
#if !defined(MYSQLI_USE_MYSQLND)
- mysql->mysql->reconnect = MyG(reconnect);
+ char reconnect = MyG(reconnect);
+ mysql_options(mysql->mysql, MYSQL_OPT_RECONNECT, (char *)&reconnect);
#endif
unsigned int allow_local_infile = MyG(allow_local_infile);
mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&allow_local_infile);
diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h
index 96fbacb82e..8afef8736a 100644
--- a/ext/mysqli/php_mysqli_structs.h
+++ b/ext/mysqli/php_mysqli_structs.h
@@ -54,8 +54,6 @@
#define WE_HAD_MBSTATE_T
#endif
-#include <my_global.h>
-
#if !defined(HAVE_MBRLEN) && defined(WE_HAD_MBRLEN)
#define HAVE_MBRLEN 1
#endif
@@ -64,20 +62,12 @@
#define HAVE_MBSTATE_T 1
#endif
-/*
- We need more than mysql.h because we need CHARSET_INFO in one place.
- This order has been borrowed from the ODBC driver. Nothing can be removed
- from the list of headers :(
-*/
-
-#include <my_sys.h>
#include <mysql.h>
+#if MYSQL_VERSION_ID >= 80000 && MYSQL_VERSION_ID < 100000
+typedef _Bool my_bool;
+#endif
#include <errmsg.h>
-#include <my_list.h>
-#include <m_string.h>
#include <mysqld_error.h>
-#include <my_list.h>
-#include <m_ctype.h>
#include "mysqli_libmysql.h"
#endif /* MYSQLI_USE_MYSQLND */
diff --git a/ext/pdo_mysql/config.m4 b/ext/pdo_mysql/config.m4
index 6f0302feab..d8b9487723 100644
--- a/ext/pdo_mysql/config.m4
+++ b/ext/pdo_mysql/config.m4
@@ -58,13 +58,8 @@ if test "$PHP_PDO_MYSQL" != "no"; then
if test "x$SED" = "x"; then
AC_PATH_PROG(SED, sed)
fi
- if test "$enable_maintainer_zts" = "yes"; then
- PDO_MYSQL_LIBNAME=mysqlclient_r
- PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs_r | $SED -e "s/'//g"`
- else
- PDO_MYSQL_LIBNAME=mysqlclient
- PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g"`
- fi
+ PDO_MYSQL_LIBNAME=mysqlclient
+ PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g"`
PDO_MYSQL_INCLUDE=`$PDO_MYSQL_CONFIG --cflags | $SED -e "s/'//g"`
elif test -n "$PDO_MYSQL_DIR"; then
AC_MSG_RESULT([not found])
diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h
index edded8dea9..a5b8653918 100644
--- a/ext/pdo_mysql/php_pdo_mysql_int.h
+++ b/ext/pdo_mysql/php_pdo_mysql_int.h
@@ -27,6 +27,9 @@
# define PDO_MYSQL_PARAM_BIND MYSQLND_PARAM_BIND
#else
# include <mysql.h>
+#if MYSQL_VERSION_ID >= 80000 && MYSQL_VERSION_ID < 100000
+typedef _Bool my_bool;
+#endif
# define PDO_MYSQL_PARAM_BIND MYSQL_BIND
#endif