mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
5.2 merge
This commit is contained in:
@ -2368,6 +2368,13 @@ FLUSH TABLES;
|
|||||||
ERROR HY000: Can't reopen table: 'm1'
|
ERROR HY000: Can't reopen table: 'm1'
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2, t3, m1;
|
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
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# MDEV-4277: Crash inside mi_killed_in_mariadb() with myisammrg
|
# MDEV-4277: Crash inside mi_killed_in_mariadb() with myisammrg
|
||||||
|
@ -1863,6 +1863,15 @@ FLUSH TABLES;
|
|||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2, t3, m1;
|
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 End of 5.1 tests
|
||||||
|
|
||||||
--echo #
|
--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))
|
if (!(create_info->used_fields & HA_CREATE_USED_UNION))
|
||||||
{
|
{
|
||||||
MYRG_TABLE *open_table;
|
TABLE_LIST *child_table;
|
||||||
THD *thd=current_thd;
|
THD *thd=current_thd;
|
||||||
|
|
||||||
create_info->merge_list.next= &create_info->merge_list.first;
|
create_info->merge_list.next= &create_info->merge_list.first;
|
||||||
create_info->merge_list.elements=0;
|
create_info->merge_list.elements=0;
|
||||||
|
|
||||||
for (open_table=file->open_tables ;
|
if (table->child_l != NULL)
|
||||||
open_table != file->end_table ;
|
{
|
||||||
open_table++)
|
for (child_table= table->child_l;;
|
||||||
|
child_table= child_table->next_global)
|
||||||
{
|
{
|
||||||
TABLE_LIST *ptr;
|
TABLE_LIST *ptr;
|
||||||
LEX_STRING db, name;
|
|
||||||
LINT_INIT(db.str);
|
|
||||||
|
|
||||||
if (!(ptr = (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
|
if (!(ptr= (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
|
||||||
goto err;
|
goto err;
|
||||||
split_file_name(open_table->table->filename, &db, &name);
|
|
||||||
if (!(ptr->table_name= thd->strmake(name.str, name.length)))
|
if (!(ptr->table_name= thd->strmake(child_table->table_name,
|
||||||
|
child_table->table_name_length)))
|
||||||
goto err;
|
goto err;
|
||||||
if (db.length && !(ptr->db= thd->strmake(db.str, db.length)))
|
if (child_table->db && !(ptr->db= thd->strmake(child_table->db,
|
||||||
|
child_table->db_length)))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
create_info->merge_list.elements++;
|
create_info->merge_list.elements++;
|
||||||
(*create_info->merge_list.next) = ptr;
|
(*create_info->merge_list.next)= ptr;
|
||||||
create_info->merge_list.next= &ptr->next_local;
|
create_info->merge_list.next= &ptr->next_local;
|
||||||
|
|
||||||
|
if (&child_table->next_global == table->child_last_l)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*create_info->merge_list.next=0;
|
*create_info->merge_list.next=0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user