mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
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)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user