ndb_index_ordered.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, test1, test2;
  5. --enable_warnings
  6. #
  7. # Simple test to show use of ordered indexes 
  8. #
  9. CREATE TABLE t1 (
  10.   a int unsigned NOT NULL PRIMARY KEY,
  11.   b int unsigned not null,
  12.   c int unsigned,
  13.   KEY(b)
  14. ) engine=ndbcluster;
  15. insert t1 values(1, 2, 3), (2,3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
  16. select * from t1 order by b;
  17. select * from t1 where b >= 4 order by b;
  18. select * from t1 where b = 4 order by b;
  19. select * from t1 where b > 4 order by b;
  20. select * from t1 where b < 4 order by b;
  21. select * from t1 where b <= 4 order by b;
  22. # Test of reset_bounds
  23. select tt1.* from t1 as tt1, t1 as tt2 use index(b) where tt1.b = tt2.b order by tt1.b;
  24. select a, b, c from t1 where a!=2 and c=6;
  25. select a, b, c from t1 where a!=2 order by a;
  26. #
  27. # Here we should add some "explain select" to verify that the ordered index is 
  28. # used for these queries.
  29. #
  30. #
  31. # Update using ordered index scan
  32. #
  33. update t1 set c = 3 where b = 3;
  34. select * from t1 order by a;
  35. update t1 set c = 10 where b >= 6;
  36. select * from t1 order by a;
  37. update t1 set c = 11 where b < 5;
  38. select * from t1 order by a;
  39. update t1 set c = 12 where b > 0;
  40. select * from t1 order by a;
  41. update t1 set c = 13 where b <= 3;
  42. select * from t1 order by a;
  43. update t1 set b = b + 1 where b > 4 and b < 7;
  44. select * from t1 order by a;
  45. -- Update primary key
  46. update t1 set a = a + 10 where b > 1 and b < 7;
  47. select * from t1 order by a;
  48. #
  49. # Delete using ordered index scan
  50. #
  51. drop table t1;
  52. CREATE TABLE t1 (
  53.   a int unsigned NOT NULL PRIMARY KEY,
  54.   b int unsigned not null,
  55.   c int unsigned,
  56.   KEY(b)
  57. ) engine=ndbcluster;
  58. insert t1 values(1, 2, 13), (2,3, 13), (3, 4, 12), (4, 5, 12), (5,6, 12), (6,7, 12);
  59. delete from t1 where b = 3;
  60. select * from t1 order by a;
  61. delete from t1 where b >= 6;
  62. select * from t1 order by a;
  63. delete from t1 where b < 4;
  64. select * from t1 order by a;
  65. delete from t1 where b > 5;
  66. select * from t1 order by a;
  67. delete from t1 where b <= 4;
  68. select * from t1 order by a;
  69. drop table t1;
  70. #
  71. #multi part key
  72. #
  73. CREATE TABLE t1 (
  74.   a int unsigned NOT NULL PRIMARY KEY,
  75.   b int unsigned not null,
  76.   c int unsigned not null
  77. ) engine = ndb;
  78. create index a1 on t1 (b, c);
  79. insert into t1 values (1, 2, 13);
  80. insert into t1 values (2,3, 13);
  81. insert into t1 values (3, 4, 12);
  82. insert into t1 values (4, 5, 12);
  83. insert into t1 values (5,6, 12);
  84. insert into t1 values (6,7, 12);
  85. insert into t1 values (7, 2, 1);
  86. insert into t1 values (8,3, 6);
  87. insert into t1 values (9, 4, 12);
  88. insert into t1 values (14, 5, 4);
  89. insert into t1 values (15,5,5);
  90. insert into t1 values (16,5, 6);
  91. insert into t1 values (17,4,4);
  92. insert into t1 values (18,1, 7);
  93. select * from t1 order by a;
  94. select * from t1 where b<=5 order by a;
  95. select * from t1 where b<=5 and c=0;
  96. insert into t1 values (19,4, 0);
  97. select * from t1 where b<=5 and c=0;
  98. select * from t1 where b=4 and c<=5 order by a;
  99. select * from t1 where b<=4 and c<=5 order by a;
  100. select * from t1 where b<=5 and c=0 or b<=5 and c=2;
  101. select count(*) from t1 where b = 0;
  102. select count(*) from t1 where b = 1;
  103. drop table t1;
  104. #
  105. # Indexing NULL values
  106. #
  107. CREATE TABLE t1 (
  108.   a int unsigned NOT NULL PRIMARY KEY,
  109.   b int unsigned,
  110.   c int unsigned,
  111.   KEY bc(b,c)
  112. ) engine = ndb;
  113. insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
  114. select * from t1 use index (bc) where b IS NULL order by a;
  115. select * from t1 use index (bc)order by a;
  116. select * from t1 use index (bc) order by a;
  117. select * from t1 use index (PRIMARY) where b IS NULL order by a;
  118. select * from t1 use index (bc) where b IS NULL order by a;
  119. select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
  120. select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
  121. select * from t1 use index (bc) where b < 4 order by a;
  122. select * from t1 use index (bc) where b IS NOT NULL order by a;
  123. drop table t1;
  124. #
  125. # Bug #6435
  126. CREATE TABLE test1 (
  127. SubscrID int(11) NOT NULL auto_increment,
  128. UsrID int(11) NOT NULL default '0',
  129. PRIMARY KEY  (SubscrID),
  130. KEY idx_usrid (UsrID)
  131. ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
  132. INSERT INTO test1 VALUES (2,224),(3,224),(1,224);
  133. CREATE TABLE test2 (
  134. SbclID int(11) NOT NULL auto_increment,
  135. SbcrID int(11) NOT NULL default '0',
  136. PRIMARY KEY  (SbclID),
  137. KEY idx_sbcrid (SbcrID)
  138. ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
  139. INSERT INTO test2 VALUES (3,2),(1,1),(2,1),(4,2);
  140. select * from test1 order by 1;
  141. select * from test2 order by 1;
  142. SELECT s.SubscrID,l.SbclID FROM test1 s left JOIN test2 l ON
  143. l.SbcrID=s.SubscrID WHERE s.UsrID=224 order by 1, 2;
  144. drop table test1;
  145. drop table test2;
  146. # bug#7424 + bug#7725
  147. create table t1 (
  148.   pk int primary key,
  149.   dt datetime not null,
  150.   da date not null,
  151.   ye year not null,
  152.   ti time not null,
  153.   ts timestamp not null,
  154.   index(dt),
  155.   index(da),
  156.   index(ye),
  157.   index(ti),
  158.   index(ts)
  159. ) engine=ndb;
  160. insert into t1 (pk,dt,da,ye,ti,ts) values
  161.   (1, '1901-05-05 23:00:59', '1901-05-05', '1901', '23:00:59', '2001-01-01 23:00:59'),
  162.   (2, '1912-09-05 13:00:59', '1912-09-05', '1912', '13:00:59', '2001-01-01 13:00:59'),
  163.   (3, '1945-12-31 00:00:00', '1945-12-31', '1945', '00:00:00', '2001-01-01 00:00:00'),
  164.   (4, '1955-12-31 00:00:00', '1955-12-31', '1955', '00:00:00', '2001-01-01 00:00:00'),
  165.   (5, '1963-06-06 06:06:06', '1963-06-06', '1963', '06:06:06', '2001-01-01 06:06:06'),
  166.   (6, '1993-06-06 06:06:06', '1993-06-06', '1993', '06:06:06', '2001-01-01 06:06:06'),
  167.   (7, '2001-01-01 10:11:10', '2001-01-01', '2001', '10:11:10', '2001-01-01 10:11:10'),
  168.   (8, '2001-01-01 10:11:11', '2001-01-01', '2001', '10:11:11', '2001-01-01 10:11:11'),
  169.   (9, '2005-01-31 23:59:59', '2005-01-31', '2005', '23:59:59', '2001-01-01 23:59:59');
  170. # datetime
  171. select count(*)-9 from t1 use index (dt) where dt >  '1900-01-01 00:00:00';
  172. select count(*)-6 from t1 use index (dt) where dt >= '1955-12-31 00:00:00';
  173. select count(*)-5 from t1 use index (dt) where dt >  '1955-12-31 00:00:00';
  174. select count(*)-5 from t1 use index (dt) where dt <  '1970-03-03 22:22:22';
  175. select count(*)-7 from t1 use index (dt) where dt <  '2001-01-01 10:11:11';
  176. select count(*)-8 from t1 use index (dt) where dt <= '2001-01-01 10:11:11';
  177. select count(*)-9 from t1 use index (dt) where dt <= '2055-01-01 00:00:00';
  178. # date
  179. select count(*)-9 from t1 use index (da) where da >  '1900-01-01';
  180. select count(*)-6 from t1 use index (da) where da >= '1955-12-31';
  181. select count(*)-5 from t1 use index (da) where da >  '1955-12-31';
  182. select count(*)-5 from t1 use index (da) where da <  '1970-03-03';
  183. select count(*)-6 from t1 use index (da) where da <  '2001-01-01';
  184. select count(*)-8 from t1 use index (da) where da <= '2001-01-02';
  185. select count(*)-9 from t1 use index (da) where da <= '2055-01-01';
  186. # year
  187. select count(*)-9 from t1 use index (ye) where ye >  '1900';
  188. select count(*)-6 from t1 use index (ye) where ye >= '1955';
  189. select count(*)-5 from t1 use index (ye) where ye >  '1955';
  190. select count(*)-5 from t1 use index (ye) where ye <  '1970';
  191. select count(*)-6 from t1 use index (ye) where ye <  '2001';
  192. select count(*)-8 from t1 use index (ye) where ye <= '2001';
  193. select count(*)-9 from t1 use index (ye) where ye <= '2055';
  194. # time
  195. select count(*)-9 from t1 use index (ti) where ti >= '00:00:00';
  196. select count(*)-7 from t1 use index (ti) where ti >  '00:00:00';
  197. select count(*)-7 from t1 use index (ti) where ti >  '05:05:05';
  198. select count(*)-5 from t1 use index (ti) where ti >  '06:06:06';
  199. select count(*)-5 from t1 use index (ti) where ti <  '10:11:11';
  200. select count(*)-6 from t1 use index (ti) where ti <= '10:11:11';
  201. select count(*)-8 from t1 use index (ti) where ti <  '23:59:59';
  202. select count(*)-9 from t1 use index (ti) where ti <= '23:59:59';
  203. # timestamp
  204. select count(*)-9 from t1 use index (ts) where ts >= '2001-01-01 00:00:00';
  205. select count(*)-7 from t1 use index (ts) where ts >  '2001-01-01 00:00:00';
  206. select count(*)-7 from t1 use index (ts) where ts >  '2001-01-01 05:05:05';
  207. select count(*)-5 from t1 use index (ts) where ts >  '2001-01-01 06:06:06';
  208. select count(*)-5 from t1 use index (ts) where ts <  '2001-01-01 10:11:11';
  209. select count(*)-6 from t1 use index (ts) where ts <= '2001-01-01 10:11:11';
  210. select count(*)-8 from t1 use index (ts) where ts <  '2001-01-01 23:59:59';
  211. select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
  212. drop table t1;
  213. # decimal (not the new 5.0 thing)
  214. create table t1 (
  215.   a int primary key,
  216.   s decimal(12),
  217.   t decimal(12, 5),
  218.   u decimal(12) unsigned,
  219.   v decimal(12, 5) unsigned,
  220.   key (s),
  221.   key (t),
  222.   key (u),
  223.   key (v)
  224. ) engine=ndb;
  225. #
  226. insert into t1 values
  227.   ( 0, -000000000007, -0000061.00003,  000000000061,  0000965.00042),
  228.   ( 1, -000000000007, -0000061.00042,  000000000061,  0000965.00003),
  229.   ( 2, -071006035767,  4210253.00024,  000000000001,  0000001.84488),
  230.   ( 3,  000000007115,  0000000.77607,  000077350625,  0000018.00013),
  231.   ( 4, -000000068391, -0346486.00000,  000000005071,  0005334.00002),
  232.   ( 5, -521579890459, -1936874.00001,  000000000154,  0000003.00018),
  233.   ( 6, -521579890459, -1936874.00018,  000000000154,  0000003.00001),
  234.   ( 7,  000000000333,  0000051.39140,  000000907958,  0788643.08374),
  235.   ( 8,  000042731229,  0000009.00000,  000000000009,  6428667.00000),
  236.   ( 9, -000008159769,  0000918.00004,  000096951421,  7607730.00008);
  237. #
  238. select count(*)- 5 from t1 use index (s) where s  < -000000000007;
  239. select count(*)- 7 from t1 use index (s) where s <= -000000000007;
  240. select count(*)- 2 from t1 use index (s) where s  = -000000000007;
  241. select count(*)- 5 from t1 use index (s) where s >= -000000000007;
  242. select count(*)- 3 from t1 use index (s) where s  > -000000000007;
  243. #
  244. select count(*)- 4 from t1 use index (t) where t  < -0000061.00003;
  245. select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
  246. select count(*)- 1 from t1 use index (t) where t  = -0000061.00003;
  247. select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
  248. select count(*)- 5 from t1 use index (t) where t  > -0000061.00003;
  249. #
  250. select count(*)- 2 from t1 use index (u) where u  <  000000000061;
  251. select count(*)- 4 from t1 use index (u) where u <=  000000000061;
  252. select count(*)- 2 from t1 use index (u) where u  =  000000000061;
  253. select count(*)- 8 from t1 use index (u) where u >=  000000000061;
  254. select count(*)- 6 from t1 use index (u) where u  >  000000000061;
  255. #
  256. select count(*)- 5 from t1 use index (v) where v  <  0000965.00042;
  257. select count(*)- 6 from t1 use index (v) where v <=  0000965.00042;
  258. select count(*)- 1 from t1 use index (v) where v  =  0000965.00042;
  259. select count(*)- 5 from t1 use index (v) where v >=  0000965.00042;
  260. select count(*)- 4 from t1 use index (v) where v  >  0000965.00042;
  261. drop table t1;
  262. # bug#7798
  263. create table t1(a int primary key, b int not null, index(b));
  264. insert into t1 values (1,1), (2,2);
  265. connect (con1,localhost,,,test);
  266. connect (con2,localhost,,,test);
  267. connection con1;
  268. set autocommit=0;
  269. begin;
  270. select count(*) from t1;
  271. connection con2;
  272. ALTER TABLE t1 ADD COLUMN c int;
  273. connection con1;
  274. select a from t1 where b = 2;
  275. show tables;
  276. drop table t1;
  277. # End of 4.1 tests