mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
153 lines
3.6 KiB
Text
153 lines
3.6 KiB
Text
|
-- source include/have_ndb.inc
|
||
|
|
||
|
--disable_warnings
|
||
|
DROP TABLE IF EXISTS t1, r1;
|
||
|
--enable_warnings
|
||
|
|
||
|
#
|
||
|
# Basic test to see that batching is working
|
||
|
#
|
||
|
|
||
|
create table t1 (
|
||
|
a int primary key,
|
||
|
b int not null,
|
||
|
c int not null,
|
||
|
index(b), unique index using hash(c)
|
||
|
) engine = ndb;
|
||
|
insert into t1 values
|
||
|
(1,2,1),(2,3,2),(3,4,3),(4,5,4),
|
||
|
(5,2,12),(6,3,11),(7,4,10),(8,5,9),
|
||
|
(9,2,8),(10,3,7),(11,4,6),(12,5,5);
|
||
|
|
||
|
# batch on primary key
|
||
|
create table r1 as select * from t1 where a in (2,8,12);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
|
||
|
# batch on ordered index
|
||
|
create table r1 as select * from t1 where b in (1,2,5);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
|
||
|
# batch on unique hash index
|
||
|
create table r1 as select * from t1 where c in (2,8,12);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
|
||
|
# batch on primary key, missing values
|
||
|
create table r1 as select * from t1 where a in (33,8,12);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
select * from t1 where a in (33,34,35) order by a;
|
||
|
select * from t1 where a in (33,8,12) order by a;
|
||
|
create table r1 as select * from t1 where a in (2,33,8,12,34);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
|
||
|
# batch on ordered index, missing values
|
||
|
create table r1 as select * from t1 where b in (1,33,5);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
select * from t1 where b in (1,33,5) order by a;
|
||
|
create table r1 as select * from t1 where b in (45,1,33,5,44);
|
||
|
select * from r1 order by a;
|
||
|
drop table r1;
|
||
|
select * from t1 where b in (45,22) order by a;
|
||
|
|
||
|
# current bug in ndb, cannot handle missing values for unique indexes
|
||
|
# batch on unique hash index, missing values
|
||
|
#create table r1 as select * from t1 where c in (2,8,33);
|
||
|
#select * from r1 order by a;
|
||
|
#drop table r1;
|
||
|
#create table r1 as select * from t1 where c in (13,2,8,33,12);
|
||
|
#select * from r1 order by a;
|
||
|
#drop table r1;
|
||
|
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Somewhat more complicated
|
||
|
#
|
||
|
|
||
|
create table t1 (
|
||
|
a int not null,
|
||
|
b int not null,
|
||
|
c int not null,
|
||
|
d int not null,
|
||
|
e int not null,
|
||
|
primary key (a,b,c,d), index (d)
|
||
|
) engine = ndb;
|
||
|
|
||
|
insert into t1 values
|
||
|
(1,2,1,1,1),(2,3,2,3,1),(3,4,3,1,1),(4,5,4,7,1),
|
||
|
(5,2,12,12,1),(6,3,11,1,1),(7,4,10,3,1),(8,5,9,5,1),
|
||
|
(9,2,8,6,1),(10,3,7,5,1),(11,4,6,3,1),(12,5,5,2,1),
|
||
|
(1,2,1,2,1),
|
||
|
(1,2,1,3,1),
|
||
|
(1,2,1,4,1),
|
||
|
(1,2,1,5,1);
|
||
|
|
||
|
# batch on primary key
|
||
|
create table r1 as select * from t1
|
||
|
where a=1 and b=2 and c=1 and d in (1,4,3,2);
|
||
|
select * from r1 order by a,b,c,d;
|
||
|
drop table r1;
|
||
|
|
||
|
# batched update ordered index, one value for all
|
||
|
update t1 set e = 100
|
||
|
where d in (12,6,7);
|
||
|
select * from t1 where d in (12,6,7) order by a,b,c,d;
|
||
|
select * from t1 where d not in (12,6,7) and e = 100;
|
||
|
|
||
|
# batched update primary key, one value for all
|
||
|
update t1
|
||
|
set e = 101
|
||
|
where a=1 and
|
||
|
b=2 and
|
||
|
c=1 and
|
||
|
d in (1,4,3,2);
|
||
|
select *
|
||
|
from t1
|
||
|
where a=1 and b=2 and c=1 and d in (1,4,3,2)
|
||
|
order by a,b,c,d;
|
||
|
select *
|
||
|
from t1
|
||
|
where not (a=1 and b=2 and c=1 and d in (1,4,3,2))
|
||
|
and e=101;
|
||
|
|
||
|
|
||
|
# batched update ordered index, different values
|
||
|
update t1
|
||
|
set e =
|
||
|
(case d
|
||
|
when 12 then 112
|
||
|
when 6 then 106
|
||
|
when 7 then 107
|
||
|
end)
|
||
|
where d in (12,6,7);
|
||
|
select * from t1 where d in (12,6,7) order by a,b,c,d;
|
||
|
|
||
|
# batched update primary key, different values
|
||
|
update t1
|
||
|
set e =
|
||
|
(case d
|
||
|
when 1 then 111
|
||
|
when 4 then 444
|
||
|
when 3 then 333
|
||
|
when 2 then 222
|
||
|
end)
|
||
|
where a=1 and
|
||
|
b=2 and
|
||
|
c=1 and
|
||
|
d in (1,4,3,2);
|
||
|
select *
|
||
|
from t1
|
||
|
where a=1 and b=2 and c=1 and d in (1,4,3,2)
|
||
|
order by a,b,c,d;
|
||
|
|
||
|
# batched delete
|
||
|
delete from t1 where d in (12,6,7);
|
||
|
select * from t1 where d in (12,6,7);
|
||
|
|
||
|
drop table t1;
|