Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
9c3dd2fb
Commit
9c3dd2fb
authored
Jul 22, 2004
by
pekka@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ha_ndb blobs 2
parent
e38792a6
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1016 additions
and
205 deletions
+1016
-205
mysql-test/r/ndb_blob.result
mysql-test/r/ndb_blob.result
+272
-0
mysql-test/t/ndb_blob.test
mysql-test/t/ndb_blob.test
+249
-0
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+482
-195
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+13
-10
No files found.
mysql-test/r/ndb_blob.result
View file @
9c3dd2fb
drop table if exists t1;
set autocommit=0;
create table t1 (
a int not null primary key,
b text not null,
c int not null,
d longblob,
key (c)
) engine=ndbcluster;
set @x0 = '01234567012345670123456701234567';
set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
set @b1 = 'b1';
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
set @b1 = concat(@b1,@x0);
set @d1 = 'dd1';
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
set @b2 = 'b2';
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
set @d2 = 'dd2';
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
select length(@x0),length(@b1),length(@d1) from dual;
length(@x0) length(@b1) length(@d1)
256 2256 3000
select length(@x0),length(@b2),length(@d2) from dual;
length(@x0) length(@b2) length(@d2)
256 20000 30000
insert into t1 values(1,@b1,111,@d1);
insert into t1 values(2,@b2,222,@d2);
commit;
explain select * from t1 where a = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where a=1;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
from t1 where a=2;
a length(b) substr(b,1+2*9000,2) length(d) substr(d,1+3*9000,3)
2 20000 b2 30000 dd2
update t1 set b=@b2,d=@d2 where a=1;
update t1 set b=@b1,d=@d1 where a=2;
commit;
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
from t1 where a=1;
a length(b) substr(b,1+2*9000,2) length(d) substr(d,1+3*9000,3)
1 20000 b2 30000 dd2
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where a=2;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
2 2256 b1 3000 dd1
update t1 set b=concat(b,b),d=concat(d,d) where a=1;
update t1 set b=concat(b,b),d=concat(d,d) where a=2;
commit;
select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
from t1 where a=1;
a length(b) substr(b,1+4*9000,2) length(d) substr(d,1+6*9000,3)
1 40000 b2 60000 dd2
select a,length(b),substr(b,1+4*900,2),length(d),substr(d,1+6*900,3)
from t1 where a=2;
a length(b) substr(b,1+4*900,2) length(d) substr(d,1+6*900,3)
2 4512 b1 6000 dd1
update t1 set d=null where a=1;
commit;
select a from t1 where d is null;
a
1
delete from t1 where a=1;
delete from t1 where a=2;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,@b1,111,@d1);
insert into t1 values(2,@b2,222,@d2);
commit;
explain select * from t1 where c = 111;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c c 4 const 10 Using where
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where c=111;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
from t1 where c=222;
a length(b) substr(b,1+2*9000,2) length(d) substr(d,1+3*9000,3)
2 20000 b2 30000 dd2
update t1 set b=@b2,d=@d2 where c=111;
update t1 set b=@b1,d=@d1 where c=222;
commit;
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
from t1 where c=111;
a length(b) substr(b,1+2*9000,2) length(d) substr(d,1+3*9000,3)
1 20000 b2 30000 dd2
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where c=222;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
2 2256 b1 3000 dd1
update t1 set d=null where c=111;
commit;
select a from t1 where d is null;
a
1
delete from t1 where c=111;
delete from t1 where c=222;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,'b1',111,'dd1');
insert into t1 values(2,'b2',222,'dd2');
insert into t1 values(3,'b3',333,'dd3');
insert into t1 values(4,'b4',444,'dd4');
insert into t1 values(5,'b5',555,'dd5');
insert into t1 values(6,'b6',666,'dd6');
insert into t1 values(7,'b7',777,'dd7');
insert into t1 values(8,'b8',888,'dd8');
insert into t1 values(9,'b9',999,'dd9');
commit;
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 100
select * from t1 order by a;
a b c d
1 b1 111 dd1
2 b2 222 dd2
3 b3 333 dd3
4 b4 444 dd4
5 b5 555 dd5
6 b6 666 dd6
7 b7 777 dd7
8 b8 888 dd8
9 b9 999 dd9
update t1 set b=concat(a,'x',b),d=concat(a,'x',d);
commit;
select * from t1 order by a;
a b c d
1 1xb1 111 1xdd1
2 2xb2 222 2xdd2
3 3xb3 333 3xdd3
4 4xb4 444 4xdd4
5 5xb5 555 5xdd5
6 6xb6 666 6xdd6
7 7xb7 777 7xdd7
8 8xb8 888 8xdd8
9 9xb9 999 9xdd9
delete from t1;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,@b1,111,@d1);
insert into t1 values(2,@b2,222,@d2);
commit;
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 100
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 order by a;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
2 20000 b2 30000 dd2
update t1 set b=concat(b,b),d=concat(d,d);
commit;
select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
from t1 order by a;
a length(b) substr(b,1+4*9000,2) length(d) substr(d,1+6*9000,3)
1 4512 6000
2 40000 b2 60000 dd2
delete from t1;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,'b1',111,'dd1');
insert into t1 values(2,'b2',222,'dd2');
insert into t1 values(3,'b3',333,'dd3');
insert into t1 values(4,'b4',444,'dd4');
insert into t1 values(5,'b5',555,'dd5');
insert into t1 values(6,'b6',666,'dd6');
insert into t1 values(7,'b7',777,'dd7');
insert into t1 values(8,'b8',888,'dd8');
insert into t1 values(9,'b9',999,'dd9');
commit;
explain select * from t1 where c >= 100 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 4 NULL 10 Using where; Using filesort
select * from t1 where c >= 100 order by a;
a b c d
1 b1 111 dd1
2 b2 222 dd2
3 b3 333 dd3
4 b4 444 dd4
5 b5 555 dd5
6 b6 666 dd6
7 b7 777 dd7
8 b8 888 dd8
9 b9 999 dd9
update t1 set b=concat(a,'x',b),d=concat(a,'x',d)
where c >= 100;
commit;
select * from t1 where c >= 100 order by a;
a b c d
1 1xb1 111 1xdd1
2 2xb2 222 2xdd2
3 3xb3 333 3xdd3
4 4xb4 444 4xdd4
5 5xb5 555 5xdd5
6 6xb6 666 6xdd6
7 7xb7 777 7xdd7
8 8xb8 888 8xdd8
9 9xb9 999 9xdd9
delete from t1 where c >= 100;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,@b1,111,@d1);
insert into t1 values(2,@b2,222,@d2);
commit;
explain select * from t1 where c >= 100 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 4 NULL 10 Using where; Using filesort
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where c >= 100 order by a;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
2 20000 b2 30000 dd2
update t1 set b=concat(b,b),d=concat(d,d);
commit;
select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
from t1 where c >= 100 order by a;
a length(b) substr(b,1+4*9000,2) length(d) substr(d,1+6*9000,3)
1 4512 6000
2 40000 b2 60000 dd2
delete from t1 where c >= 100;
commit;
select count(*) from t1;
count(*)
0
insert into t1 values(1,@b1,111,@d1);
insert into t1 values(2,@b2,222,@d2);
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where a = 0;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where a = 1;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 where a = 2;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
2 20000 b2 30000 dd2
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
from t1 order by a;
a length(b) substr(b,1+2*900,2) length(d) substr(d,1+3*900,3)
1 2256 b1 3000 dd1
2 20000 b2 30000 dd2
rollback;
select count(*) from t1;
count(*)
0
mysql-test/t/ndb_blob.test
View file @
9c3dd2fb
--
source
include
/
have_ndb
.
inc
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
#
# Minimal NDB blobs test.
#
# On NDB API level there is an extensive test program "testBlobs".
# A prerequisite for this handler test is that "testBlobs" succeeds.
#
# make test harder with autocommit off
set
autocommit
=
0
;
create
table
t1
(
a
int
not
null
primary
key
,
b
text
not
null
,
c
int
not
null
,
d
longblob
,
key
(
c
)
)
engine
=
ndbcluster
;
# -- values --
# x0 size 256 (current inline size)
set
@
x0
=
'01234567012345670123456701234567'
;
set
@
x0
=
concat
(
@
x0
,
@
x0
,
@
x0
,
@
x0
,
@
x0
,
@
x0
,
@
x0
,
@
x0
);
# b1 length 2000+256 (blob part aligned)
set
@
b1
=
'b1'
;
set
@
b1
=
concat
(
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
);
set
@
b1
=
concat
(
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
);
set
@
b1
=
concat
(
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
,
@
b1
);
set
@
b1
=
concat
(
@
b1
,
@
x0
);
# d1 length 3000
set
@
d1
=
'dd1'
;
set
@
d1
=
concat
(
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
);
set
@
d1
=
concat
(
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
);
set
@
d1
=
concat
(
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
,
@
d1
);
# b2 length 20000
set
@
b2
=
'b2'
;
set
@
b2
=
concat
(
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
);
set
@
b2
=
concat
(
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
);
set
@
b2
=
concat
(
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
);
set
@
b2
=
concat
(
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
,
@
b2
);
# d2 length 30000
set
@
d2
=
'dd2'
;
set
@
d2
=
concat
(
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
);
set
@
d2
=
concat
(
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
);
set
@
d2
=
concat
(
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
);
set
@
d2
=
concat
(
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
,
@
d2
);
select
length
(
@
x0
),
length
(
@
b1
),
length
(
@
d1
)
from
dual
;
select
length
(
@
x0
),
length
(
@
b2
),
length
(
@
d2
)
from
dual
;
# -- pk ops --
insert
into
t1
values
(
1
,
@
b1
,
111
,
@
d1
);
insert
into
t1
values
(
2
,
@
b2
,
222
,
@
d2
);
commit
;
explain
select
*
from
t1
where
a
=
1
;
# pk read
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
a
=
1
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
9000
,
3
)
from
t1
where
a
=
2
;
# pk update
update
t1
set
b
=@
b2
,
d
=@
d2
where
a
=
1
;
update
t1
set
b
=@
b1
,
d
=@
d1
where
a
=
2
;
commit
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
9000
,
3
)
from
t1
where
a
=
1
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
a
=
2
;
# pk update
update
t1
set
b
=
concat
(
b
,
b
),
d
=
concat
(
d
,
d
)
where
a
=
1
;
update
t1
set
b
=
concat
(
b
,
b
),
d
=
concat
(
d
,
d
)
where
a
=
2
;
commit
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
4
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
6
*
9000
,
3
)
from
t1
where
a
=
1
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
4
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
6
*
900
,
3
)
from
t1
where
a
=
2
;
# pk update to null
update
t1
set
d
=
null
where
a
=
1
;
commit
;
select
a
from
t1
where
d
is
null
;
# pk delete
delete
from
t1
where
a
=
1
;
delete
from
t1
where
a
=
2
;
commit
;
select
count
(
*
)
from
t1
;
# -- hash index ops --
insert
into
t1
values
(
1
,
@
b1
,
111
,
@
d1
);
insert
into
t1
values
(
2
,
@
b2
,
222
,
@
d2
);
commit
;
explain
select
*
from
t1
where
c
=
111
;
# hash key read
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
c
=
111
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
9000
,
3
)
from
t1
where
c
=
222
;
# hash key update
update
t1
set
b
=@
b2
,
d
=@
d2
where
c
=
111
;
update
t1
set
b
=@
b1
,
d
=@
d1
where
c
=
222
;
commit
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
9000
,
3
)
from
t1
where
c
=
111
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
c
=
222
;
# hash key update to null
update
t1
set
d
=
null
where
c
=
111
;
commit
;
select
a
from
t1
where
d
is
null
;
# hash key delete
delete
from
t1
where
c
=
111
;
delete
from
t1
where
c
=
222
;
commit
;
select
count
(
*
)
from
t1
;
# -- table scan ops, short values --
insert
into
t1
values
(
1
,
'b1'
,
111
,
'dd1'
);
insert
into
t1
values
(
2
,
'b2'
,
222
,
'dd2'
);
insert
into
t1
values
(
3
,
'b3'
,
333
,
'dd3'
);
insert
into
t1
values
(
4
,
'b4'
,
444
,
'dd4'
);
insert
into
t1
values
(
5
,
'b5'
,
555
,
'dd5'
);
insert
into
t1
values
(
6
,
'b6'
,
666
,
'dd6'
);
insert
into
t1
values
(
7
,
'b7'
,
777
,
'dd7'
);
insert
into
t1
values
(
8
,
'b8'
,
888
,
'dd8'
);
insert
into
t1
values
(
9
,
'b9'
,
999
,
'dd9'
);
commit
;
explain
select
*
from
t1
;
# table scan read
select
*
from
t1
order
by
a
;
# table scan update
update
t1
set
b
=
concat
(
a
,
'x'
,
b
),
d
=
concat
(
a
,
'x'
,
d
);
commit
;
select
*
from
t1
order
by
a
;
# table scan delete
delete
from
t1
;
commit
;
select
count
(
*
)
from
t1
;
# -- table scan ops, long values --
insert
into
t1
values
(
1
,
@
b1
,
111
,
@
d1
);
insert
into
t1
values
(
2
,
@
b2
,
222
,
@
d2
);
commit
;
explain
select
*
from
t1
;
# table scan read
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
order
by
a
;
# table scan update
update
t1
set
b
=
concat
(
b
,
b
),
d
=
concat
(
d
,
d
);
commit
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
4
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
6
*
9000
,
3
)
from
t1
order
by
a
;
# table scan delete
delete
from
t1
;
commit
;
select
count
(
*
)
from
t1
;
# -- range scan ops, short values --
insert
into
t1
values
(
1
,
'b1'
,
111
,
'dd1'
);
insert
into
t1
values
(
2
,
'b2'
,
222
,
'dd2'
);
insert
into
t1
values
(
3
,
'b3'
,
333
,
'dd3'
);
insert
into
t1
values
(
4
,
'b4'
,
444
,
'dd4'
);
insert
into
t1
values
(
5
,
'b5'
,
555
,
'dd5'
);
insert
into
t1
values
(
6
,
'b6'
,
666
,
'dd6'
);
insert
into
t1
values
(
7
,
'b7'
,
777
,
'dd7'
);
insert
into
t1
values
(
8
,
'b8'
,
888
,
'dd8'
);
insert
into
t1
values
(
9
,
'b9'
,
999
,
'dd9'
);
commit
;
explain
select
*
from
t1
where
c
>=
100
order
by
a
;
# range scan read
select
*
from
t1
where
c
>=
100
order
by
a
;
# range scan update
update
t1
set
b
=
concat
(
a
,
'x'
,
b
),
d
=
concat
(
a
,
'x'
,
d
)
where
c
>=
100
;
commit
;
select
*
from
t1
where
c
>=
100
order
by
a
;
# range scan delete
delete
from
t1
where
c
>=
100
;
commit
;
select
count
(
*
)
from
t1
;
# -- range scan ops, long values --
insert
into
t1
values
(
1
,
@
b1
,
111
,
@
d1
);
insert
into
t1
values
(
2
,
@
b2
,
222
,
@
d2
);
commit
;
explain
select
*
from
t1
where
c
>=
100
order
by
a
;
# range scan read
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
c
>=
100
order
by
a
;
# range scan update
update
t1
set
b
=
concat
(
b
,
b
),
d
=
concat
(
d
,
d
);
commit
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
4
*
9000
,
2
),
length
(
d
),
substr
(
d
,
1
+
6
*
9000
,
3
)
from
t1
where
c
>=
100
order
by
a
;
# range scan delete
delete
from
t1
where
c
>=
100
;
commit
;
select
count
(
*
)
from
t1
;
# -- rollback --
insert
into
t1
values
(
1
,
@
b1
,
111
,
@
d1
);
insert
into
t1
values
(
2
,
@
b2
,
222
,
@
d2
);
# 626
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
a
=
0
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
a
=
1
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
where
a
=
2
;
select
a
,
length
(
b
),
substr
(
b
,
1
+
2
*
900
,
2
),
length
(
d
),
substr
(
d
,
1
+
3
*
900
,
3
)
from
t1
order
by
a
;
rollback
;
select
count
(
*
)
from
t1
;
--
drop
table
t1
;
sql/ha_ndbcluster.cc
View file @
9c3dd2fb
This diff is collapsed.
Click to expand it.
sql/ha_ndbcluster.h
View file @
9c3dd2fb
...
...
@@ -35,6 +35,7 @@ class NdbRecAttr; // Forward declaration
class
NdbResultSet
;
// Forward declaration
class
NdbScanOperation
;
class
NdbIndexScanOperation
;
class
NdbBlob
;
typedef
enum
ndb_index_type
{
UNDEFINED_INDEX
=
0
,
...
...
@@ -171,6 +172,7 @@ class ha_ndbcluster: public handler
enum
ha_rkey_function
find_flag
);
int
close_scan
();
void
unpack_record
(
byte
*
buf
);
int
get_ndb_lock_type
(
enum
thr_lock_type
type
);
void
set_dbname
(
const
char
*
pathname
);
void
set_tabname
(
const
char
*
pathname
);
...
...
@@ -181,7 +183,9 @@ class ha_ndbcluster: public handler
int
set_ndb_key
(
NdbOperation
*
,
Field
*
field
,
uint
fieldnr
,
const
byte
*
field_ptr
);
int
set_ndb_value
(
NdbOperation
*
,
Field
*
field
,
uint
fieldnr
);
int
get_ndb_value
(
NdbOperation
*
,
uint
fieldnr
,
byte
*
field_ptr
);
int
get_ndb_value
(
NdbOperation
*
,
Field
*
field
,
uint
fieldnr
);
friend
int
::
get_ndb_blobs_value
(
NdbBlob
*
ndb_blob
,
void
*
arg
);
int
get_ndb_blobs_value
(
NdbBlob
*
last_ndb_blob
);
int
set_primary_key
(
NdbOperation
*
op
,
const
byte
*
key
);
int
set_primary_key
(
NdbOperation
*
op
);
int
set_primary_key_from_old_data
(
NdbOperation
*
op
,
const
byte
*
old_data
);
...
...
@@ -191,8 +195,8 @@ class ha_ndbcluster: public handler
void
print_results
();
longlong
get_auto_increment
();
int
ndb_err
(
NdbConnection
*
);
bool
uses_blob_value
(
bool
all_fields
);
private:
int
check_ndb_connection
();
...
...
@@ -209,13 +213,19 @@ class ha_ndbcluster: public handler
NDB_SHARE
*
m_share
;
NDB_INDEX_TYPE
m_indextype
[
MAX_KEY
];
const
char
*
m_unique_index_name
[
MAX_KEY
];
NdbRecAttr
*
m_value
[
NDB_MAX_ATTRIBUTES_IN_TABLE
];
// NdbRecAttr has no reference to blob
typedef
union
{
NdbRecAttr
*
rec
;
NdbBlob
*
blob
;
void
*
ptr
;
}
NdbValue
;
NdbValue
m_value
[
NDB_MAX_ATTRIBUTES_IN_TABLE
];
bool
m_use_write
;
bool
retrieve_all_fields
;
ha_rows
rows_to_insert
;
ha_rows
rows_inserted
;
ha_rows
bulk_insert_rows
;
ha_rows
ops_pending
;
bool
blobs_pending
;
// memory for blobs in one tuple
char
*
blobs_buffer
;
uint32
blobs_buffer_size
;
};
bool
ndbcluster_init
(
void
);
...
...
@@ -231,10 +241,3 @@ int ndbcluster_discover(const char* dbname, const char* name,
int
ndbcluster_drop_database
(
const
char
*
path
);
void
ndbcluster_print_error
(
int
error
,
const
NdbOperation
*
error_op
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment