[Commits] e25114a: Added a new parameter for the function eq_ranges_exceeds_limit()
revision-id: e25114a2270876cb8ad182162add8bc2038333d1 (mariadb-10.3.7-150-ge25114a) parent(s): 65a56d96a799441abea93fbd201c4c808953576d author: Igor Babaev committer: Igor Babaev timestamp: 2018-08-24 21:15:08 -0700 message: Added a new parameter for the function eq_ranges_exceeds_limit() introduced in the patch fo MDEV-16934. --- sql/multi_range_read.cc | 8 +++++--- sql/opt_range.cc | 12 ++---------- sql/opt_range.h | 3 ++- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc index be2cb8b..d6952e7 100644 --- a/sql/multi_range_read.cc +++ b/sql/multi_range_read.cc @@ -65,13 +65,15 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, ha_rows rows, total_rows= 0; uint n_ranges=0; THD *thd= table->in_use; + uint limit= thd->variables.eq_range_index_dive_limit; + bool use_statistics_for_eq_range= eq_ranges_exceeds_limit(seq, + seq_init_param, + limit); + /* Default MRR implementation doesn't need buffer */ *bufsz= 0; - bool use_statistics_for_eq_range= eq_ranges_exceeds_limit(seq, - seq_init_param); - seq_it= seq->init(seq_init_param, n_ranges, *flags); while (!seq->next(seq_it, &range)) { diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 2d941ee..0b29fcd 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -14647,20 +14647,12 @@ void QUICK_GROUP_MIN_MAX_SELECT::add_keys_and_lengths(String *key_names, /* Check whether the number for equality ranges exceeds the set threshold */ -bool eq_ranges_exceeds_limit(RANGE_SEQ_IF *seq, void *seq_init_param) +bool eq_ranges_exceeds_limit(RANGE_SEQ_IF *seq, void *seq_init_param, + uint limit) { KEY_MULTI_RANGE range; range_seq_t seq_it; uint count = 0; - PARAM *param= ((SEL_ARG_RANGE_SEQ*) seq_init_param)->param; -#if 0 - uint limit= param->thd->variables.eq_range_index_dive_limit; -#else - /* FIXME: multi_range_read_info_const() is not being called with - seq_init_param as the 3rd parameter, for example in - ha_partition::multi_range_read_info_const() */ - uint limit= 0; -#endif if (limit == 0) { diff --git a/sql/opt_range.h b/sql/opt_range.h index 1628c79..d541698 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -1724,7 +1724,8 @@ SQL_SELECT *make_select(TABLE *head, table_map const_tables, bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond); -bool eq_ranges_exceeds_limit(RANGE_SEQ_IF *seq, void *seq_init_param); +bool eq_ranges_exceeds_limit(RANGE_SEQ_IF *seq, void *seq_init_param, + uint limit); #ifdef WITH_PARTITION_STORAGE_ENGINE bool prune_partitions(THD *thd, TABLE *table, Item *pprune_cond);
participants (1)
-
IgorBabaev