Skip to content
Permalink
Browse files
MDEV-28747 Index condition pushdown may be configured incorrectly
ha_innobase::build_template may initialize m_prebuilt->idx_cond
even if there is no valid pushed_idx_cond_keyno.
This potentially problematic piece of code was found while
working on MDEV-27366
  • Loading branch information
Olernov committed Jun 8, 2022
1 parent 09177ea commit 5efadf8
Showing 1 changed file with 6 additions and 6 deletions.
@@ -7718,9 +7718,12 @@ ha_innobase::build_template(

ulint num_v = 0;

if ((active_index != MAX_KEY
&& active_index == pushed_idx_cond_keyno)
|| (pushed_rowid_filter && rowid_filter_is_active)) {
if (active_index != MAX_KEY
&& active_index == pushed_idx_cond_keyno) {
m_prebuilt->idx_cond = this;
goto icp;
} else if (pushed_rowid_filter && rowid_filter_is_active) {
icp:
/* Push down an index condition or an end_range check. */
for (ulint i = 0; i < n_fields; i++) {
const Field* field = table->field[i];
@@ -7901,9 +7904,6 @@ ha_innobase::build_template(
}
}
}
if (active_index == pushed_idx_cond_keyno) {
m_prebuilt->idx_cond = this;
}
} else {
no_icp:
/* No index condition pushdown */

0 comments on commit 5efadf8

Please sign in to comment.