ndb_blob.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:11k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. --source include/have_ndb.inc
  2. -- source include/not_embedded.inc
  3. --disable_warnings
  4. drop table if exists t1;
  5. drop database if exists test2;
  6. --enable_warnings
  7. #
  8. # Minimal NDB blobs test.
  9. #
  10. # On NDB API level there is an extensive test program "testBlobs".
  11. # A prerequisite for this handler test is that "testBlobs" succeeds.
  12. #
  13. # -- general test starts --
  14. # make test harder with autocommit off
  15. set autocommit=0;
  16. create table t1 (
  17.   a int not null primary key,
  18.   b text not null,
  19.   c int not null,
  20.   d longblob,
  21.   key (c)
  22. ) engine=ndbcluster;
  23. # -- values --
  24. # x0 size 256 (current inline size)
  25. set @x0 = '01234567012345670123456701234567';
  26. set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
  27. # b1 length 2000+256 (blob part aligned)
  28. set @b1 = 'b1';
  29. set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
  30. set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
  31. set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
  32. set @b1 = concat(@b1,@x0);
  33. # d1 length 3000
  34. set @d1 = 'dd1';
  35. set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
  36. set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
  37. set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
  38. # b2 length 20000
  39. set @b2 = 'b2';
  40. set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
  41. set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
  42. set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
  43. set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
  44. # d2 length 30000
  45. set @d2 = 'dd2';
  46. set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
  47. set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
  48. set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
  49. set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
  50. select length(@x0),length(@b1),length(@d1) from dual;
  51. select length(@x0),length(@b2),length(@d2) from dual;
  52. # -- pk ops --
  53. insert into t1 values(1,@b1,111,@d1);
  54. insert into t1 values(2,@b2,222,@d2);
  55. commit;
  56. explain select * from t1 where a = 1;
  57. # pk read
  58. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  59. from t1 where a=1;
  60. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  61. from t1 where a=2;
  62. # pk update
  63. update t1 set b=@b2,d=@d2 where a=1;
  64. update t1 set b=@b1,d=@d1 where a=2;
  65. commit;
  66. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  67. from t1 where a=1;
  68. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  69. from t1 where a=2;
  70. # pk update
  71. update t1 set b=concat(b,b),d=concat(d,d) where a=1;
  72. update t1 set b=concat(b,b),d=concat(d,d) where a=2;
  73. commit;
  74. select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
  75. from t1 where a=1;
  76. select a,length(b),substr(b,1+4*900,2),length(d),substr(d,1+6*900,3)
  77. from t1 where a=2;
  78. # pk update to null
  79. update t1 set d=null where a=1;
  80. commit;
  81. select a from t1 where d is null;
  82. # pk delete
  83. delete from t1 where a=1;
  84. delete from t1 where a=2;
  85. commit;
  86. select count(*) from t1;
  87. # -- replace ( bug-6018 ) --
  88. # insert
  89. replace t1 set a=1,b=@b1,c=111,d=@d1;
  90. replace t1 set a=2,b=@b2,c=222,d=@d2;
  91. commit;
  92. explain select * from t1 where a = 1;
  93. # pk read
  94. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  95. from t1 where a=1;
  96. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  97. from t1 where a=2;
  98. # update
  99. replace t1 set a=1,b=@b2,c=111,d=@d2;
  100. replace t1 set a=2,b=@b1,c=222,d=@d1;
  101. commit;
  102. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  103. from t1 where a=1;
  104. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  105. from t1 where a=2;
  106. # update
  107. replace t1 set a=1,b=concat(@b2,@b2),c=111,d=concat(@d2,@d2);
  108. replace t1 set a=2,b=concat(@b1,@b1),c=222,d=concat(@d1,@d1);
  109. commit;
  110. select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
  111. from t1 where a=1;
  112. select a,length(b),substr(b,1+4*900,2),length(d),substr(d,1+6*900,3)
  113. from t1 where a=2;
  114. # update to null
  115. replace t1 set a=1,b='xyz',c=111,d=null;
  116. commit;
  117. select a,b from t1 where d is null;
  118. # pk delete
  119. delete from t1 where a=1;
  120. delete from t1 where a=2;
  121. commit;
  122. select count(*) from t1;
  123. # -- hash index ops --
  124. insert into t1 values(1,@b1,111,@d1);
  125. insert into t1 values(2,@b2,222,@d2);
  126. commit;
  127. explain select * from t1 where c = 111;
  128. # hash key read
  129. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  130. from t1 where c=111;
  131. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  132. from t1 where c=222;
  133. # hash key update
  134. update t1 set b=@b2,d=@d2 where c=111;
  135. update t1 set b=@b1,d=@d1 where c=222;
  136. commit;
  137. select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
  138. from t1 where c=111;
  139. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  140. from t1 where c=222;
  141. # hash key update to null
  142. update t1 set d=null where c=111;
  143. commit;
  144. select a from t1 where d is null;
  145. # hash key delete
  146. delete from t1 where c=111;
  147. delete from t1 where c=222;
  148. commit;
  149. select count(*) from t1;
  150. # -- table scan ops, short values --
  151. insert into t1 values(1,'b1',111,'dd1');
  152. insert into t1 values(2,'b2',222,'dd2');
  153. insert into t1 values(3,'b3',333,'dd3');
  154. insert into t1 values(4,'b4',444,'dd4');
  155. insert into t1 values(5,'b5',555,'dd5');
  156. insert into t1 values(6,'b6',666,'dd6');
  157. insert into t1 values(7,'b7',777,'dd7');
  158. insert into t1 values(8,'b8',888,'dd8');
  159. insert into t1 values(9,'b9',999,'dd9');
  160. commit;
  161. explain select * from t1;
  162. # table scan read
  163. select * from t1 order by a;
  164. # table scan update
  165. update t1 set b=concat(a,'x',b),d=concat(a,'x',d);
  166. commit;
  167. select * from t1 order by a;
  168. # table scan delete
  169. delete from t1;
  170. commit;
  171. select count(*) from t1;
  172. # -- table scan ops, long values --
  173. insert into t1 values(1,@b1,111,@d1);
  174. insert into t1 values(2,@b2,222,@d2);
  175. commit;
  176. explain select * from t1;
  177. # table scan read
  178. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  179. from t1 order by a;
  180. # table scan update
  181. update t1 set b=concat(b,b),d=concat(d,d);
  182. commit;
  183. select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
  184. from t1 order by a;
  185. # table scan delete
  186. delete from t1;
  187. commit;
  188. select count(*) from t1;
  189. # -- range scan ops, short values --
  190. insert into t1 values(1,'b1',111,'dd1');
  191. insert into t1 values(2,'b2',222,'dd2');
  192. insert into t1 values(3,'b3',333,'dd3');
  193. insert into t1 values(4,'b4',444,'dd4');
  194. insert into t1 values(5,'b5',555,'dd5');
  195. insert into t1 values(6,'b6',666,'dd6');
  196. insert into t1 values(7,'b7',777,'dd7');
  197. insert into t1 values(8,'b8',888,'dd8');
  198. insert into t1 values(9,'b9',999,'dd9');
  199. commit;
  200. explain select * from t1 where c >= 100 order by a;
  201. # range scan read
  202. select * from t1 where c >= 100 order by a;
  203. # range scan update
  204. update t1 set b=concat(a,'x',b),d=concat(a,'x',d)
  205. where c >= 100;
  206. commit;
  207. select * from t1 where c >= 100 order by a;
  208. # range scan delete
  209. delete from t1 where c >= 100;
  210. commit;
  211. select count(*) from t1;
  212. # -- range scan ops, long values --
  213. insert into t1 values(1,@b1,111,@d1);
  214. insert into t1 values(2,@b2,222,@d2);
  215. commit;
  216. explain select * from t1 where c >= 100 order by a;
  217. # range scan read
  218. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  219. from t1 where c >= 100 order by a;
  220. # range scan update
  221. update t1 set b=concat(b,b),d=concat(d,d);
  222. commit;
  223. select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
  224. from t1 where c >= 100 order by a;
  225. # range scan delete
  226. delete from t1 where c >= 100;
  227. commit;
  228. select count(*) from t1;
  229. # -- rollback --
  230. insert into t1 values(1,@b1,111,@d1);
  231. insert into t1 values(2,@b2,222,@d2);
  232. # 626
  233. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  234. from t1 where a = 0;
  235. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  236. from t1 where a = 1;
  237. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  238. from t1 where a = 2;
  239. select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
  240. from t1 order by a;
  241. rollback;
  242. select count(*) from t1;
  243. # -- alter table and multi db --
  244. insert into t1 values(1,'b1',111,'dd1');
  245. insert into t1 values(2,'b2',222,'dd2');
  246. insert into t1 values(3,'b3',333,'dd3');
  247. insert into t1 values(4,'b4',444,'dd4');
  248. insert into t1 values(5,'b5',555,'dd5');
  249. insert into t1 values(6,'b6',666,'dd6');
  250. insert into t1 values(7,'b7',777,'dd7');
  251. insert into t1 values(8,'b8',888,'dd8');
  252. insert into t1 values(9,'b9',999,'dd9');
  253. commit;
  254. select * from t1 order by a;
  255. alter table t1 add x int;
  256. select * from t1 order by a;
  257. alter table t1 drop x;
  258. select * from t1 order by a;
  259. create database test2;
  260. use test2;
  261. CREATE TABLE t2 (
  262.   a bigint unsigned NOT NULL PRIMARY KEY,
  263.   b int unsigned not null,
  264.   c int unsigned
  265. ) engine=ndbcluster;
  266. insert into t2 values (1,1,1),(2,2,2);
  267. select * from test.t1,t2 where test.t1.a = t2.a order by test.t1.a;
  268. drop table t2;
  269. use test;
  270. select * from t1 order by a;
  271. alter table t1 add x int;
  272. select * from t1 order by a;
  273. alter table t1 drop x;
  274. select * from t1 order by a;
  275. # -- end general test --
  276. drop table t1;
  277. drop database test2;
  278. # -- bug-5252 tinytext crashes plus no-commit result --
  279. set autocommit=0;
  280. create table t1 (
  281.   a int not null primary key,
  282.   b tinytext
  283. ) engine=ndbcluster;
  284. insert into t1 values(1, 'x');
  285. update t1 set b = 'y';
  286. select * from t1;
  287. delete from t1;
  288. select * from t1;
  289. commit;
  290. drop table t1;
  291. # -- bug-5013 insert empty string to text --
  292. set autocommit=0;
  293. create table t1 (
  294.   a int not null primary key,
  295.   b text not null
  296. ) engine=ndbcluster;
  297. insert into t1 values(1, '');
  298. select * from t1;
  299. commit;
  300. drop table t1;
  301. # -- bug #5349 --
  302. set autocommit=1;
  303. use test;
  304. CREATE TABLE t1 (
  305.   a int,
  306.   b text,
  307.   PRIMARY KEY  (a)
  308. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  309.  
  310. INSERT INTO t1 VALUES 
  311. (1,'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
  312. INSERT INTO t1 VALUES 
  313. (2,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
  314. select * from t1 order by a;
  315. alter table t1 engine=ndb;
  316. select * from t1 order by a;
  317. # -- bug #5872 --
  318. set autocommit=1;
  319. alter table t1 engine=myisam;
  320. select * from t1 order by a;
  321. drop table t1;
  322. # -- bug #7340 --
  323. create table t1 (
  324.   id int(11) unsigned primary key NOT NULL auto_increment,
  325.   msg text NOT NULL
  326. ) engine=ndbcluster default charset=utf8;
  327. insert into t1 (msg) values(
  328. 'Tries to validate (8 byte length + inline bytes) as UTF8 :(
  329. Fast fix: removed validation for Text.  It is not yet indexable
  330. so bad data will not crash kernel.
  331. Proper fix: Set inline bytes to multiple of mbmaxlen and
  332. validate it (after the 8 byte length).');
  333. select * from t1;
  334. drop table t1;
  335. # End of 4.1 tests