From 132d49942460678908d47dc46b13a67b5e331677 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Thu, 29 Jul 2021 13:11:44 +0100 Subject: [PATCH] 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. --- ext/mysqlnd/mysqlnd_statistics.c | 36 ------------------------------- ext/mysqlnd/mysqlnd_statistics.h | 37 ++++++++------------------------ ext/mysqlnd/mysqlnd_structs.h | 4 ---- 3 files changed, 9 insertions(+), 68 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index be80dae96d1..1f76f9a7b04 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -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 */ diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h index 4fad70bb711..02cd64450cb 100644 --- a/ext/mysqlnd/mysqlnd_statistics.h +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -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 */ diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index b9bf3cfeb0f..567ff0860b7 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -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