Commit eea61b18 authored by unknown's avatar unknown

Bug #29252 Assertion 'table->file || table->file->inited == handler::NONE' failed

when index_init() or rnd_init() return an error, we still set
handler->inited to INDEX or RND in ha_index_init and ha_rnd_init.
As caller doesn't call ha_*_end() in this case, we get DBUG_ASSERT
failed.


sql/handler.h:
  Bug #29252 Assertion 'table->file || table->file->inited == handler::NONE' failed.
  
  make sure that 'inited' is handler::NONE if index_init() or rnd_init()
  returned an error
parent fdbefa8d
......@@ -1097,10 +1097,12 @@ class handler :public Sql_alloc
int ha_index_init(uint idx, bool sorted)
{
int result;
DBUG_ENTER("ha_index_init");
DBUG_ASSERT(inited==NONE);
inited=INDEX;
DBUG_RETURN(index_init(idx, sorted));
if (!(result= index_init(idx, sorted)))
inited=INDEX;
DBUG_RETURN(result);
}
int ha_index_end()
{
......@@ -1111,10 +1113,11 @@ class handler :public Sql_alloc
}
int ha_rnd_init(bool scan)
{
int result;
DBUG_ENTER("ha_rnd_init");
DBUG_ASSERT(inited==NONE || (inited==RND && scan));
inited=RND;
DBUG_RETURN(rnd_init(scan));
inited= (result= rnd_init(scan)) ? NONE: RND;
DBUG_RETURN(result);
}
int ha_rnd_end()
{
......
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