Commit 3486bf41 authored by Sergei Petrunia's avatar Sergei Petrunia

Code cleanup + reduce the diff size

parent 229c836d
...@@ -3620,16 +3620,6 @@ int read_histograms_for_table(THD *thd, TABLE *table, TABLE_LIST *stat_tables) ...@@ -3620,16 +3620,6 @@ int read_histograms_for_table(THD *thd, TABLE *table, TABLE_LIST *stat_tables)
if (stats_cb->start_histograms_load()) if (stats_cb->start_histograms_load())
{ {
//uchar *histogram= (uchar *) alloc_root(&stats_cb->mem_root,
// stats_cb->total_hist_size);
/*
if (!histogram)
{
stats_cb->abort_histograms_load();
DBUG_RETURN(1);
}
*/
Column_stat column_stat(stat_tables[COLUMN_STAT].table, table); Column_stat column_stat(stat_tables[COLUMN_STAT].table, table);
for (Field **field_ptr= table->s->field; *field_ptr; field_ptr++) for (Field **field_ptr= table->s->field; *field_ptr; field_ptr++)
{ {
...@@ -4393,10 +4383,9 @@ double get_column_range_cardinality(Field *field, ...@@ -4393,10 +4383,9 @@ double get_column_range_cardinality(Field *field,
/* /*
Estimate selectivity of "col=const" using a histogram Estimate selectivity of "col=const" using a histogram
@param field - the field to estimate its selectivity. @param field the field to estimate its selectivity.
@param min_endp, max_endp - Specifies the left and right bounds. For point selectivity, @param endpoint The constant
they are both equal.
@param avg_sel Average selectivity of condition "col=const" in this table. @param avg_sel Average selectivity of condition "col=const" in this table.
It is calcuated as (#non_null_values / #distinct_values). It is calcuated as (#non_null_values / #distinct_values).
...@@ -4426,11 +4415,12 @@ double get_column_range_cardinality(Field *field, ...@@ -4426,11 +4415,12 @@ double get_column_range_cardinality(Field *field,
value. value.
*/ */
double Histogram_binary::point_selectivity(Field *field, key_range *min_endp, double avg_sel) double Histogram_binary::point_selectivity(Field *field, key_range *endpoint,
double avg_sel)
{ {
double sel; double sel;
Column_statistics *col_stats= field->read_stats; Column_statistics *col_stats= field->read_stats;
store_key_image_to_rec(field, (uchar *) min_endp->key, store_key_image_to_rec(field, (uchar *) endpoint->key,
field->key_length()); field->key_length());
double pos= field->pos_in_interval(col_stats->min_value, double pos= field->pos_in_interval(col_stats->min_value,
col_stats->max_value); col_stats->max_value);
......
...@@ -195,26 +195,6 @@ class Histogram_base : public Sql_alloc ...@@ -195,26 +195,6 @@ class Histogram_base : public Sql_alloc
class Histogram_binary : public Histogram_base class Histogram_binary : public Histogram_base
{ {
public:
bool parse(MEM_ROOT *mem_root, Field *, Histogram_type type_arg,
const char *hist_data, size_t hist_data_len) override;
void serialize(Field *to_field) override;
Histogram_type get_type() override { return type; }
uint get_width() override
{
switch (type) {
case SINGLE_PREC_HB:
return size;
case DOUBLE_PREC_HB:
return size / 2;
default:
DBUG_ASSERT(0);
}
return 0;
}
private: private:
Histogram_type type; Histogram_type type;
uint8 size; /* Size of values array, in bytes */ uint8 size; /* Size of values array, in bytes */
...@@ -233,6 +213,20 @@ class Histogram_binary : public Histogram_base ...@@ -233,6 +213,20 @@ class Histogram_binary : public Histogram_base
return 1; return 1;
} }
public:
uint get_width() override
{
switch (type) {
case SINGLE_PREC_HB:
return size;
case DOUBLE_PREC_HB:
return size / 2;
default:
DBUG_ASSERT(0);
}
return 0;
}
private:
uint get_value(uint i) uint get_value(uint i)
{ {
DBUG_ASSERT(i < get_width()); DBUG_ASSERT(i < get_width());
...@@ -287,10 +281,16 @@ class Histogram_binary : public Histogram_base ...@@ -287,10 +281,16 @@ class Histogram_binary : public Histogram_base
} }
public: public:
void init_for_collection(MEM_ROOT *mem_root, Histogram_type htype_arg, ulonglong size) override;
uint get_size() override {return (uint)size;} uint get_size() override {return (uint)size;}
Histogram_type get_type() override { return type; }
bool parse(MEM_ROOT *mem_root, Field *, Histogram_type type_arg,
const char *hist_data, size_t hist_data_len) override;
void serialize(Field *to_field) override;
void init_for_collection(MEM_ROOT *mem_root, Histogram_type htype_arg,
ulonglong size) override;
bool is_available() override { return (values!=NULL); } bool is_available() override { return (values!=NULL); }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment