diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-09-04 12:07:46 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-09-04 12:14:24 +0300 |
commit | c029d4562322d8c792f96717e0fb7f18d2379b2f (patch) | |
tree | dcf73bf3054b9b172d262aad93ee088f4ddec813 | |
parent | 8c2909a2a4629f542a52b12cc41bcbf6c36fc588 (diff) | |
download | mariadb-git-c029d4562322d8c792f96717e0fb7f18d2379b2f.tar.gz |
MDEV-23600 follow-up: uninitialized rec_field_is_prefix
build_template_field(): Initialize templ->rec_field_is_prefix
also for indexes on virtual columns. This was caught on 10.5 by
MemorySanitizer as use-of-uninitialized-value in
row_search_with_covering_prefix() when running the test
main.fast_prefix_index_fetch_innodb.
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index e171b6a99b3..2493a11b554 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -7455,6 +7455,8 @@ build_template_field( #ifdef HAVE_valgrind_or_MSAN MEM_UNDEFINED(templ, sizeof *templ); #endif /* HAVE_valgrind_or_MSAN */ + templ->rec_field_is_prefix = FALSE; + templ->rec_prefix_field_no = ULINT_UNDEFINED; templ->is_virtual = !field->stored_in_db(); if (!templ->is_virtual) { @@ -7516,8 +7518,6 @@ build_template_field( << " query " << innobase_get_stmt_unsafe(current_thd, &size); } - templ->rec_field_is_prefix = FALSE; - templ->rec_prefix_field_no = ULINT_UNDEFINED; if (dict_index_is_clust(index)) { templ->rec_field_no = templ->clust_rec_field_no; @@ -7535,7 +7535,6 @@ build_template_field( DBUG_ASSERT(!ha_innobase::omits_virtual_cols(*table->s)); col = &dict_table_get_nth_v_col(index->table, v_no)->m_col; templ->clust_rec_field_no = v_no; - templ->rec_prefix_field_no = ULINT_UNDEFINED; if (dict_index_is_clust(index)) { templ->rec_field_no = templ->clust_rec_field_no; |