diff options
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r-- | sql/opt_range.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 63598ce1c8f..5ab3d70214d 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1357,14 +1357,12 @@ QUICK_RANGE_SELECT::~QUICK_RANGE_SELECT() - Use rowids from unique to run a disk-ordered sweep */ -QUICK_INDEX_SORT_SELECT::QUICK_INDEX_SORT_SELECT(THD *thd_param, - TABLE *table) +QUICK_INDEX_SORT_SELECT::QUICK_INDEX_SORT_SELECT(THD *thd_param, TABLE *table) :unique(NULL), pk_quick_select(NULL), thd(thd_param) { DBUG_ENTER("QUICK_INDEX_SORT_SELECT::QUICK_INDEX_SORT_SELECT"); index= MAX_KEY; head= table; - bzero(&read_record, sizeof(read_record)); init_sql_alloc(&alloc, "QUICK_INDEX_SORT_SELECT", thd->variables.range_alloc_block_size, 0, MYF(MY_THREAD_SPECIFIC)); @@ -5499,6 +5497,16 @@ typedef struct st_partial_index_intersect_info key_map filtered_scans; /* scans to be filtered by cpk conditions */ MY_BITMAP *intersect_fields; /* bitmap of fields used in intersection */ + + void init() + { + common_info= NULL; + intersect_fields= NULL; + records_sent_to_unique= records= length= in_memory= use_cpk_filter= 0; + cost= index_read_cost= in_memory_cost= 0.0; + filtered_scans.init(); + filtered_scans.clear_all(); + } } PARTIAL_INDEX_INTERSECT_INFO; @@ -5645,8 +5653,7 @@ bool prepare_search_best_index_intersect(PARAM *param, if (n_index_scans <= 1) return 1; - bzero(init, sizeof(*init)); - init->filtered_scans.init(); + init->init(); init->common_info= common; init->cost= cutoff_cost; |