mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Merge
This commit is contained in:
@@ -2369,3 +2369,133 @@ ERROR HY000: Can't reopen table: 'm1'
|
|||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2, t3, m1;
|
DROP TABLE t1, t2, t3, m1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# MDEV-4277: Crash inside mi_killed_in_mariadb() with myisammrg
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t2 ( i int ) engine=myisam;
|
||||||
|
insert into t2 values (1),(2);
|
||||||
|
create table t3 (a int, b int, filler char(100), key(a), key(b)) engine=myisam;
|
||||||
|
create table t4 like t3;
|
||||||
|
insert into t3
|
||||||
|
select A.a+10*B.a+100*C.a,
|
||||||
|
A.a+10*B.a+100*C.a,
|
||||||
|
'filler-data-FILLER-DATA-qqq'
|
||||||
|
from t1 A, t1 B, t1 C where C.a < 5;
|
||||||
|
insert into t4
|
||||||
|
select A.a+10*B.a+100*C.a,
|
||||||
|
A.a+10*B.a+100*C.a,
|
||||||
|
'filler-data-FILLER-DATA-qqq'
|
||||||
|
from t1 A, t1 B, t1 C where C.a >= 5;
|
||||||
|
create table t5 like t3;
|
||||||
|
alter table t5 engine=merge;
|
||||||
|
alter table t5 union(t3, t4);
|
||||||
|
update t5 set b=999, a=999 where b>950;
|
||||||
|
explain
|
||||||
|
select * from t2, t5 where t5.a=999 and t5.b=999;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
|
||||||
|
1 SIMPLE t5 index_merge a,b a,b 5,5 NULL 6 Using intersect(a,b); Using where; Using join buffer (flat, BNL join)
|
||||||
|
select * from t2, t5 where t5.a=999 and t5.b=999;
|
||||||
|
i a b filler
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
1 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
2 999 999 filler-data-FILLER-DATA-qqq
|
||||||
|
drop table t5;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
@@ -1865,6 +1865,41 @@ DROP TABLE t1, t2, t3, m1;
|
|||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-4277: Crash inside mi_killed_in_mariadb() with myisammrg
|
||||||
|
--echo #
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
create table t2 ( i int ) engine=myisam;
|
||||||
|
insert into t2 values (1),(2);
|
||||||
|
|
||||||
|
create table t3 (a int, b int, filler char(100), key(a), key(b)) engine=myisam;
|
||||||
|
create table t4 like t3;
|
||||||
|
insert into t3
|
||||||
|
select A.a+10*B.a+100*C.a,
|
||||||
|
A.a+10*B.a+100*C.a,
|
||||||
|
'filler-data-FILLER-DATA-qqq'
|
||||||
|
from t1 A, t1 B, t1 C where C.a < 5;
|
||||||
|
insert into t4
|
||||||
|
select A.a+10*B.a+100*C.a,
|
||||||
|
A.a+10*B.a+100*C.a,
|
||||||
|
'filler-data-FILLER-DATA-qqq'
|
||||||
|
from t1 A, t1 B, t1 C where C.a >= 5;
|
||||||
|
|
||||||
|
create table t5 like t3;
|
||||||
|
alter table t5 engine=merge;
|
||||||
|
alter table t5 union(t3, t4);
|
||||||
|
|
||||||
|
update t5 set b=999, a=999 where b>950;
|
||||||
|
|
||||||
|
explain
|
||||||
|
select * from t2, t5 where t5.a=999 and t5.b=999;
|
||||||
|
select * from t2, t5 where t5.a=999 and t5.b=999;
|
||||||
|
|
||||||
|
drop table t5;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
eval set global storage_engine=$default;
|
eval set global storage_engine=$default;
|
||||||
|
@@ -422,6 +422,19 @@ static MI_INFO *myisammrg_attach_children_callback(void *callback_param)
|
|||||||
DBUG_RETURN(my_errno ? NULL : myisam);
|
DBUG_RETURN(my_errno ? NULL : myisam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set external_ref for the child MyISAM tables. They need this to be set in
|
||||||
|
order to check for killed status.
|
||||||
|
*/
|
||||||
|
static void myrg_set_external_ref(MYRG_INFO *m_info, void *ext_ref_arg)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i= 0; i < (int)m_info->tables; i++)
|
||||||
|
{
|
||||||
|
m_info->open_tables[i].table->external_ref= ext_ref_arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Open a MERGE parent table, not its children.
|
@brief Open a MERGE parent table, not its children.
|
||||||
@@ -467,6 +480,7 @@ int ha_myisammrg::open(const char *name, int mode __attribute__((unused)),
|
|||||||
}
|
}
|
||||||
|
|
||||||
file->children_attached= TRUE;
|
file->children_attached= TRUE;
|
||||||
|
myrg_set_external_ref(file, (void*)table);
|
||||||
|
|
||||||
info(HA_STATUS_NO_LOCK | HA_STATUS_VARIABLE | HA_STATUS_CONST);
|
info(HA_STATUS_NO_LOCK | HA_STATUS_VARIABLE | HA_STATUS_CONST);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user