mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Bug#54686 "field->col->mtype == type" assertion error at row/row0sel.c
ha_innobase::index_read(), ha_innobase::records_in_range(): Check that the index is useable before invoking row_sel_convert_mysql_key_to_innobase(). This fix is based on a suggestion by Yasufumi Kinoshita.
This commit is contained in:
@@ -5379,6 +5379,9 @@ ha_innobase::index_read(
|
|||||||
prebuilt->index_usable = FALSE;
|
prebuilt->index_usable = FALSE;
|
||||||
DBUG_RETURN(HA_ERR_CRASHED);
|
DBUG_RETURN(HA_ERR_CRASHED);
|
||||||
}
|
}
|
||||||
|
if (UNIV_UNLIKELY(!prebuilt->index_usable)) {
|
||||||
|
DBUG_RETURN(HA_ERR_TABLE_DEF_CHANGED);
|
||||||
|
}
|
||||||
|
|
||||||
/* Note that if the index for which the search template is built is not
|
/* Note that if the index for which the search template is built is not
|
||||||
necessarily prebuilt->index, but can also be the clustered index */
|
necessarily prebuilt->index, but can also be the clustered index */
|
||||||
@@ -7221,6 +7224,10 @@ ha_innobase::records_in_range(
|
|||||||
n_rows = HA_POS_ERROR;
|
n_rows = HA_POS_ERROR;
|
||||||
goto func_exit;
|
goto func_exit;
|
||||||
}
|
}
|
||||||
|
if (UNIV_UNLIKELY(!row_merge_is_index_usable(prebuilt->trx, index))) {
|
||||||
|
n_rows = HA_ERR_TABLE_DEF_CHANGED;
|
||||||
|
goto func_exit;
|
||||||
|
}
|
||||||
|
|
||||||
heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t)
|
heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t)
|
||||||
+ sizeof(dtuple_t)));
|
+ sizeof(dtuple_t)));
|
||||||
|
Reference in New Issue
Block a user