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

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # Test of heap tables.
  3. #
  4. --disable_warnings
  5. drop table if exists t1;
  6. --enable_warnings
  7. create table t1 (a int not null,b int not null, primary key (a)) engine=heap comment="testing heaps" avg_row_length=100 min_rows=1 max_rows=100;
  8. insert into t1 values(1,1),(2,2),(3,3),(4,4);
  9. delete from t1 where a=1 or a=0;
  10. #show table status like "t1";
  11. show keys from t1;
  12. select * from t1;
  13. select * from t1 where a=4;
  14. update t1 set b=5 where a=4;
  15. update t1 set b=b+1 where a>=3;
  16. replace t1 values (3,3);
  17. select * from t1;
  18. alter table t1 add c int not null, add key (c,a);
  19. drop table t1;
  20. create table t1 (a int not null,b int not null, primary key (a)) engine=memory comment="testing heaps";
  21. insert into t1 values(1,1),(2,2),(3,3),(4,4);
  22. delete from t1 where a > 0;
  23. select * from t1;
  24. drop table t1;
  25. create table t1 (a int not null,b int not null, primary key (a)) engine=heap comment="testing heaps";
  26. insert into t1 values(1,1),(2,2),(3,3),(4,4);
  27. alter table t1 modify a int not null auto_increment, engine=myisam, comment="new myisam table";
  28. #show table status like "t1";
  29. select * from t1;
  30. drop table t1;
  31. create table t1 (a int not null) engine=heap;
  32. insert into t1 values (869751),(736494),(226312),(802616);
  33. select * from t1 where a > 736494;
  34. alter table t1 add unique uniq_id(a);
  35. select * from t1 where a > 736494;
  36. select * from t1 where a = 736494;
  37. select * from t1 where a=869751 or a=736494;
  38. select * from t1 where a in (869751,736494,226312,802616);
  39. alter table t1 engine=myisam;
  40. explain select * from t1 where a in (869751,736494,226312,802616);
  41. drop table t1;
  42. create table t1 (x int not null, y int not null, key x (x), unique y (y))
  43. engine=heap;
  44. insert into t1 values (1,1),(2,2),(1,3),(2,4),(2,5),(2,6);
  45. select * from t1 where x=1;
  46. select * from t1,t1 as t2 where t1.x=t2.y;
  47. explain select * from t1,t1 as t2 where t1.x=t2.y;
  48. drop table t1;
  49. create table t1 (a int) engine=heap;
  50. insert into t1 values(1);
  51. select max(a) from t1;
  52. drop table t1;
  53. CREATE TABLE t1 ( a int not null default 0, b int not null default 0,  key(a),  key(b)  ) ENGINE=HEAP;
  54. insert into t1 values(1,1),(1,2),(2,3),(1,3),(1,4),(1,5),(1,6);
  55. select * from t1 where a=1; 
  56. insert into t1 values(1,1),(1,2),(2,3),(1,3),(1,4),(1,5),(1,6);
  57. select * from t1 where a=1;
  58. drop table t1;
  59. create table t1 (id int unsigned not null, primary key (id)) engine=HEAP;
  60. insert into t1 values(1);
  61. select max(id) from t1; 
  62. insert into t1 values(2);
  63. select max(id) from t1; 
  64. replace into t1 values(1);
  65. drop table t1;
  66. create table t1 (n int) engine=heap;
  67. drop table t1;
  68. create table t1 (n int) engine=heap;
  69. drop table if exists t1;
  70. # Test of non unique index
  71. CREATE table t1(f1 int not null,f2 char(20) not 
  72. null,index(f2)) engine=heap;
  73. INSERT into t1 set f1=12,f2="bill";
  74. INSERT into t1 set f1=13,f2="bill";
  75. INSERT into t1 set f1=14,f2="bill";
  76. INSERT into t1 set f1=15,f2="bill";
  77. INSERT into t1 set f1=16,f2="ted";
  78. INSERT into t1 set f1=12,f2="ted";
  79. INSERT into t1 set f1=12,f2="ted";
  80. INSERT into t1 set f1=12,f2="ted";
  81. INSERT into t1 set f1=12,f2="ted";
  82. delete from t1 where f2="bill";
  83. select * from t1;
  84. drop table t1;
  85. #
  86. # Test when using part key searches
  87. #
  88. create table t1 (btn char(10) not null, key(btn)) engine=heap;
  89. insert into t1 values ("hello"),("hello"),("hello"),("hello"),("hello"),("a"),("b"),("c"),("d"),("e"),("f"),("g"),("h"),("i");
  90. explain select * from t1 where btn like "q%";
  91. select * from t1 where btn like "q%";
  92. alter table t1 add column new_col char(1) not null, add key (btn,new_col), drop key btn;
  93. update t1 set new_col=left(btn,1);
  94. explain select * from t1 where btn="a";
  95. explain select * from t1 where btn="a" and new_col="a";
  96. drop table t1;
  97. #
  98. # Test of NULL keys
  99. #
  100. CREATE TABLE t1 (
  101.   a int default NULL,
  102.   b int default NULL,
  103.   KEY a (a),
  104.   UNIQUE b (b)
  105. ) engine=heap;
  106. INSERT INTO t1 VALUES (NULL,99),(99,NULL),(1,1),(2,2),(1,3);
  107. SELECT * FROM t1 WHERE a=NULL;
  108. explain SELECT * FROM t1 WHERE a IS NULL;
  109. SELECT * FROM t1 WHERE a<=>NULL;
  110. SELECT * FROM t1 WHERE b=NULL;
  111. explain SELECT * FROM t1 WHERE b IS NULL;
  112. SELECT * FROM t1 WHERE b<=>NULL;
  113. --error 1062
  114. INSERT INTO t1 VALUES (1,3);
  115. DROP TABLE t1;
  116. CREATE TABLE t1 (
  117.   a int default NULL,
  118.   key a (a)
  119. ) ENGINE=HEAP;
  120. INSERT INTO t1 VALUES (10), (10), (10);
  121. EXPLAIN SELECT * FROM t1 WHERE a=10;
  122. SELECT * FROM t1 WHERE a=10;
  123. DROP TABLE t1;
  124. #
  125. # Test when deleting all rows
  126. #
  127. CREATE TABLE t1 (a int not null, primary key(a)) engine=heap;
  128. INSERT into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11);
  129. DELETE from t1 where a < 100;
  130. SELECT * from t1;
  131. DROP TABLE t1;
  132. #
  133. # Bug#4411 Server hangs when trying to SELECT MAX(id) from an empty HEAP table
  134. #
  135. CREATE TABLE `job_titles` (
  136.   `job_title_id` int(6) unsigned NOT NULL default '0',
  137.   `job_title` char(18) NOT NULL default '',
  138.   PRIMARY KEY  (`job_title_id`),
  139.   UNIQUE KEY `job_title_id` (`job_title_id`,`job_title`)
  140. ) ENGINE=HEAP;
  141. SELECT MAX(job_title_id) FROM job_titles;
  142. DROP TABLE job_titles;
  143. #
  144. # Test of delete with NOT NULL
  145. # (Bug #6082)
  146. #
  147. CREATE TABLE t1 (a INT NOT NULL, B INT, KEY(B)) ENGINE=HEAP;
  148. INSERT INTO t1 VALUES(1,1), (1,NULL);
  149. SELECT * FROM t1 WHERE B is not null;
  150. DROP TABLE t1;
  151. #
  152. # Bug #6748
  153. # heap_rfirst() doesn't work (and never did!)
  154. #
  155. CREATE TABLE t1 (pseudo char(35) PRIMARY KEY, date int(10) unsigned NOT NULL) ENGINE=HEAP;
  156. INSERT INTO t1 VALUES ('massecot',1101106491),('altec',1101106492),('stitch+',1101106304),('Seb Corgan',1101106305),('beerfilou',1101106263),('flaker',1101106529),('joce8',5),('M4vrick',1101106418),('gabay008',1101106525),('Vamp irX',1101106291),('ZoomZip',1101106546),('rip666',1101106502),('CBP ',1101106397),('guezpard',1101106496);
  157. DELETE FROM t1 WHERE date<1101106546;
  158. SELECT * FROM t1;
  159. DROP TABLE t1;
  160. #
  161. # Bug #6878: a problem with small length records
  162. #
  163. create table t1(a char(2)) engine=memory;
  164. insert into t1 values (NULL), (NULL);
  165. delete from t1 where a is null;
  166. insert into t1 values ('2'), ('3');
  167. select * from t1;
  168. drop table t1;
  169. #
  170. # Bug #8489: Strange auto_increment behaviour
  171. #
  172. create table t1 (a bigint unsigned auto_increment primary key, b int,
  173.   key (b, a)) engine=heap;
  174. insert t1 (b) values (1);
  175. insert t1 (b) values (1);
  176. insert t1 (b) values (1);
  177. insert t1 (b) values (1);
  178. insert t1 (b) values (1);
  179. insert t1 (b) values (1);
  180. insert t1 (b) values (1);
  181. insert t1 (b) values (1);
  182. select * from t1;                                                               
  183. drop table t1;
  184. create table t1 (a int not null, b int not null auto_increment,
  185.   primary key(a, b), key(b)) engine=heap;
  186. insert t1 (a) values (1);
  187. insert t1 (a) values (1);
  188. insert t1 (a) values (1);
  189. insert t1 (a) values (1);
  190. insert t1 (a) values (1);
  191. insert t1 (a) values (1);
  192. insert t1 (a) values (1);
  193. insert t1 (a) values (1);
  194. select * from t1;                                                               
  195. drop table t1;
  196. #
  197. # Bug #10566: Verify that we can create a prefixed key with length > 255
  198. #
  199. create table t1 (c char(255), primary key(c(90)));
  200. insert into t1 values ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
  201. --error 1062
  202. insert into t1 values ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
  203. drop table t1;
  204. # End of 4.1 tests