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
This commit is contained in:
parent
09177eadc3
commit
5efadf8d8c
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user