Fix for bug#58553, "Queries with pushed conditions causes 'explain extended'
to crash mysqld". handler::pushed_cond was not always properly reset when table objects where recycled via the table cache. handler::pushed_cond is now set to NULL in handler::ha_reset(). This should prevent pushed conditions from (incorrectly) re-apperaring in later queries.
This commit is contained in:
parent
99e95e8dab
commit
f4adb7c6e4
@ -4657,6 +4657,7 @@ int handler::ha_reset()
|
||||
free_io_cache(table);
|
||||
/* reset the bitmaps to point to defaults */
|
||||
table->default_column_bitmaps();
|
||||
pushed_cond= NULL;
|
||||
DBUG_RETURN(reset());
|
||||
}
|
||||
|
||||
|
@ -2993,6 +2993,11 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
|
||||
table->insert_values= 0;
|
||||
table->fulltext_searched= 0;
|
||||
table->file->ft_handler= 0;
|
||||
/*
|
||||
Check that there is no reference to a condtion from an earlier query
|
||||
(cf. Bug#58553).
|
||||
*/
|
||||
DBUG_ASSERT(table->file->pushed_cond == NULL);
|
||||
table->reginfo.impossible_range= 0;
|
||||
/* Catch wrong handling of the auto_increment_field_not_null. */
|
||||
DBUG_ASSERT(!table->auto_increment_field_not_null);
|
||||
|
@ -6380,7 +6380,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
|
||||
tab->select_cond=sel->cond=tmp;
|
||||
/* Push condition to storage engine if this is enabled
|
||||
and the condition is not guarded */
|
||||
tab->table->file->pushed_cond= NULL;
|
||||
if (thd->variables.engine_condition_pushdown)
|
||||
{
|
||||
COND *push_cond=
|
||||
|
Loading…
x
Reference in New Issue
Block a user