Drop mysqlnd statistics triggers

This functionality is not used productively in PHP and it's not used in
any of the extensions to my knowledge. Since it looks like this functionality
isn't required by anyone, let's clean up mysqlnd and drop it.
This commit is contained in:
Kamil Tekiela 2021-07-29 13:11:44 +01:00
parent fb85731c67
commit 132d499424
3 changed files with 9 additions and 68 deletions

View file

@ -216,8 +216,6 @@ mysqlnd_stats_init(MYSQLND_STATS ** stats, const size_t statistic_count, const b
{
*stats = pecalloc(1, sizeof(MYSQLND_STATS), persistent);
(*stats)->values = pecalloc(statistic_count, sizeof(uint64_t), persistent);
(*stats)->triggers = pecalloc(statistic_count, sizeof(mysqlnd_stat_trigger), persistent);
(*stats)->in_trigger = FALSE;
(*stats)->count = statistic_count;
#ifdef ZTS
(*stats)->LOCK_access = tsrm_mutex_alloc();
@ -233,7 +231,6 @@ mysqlnd_stats_end(MYSQLND_STATS * stats, const bool persistent)
#ifdef ZTS
tsrm_mutex_free(stats->LOCK_access);
#endif
pefree(stats->triggers, persistent);
pefree(stats->values, persistent);
/* mnd_free will reference LOCK_access and crash...*/
pefree(stats, persistent);
@ -241,39 +238,6 @@ mysqlnd_stats_end(MYSQLND_STATS * stats, const bool persistent)
/* }}} */
/* {{{ mysqlnd_stats_set_trigger */
PHPAPI mysqlnd_stat_trigger
mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats statistic, mysqlnd_stat_trigger trigger)
{
mysqlnd_stat_trigger ret = NULL;
DBG_ENTER("mysqlnd_stats_set_trigger");
if (stats) {
MYSQLND_STATS_LOCK(stats);
ret = stats->triggers[statistic];
stats->triggers[statistic] = trigger;
MYSQLND_STATS_UNLOCK(stats);
}
DBG_RETURN(ret);
}
/* }}} */
/* {{{ mysqlnd_stats_set_handler */
PHPAPI mysqlnd_stat_trigger
mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats)
{
mysqlnd_stat_trigger ret = NULL;
DBG_ENTER("mysqlnd_stats_reset_trigger");
if (stats) {
MYSQLND_STATS_LOCK(stats);
memset(stats->triggers, 0, stats->count * sizeof(mysqlnd_stat_trigger));
MYSQLND_STATS_UNLOCK(stats);
}
DBG_RETURN(ret);
}
/* }}} */
/************ MYSQLND specific code **********/
/* {{{ _mysqlnd_get_client_stats */

View file

@ -26,26 +26,10 @@
#define MYSQLND_STATS_UNLOCK(stats)
#endif
#ifndef MYSQLND_CORE_STATISTICS_TRIGGERS_DISABLED
#define MYSQLND_STAT_CALL_TRIGGER(s_array, statistic, val) \
if ((s_array)->triggers[(statistic)] && (s_array)->in_trigger == FALSE) { \
(s_array)->in_trigger = TRUE; \
MYSQLND_STATS_UNLOCK((s_array)); \
\
(s_array)->triggers[(statistic)]((s_array), (statistic), (val)); \
\
MYSQLND_STATS_LOCK((s_array)); \
(s_array)->in_trigger = FALSE; \
}
#else
#define MYSQLND_STAT_CALL_TRIGGER(s_array, statistic, val)
#endif /* MYSQLND_CORE_STATISTICS_TRIGGERS_DISABLED */
#define MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(stats, statistic, value) \
#define MYSQLND_STATS_UPDATE_VALUE(stats, statistic, value) \
{ \
MYSQLND_STATS_LOCK(stats); \
(stats)->values[(statistic)] += (value); \
MYSQLND_STAT_CALL_TRIGGER((stats), (statistic), (value)); \
MYSQLND_STATS_UNLOCK(_p_s); \
}
@ -54,7 +38,7 @@
enum_mysqlnd_collected_stats _s = (statistic);\
MYSQLND_STATS * _p_s = (MYSQLND_STATS *) (stats); \
if ((enabler) && _p_s && _s != _p_s->count) { \
MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s, -1); \
MYSQLND_STATS_UPDATE_VALUE(_p_s, _s, -1); \
}\
}
@ -63,7 +47,7 @@
enum_mysqlnd_collected_stats _s = (statistic);\
MYSQLND_STATS * _p_s = (MYSQLND_STATS *) (stats); \
if ((enabler) && _p_s && _s != _p_s->count) { \
MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s, 1); \
MYSQLND_STATS_UPDATE_VALUE(_p_s, _s, 1); \
}\
}
@ -73,7 +57,7 @@
MYSQLND_STATS * _p_s = (MYSQLND_STATS *) (stats); \
if ((enabler) && _p_s && _s != _p_s->count) { \
uint64_t v = (uint64_t) (value); \
MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s, v); \
MYSQLND_STATS_UPDATE_VALUE(_p_s, _s, v); \
}\
}
@ -85,8 +69,8 @@
uint64_t v2 = (uint64_t) (value2); \
enum_mysqlnd_collected_stats _s1 = (statistic1);\
enum_mysqlnd_collected_stats _s2 = (statistic2);\
if (_s1 != _p_s->count) MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s1, v1); \
if (_s2 != _p_s->count) MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s2, v2); \
if (_s1 != _p_s->count) MYSQLND_STATS_UPDATE_VALUE(_p_s, _s1, v1); \
if (_s2 != _p_s->count) MYSQLND_STATS_UPDATE_VALUE(_p_s, _s2, v2); \
}\
}
@ -100,9 +84,9 @@
enum_mysqlnd_collected_stats _s1 = (statistic1);\
enum_mysqlnd_collected_stats _s2 = (statistic2);\
enum_mysqlnd_collected_stats _s3 = (statistic3);\
if (_s1 != _p_s->count) MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s1, v1); \
if (_s2 != _p_s->count) MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s2, v2); \
if (_s3 != _p_s->count) MYSQLND_UPDATE_VALUE_AND_CALL_TRIGGER(_p_s, _s3, v3); \
if (_s1 != _p_s->count) MYSQLND_STATS_UPDATE_VALUE(_p_s, _s1, v1); \
if (_s2 != _p_s->count) MYSQLND_STATS_UPDATE_VALUE(_p_s, _s2, v2); \
if (_s3 != _p_s->count) MYSQLND_STATS_UPDATE_VALUE(_p_s, _s3, v3); \
}\
}
@ -113,7 +97,4 @@ PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats, const bool persistent);
PHPAPI void mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, const MYSQLND_STRING * names, zval *return_value ZEND_FILE_LINE_DC);
PHPAPI mysqlnd_stat_trigger mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger);
PHPAPI mysqlnd_stat_trigger mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats);
#endif /* MYSQLND_STATISTICS_H */

View file

@ -294,14 +294,10 @@ typedef enum_func_status (*mysqlnd_fetch_row_func)(MYSQLND_RES *result,
typedef struct st_mysqlnd_stats MYSQLND_STATS;
typedef void (*mysqlnd_stat_trigger)(MYSQLND_STATS * stats, enum_mysqlnd_collected_stats stat, int64_t change);
struct st_mysqlnd_stats
{
uint64_t *values;
mysqlnd_stat_trigger *triggers;
size_t count;
bool in_trigger;
#ifdef ZTS
MUTEX_T LOCK_access;
#endif