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;
|
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(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user