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