Skip to content

Commit 8597ec0

Browse files
committed
Remove support for libmysqlclient 5.0
Closes GH-5391.
1 parent baabb53 commit 8597ec0

File tree

9 files changed

+10
-68
lines changed

9 files changed

+10
-68
lines changed

UPGRADING

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,10 @@ PHP 8.0 UPGRADE NOTES
578578
- MBString:
579579
. The Unicode data tables have been updated to version 13.0.0.
580580

581+
- MySQLi / PDO MySQL:
582+
. When mysqlnd is not used (which is the default and recommended option),
583+
the minimum supported libmysqlclient version is now 5.1.
584+
581585
========================================
582586
10. New Global Constants
583587
========================================

ext/mysqli/mysqli.c

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -711,17 +711,13 @@ PHP_MINIT_FUNCTION(mysqli)
711711
/* for mysqli_stmt_set_attr */
712712
REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT);
713713

714-
#if MYSQL_VERSION_ID > 50003 || defined(MYSQLI_USE_MYSQLND)
715714
REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT);
716715
REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT);
717716
REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT);
718717
REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT);
719718
REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT);
720-
#endif
721719

722-
#if MYSQL_VERSION_ID > 50007 || defined(MYSQLI_USE_MYSQLND)
723720
REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_CS | CONST_PERSISTENT);
724-
#endif
725721

726722
/* column information */
727723
REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT);
@@ -739,9 +735,7 @@ PHP_MINIT_FUNCTION(mysqli)
739735
REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_CS | CONST_PERSISTENT);
740736
REGISTER_LONG_CONSTANT("MYSQLI_ENUM_FLAG", ENUM_FLAG, CONST_CS | CONST_PERSISTENT);
741737
REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_CS | CONST_PERSISTENT);
742-
#if MYSQL_VERSION_ID > 50001 || defined(MYSQLI_USE_MYSQLND)
743738
REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_CS | CONST_PERSISTENT);
744-
#endif
745739

746740
#if (MYSQL_VERSION_ID > 51122 && MYSQL_VERSION_ID < 60000) || (MYSQL_VERSION_ID > 60003) || defined(MYSQLI_USE_MYSQLND)
747741
REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT);
@@ -776,10 +770,8 @@ PHP_MINIT_FUNCTION(mysqli)
776770
#ifdef FIELD_TYPE_JSON
777771
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_JSON", FIELD_TYPE_JSON, CONST_CS | CONST_PERSISTENT);
778772
#endif
779-
#if MYSQL_VERSION_ID > 50002 || defined(MYSQLI_USE_MYSQLND)
780773
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT);
781774
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT);
782-
#endif
783775

784776
REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_NAME", MYSQL_SET_CHARSET_NAME, CONST_CS | CONST_PERSISTENT);
785777
REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_DIR", MYSQL_SET_CHARSET_DIR, CONST_CS | CONST_PERSISTENT);
@@ -1138,7 +1130,6 @@ void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * result, zend
11381130
if (row[i]) {
11391131
zval res;
11401132

1141-
#if MYSQL_VERSION_ID > 50002
11421133
if (mysql_fetch_field_direct(result, i)->type == MYSQL_TYPE_BIT) {
11431134
my_ulonglong llval;
11441135
char tmp[22];
@@ -1158,10 +1149,7 @@ void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * result, zend
11581149
*/
11591150
snprintf(tmp, sizeof(tmp), (mysql_fetch_field_direct(result, i)->flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval);
11601151
ZVAL_STRING(&res, tmp);
1161-
} else
1162-
#endif
1163-
{
1164-
1152+
} else {
11651153
ZVAL_STRINGL(&res, row[i], field_len[i]);
11661154
}
11671155

ext/mysqli/mysqli.stub.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,11 @@ public function dump_debug_info() {}
7979
*/
8080
public function debug(string $debug_options) {}
8181

82-
#ifdef HAVE_MYSQLI_GET_CHARSET
8382
/**
8483
* @return object|null
8584
* @alias mysqli_get_charset
8685
*/
8786
public function get_charset() {}
88-
#endif
8987

9088
/**
9189
* @return string|null
@@ -233,13 +231,11 @@ public function savepoint(string $name) {}
233231
*/
234232
public function select_db(string $database) {}
235233

236-
#ifdef HAVE_MYSQLI_SET_CHARSET
237234
/**
238235
* @return bool
239236
* @alias mysqli_set_charset
240237
*/
241238
public function set_charset(string $charset) {}
242-
#endif
243239

244240
/**
245241
* @param mixed $value

ext/mysqli/mysqli_api.c

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -459,9 +459,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc)
459459
break;
460460

461461
case MYSQL_TYPE_LONGLONG:
462-
#if MYSQL_VERSION_ID > 50002 || defined(MYSQLI_USE_MYSQLND)
463462
case MYSQL_TYPE_BIT:
464-
#endif
465463
stmt->result.buf[ofs].type = IS_STRING;
466464
stmt->result.buf[ofs].buflen = sizeof(my_ulonglong);
467465
stmt->result.buf[ofs].val = (char *)emalloc(stmt->result.buf[ofs].buflen);
@@ -611,7 +609,7 @@ PHP_FUNCTION(mysqli_change_user)
611609
char *user, *password, *dbname;
612610
size_t user_len, password_len, dbname_len;
613611
zend_ulong rc;
614-
#if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET)
612+
#if !defined(MYSQLI_USE_MYSQLND)
615613
const CHARSET_INFO * old_charset;
616614
#endif
617615

@@ -620,7 +618,7 @@ PHP_FUNCTION(mysqli_change_user)
620618
}
621619
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
622620

623-
#if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET)
621+
#if !defined(MYSQLI_USE_MYSQLND)
624622
old_charset = mysql->mysql->charset;
625623
#endif
626624

@@ -634,7 +632,7 @@ PHP_FUNCTION(mysqli_change_user)
634632
if (rc) {
635633
RETURN_FALSE;
636634
}
637-
#if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET)
635+
#if !defined(MYSQLI_USE_MYSQLND)
638636
if (mysql_get_server_version(mysql->mysql) < 50123L) {
639637
/*
640638
Request the current charset, or it will be reset to the system one.
@@ -1024,12 +1022,9 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS)
10241022
}
10251023
case IS_STRING:
10261024
if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_LONGLONG
1027-
#if MYSQL_VERSION_ID > 50002
10281025
|| stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_BIT
1029-
#endif
10301026
) {
10311027
my_bool uns = (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? 1:0;
1032-
#if MYSQL_VERSION_ID > 50002
10331028
if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_BIT) {
10341029
switch (stmt->result.buf[i].output_len) {
10351030
case 8:llval = (my_ulonglong) bit_uint8korr(stmt->result.buf[i].val);break;
@@ -1041,9 +1036,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS)
10411036
case 2:llval = (my_ulonglong) bit_uint2korr(stmt->result.buf[i].val);break;
10421037
case 1:llval = (my_ulonglong) uint1korr(stmt->result.buf[i].val);break;
10431038
}
1044-
} else
1045-
#endif
1046-
{
1039+
} else {
10471040
llval= *(my_ulonglong *) stmt->result.buf[i].val;
10481041
}
10491042
#if SIZEOF_ZEND_LONG==8
@@ -1065,14 +1058,10 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS)
10651058
ZEND_TRY_ASSIGN_REF_LONG(result, llval);
10661059
}
10671060
} else {
1068-
#if defined(MYSQL_DATA_TRUNCATED) && MYSQL_VERSION_ID > 50002
10691061
if (ret == MYSQL_DATA_TRUNCATED && *(stmt->stmt->bind[i].error) != 0) {
10701062
/* result was truncated */
10711063
ZEND_TRY_ASSIGN_REF_STRINGL(result, stmt->result.buf[i].val, stmt->stmt->bind[i].buffer_length);
10721064
} else {
1073-
#else
1074-
{
1075-
#endif
10761065
ZEND_TRY_ASSIGN_REF_STRINGL(result, stmt->result.buf[i].val, stmt->result.buf[i].output_len);
10771066
}
10781067
}

ext/mysqli/mysqli_arginfo.h

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -458,10 +458,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_debug, 0, 0, 1)
458458
ZEND_ARG_TYPE_INFO(0, debug_options, IS_STRING, 0)
459459
ZEND_END_ARG_INFO()
460460

461-
#if defined(HAVE_MYSQLI_GET_CHARSET)
462-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_get_charset, 0, 0, 0)
463-
ZEND_END_ARG_INFO()
464-
#endif
461+
#define arginfo_class_mysqli_get_charset arginfo_class_mysqli_character_set_name
465462

466463
#define arginfo_class_mysqli_get_client_info arginfo_class_mysqli_character_set_name
467464

@@ -544,11 +541,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_select_db, 0, 0, 1)
544541
ZEND_ARG_TYPE_INFO(0, database, IS_STRING, 0)
545542
ZEND_END_ARG_INFO()
546543

547-
#if defined(HAVE_MYSQLI_SET_CHARSET)
548544
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_set_charset, 0, 0, 1)
549545
ZEND_ARG_TYPE_INFO(0, charset, IS_STRING, 0)
550546
ZEND_END_ARG_INFO()
551-
#endif
552547

553548
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_options, 0, 0, 2)
554549
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
@@ -796,9 +791,6 @@ ZEND_FUNCTION(mysqli_use_result);
796791
ZEND_FUNCTION(mysqli_warning_count);
797792
ZEND_FUNCTION(mysqli_refresh);
798793
ZEND_FUNCTION(mysqli_link_construct);
799-
#if defined(HAVE_MYSQLI_GET_CHARSET)
800-
ZEND_FUNCTION(mysqli_get_charset);
801-
#endif
802794
#if defined(MYSQLI_USE_MYSQLND)
803795
ZEND_FUNCTION(mysqli_get_connection_stats);
804796
#endif
@@ -809,9 +801,6 @@ ZEND_FUNCTION(mysqli_poll);
809801
#if defined(MYSQLI_USE_MYSQLND)
810802
ZEND_FUNCTION(mysqli_reap_async_query);
811803
#endif
812-
#if defined(HAVE_MYSQLI_SET_CHARSET)
813-
ZEND_FUNCTION(mysqli_set_charset);
814-
#endif
815804
ZEND_FUNCTION(mysqli_result_construct);
816805
#if defined(MYSQLI_USE_MYSQLND)
817806
ZEND_FUNCTION(mysqli_fetch_all);
@@ -955,9 +944,7 @@ static const zend_function_entry class_mysqli_methods[] = {
955944
ZEND_ME_MAPPING(connect, mysqli_connect, arginfo_class_mysqli_connect, ZEND_ACC_PUBLIC)
956945
ZEND_ME_MAPPING(dump_debug_info, mysqli_dump_debug_info, arginfo_class_mysqli_dump_debug_info, ZEND_ACC_PUBLIC)
957946
ZEND_ME_MAPPING(debug, mysqli_debug, arginfo_class_mysqli_debug, ZEND_ACC_PUBLIC)
958-
#if defined(HAVE_MYSQLI_GET_CHARSET)
959947
ZEND_ME_MAPPING(get_charset, mysqli_get_charset, arginfo_class_mysqli_get_charset, ZEND_ACC_PUBLIC)
960-
#endif
961948
ZEND_ME_MAPPING(get_client_info, mysqli_get_client_info, arginfo_class_mysqli_get_client_info, ZEND_ACC_PUBLIC)
962949
#if defined(MYSQLI_USE_MYSQLND)
963950
ZEND_ME_MAPPING(get_connection_stats, mysqli_get_connection_stats, arginfo_class_mysqli_get_connection_stats, ZEND_ACC_PUBLIC)
@@ -986,9 +973,7 @@ static const zend_function_entry class_mysqli_methods[] = {
986973
ZEND_ME_MAPPING(rollback, mysqli_rollback, arginfo_class_mysqli_rollback, ZEND_ACC_PUBLIC)
987974
ZEND_ME_MAPPING(savepoint, mysqli_savepoint, arginfo_class_mysqli_savepoint, ZEND_ACC_PUBLIC)
988975
ZEND_ME_MAPPING(select_db, mysqli_select_db, arginfo_class_mysqli_select_db, ZEND_ACC_PUBLIC)
989-
#if defined(HAVE_MYSQLI_SET_CHARSET)
990976
ZEND_ME_MAPPING(set_charset, mysqli_set_charset, arginfo_class_mysqli_set_charset, ZEND_ACC_PUBLIC)
991-
#endif
992977
ZEND_ME_MAPPING(options, mysqli_options, arginfo_class_mysqli_options, ZEND_ACC_PUBLIC)
993978
ZEND_ME_MAPPING(set_opt, mysqli_options, arginfo_class_mysqli_set_opt, ZEND_ACC_PUBLIC)
994979
ZEND_ME_MAPPING(ssl_set, mysqli_ssl_set, arginfo_class_mysqli_ssl_set, ZEND_ACC_PUBLIC)

ext/mysqli/mysqli_nonapi.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,6 @@ PHP_FUNCTION(mysqli_stmt_get_warnings)
10351035
}
10361036
/* }}} */
10371037

1038-
#ifdef HAVE_MYSQLI_SET_CHARSET
10391038
/* {{{ proto bool mysqli_set_charset(object link, string csname)
10401039
sets client character set */
10411040
PHP_FUNCTION(mysqli_set_charset)
@@ -1056,9 +1055,7 @@ PHP_FUNCTION(mysqli_set_charset)
10561055
RETURN_TRUE;
10571056
}
10581057
/* }}} */
1059-
#endif
10601058

1061-
#ifdef HAVE_MYSQLI_GET_CHARSET
10621059
/* {{{ proto object mysqli_get_charset(object link) U
10631060
returns a character set object */
10641061
PHP_FUNCTION(mysqli_get_charset)
@@ -1115,7 +1112,6 @@ PHP_FUNCTION(mysqli_get_charset)
11151112
add_property_string(return_value, "comment", (comment) ? (char *)comment : "");
11161113
}
11171114
/* }}} */
1118-
#endif
11191115

11201116
#if !defined(MYSQLI_USE_MYSQLND)
11211117
extern char * mysqli_escape_string_for_tx_name_in_comment(const char * const name);

ext/mysqli/mysqli_priv.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,6 @@
2424
#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
2525
#endif
2626

27-
/* character set support */
28-
#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009
29-
#define HAVE_MYSQLI_GET_CHARSET
30-
#endif
31-
32-
#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50005
33-
#define HAVE_MYSQLI_SET_CHARSET
34-
#endif
35-
36-
3727
extern const zend_function_entry mysqli_functions[];
3828
extern const zend_function_entry mysqli_link_methods[];
3929
extern const zend_function_entry mysqli_stmt_methods[];

ext/pdo_mysql/mysql_driver.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -787,12 +787,10 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
787787
#endif
788788
}
789789

790-
#ifdef PDO_MYSQL_HAS_CHARSET
791790
if (vars[0].optval && mysql_options(H->server, MYSQL_SET_CHARSET_NAME, vars[0].optval)) {
792791
pdo_mysql_error(dbh);
793792
goto cleanup;
794793
}
795-
#endif
796794

797795
dbname = vars[1].optval;
798796
host = vars[2].optval;

ext/pdo_mysql/php_pdo_mysql_int.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@
2828
# define PDO_MYSQL_PARAM_BIND MYSQL_BIND
2929
#endif
3030

31-
#if (MYSQL_VERSION_ID >= 40113 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50007 || defined(MYSQL_USE_MYSQLND)
32-
# define PDO_MYSQL_HAS_CHARSET
33-
#endif
34-
3531
#if defined(PDO_USE_MYSQLND) && PHP_DEBUG && !defined(PHP_WIN32)
3632
#define PDO_DBG_ENABLED 1
3733

0 commit comments

Comments
 (0)