Commit c3e70a01 authored by Sergey Petrunya's avatar Sergey Petrunya

Fix assert failures in main.merge test (line 234) and main.merge_mmap (line 44)

- After the merge from mysql-5.6, open_tables() did not call
  open_and_process_table() for temporary table. The logic was that temporary
  tables were already opened when mysql_execute_command() has called 
  open_temporary_tables().
  This worked for the most part, except for temporary tables of type MERGE. for
  which open_and_process_table() must call 
    table->file->extra(HA_EXTRA_ADD_CHILDREN_LIST).
  Failure to make this call resulted in crash further in execution.

  tables->table->file->extra(HA_EXTRA_ADD_CHILDREN_LIST)
  
parent 09e2501f
......@@ -4514,7 +4514,6 @@ open_and_process_table(THD *thd, LEX *lex, TABLE_LIST *tables,
bool safe_to_ignore_table= FALSE;
DBUG_ENTER("open_and_process_table");
DEBUG_SYNC(thd, "open_and_process_table");
DBUG_ASSERT(!tables->table);
/*
Ignore placeholders for derived tables. After derived tables
......@@ -5213,14 +5212,6 @@ restart:
for (tables= *table_to_open; tables;
table_to_open= &tables->next_global, tables= tables->next_global)
{
/* Ignore temporary tables, as these has already been opened */
if (tables->table)
{
DBUG_ASSERT(is_temporary_table(tables));
/* We have to increment the counter for lock_tables */
(*counter)++;
continue;
}
error= open_and_process_table(thd, thd->lex, tables, counter,
flags, prelocking_strategy,
has_prelocking_list, &ot_ctx,
......
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