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

MySQL数据库

开发平台:

Visual C++

  1. # This test can't be run with running server (--extern) as this uses
  2. # load_file() on a file in the tree.
  3. #
  4. #
  5. # Basic cleanup
  6. #
  7. --disable_warnings
  8. drop table if exists t1,t2,t3,t4,t5,t6,t7;
  9. --enable_warnings
  10. #
  11. # Check syntax for creating BLOB/TEXT
  12. #
  13. CREATE TABLE t1 (a blob, b text, c blob(250), d text(70000), e text(70000000));
  14. show columns from t1;
  15. # PS doesn't give errors on prepare yet
  16. --disable_ps_protocol
  17. CREATE TABLE t2 (a char(257), b varbinary(70000), c varchar(70000000));
  18. --enable_ps_protocol
  19. show columns from t2;
  20. create table t3 (a long, b long byte);
  21. show create TABLE t3;
  22. drop table t1,t2,t3
  23. #
  24. # Check errors with blob
  25. #
  26. --error 1074
  27. CREATE TABLE t1 (a char(257) default "hello");
  28. --error 1101
  29. CREATE TABLE t2 (a blob default "hello");
  30. # Safety to be able to continue with other tests if above fails
  31. --disable_warnings
  32. drop table if exists t1,t2;
  33. --enable_warnings
  34. #
  35. # test of full join with blob
  36. #
  37. create table t1 (nr int(5) not null auto_increment,b blob,str char(10), primary key (nr));
  38. insert into t1 values (null,"a","A");
  39. insert into t1 values (null,"bbb","BBB");
  40. insert into t1 values (null,"ccc","CCC");
  41. select last_insert_id();
  42. select * from t1,t1 as t2;
  43. drop table t1;
  44. #
  45. # Test of changing TEXT column
  46. #
  47. create table t1 (a text);
  48. insert into t1 values ('where');
  49. update t1 set a='Where'; 
  50. select * from t1;
  51. drop table t1;
  52. #
  53. # test of blob, text, char and char binary
  54. #
  55. create table t1 (t text,c char(10),b blob, d binary(10));
  56. insert into t1 values (NULL,NULL,NULL,NULL);
  57. insert into t1 values ("","","","");
  58. insert into t1 values ("hello","hello","hello","hello");
  59. insert into t1 values ("HELLO","HELLO","HELLO","HELLO");
  60. insert into t1 values ("HELLO MY","HELLO MY","HELLO MY","HELLO MY");
  61. insert into t1 values ("a","a","a","a");
  62. insert into t1 values (1,1,1,1);
  63. insert into t1 values (NULL,NULL,NULL,NULL);
  64. update t1 set c="",b=null where c="1";
  65. lock tables t1 READ;
  66. # We mask out the Privileges column because it differs for embedded server
  67. --replace_column 8 #
  68. show full fields from t1;
  69. lock tables t1 WRITE;
  70. --replace_column 8 #
  71. show full fields from t1;
  72. unlock tables;
  73. select t from t1 where t like "hello";
  74. select c from t1 where c like "hello";
  75. select b from t1 where b like "hello";
  76. select d from t1 where d like "hello";
  77. select c from t1 having c like "hello";
  78. select d from t1 having d like "hello";
  79. select t from t1 where t like "%HELLO%";
  80. select c from t1 where c like "%HELLO%";
  81. select b from t1 where b like "%HELLO%";
  82. select d from t1 where d like "%HELLO%";
  83. select c from t1 having c like "%HELLO%";
  84. select d from t1 having d like "%HELLO%";
  85. select d from t1 having d like "%HE%LLO%";
  86. select t from t1 order by t;
  87. select c from t1 order by c;
  88. select b from t1 order by b;
  89. select d from t1 order by d;
  90. select distinct t from t1;
  91. select distinct b from t1;
  92. select distinct t from t1 order by t;
  93. select distinct b from t1 order by b;
  94. select t from t1 group by t;
  95. select b from t1 group by b;
  96. set option sql_big_tables=1;
  97. select distinct t from t1;
  98. select distinct b from t1;
  99. select distinct t from t1 order by t;
  100. select distinct b from t1 order by b;
  101. select distinct c from t1;
  102. select distinct d from t1;
  103. select distinct c from t1 order by c;
  104. select distinct d from t1 order by d;
  105. select c from t1 group by c;
  106. select d from t1 group by d;
  107. set option sql_big_tables=0;
  108. select distinct * from t1;
  109. select t,count(*) from t1 group by t;
  110. select b,count(*) from t1 group by b;
  111. select c,count(*) from t1 group by c;
  112. select d,count(*) from t1 group by d;
  113. drop table t1;
  114. -- error 1071
  115. create table t1 (a text, unique (a(2100))); # should give an error
  116. create table t1 (a text, key (a(2100)));    # key is auto-truncated
  117. show create table t1;
  118. drop table t1;
  119. #
  120. # Test of join with blobs and min
  121. #
  122. CREATE TABLE t1 (
  123.   t1_id bigint(21) NOT NULL auto_increment,
  124.   _field_72 varchar(128) DEFAULT '' NOT NULL,
  125.   _field_95 varchar(32),
  126.   _field_115 tinyint(4) DEFAULT '0' NOT NULL,
  127.   _field_122 tinyint(4) DEFAULT '0' NOT NULL,
  128.   _field_126 tinyint(4),
  129.   _field_134 tinyint(4),
  130.   PRIMARY KEY (t1_id),
  131.   UNIQUE _field_72 (_field_72),
  132.   KEY _field_115 (_field_115),
  133.   KEY _field_122 (_field_122)
  134. );
  135. INSERT INTO t1 VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',0,1,NULL,NULL);
  136. INSERT INTO t1 VALUES (2,'hroberts','7415275a8c95952901e42b13a6b78566',0,1,NULL,NULL);
  137. INSERT INTO t1 VALUES (3,'guest','d41d8cd98f00b204e9800998ecf8427e',1,0,NULL,NULL);
  138. CREATE TABLE t2 (
  139.   seq_0_id bigint(21) DEFAULT '0' NOT NULL,
  140.   seq_1_id bigint(21) DEFAULT '0' NOT NULL,
  141.   PRIMARY KEY (seq_0_id,seq_1_id)
  142. );
  143. INSERT INTO t2 VALUES (1,1);
  144. INSERT INTO t2 VALUES (2,1);
  145. INSERT INTO t2 VALUES (2,2);
  146. CREATE TABLE t3 (
  147.   t3_id bigint(21) NOT NULL auto_increment,
  148.   _field_131 varchar(128),
  149.   _field_133 tinyint(4) DEFAULT '0' NOT NULL,
  150.   _field_135 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  151.   _field_137 tinyint(4),
  152.   _field_139 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  153.   _field_140 blob,
  154.   _field_142 tinyint(4) DEFAULT '0' NOT NULL,
  155.   _field_145 tinyint(4) DEFAULT '0' NOT NULL,
  156.   _field_148 tinyint(4) DEFAULT '0' NOT NULL,
  157.   PRIMARY KEY (t3_id),
  158.   KEY _field_133 (_field_133),
  159.   KEY _field_135 (_field_135),
  160.   KEY _field_139 (_field_139),
  161.   KEY _field_142 (_field_142),
  162.   KEY _field_145 (_field_145),
  163.   KEY _field_148 (_field_148)
  164. );
  165. INSERT INTO t3 VALUES (1,'test job 1',0,'0000-00-00 00:00:00',0,'1999-02-25 22:43:32','testrnjobrn1',0,0,0);
  166. INSERT INTO t3 VALUES (2,'test job 2',0,'0000-00-00 00:00:00',0,'1999-02-26 21:08:04','',0,0,0);
  167. CREATE TABLE t4 (
  168.   seq_0_id bigint(21) DEFAULT '0' NOT NULL,
  169.   seq_1_id bigint(21) DEFAULT '0' NOT NULL,
  170.   PRIMARY KEY (seq_0_id,seq_1_id)
  171. );
  172. INSERT INTO t4 VALUES (1,1);
  173. INSERT INTO t4 VALUES (2,1);
  174. CREATE TABLE t5 (
  175.   t5_id bigint(21) NOT NULL auto_increment,
  176.   _field_149 tinyint(4),
  177.   _field_156 varchar(128) DEFAULT '' NOT NULL,
  178.   _field_157 varchar(128) DEFAULT '' NOT NULL,
  179.   _field_158 varchar(128) DEFAULT '' NOT NULL,
  180.   _field_159 varchar(128) DEFAULT '' NOT NULL,
  181.   _field_160 varchar(128) DEFAULT '' NOT NULL,
  182.   _field_161 varchar(128) DEFAULT '' NOT NULL,
  183.   PRIMARY KEY (t5_id),
  184.   KEY _field_156 (_field_156),
  185.   KEY _field_157 (_field_157),
  186.   KEY _field_158 (_field_158),
  187.   KEY _field_159 (_field_159),
  188.   KEY _field_160 (_field_160),
  189.   KEY _field_161 (_field_161)
  190. );
  191. INSERT INTO t5 VALUES (1,0,'tomato','','','','','');
  192. INSERT INTO t5 VALUES (2,0,'cilantro','','','','','');
  193. CREATE TABLE t6 (
  194.   seq_0_id bigint(21) DEFAULT '0' NOT NULL,
  195.   seq_1_id bigint(21) DEFAULT '0' NOT NULL,
  196.   PRIMARY KEY (seq_0_id,seq_1_id)
  197. );
  198. INSERT INTO t6 VALUES (1,1);
  199. INSERT INTO t6 VALUES (1,2);
  200. INSERT INTO t6 VALUES (2,2);
  201. CREATE TABLE t7 (
  202.   t7_id bigint(21) NOT NULL auto_increment,
  203.   _field_143 tinyint(4),
  204.   _field_165 varchar(32),
  205.   _field_166 smallint(6) DEFAULT '0' NOT NULL,
  206.   PRIMARY KEY (t7_id),
  207.   KEY _field_166 (_field_166)
  208. );
  209. INSERT INTO t7 VALUES (1,0,'High',1);
  210. INSERT INTO t7 VALUES (2,0,'Medium',2);
  211. INSERT INTO t7 VALUES (3,0,'Low',3);
  212. select replace(t3._field_140, "r","^M"),t3_id,min(t3._field_131), min(t3._field_135), min(t3._field_139), min(t3._field_137), min(link_alias_142._field_165), min(link_alias_133._field_72), min(t3._field_145), min(link_alias_148._field_156), replace(min(t3._field_140), "r","^M"),t3.t3_id from t3 left join t4 on t4.seq_0_id = t3.t3_id left join t7 link_alias_142 on t4.seq_1_id = link_alias_142.t7_id left join t6 on t6.seq_0_id = t3.t3_id left join t1 link_alias_133 on t6.seq_1_id = link_alias_133.t1_id left join t2 on t2.seq_0_id = t3.t3_id left join t5 link_alias_148 on t2.seq_1_id = link_alias_148.t5_id where t3.t3_id in (1) group by t3.t3_id order by link_alias_142._field_166, _field_139, link_alias_133._field_72, _field_135, link_alias_148._field_156;
  213. drop table t1,t2,t3,t4,t5,t6,t7;
  214. #
  215. # Test of reverse with empty blob
  216. #
  217. create table t1 (a blob);
  218. insert into t1 values ("empty"),("");
  219. select a,reverse(a) from t1;
  220. drop table t1;
  221. #
  222. # Test of BLOB:s with NULL keys.
  223. #
  224. create table t1 (a blob, key (a(10)));
  225. insert into t1 values ("bye"),("hello"),("hello"),("hello word");
  226. select * from t1 where a like "hello%";
  227. drop table t1;
  228. #
  229. # Test of found bug in group on text key
  230. #
  231. CREATE TABLE t1 (
  232.        f1 int(11) DEFAULT '0' NOT NULL,
  233.        f2 varchar(16) DEFAULT '' NOT NULL,
  234.        f5 text,
  235.        KEY index_name (f1,f2,f5(16))
  236.     );
  237. INSERT INTO t1 VALUES (0,'traktor','1111111111111');
  238. INSERT INTO t1 VALUES (1,'traktor','1111111111111111111111111');
  239. select count(*) from t1 where f2='traktor';
  240. drop table t1;
  241. #
  242. # Test of found bug when blob is first key part
  243. #
  244. create table t1 (foobar tinyblob not null, boggle smallint not null, key (foobar(32), boggle));
  245. insert into t1 values ('fish', 10),('bear', 20);
  246. select foobar, boggle from t1 where foobar = 'fish';
  247. select foobar, boggle from t1 where foobar = 'fish' and boggle = 10;
  248. drop table t1;
  249. #
  250. # Bug when blob is updated
  251. #
  252. create table t1 (id integer auto_increment unique,imagem LONGBLOB not null);
  253. insert into t1 (id) values (1);
  254. # We have to clean up the path in the results for safe comparison
  255. --replace_result $MYSQL_TEST_DIR ../..
  256. eval select 
  257.   charset(load_file('$MYSQL_TEST_DIR/std_data/words.dat')),
  258.   collation(load_file('$MYSQL_TEST_DIR/std_data/words.dat')),
  259.   coercibility(load_file('$MYSQL_TEST_DIR/std_data/words.dat'));
  260. --replace_result $MYSQL_TEST_DIR ../..
  261. eval explain extended select 
  262.   charset(load_file('$MYSQL_TEST_DIR/std_data/words.dat')),
  263.   collation(load_file('$MYSQL_TEST_DIR/std_data/words.dat')),
  264.   coercibility(load_file('$MYSQL_TEST_DIR/std_data/words.dat'));
  265. --replace_result $MYSQL_TEST_DIR ../..
  266. eval update t1 set imagem=load_file('$MYSQL_TEST_DIR/std_data/words.dat') where id=1;
  267. select if(imagem is null, "ERROR", "OK"),length(imagem) from t1 where id = 1;
  268. drop table t1;
  269. --replace_result $MYSQL_TEST_DIR ../..
  270. eval create table t1 select load_file('$MYSQL_TEST_DIR/std_data/words.dat') l;
  271. # We mask out the Privileges column because it differs for embedded server
  272. --replace_column 8 #
  273. show full fields from t1;
  274. drop table t1;
  275. #
  276. # Test blob's with end space (Bug #1651)
  277. #
  278. create table t1 (id integer primary key auto_increment, txt text not null, unique index txt_index (txt (20)));
  279. insert into t1 (txt) values ('Chevy'), ('Chevy ');
  280. select * from t1 where txt='Chevy';
  281. select * from t1 where txt='Chevy ';
  282. select * from t1 where txt='Chevy ' or txt='Chevy';
  283. select * from t1 where txt='Chevy' or txt='Chevy ';
  284. select * from t1 where id='1' or id='2';
  285. insert into t1 (txt) values('Ford');
  286. select * from t1 where txt='Chevy' or txt='Chevy ' or txt='Ford';
  287. select * from t1 where txt='Chevy' or txt='Chevy ';
  288. select * from t1 where txt='Chevy' or txt='Chevy ' or txt=' Chevy';
  289. select * from t1 where txt in ('Chevy ','Chevy');
  290. select * from t1 where txt in ('Chevy');
  291. select * from t1 where txt between 'Chevy' and 'Chevy';
  292. select * from t1 where txt between 'Chevy' and 'Chevy' or txt='Chevy ';
  293. select * from t1 where txt between 'Chevy' and 'Chevy ';
  294. select * from t1 where txt < 'Chevy ';
  295. select * from t1 where txt <= 'Chevy';
  296. select * from t1 where txt > 'Chevy';
  297. select * from t1 where txt >= 'Chevy';
  298. drop table t1;
  299. create table t1 (id integer primary key auto_increment, txt text, unique index txt_index (txt (20)));
  300. insert into t1 (txt) values ('Chevy'), ('Chevy '), (NULL);
  301. select * from t1 where txt='Chevy' or txt is NULL;
  302. explain select * from t1 where txt='Chevy' or txt is NULL;
  303. select * from t1 where txt='Chevy ';
  304. select * from t1 where txt='Chevy ' or txt='Chevy';
  305. select * from t1 where txt='Chevy' or txt='Chevy ';
  306. select * from t1 where id='1' or id='2';
  307. insert into t1 (txt) values('Ford');
  308. select * from t1 where txt='Chevy' or txt='Chevy ' or txt='Ford';
  309. select * from t1 where txt='Chevy' or txt='Chevy ';
  310. select * from t1 where txt='Chevy' or txt='Chevy ' or txt=' Chevy';
  311. select * from t1 where txt in ('Chevy ','Chevy');
  312. select * from t1 where txt in ('Chevy');
  313. select * from t1 where txt between 'Chevy' and 'Chevy';
  314. select * from t1 where txt between 'Chevy' and 'Chevy' or txt='Chevy ';
  315. select * from t1 where txt between 'Chevy' and 'Chevy ';
  316. select * from t1 where txt < 'Chevy ';
  317. select * from t1 where txt < 'Chevy ' or txt is NULL;
  318. select * from t1 where txt <= 'Chevy';
  319. select * from t1 where txt > 'Chevy';
  320. select * from t1 where txt >= 'Chevy';
  321. alter table t1 modify column txt blob;
  322. explain select * from t1 where txt='Chevy' or txt is NULL;
  323. select * from t1 where txt='Chevy' or txt is NULL;
  324. explain select * from t1 where txt='Chevy' or txt is NULL order by txt;
  325. select * from t1 where txt='Chevy' or txt is NULL order by txt;
  326. drop table t1;
  327. CREATE TABLE t1 ( i int(11) NOT NULL default '0',    c text NOT NULL, d varchar(1) NOT NULL DEFAULT ' ', PRIMARY KEY  (i), KEY (c(1),d));
  328. INSERT t1 (i, c) VALUES (1,''),(2,''),(3,'asdfh'),(4,'');
  329. select max(i) from t1 where c = '';
  330. drop table t1;
  331. # End of 4.1 tests