Commit 588e6795 authored by Vicențiu Ciorbaru's avatar Vicențiu Ciorbaru

Make sure histograms do not write uninitialized bytes to record

A histogram size that is odd in size with DOUBLE precision will leave the last
byte unwritten. When collecting histograms, this causes the last byte to
be uninitialized in the record. memset the buffer to 0 first to make
sure this does not happen.
parent c738aa24
...@@ -2109,7 +2109,12 @@ int alloc_statistics_for_table(THD* thd, TABLE *table) ...@@ -2109,7 +2109,12 @@ int alloc_statistics_for_table(THD* thd, TABLE *table)
Histogram_type hist_type= (Histogram_type) (thd->variables.histogram_type); Histogram_type hist_type= (Histogram_type) (thd->variables.histogram_type);
uchar *histogram= NULL; uchar *histogram= NULL;
if (hist_size > 0) if (hist_size > 0)
histogram= (uchar *) alloc_root(&table->mem_root, hist_size * columns); {
if ((histogram= (uchar *) alloc_root(&table->mem_root,
hist_size * columns)))
bzero(histogram, hist_size * columns);
}
if (!table_stats || !column_stats || !index_stats || !idx_avg_frequency || if (!table_stats || !column_stats || !index_stats || !idx_avg_frequency ||
(hist_size && !histogram)) (hist_size && !histogram))
......
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