summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Gupta <varun.gupta@mariadb.com>2018-11-20 20:12:29 +0530
committerVarun Gupta <varun.gupta@mariadb.com>2018-11-20 20:16:38 +0530
commit14f6b0cdfd696ec0e4f24d914fc3123deaece2f6 (patch)
tree491fb31b0413479fe329984f63e2ef765b96e6e7
parenta84d87fde8c0bc325c8e00f06ea02bcd84a75d55 (diff)
downloadmariadb-git-14f6b0cdfd696ec0e4f24d914fc3123deaece2f6.tar.gz
MDEV-17734: AddressSanitizer: use-after-poison in create_key_parts_for_pseudo_indexes
In this case we were trying to access memory for key_parts which we did not assign for a fields because it did not any EITS statistics. The check if EITS statistics for a column is avaialable or not was missing.
-rw-r--r--sql/opt_range.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 3bcaa72e32f..a3943cbe3ff 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -3350,7 +3350,9 @@ bool create_key_parts_for_pseudo_indexes(RANGE_OPT_PARAM *param,
if (bitmap_is_set(used_fields, (*field_ptr)->field_index))
{
Field *field= *field_ptr;
- if (field->type() == MYSQL_TYPE_GEOMETRY)
+ Column_statistics* col_stats= field->read_stats;
+ if (field->type() == MYSQL_TYPE_GEOMETRY ||
+ !col_stats || col_stats->no_stat_values_provided())
continue;
uint16 store_length;