summaryrefslogtreecommitdiff
path: root/sql/sql_statistics.cc
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2021-10-22 19:43:19 +0300
committerSergei Petrunia <psergey@askmonty.org>2022-01-19 18:10:11 +0300
commit05877df472fa95cab763dfb1299e81681a12da73 (patch)
tree00753389e2ddeb3931cb3fdb605b2c92064373b1 /sql/sql_statistics.cc
parentf3f78bed8530e1e858d5ed87054f2ac672760824 (diff)
downloadmariadb-git-05877df472fa95cab763dfb1299e81681a12da73.tar.gz
MDEV-26849: JSON Histograms: point selectivity estimates are off
.. for non-existent values. Handle this special case.
Diffstat (limited to 'sql/sql_statistics.cc')
-rw-r--r--sql/sql_statistics.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc
index c62230a9af1..c87330316f4 100644
--- a/sql/sql_statistics.cc
+++ b/sql/sql_statistics.cc
@@ -3882,7 +3882,8 @@ double get_column_range_cardinality(Field *field,
{
res= col_non_nulls *
hist->point_selectivity(field, min_endp,
- avg_frequency / col_non_nulls);
+ avg_frequency / col_non_nulls,
+ tab_records);
}
}
else if (avg_frequency == 0.0)
@@ -3973,7 +3974,8 @@ double get_column_range_cardinality(Field *field,
*/
double Histogram_binary::point_selectivity(Field *field, key_range *endpoint,
- double avg_sel)
+ double avg_sel,
+ double total_records)
{
double sel;
Column_statistics *col_stats= field->read_stats;