mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
sql/ha_ndbcluster.cc
added missing DBUG_RETURN's mysql-test/r/ndb_read_multi_range.result@1.0 BitKeeper file /home/tomas/wl2126/mysql-test/r/ndb_read_multi_range.result mysql-test/r/ndb_read_multi_range.result@1.1 (NO COMMENTS AVAILABLE) mysql-test/t/ndb_read_multi_range.test@1.0 BitKeeper file /home/tomas/wl2126/mysql-test/t/ndb_read_multi_range.test mysql-test/t/ndb_read_multi_range.test@1.1 (NO COMMENTS AVAILABLE)
This commit is contained in:
168
mysql-test/r/ndb_read_multi_range.result
Normal file
168
mysql-test/r/ndb_read_multi_range.result
Normal file
@ -0,0 +1,168 @@
|
||||
DROP TABLE IF EXISTS t1, r1;
|
||||
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);
|
||||
create table r1 as select * from t1 where a in (2,8,12);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
2 3 2
|
||||
8 5 9
|
||||
12 5 5
|
||||
drop table r1;
|
||||
create table r1 as select * from t1 where b in (1,2,5);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
1 2 1
|
||||
4 5 4
|
||||
5 2 12
|
||||
8 5 9
|
||||
9 2 8
|
||||
12 5 5
|
||||
drop table r1;
|
||||
create table r1 as select * from t1 where c in (2,8,12);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
2 3 2
|
||||
5 2 12
|
||||
9 2 8
|
||||
drop table r1;
|
||||
create table r1 as select * from t1 where a in (33,8,12);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
8 5 9
|
||||
12 5 5
|
||||
drop table r1;
|
||||
select * from t1 where a in (33,34,35) order by a;
|
||||
a b c
|
||||
select * from t1 where a in (33,8,12) order by a;
|
||||
a b c
|
||||
8 5 9
|
||||
12 5 5
|
||||
create table r1 as select * from t1 where a in (2,33,8,12,34);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
2 3 2
|
||||
8 5 9
|
||||
12 5 5
|
||||
drop table r1;
|
||||
create table r1 as select * from t1 where b in (1,33,5);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
4 5 4
|
||||
8 5 9
|
||||
12 5 5
|
||||
drop table r1;
|
||||
select * from t1 where b in (1,33,5) order by a;
|
||||
a b c
|
||||
4 5 4
|
||||
8 5 9
|
||||
12 5 5
|
||||
create table r1 as select * from t1 where b in (45,1,33,5,44);
|
||||
select * from r1 order by a;
|
||||
a b c
|
||||
4 5 4
|
||||
8 5 9
|
||||
12 5 5
|
||||
drop table r1;
|
||||
select * from t1 where b in (45,22) order by a;
|
||||
a b c
|
||||
drop table t1;
|
||||
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);
|
||||
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;
|
||||
a b c d e
|
||||
1 2 1 1 1
|
||||
1 2 1 2 1
|
||||
1 2 1 3 1
|
||||
1 2 1 4 1
|
||||
drop table r1;
|
||||
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;
|
||||
a b c d e
|
||||
4 5 4 7 100
|
||||
5 2 12 12 100
|
||||
9 2 8 6 100
|
||||
select * from t1 where d not in (12,6,7) and e = 100;
|
||||
a b c d e
|
||||
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;
|
||||
a b c d e
|
||||
1 2 1 1 101
|
||||
1 2 1 2 101
|
||||
1 2 1 3 101
|
||||
1 2 1 4 101
|
||||
select *
|
||||
from t1
|
||||
where not (a=1 and b=2 and c=1 and d in (1,4,3,2))
|
||||
and e=101;
|
||||
a b c d e
|
||||
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;
|
||||
a b c d e
|
||||
4 5 4 7 107
|
||||
5 2 12 12 112
|
||||
9 2 8 6 106
|
||||
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;
|
||||
a b c d e
|
||||
1 2 1 1 111
|
||||
1 2 1 2 222
|
||||
1 2 1 3 333
|
||||
1 2 1 4 444
|
||||
delete from t1 where d in (12,6,7);
|
||||
select * from t1 where d in (12,6,7);
|
||||
a b c d e
|
||||
drop table t1;
|
152
mysql-test/t/ndb_read_multi_range.test
Normal file
152
mysql-test/t/ndb_read_multi_range.test
Normal file
@ -0,0 +1,152 @@
|
||||
-- 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;
|
@ -4721,11 +4721,11 @@ ha_ndbcluster::read_multi_range_first(key_multi_range **found_range_p,
|
||||
* blobs can't be batched currently
|
||||
*/
|
||||
m_disable_multi_read= true;
|
||||
return handler::read_multi_range_first(found_range_p,
|
||||
DBUG_RETURN(handler::read_multi_range_first(found_range_p,
|
||||
ranges,
|
||||
range_count,
|
||||
sorted,
|
||||
buffer);
|
||||
buffer));
|
||||
}
|
||||
|
||||
switch(index_type){
|
||||
@ -4747,21 +4747,21 @@ ha_ndbcluster::read_multi_range_first(key_multi_range **found_range_p,
|
||||
* Mark that we using hander:: implementation
|
||||
*/
|
||||
m_disable_multi_read= true;
|
||||
return handler::read_multi_range_first(found_range_p,
|
||||
DBUG_RETURN(handler::read_multi_range_first(found_range_p,
|
||||
ranges,
|
||||
range_count,
|
||||
sorted,
|
||||
buffer);
|
||||
buffer));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
case ORDERED_INDEX:
|
||||
m_disable_multi_read= true;
|
||||
return handler::read_multi_range_first(found_range_p,
|
||||
DBUG_RETURN(handler::read_multi_range_first(found_range_p,
|
||||
ranges,
|
||||
range_count,
|
||||
sorted,
|
||||
buffer);
|
||||
buffer));
|
||||
}
|
||||
|
||||
m_disable_multi_read= false;
|
||||
@ -4827,7 +4827,7 @@ ha_ndbcluster::read_multi_range_first(key_multi_range **found_range_p,
|
||||
{
|
||||
multi_range_curr= 0;
|
||||
m_multi_range_result_ptr= buffer->buffer;
|
||||
return read_multi_range_next();
|
||||
DBUG_RETURN(read_multi_range_next());
|
||||
}
|
||||
ERR_RETURN(m_active_trans->getNdbError());
|
||||
}
|
||||
|
Reference in New Issue
Block a user