5.2 merge
This commit is contained in:
commit
a3b99778fc
@ -2368,6 +2368,13 @@ FLUSH TABLES;
|
||||
ERROR HY000: Can't reopen table: 'm1'
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, m1;
|
||||
create temporary table t1_temp(i int);
|
||||
create temporary table tm_temp_temp (i int) engine=merge union=(t1_temp) insert_method=last;
|
||||
alter table tm_temp_temp insert_method=first;
|
||||
check table tm_temp_temp;
|
||||
Table Op Msg_type Msg_text
|
||||
test.tm_temp_temp check status OK
|
||||
drop temporary table t1_temp, tm_temp_temp;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# MDEV-4277: Crash inside mi_killed_in_mariadb() with myisammrg
|
||||
|
@ -1863,6 +1863,15 @@ FLUSH TABLES;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, m1;
|
||||
|
||||
#
|
||||
# MDEV-5266 MySQL:57657 - Temporary MERGE table with temporary underlying is broken by ALTER
|
||||
#
|
||||
create temporary table t1_temp(i int);
|
||||
create temporary table tm_temp_temp (i int) engine=merge union=(t1_temp) insert_method=last;
|
||||
alter table tm_temp_temp insert_method=first;
|
||||
check table tm_temp_temp;
|
||||
drop temporary table t1_temp, tm_temp_temp;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
@ -1125,31 +1125,36 @@ void ha_myisammrg::update_create_info(HA_CREATE_INFO *create_info)
|
||||
|
||||
if (!(create_info->used_fields & HA_CREATE_USED_UNION))
|
||||
{
|
||||
MYRG_TABLE *open_table;
|
||||
TABLE_LIST *child_table;
|
||||
THD *thd=current_thd;
|
||||
|
||||
create_info->merge_list.next= &create_info->merge_list.first;
|
||||
create_info->merge_list.elements=0;
|
||||
|
||||
for (open_table=file->open_tables ;
|
||||
open_table != file->end_table ;
|
||||
open_table++)
|
||||
if (table->child_l != NULL)
|
||||
{
|
||||
TABLE_LIST *ptr;
|
||||
LEX_STRING db, name;
|
||||
LINT_INIT(db.str);
|
||||
for (child_table= table->child_l;;
|
||||
child_table= child_table->next_global)
|
||||
{
|
||||
TABLE_LIST *ptr;
|
||||
|
||||
if (!(ptr = (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
|
||||
goto err;
|
||||
split_file_name(open_table->table->filename, &db, &name);
|
||||
if (!(ptr->table_name= thd->strmake(name.str, name.length)))
|
||||
goto err;
|
||||
if (db.length && !(ptr->db= thd->strmake(db.str, db.length)))
|
||||
goto err;
|
||||
if (!(ptr= (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
|
||||
goto err;
|
||||
|
||||
create_info->merge_list.elements++;
|
||||
(*create_info->merge_list.next) = ptr;
|
||||
create_info->merge_list.next= &ptr->next_local;
|
||||
if (!(ptr->table_name= thd->strmake(child_table->table_name,
|
||||
child_table->table_name_length)))
|
||||
goto err;
|
||||
if (child_table->db && !(ptr->db= thd->strmake(child_table->db,
|
||||
child_table->db_length)))
|
||||
goto err;
|
||||
|
||||
create_info->merge_list.elements++;
|
||||
(*create_info->merge_list.next)= ptr;
|
||||
create_info->merge_list.next= &ptr->next_local;
|
||||
|
||||
if (&child_table->next_global == table->child_last_l)
|
||||
break;
|
||||
}
|
||||
}
|
||||
*create_info->merge_list.next=0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user