Skip to content

Commit 6f598e6

Browse files
committed
Remove the zval caching from mysqlnd. It was disabled versions ago
due to problems on windows, which were not debugged. Better have code that is disabled not in the core.
1 parent d8a8d82 commit 6f598e6

18 files changed

+75
-963
lines changed

ext/mysql/php_mysql.c

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ typedef struct _php_mysql_conn {
126126
} php_mysql_conn;
127127

128128
#ifdef MYSQL_USE_MYSQLND
129-
static MYSQLND_ZVAL_PCACHE *mysql_mysqlnd_zval_cache;
130129
static MYSQLND_QCACHE *mysql_mysqlnd_qcache;
131130
#endif
132131

@@ -411,9 +410,6 @@ PHP_INI_BEGIN()
411410
STD_PHP_INI_ENTRY("mysql.connect_timeout", "60", PHP_INI_ALL, OnUpdateLong, connect_timeout, zend_mysql_globals, mysql_globals)
412411
STD_PHP_INI_BOOLEAN("mysql.trace_mode", "0", PHP_INI_ALL, OnUpdateLong, trace_mode, zend_mysql_globals, mysql_globals)
413412
STD_PHP_INI_BOOLEAN("mysql.allow_local_infile", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysql_globals, mysql_globals)
414-
#ifdef MYSQL_USE_MYSQLND
415-
STD_PHP_INI_ENTRY("mysql.cache_size", "2000", PHP_INI_SYSTEM, OnUpdateLong, cache_size, zend_mysql_globals, mysql_globals)
416-
#endif
417413
PHP_INI_END()
418414
/* }}} */
419415

@@ -432,10 +428,6 @@ static PHP_GINIT_FUNCTION(mysql)
432428
mysql_globals->trace_mode = 0;
433429
mysql_globals->allow_local_infile = 1;
434430
mysql_globals->result_allocated = 0;
435-
#ifdef MYSQL_USE_MYSQLND
436-
mysql_globals->cache_size = 0;
437-
mysql_globals->mysqlnd_thd_zval_cache = NULL;
438-
#endif
439431
}
440432
/* }}} */
441433

@@ -466,7 +458,6 @@ ZEND_MODULE_STARTUP_D(mysql)
466458
}
467459
#endif
468460
#else
469-
mysql_mysqlnd_zval_cache = mysqlnd_palloc_init_cache(MySG(cache_size));
470461
mysql_mysqlnd_qcache = mysqlnd_qcache_init_cache();
471462
#endif
472463

@@ -494,7 +485,6 @@ PHP_MSHUTDOWN_FUNCTION(mysql)
494485
#endif
495486
#endif
496487
#else
497-
mysqlnd_palloc_free_cache(mysql_mysqlnd_zval_cache);
498488
mysqlnd_qcache_free_cache_reference(&mysql_mysqlnd_qcache);
499489
#endif
500490

@@ -519,10 +509,6 @@ PHP_RINIT_FUNCTION(mysql)
519509
MySG(connect_errno) =0;
520510
MySG(result_allocated) = 0;
521511

522-
#ifdef MYSQL_USE_MYSQLND
523-
MySG(mysqlnd_thd_zval_cache) = mysqlnd_palloc_rinit(mysql_mysqlnd_zval_cache);
524-
#endif
525-
526512
return SUCCESS;
527513
}
528514
/* }}} */
@@ -559,7 +545,6 @@ PHP_RSHUTDOWN_FUNCTION(mysql)
559545

560546
#ifdef MYSQL_USE_MYSQLND
561547
zend_hash_apply(&EG(persistent_list), (apply_func_t) php_mysql_persistent_helper TSRMLS_CC);
562-
mysqlnd_palloc_rshutdown(MySG(mysqlnd_thd_zval_cache));
563548
#endif
564549

565550
return SUCCESS;
@@ -585,20 +570,6 @@ PHP_MINFO_FUNCTION(mysql)
585570
php_info_print_table_row(2, "MYSQL_INCLUDE", PHP_MYSQL_INCLUDE);
586571
php_info_print_table_row(2, "MYSQL_LIBS", PHP_MYSQL_LIBS);
587572
#endif
588-
#if defined(MYSQL_USE_MYSQLND)
589-
{
590-
zval values;
591-
592-
php_info_print_table_header(2, "Persistent cache", mysql_mysqlnd_zval_cache? "enabled":"disabled");
593-
594-
if (mysql_mysqlnd_zval_cache) {
595-
/* Now report cache status */
596-
mysqlnd_palloc_stats(mysql_mysqlnd_zval_cache, &values);
597-
mysqlnd_minfo_print_hash(&values);
598-
zval_dtor(&values);
599-
}
600-
}
601-
#endif
602573

603574
php_info_print_table_end();
604575

@@ -776,8 +747,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
776747
#ifndef MYSQL_USE_MYSQLND
777748
if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)
778749
#else
779-
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0,
780-
port, socket, client_flags, MySG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL)
750+
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL)
781751
#endif
782752
{
783753
/* Populate connect error globals so that the error functions can read them */
@@ -825,8 +795,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
825795
#ifndef MYSQL_USE_MYSQLND
826796
if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)
827797
#else
828-
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0,
829-
port, socket, client_flags, MySG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL)
798+
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL)
830799
#endif
831800
{
832801
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Link to server lost, unable to reconnect");
@@ -838,7 +807,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
838807
}
839808
} else {
840809
#ifdef MYSQL_USE_MYSQLND
841-
mysqlnd_restart_psession(mysql->conn, MySG(mysqlnd_thd_zval_cache));
810+
mysqlnd_restart_psession(mysql->conn);
842811
#endif
843812
}
844813
}
@@ -897,8 +866,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
897866
#ifndef MYSQL_USE_MYSQLND
898867
if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)
899868
#else
900-
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0,
901-
port, socket, client_flags, MySG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL)
869+
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL)
902870
#endif
903871
{
904872
/* Populate connect error globals so that the error functions can read them */

ext/mysql/php_mysql_structs.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ ZEND_BEGIN_MODULE_GLOBALS(mysql)
125125
long trace_mode;
126126
long allow_local_infile;
127127
#ifdef MYSQL_USE_MYSQLND
128-
MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
129128
MYSQLND_QCACHE *mysqlnd_qcache;
130-
long cache_size;
131129
#endif
132130
ZEND_END_MODULE_GLOBALS(mysql)
133131

ext/mysqli/mysqli.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ zend_class_entry *mysqli_warning_class_entry;
7474
zend_class_entry *mysqli_exception_class_entry;
7575

7676
#ifdef MYSQLI_USE_MYSQLND
77-
MYSQLND_ZVAL_PCACHE *mysqli_mysqlnd_zval_cache;
7877
MYSQLND_QCACHE *mysqli_mysqlnd_qcache;
7978
#endif
8079

@@ -589,9 +588,6 @@ PHP_INI_BEGIN()
589588
#endif
590589
STD_PHP_INI_BOOLEAN("mysqli.reconnect", "0", PHP_INI_SYSTEM, OnUpdateLong, reconnect, zend_mysqli_globals, mysqli_globals)
591590
STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysqli_globals, mysqli_globals)
592-
#ifdef MYSQLI_USE_MYSQLND
593-
STD_PHP_INI_ENTRY("mysqli.cache_size", "2000", PHP_INI_SYSTEM, OnUpdateLong, cache_size, zend_mysqli_globals, mysqli_globals)
594-
#endif
595591
PHP_INI_END()
596592
/* }}} */
597593

@@ -620,10 +616,6 @@ static PHP_GINIT_FUNCTION(mysqli)
620616
#else
621617
mysqli_globals->embedded = 0;
622618
#endif
623-
#ifdef MYSQLI_USE_MYSQLND
624-
mysqli_globals->cache_size = 0;
625-
mysqli_globals->mysqlnd_thd_zval_cache = NULL;
626-
#endif
627619
}
628620
/* }}} */
629621

@@ -642,7 +634,6 @@ PHP_MINIT_FUNCTION(mysqli)
642634
}
643635
#endif
644636
#else
645-
mysqli_mysqlnd_zval_cache = mysqlnd_palloc_init_cache(MyG(cache_size));
646637
mysqli_mysqlnd_qcache = mysqlnd_qcache_init_cache();
647638
#endif
648639

@@ -882,7 +873,6 @@ PHP_MSHUTDOWN_FUNCTION(mysqli)
882873
#endif
883874
#endif
884875
#else
885-
mysqlnd_palloc_free_cache(mysqli_mysqlnd_zval_cache);
886876
mysqlnd_qcache_free_cache_reference(&mysqli_mysqlnd_qcache);
887877
#endif
888878

@@ -909,9 +899,6 @@ PHP_RINIT_FUNCTION(mysqli)
909899
#endif
910900
MyG(error_msg) = NULL;
911901
MyG(error_no) = 0;
912-
#ifdef MYSQLI_USE_MYSQLND
913-
MyG(mysqlnd_thd_zval_cache) = mysqlnd_palloc_rinit(mysqli_mysqlnd_zval_cache);
914-
#endif
915902

916903
return SUCCESS;
917904
}
@@ -951,7 +938,6 @@ PHP_RSHUTDOWN_FUNCTION(mysqli)
951938
}
952939
#ifdef MYSQLI_USE_MYSQLND
953940
zend_hash_apply(&EG(persistent_list), (apply_func_t) php_mysqli_persistent_helper_once TSRMLS_CC);
954-
mysqlnd_palloc_rshutdown(MyG(mysqlnd_thd_zval_cache));
955941
#endif
956942
return SUCCESS;
957943
}
@@ -976,19 +962,6 @@ PHP_MINFO_FUNCTION(mysqli)
976962
#if !defined(MYSQLI_USE_MYSQLND)
977963
php_info_print_table_row(2, "Client API header version", MYSQL_SERVER_VERSION);
978964
php_info_print_table_row(2, "MYSQLI_SOCKET", MYSQL_UNIX_ADDR);
979-
#else
980-
{
981-
zval values;
982-
983-
php_info_print_table_header(2, "Persistent cache", mysqli_mysqlnd_zval_cache? "enabled":"disabled");
984-
985-
if (mysqli_mysqlnd_zval_cache) {
986-
/* Now report cache status */
987-
mysqlnd_palloc_stats(mysqli_mysqlnd_zval_cache, &values);
988-
mysqlnd_minfo_print_hash(&values);
989-
zval_dtor(&values);
990-
}
991-
}
992965
#endif
993966
php_info_print_table_end();
994967

ext/mysqli/mysqli_nonapi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
175175
if (!mysql_ping(mysql->mysql)) {
176176
#endif
177177
#ifdef MYSQLI_USE_MYSQLND
178-
mysqlnd_restart_psession(mysql->mysql, MyG(mysqlnd_thd_zval_cache));
178+
mysqlnd_restart_psession(mysql->mysql);
179179
#endif
180180
MyG(num_active_persistent)++;
181181
goto end;
@@ -232,7 +232,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
232232
if (mysql_real_connect(mysql->mysql, hostname, username, passwd, dbname, port, socket, CLIENT_MULTI_RESULTS) == NULL)
233233
#else
234234
if (mysqlnd_connect(mysql->mysql, hostname, username, passwd, passwd_len, dbname, dbname_len,
235-
port, socket, flags, MyG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL)
235+
port, socket, flags TSRMLS_CC) == NULL)
236236
#endif
237237
{
238238
/* Save error messages - for mysqli_connect_error() & mysqli_connect_errno() */
@@ -416,7 +416,7 @@ PHP_FUNCTION(mysqli_get_cache_stats)
416416
if (zend_parse_parameters_none() == FAILURE) {
417417
return;
418418
}
419-
mysqlnd_palloc_stats(mysqli_mysqlnd_zval_cache, return_value);
419+
array_init(return_value);
420420
}
421421
/* }}} */
422422

ext/mysqli/php_mysqli_structs.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ extern zend_property_info mysqli_driver_property_info_entries[];
197197
extern zend_property_info mysqli_warning_property_info_entries[];
198198

199199
#ifdef MYSQLI_USE_MYSQLND
200-
extern MYSQLND_ZVAL_PCACHE *mysqli_mysqlnd_zval_cache;
201200
extern MYSQLND_QCACHE *mysqli_mysqlnd_qcache;
202201
#endif
203202

@@ -367,9 +366,6 @@ ZEND_BEGIN_MODULE_GLOBALS(mysqli)
367366
HashTable *report_ht;
368367
unsigned long multi_query;
369368
unsigned long embedded;
370-
#ifdef MYSQLI_USE_MYSQLND
371-
MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
372-
#endif
373369
ZEND_END_MODULE_GLOBALS(mysqli)
374370

375371

ext/mysqlnd/config.w32

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ if (PHP_MYSQLND != "no") {
1111
"mysqlnd_charset.c " +
1212
"mysqlnd_debug.c " +
1313
"mysqlnd_loaddata.c " +
14-
"mysqlnd_palloc.c " +
1514
"mysqlnd_ps.c " +
1615
"mysqlnd_ps_codec.c " +
1716
"mysqlnd_qcache.c " +

ext/mysqlnd/config9.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ fi
1515
dnl If some extension uses mysqlnd it will get compiled in PHP core
1616
if test "$PHP_MYSQLND_ENABLED" = "yes"; then
1717
mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
18-
mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \
18+
mysqlnd_ps.c mysqlnd_loaddata.c \
1919
mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c\
2020
mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c\
2121
mysqlnd_block_alloc.c php_mysqlnd.c"

ext/mysqlnd/mysqlnd.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,6 @@ MYSQLND_METHOD(mysqlnd_conn, free_contents)(MYSQLND *conn TSRMLS_DC)
211211
mnd_pefree(conn->last_message, pers);
212212
conn->last_message = NULL;
213213
}
214-
if (conn->zval_cache) {
215-
DBG_INF("Freeing zval cache reference");
216-
mysqlnd_palloc_free_thd_cache_reference(&conn->zval_cache);
217-
conn->zval_cache = NULL;
218-
}
219214
if (conn->qcache) {
220215
DBG_INF("Freeing qcache reference");
221216
mysqlnd_qcache_free_cache_reference(&conn->qcache);
@@ -437,7 +432,7 @@ MYSQLND_METHOD(mysqlnd_conn, set_server_option)(MYSQLND * const conn,
437432

438433

439434
/* {{{ _mysqlnd_restart_psession */
440-
PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn, MYSQLND_THD_ZVAL_PCACHE *cache TSRMLS_DC)
435+
PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn TSRMLS_DC)
441436
{
442437
DBG_ENTER("_mysqlnd_restart_psession");
443438
MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_CONNECT_REUSED);
@@ -450,7 +445,6 @@ PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn, MYSQLND_THD_ZVAL_PCACHE *ca
450445
The thd zval cache is always freed on request shutdown, so this has happened already.
451446
Don't touch the old value! Get new reference
452447
*/
453-
conn->zval_cache = mysqlnd_palloc_get_thd_cache_reference(cache);
454448
DBG_VOID_RETURN;
455449
}
456450
/* }}} */
@@ -461,7 +455,6 @@ PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC)
461455
{
462456
DBG_ENTER("_mysqlnd_end_psession");
463457
/* The thd zval cache is always freed on request shutdown, so this has happened already */
464-
mysqlnd_palloc_free_thd_cache_reference(&conn->zval_cache);
465458
DBG_VOID_RETURN;
466459
}
467460
/* }}} */
@@ -475,8 +468,7 @@ MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND *conn,
475468
const char *db, unsigned int db_len,
476469
unsigned int port,
477470
const char *socket,
478-
unsigned int mysql_flags,
479-
MYSQLND_THD_ZVAL_PCACHE *zval_cache
471+
unsigned int mysql_flags
480472
TSRMLS_DC)
481473
{
482474
char *transport = NULL, *errstr = NULL;
@@ -776,8 +768,6 @@ MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND *conn,
776768

777769
SET_EMPTY_ERROR(conn->error_info);
778770

779-
conn->zval_cache = mysqlnd_palloc_get_thd_cache_reference(zval_cache);
780-
781771
mysqlnd_local_infile_default(conn);
782772
{
783773
unsigned int buf_size;
@@ -864,8 +854,7 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
864854
const char *db, unsigned int db_len,
865855
unsigned int port,
866856
const char *socket,
867-
unsigned int mysql_flags,
868-
MYSQLND_THD_ZVAL_PCACHE *zval_cache
857+
unsigned int mysql_flags
869858
TSRMLS_DC)
870859
{
871860
enum_func_status ret;
@@ -879,7 +868,7 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
879868
self_alloced = TRUE;
880869
}
881870

882-
ret = conn->m->connect(conn, host, user, passwd, passwd_len, db, db_len, port, socket, mysql_flags, zval_cache TSRMLS_CC);
871+
ret = conn->m->connect(conn, host, user, passwd, passwd_len, db, db_len, port, socket, mysql_flags TSRMLS_CC);
883872

884873
if (ret == FAIL) {
885874
if (self_alloced) {
@@ -1180,7 +1169,7 @@ MYSQLND_METHOD(mysqlnd_conn, list_fields)(MYSQLND *conn, const char *table, cons
11801169
Prepare for the worst case.
11811170
MyISAM goes to 2500 BIT columns, double it for safety.
11821171
*/
1183-
result = mysqlnd_result_init(5000, mysqlnd_palloc_get_thd_cache_reference(conn->zval_cache) TSRMLS_CC);
1172+
result = mysqlnd_result_init(5000 TSRMLS_CC);
11841173

11851174

11861175
if (FAIL == result->m.read_result_metadata(result, conn TSRMLS_CC)) {

0 commit comments

Comments
 (0)