Skip to content

Commit a9e1d85

Browse files
committed
Remove MYSQLI_USE_MYSQLND constant and all the code with it
1 parent 5b93fbc commit a9e1d85

12 files changed

+31
-1359
lines changed

ext/mysqli/config.m4

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ if test "$PHP_MYSQLI" != "no"; then
6969

7070
if test "$PHP_MYSQLI" = "yes" || test "$PHP_MYSQLI" = "mysqlnd"; then
7171
PHP_ADD_EXTENSION_DEP(mysqli, mysqlnd)
72-
AC_DEFINE([MYSQLI_USE_MYSQLND], 1, [Whether mysqlnd is enabled])
7372
PHP_INSTALL_HEADERS([ext/mysqli/mysqli_mysqlnd.h])
7473
fi
7574
fi

ext/mysqli/config.w32

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ if (PHP_MYSQLI != "no") {
2121

2222
if (PHP_MYSQLI != "no") {
2323
EXTENSION("mysqli", mysqli_source, PHP_MYSQLI_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
24-
AC_DEFINE('MYSQLI_USE_MYSQLND', 1, 'Using MySQL native driver');
2524
ADD_EXTENSION_DEP('mysqli', 'mysqlnd', true);
2625
PHP_INSTALL_HEADERS("ext/mysqli", "php_mysqli_structs.h");
2726
}

ext/mysqli/mysqli.c

Lines changed: 0 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -109,47 +109,6 @@ int php_le_pmysqli(void)
109109
return le_pmysqli;
110110
}
111111

112-
#ifndef MYSQLI_USE_MYSQLND
113-
/* {{{ php_free_stmt_bind_buffer */
114-
void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type)
115-
{
116-
unsigned int i;
117-
118-
if (!bbuf.var_cnt) {
119-
return;
120-
}
121-
122-
for (i=0; i < bbuf.var_cnt; i++) {
123-
124-
/* free temporary bind buffer */
125-
if (type == FETCH_RESULT && bbuf.buf[i].val) {
126-
efree(bbuf.buf[i].val);
127-
}
128-
129-
zval_ptr_dtor(&bbuf.vars[i]);
130-
}
131-
132-
if (bbuf.vars) {
133-
efree(bbuf.vars);
134-
}
135-
136-
/*
137-
Don't free bbuf.is_null for FETCH_RESULT since we have allocated
138-
is_null and buf in one block so we free only buf, which is the beginning
139-
of the block. When FETCH_SIMPLE then buf wasn't allocated together with
140-
buf and we have to free it.
141-
*/
142-
if (type == FETCH_RESULT) {
143-
efree(bbuf.buf);
144-
} else if (type == FETCH_SIMPLE){
145-
efree(bbuf.is_null);
146-
}
147-
148-
bbuf.var_cnt = 0;
149-
}
150-
/* }}} */
151-
#endif
152-
153112
/* {{{ php_clear_stmt_bind */
154113
void php_clear_stmt_bind(MY_STMT *stmt)
155114
{
@@ -164,16 +123,6 @@ void php_clear_stmt_bind(MY_STMT *stmt)
164123
mysqlnd keeps track of the binding and has freed its
165124
structures in stmt_close() above
166125
*/
167-
#ifndef MYSQLI_USE_MYSQLND
168-
/* Clean param bind */
169-
php_free_stmt_bind_buffer(stmt->param, FETCH_SIMPLE);
170-
/* Clean output bind */
171-
php_free_stmt_bind_buffer(stmt->result, FETCH_RESULT);
172-
173-
if (!Z_ISUNDEF(stmt->link_handle)) {
174-
zval_ptr_dtor(&stmt->link_handle);
175-
}
176-
#endif
177126
if (stmt->query) {
178127
efree(stmt->query);
179128
}
@@ -452,7 +401,6 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *class_type
452401
}
453402
/* }}} */
454403

455-
#ifdef MYSQLI_USE_MYSQLND
456404
#include "ext/mysqlnd/mysqlnd_reverse_api.h"
457405
static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv)
458406
{
@@ -475,7 +423,6 @@ static const MYSQLND_REVERSE_API mysqli_reverse_api = {
475423
&mysqli_module_entry,
476424
mysqli_convert_zv_to_mysqlnd
477425
};
478-
#endif
479426

480427
/* {{{ PHP_INI_BEGIN */
481428
PHP_INI_BEGIN()
@@ -527,11 +474,6 @@ static PHP_GINIT_FUNCTION(mysqli)
527474
PHP_MINIT_FUNCTION(mysqli)
528475
{
529476
REGISTER_INI_ENTRIES();
530-
#ifndef MYSQLI_USE_MYSQLND
531-
if (mysql_server_init(0, NULL, NULL)) {
532-
return FAILURE;
533-
}
534-
#endif
535477

536478
memcpy(&mysqli_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
537479
mysqli_object_handlers.offset = XtOffsetOf(mysqli_object, zo);
@@ -596,25 +538,15 @@ PHP_MINIT_FUNCTION(mysqli)
596538
REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT);
597539
REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT);
598540
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT);
599-
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
600541
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT);
601-
#endif
602542
REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT);
603543
REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_CS | CONST_PERSISTENT);
604-
#ifdef MYSQLI_USE_MYSQLND
605544
REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT);
606545
REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT);
607-
#endif
608-
#ifdef MYSQLI_USE_MYSQLND
609546
REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT);
610-
#endif
611-
#if MYSQL_VERSION_ID < 80000 || MYSQL_VERSION_ID >= 100000 || defined(MYSQLI_USE_MYSQLND)
612547
REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
613-
#endif
614548

615-
#if MYSQL_VERSION_ID > 50605 || defined(MYSQLI_USE_MYSQLND)
616549
REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", MYSQL_SERVER_PUBLIC_KEY, CONST_CS | CONST_PERSISTENT);
617-
#endif
618550

619551
/* mysqli_real_connect flags */
620552
REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | CONST_PERSISTENT);
@@ -625,22 +557,16 @@ PHP_MINIT_FUNCTION(mysqli)
625557
REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT);
626558
#ifdef CLIENT_SSL_VERIFY_SERVER_CERT
627559
REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
628-
#ifdef MYSQLI_USE_MYSQLND
629560
REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
630561
#endif
631-
#endif
632-
#if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND)
633562
REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT);
634563
REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT);
635-
#endif
636564

637565
/* for mysqli_query */
638566
REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", MYSQLI_STORE_RESULT, CONST_CS | CONST_PERSISTENT);
639567
REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", MYSQLI_USE_RESULT, CONST_CS | CONST_PERSISTENT);
640-
#if defined (MYSQLI_USE_MYSQLND)
641568
REGISTER_LONG_CONSTANT("MYSQLI_ASYNC", MYSQLI_ASYNC, CONST_CS | CONST_PERSISTENT);
642569
REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT_COPY_DATA", MYSQLI_STORE_RESULT_COPY_DATA, CONST_CS | CONST_PERSISTENT);
643-
#endif
644570

645571
/* for mysqli_fetch_assoc */
646572
REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_CS | CONST_PERSISTENT);
@@ -676,9 +602,7 @@ PHP_MINIT_FUNCTION(mysqli)
676602
REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_CS | CONST_PERSISTENT);
677603
REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_CS | CONST_PERSISTENT);
678604

679-
#if MYSQL_VERSION_ID < 60000 || MYSQL_VERSION_ID > 60003 || defined(MYSQLI_USE_MYSQLND)
680605
REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT);
681-
#endif
682606

683607
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT);
684608
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT);
@@ -729,15 +653,7 @@ PHP_MINIT_FUNCTION(mysqli)
729653
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS | CONST_PERSISTENT);
730654

731655
/* We use non-nested macros with expansion, as VC has problems */
732-
#ifdef MYSQLI_USE_MYSQLND
733656
REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_CS | CONST_PERSISTENT);
734-
#else
735-
#ifdef DBUG_ON
736-
REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", 1, CONST_CS | CONST_PERSISTENT);
737-
#else
738-
REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", 0, CONST_CS | CONST_PERSISTENT);
739-
#endif
740-
#endif
741657

742658
REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED);
743659
REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED);
@@ -778,10 +694,7 @@ PHP_MINIT_FUNCTION(mysqli)
778694
REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 0, CONST_CS | CONST_PERSISTENT);
779695
#endif
780696

781-
782-
#ifdef MYSQLI_USE_MYSQLND
783697
mysqlnd_reverse_api_register_api(&mysqli_reverse_api);
784-
#endif
785698

786699
return SUCCESS;
787700
}
@@ -790,21 +703,6 @@ PHP_MINIT_FUNCTION(mysqli)
790703
/* {{{ PHP_MSHUTDOWN_FUNCTION */
791704
PHP_MSHUTDOWN_FUNCTION(mysqli)
792705
{
793-
#ifndef MYSQLI_USE_MYSQLND
794-
#ifdef PHP_WIN32
795-
zend_ulong client_ver = mysql_get_client_version();
796-
/*
797-
Can't call mysql_server_end() multiple times prior to 5.0.46 on Windows.
798-
PHP bug#41350 MySQL bug#25621
799-
*/
800-
if ((client_ver >= 50046 && client_ver < 50100) || client_ver > 50122) {
801-
mysql_server_end();
802-
}
803-
#else
804-
mysql_server_end();
805-
#endif
806-
#endif
807-
808706
zend_hash_destroy(&mysqli_driver_properties);
809707
zend_hash_destroy(&mysqli_result_properties);
810708
zend_hash_destroy(&mysqli_stmt_properties);
@@ -820,11 +718,6 @@ PHP_MSHUTDOWN_FUNCTION(mysqli)
820718
/* {{{ PHP_RINIT_FUNCTION */
821719
PHP_RINIT_FUNCTION(mysqli)
822720
{
823-
#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS)
824-
if (mysql_thread_init()) {
825-
return FAILURE;
826-
}
827-
#endif
828721
MyG(error_msg) = NULL;
829722
MyG(error_no) = 0;
830723
MyG(report_mode) = MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT;
@@ -839,9 +732,6 @@ PHP_RSHUTDOWN_FUNCTION(mysqli)
839732
{
840733
/* check persistent connections, move used to free */
841734

842-
#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS)
843-
mysql_thread_end();
844-
#endif
845735
if (MyG(error_msg)) {
846736
efree(MyG(error_msg));
847737
}
@@ -865,10 +755,6 @@ PHP_MINFO_FUNCTION(mysqli)
865755
php_info_print_table_row(2, "Inactive Persistent Links", buf);
866756
snprintf(buf, sizeof(buf), ZEND_LONG_FMT, MyG(num_links));
867757
php_info_print_table_row(2, "Active Links", buf);
868-
#ifndef MYSQLI_USE_MYSQLND
869-
php_info_print_table_row(2, "Client API header version", MYSQL_SERVER_VERSION);
870-
php_info_print_table_row(2, "MYSQLI_SOCKET", MYSQL_UNIX_ADDR);
871-
#endif
872758
php_info_print_table_end();
873759

874760
DISPLAY_INI_ENTRIES();
@@ -879,9 +765,7 @@ PHP_MINFO_FUNCTION(mysqli)
879765
/* Dependencies */
880766
static const zend_module_dep mysqli_deps[] = {
881767
ZEND_MOD_REQUIRED("spl")
882-
#ifdef MYSQLI_USE_MYSQLND
883768
ZEND_MOD_REQUIRED("mysqlnd")
884-
#endif
885769
ZEND_MOD_END
886770
};
887771

@@ -934,10 +818,6 @@ PHP_METHOD(mysqli_stmt, __construct)
934818
RETURN_FALSE;
935819
}
936820

937-
#ifndef MYSQLI_USE_MYSQLND
938-
ZVAL_COPY(&stmt->link_handle, mysql_link);
939-
#endif
940-
941821
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
942822
mysqli_resource->ptr = (void *)stmt;
943823
mysqli_resource->status = MYSQLI_STATUS_INITIALIZED;
@@ -1006,71 +886,6 @@ PHP_METHOD(mysqli_result, getIterator)
1006886
/* {{{ php_mysqli_fetch_into_hash_aux */
1007887
void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * result, zend_long fetchtype)
1008888
{
1009-
#ifndef MYSQLI_USE_MYSQLND
1010-
MYSQL_ROW row;
1011-
unsigned int i, num_fields;
1012-
MYSQL_FIELD *fields;
1013-
unsigned long *field_len;
1014-
1015-
if (!(row = mysql_fetch_row(result))) {
1016-
RETURN_NULL();
1017-
}
1018-
1019-
if (fetchtype & MYSQLI_ASSOC) {
1020-
fields = mysql_fetch_fields(result);
1021-
}
1022-
1023-
array_init(return_value);
1024-
field_len = mysql_fetch_lengths(result);
1025-
num_fields = mysql_num_fields(result);
1026-
1027-
for (i = 0; i < num_fields; i++) {
1028-
if (row[i]) {
1029-
zval res;
1030-
1031-
if (mysql_fetch_field_direct(result, i)->type == MYSQL_TYPE_BIT) {
1032-
my_ulonglong llval;
1033-
char tmp[22];
1034-
switch (field_len[i]) {
1035-
case 8:llval = (my_ulonglong) bit_uint8korr(row[i]);break;
1036-
case 7:llval = (my_ulonglong) bit_uint7korr(row[i]);break;
1037-
case 6:llval = (my_ulonglong) bit_uint6korr(row[i]);break;
1038-
case 5:llval = (my_ulonglong) bit_uint5korr(row[i]);break;
1039-
case 4:llval = (my_ulonglong) bit_uint4korr(row[i]);break;
1040-
case 3:llval = (my_ulonglong) bit_uint3korr(row[i]);break;
1041-
case 2:llval = (my_ulonglong) bit_uint2korr(row[i]);break;
1042-
case 1:llval = (my_ulonglong) uint1korr(row[i]);break;
1043-
EMPTY_SWITCH_DEFAULT_CASE()
1044-
}
1045-
/* even though lval is declared as unsigned, the value
1046-
* may be negative. Therefore we cannot use MYSQLI_LLU_SPEC and must
1047-
* use MYSQLI_LL_SPEC.
1048-
*/
1049-
snprintf(tmp, sizeof(tmp), (mysql_fetch_field_direct(result, i)->flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval);
1050-
ZVAL_STRING(&res, tmp);
1051-
} else {
1052-
ZVAL_STRINGL(&res, row[i], field_len[i]);
1053-
}
1054-
1055-
if (fetchtype & MYSQLI_NUM) {
1056-
add_index_zval(return_value, i, &res);
1057-
}
1058-
if (fetchtype & MYSQLI_ASSOC) {
1059-
if (fetchtype & MYSQLI_NUM && Z_REFCOUNTED(res)) {
1060-
Z_ADDREF(res);
1061-
}
1062-
add_assoc_zval(return_value, fields[i].name, &res);
1063-
}
1064-
} else {
1065-
if (fetchtype & MYSQLI_NUM) {
1066-
add_index_null(return_value, i);
1067-
}
1068-
if (fetchtype & MYSQLI_ASSOC) {
1069-
add_assoc_null(return_value, fields[i].name);
1070-
}
1071-
}
1072-
}
1073-
#else
1074889
mysqlnd_fetch_into(result, ((fetchtype & MYSQLI_NUM)? MYSQLND_FETCH_NUM:0) | ((fetchtype & MYSQLI_ASSOC)? MYSQLND_FETCH_ASSOC:0), return_value);
1075890
/* TODO: We don't have access to the connection object at this point, so we use low-level
1076891
* mysqlnd APIs to access the error information. We should try to pass through the connection
@@ -1083,7 +898,6 @@ void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * result, zend
1083898
conn->m->get_sqlstate(conn), error_no, conn->m->get_error_str(conn));
1084899
}
1085900
}
1086-
#endif
1087901
}
1088902
/* }}} */
1089903

0 commit comments

Comments
 (0)