Commit 5efadf8d authored by Oleg Smirnov's avatar Oleg Smirnov

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
parent 09177ead
......@@ -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 */
......
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