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

MySQL数据库

开发平台:

Visual C++

  1. # Description
  2. # -----------
  3. # Testing string functions
  4. --disable_warnings
  5. drop table if exists t1;
  6. --enable_warnings
  7. set names latin1;
  8. select 'hello',"'hello'",'""hello""','''h''e''l''l''o''',"hel""lo",'hel'lo';
  9. select 'hello' 'monty';
  10. select length('ntrb_%\');
  11. select bit_length('ntrb_%\');
  12. select char_length('ntrb_%\');
  13. select length(_latin1'ntnb\_\%\');
  14. select concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h');
  15. select locate('he','hello'),locate('he','hello',2),locate('lo','hello',2) ;
  16. select instr('hello','HE'), instr('hello',binary 'HE'), instr(binary 'hello','HE'); 
  17. select position(binary 'll' in 'hello'),position('a' in binary 'hello');
  18. select left('hello',2),right('hello',2),substring('hello',2,2),mid('hello',1,5) ;
  19. select concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) ;
  20. select substring_index('www.tcx.se','.',-2),substring_index('www.tcx.se','.',1);
  21. select substring_index('www.tcx.se','tcx',1),substring_index('www.tcx.se','tcx',-1);
  22. select substring_index('.tcx.se','.',-2),substring_index('.tcx.se','.tcx',-1);
  23. select substring_index('aaaaaaaaa1','a',1);
  24. select substring_index('aaaaaaaaa1','aa',1);
  25. select substring_index('aaaaaaaaa1','aa',2);
  26. select substring_index('aaaaaaaaa1','aa',3);
  27. select substring_index('aaaaaaaaa1','aa',4);
  28. select substring_index('aaaaaaaaa1','aa',5);
  29. select substring_index('aaaaaaaaa1','aaa',1);
  30. select substring_index('aaaaaaaaa1','aaa',2);
  31. select substring_index('aaaaaaaaa1','aaa',3);
  32. select substring_index('aaaaaaaaa1','aaa',4);
  33. select substring_index('aaaaaaaaa1','aaaa',1);
  34. select substring_index('aaaaaaaaa1','aaaa',2);
  35. select substring_index('aaaaaaaaa1','1',1);
  36. select substring_index('aaaaaaaaa1','a',-1);
  37. select substring_index('aaaaaaaaa1','aa',-1);
  38. select substring_index('aaaaaaaaa1','aa',-2);
  39. select substring_index('aaaaaaaaa1','aa',-3);
  40. select substring_index('aaaaaaaaa1','aa',-4);
  41. select substring_index('aaaaaaaaa1','aa',-5);
  42. select substring_index('aaaaaaaaa1','aaa',-1);
  43. select substring_index('aaaaaaaaa1','aaa',-2);
  44. select substring_index('aaaaaaaaa1','aaa',-3);
  45. select substring_index('aaaaaaaaa1','aaa',-4);
  46. select substring_index('the king of thethe hill','the',-2);
  47. select substring_index('the king of the the hill','the',-2);
  48. select substring_index('the king of the  the hill','the',-2);
  49. select substring_index('the king of the  the hill',' the ',-1);
  50. select substring_index('the king of the  the hill',' the ',-2);
  51. select substring_index('the king of the  the hill',' ',-1);
  52. select substring_index('the king of the  the hill',' ',-2);
  53. select substring_index('the king of the  the hill',' ',-3);
  54. select substring_index('the king of the  the hill',' ',-4);
  55. select substring_index('the king of the  the hill',' ',-5);
  56. select substring_index('the king of the.the hill','the',-2);
  57. select substring_index('the king of thethethe.the hill','the',-3);
  58. select substring_index('the king of thethethe.the hill','the',-1);
  59. select substring_index('the king of the the hill','the',1);
  60. select substring_index('the king of the the hill','the',2);
  61. select substring_index('the king of the the hill','the',3);
  62. select concat(':',ltrim('  left  '),':',rtrim('  right  '),':');
  63. select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':');
  64. select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':');
  65. select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':');
  66. select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':');
  67. select TRIM("foo" FROM "foo"), TRIM("foo" FROM "foook"), TRIM("foo" FROM "okfoo");
  68. select concat_ws(', ','monty','was here','again');
  69. select concat_ws(NULL,'a'),concat_ws(',',NULL,'');
  70. select concat_ws(',','',NULL,'a');
  71. SELECT CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"');
  72. select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
  73. select replace('aaaa','a','b'),replace('aaaa','aa','b'),replace('aaaa','a','bb'),replace('aaaa','','b'),replace('bbbb','a','c');
  74. select replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') ;
  75. select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb');
  76. select 'mood' sounds like 'mud';
  77. select 'Glazgo' sounds like 'Liverpool';
  78. select null sounds like 'null';
  79. select 'null' sounds like null;
  80. select null sounds like null;
  81. select md5('hello');
  82. select crc32("123");
  83. select sha('abc');
  84. select sha1('abc');
  85. select aes_decrypt(aes_encrypt('abc','1'),'1');
  86. select aes_decrypt(aes_encrypt('abc','1'),1);
  87. select aes_encrypt(NULL,"a");
  88. select aes_encrypt("a",NULL);
  89. select aes_decrypt(NULL,"a");
  90. select aes_decrypt("a",NULL);
  91. select aes_decrypt("a","a");
  92. select aes_decrypt(aes_encrypt("","a"),"a");
  93. select repeat('monty',5),concat('*',space(5),'*');
  94. select reverse('abc'),reverse('abcd');
  95. select rpad('a',4,'1'),rpad('a',4,'12'),rpad('abcd',3,'12'), rpad(11, 10 , 22), rpad("ab", 10, 22);
  96. select lpad('a',4,'1'),lpad('a',4,'12'),lpad('abcd',3,'12'), lpad(11, 10 , 22);
  97. select rpad(741653838,17,'0'),lpad(741653838,17,'0');
  98. select rpad('abcd',7,'ab'),lpad('abcd',7,'ab');
  99. select rpad('abcd',1,'ab'),lpad('abcd',1,'ab');
  100. select rpad('STRING', 20, CONCAT('p','a','d') );
  101. select lpad('STRING', 20, CONCAT('p','a','d') );
  102. select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
  103. select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0");
  104. select decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000);
  105. select decode(encode("abcdef","monty"),"monty")="abcdef";
  106. select quote(''"\test');
  107. select quote(concat('abc'', '\cba'));
  108. select quote(1/0), quote('Z');
  109. select length(quote(concat(char(0),"test")));
  110. select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235))));
  111. select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), unhex(NULL);
  112. select hex(unhex("1")), hex(unhex("12")), hex(unhex("123")), hex(unhex("1234")), hex(unhex("12345")), hex(unhex("123456"));
  113. select length(unhex(md5("abrakadabra")));
  114. #
  115. # Bug #6564: QUOTE(NULL
  116. #
  117. select concat('a', quote(NULL));
  118. #
  119. # Wrong usage of functions
  120. #
  121. select reverse("");
  122. select insert("aa",100,1,"b"),insert("aa",1,3,"b"),left("aa",-1),substring("a",1,2);
  123. select elt(2,1),field(NULL,"a","b","c"),reverse("");
  124. select locate("a","b",2),locate("","a",1);
  125. select ltrim("a"),rtrim("a"),trim(BOTH "" from "a"),trim(BOTH " " from "a");
  126. select concat("1","2")|0,concat("1",".5")+0.0;
  127. select substring_index("www.tcx.se","",3);
  128. select length(repeat("a",100000000)),length(repeat("a",1000*64));
  129. select position("0" in "baaa" in (1)),position("0" in "1" in (1,2,3)),position("sql" in ("mysql"));
  130. select position(("1" in (1,2,3)) in "01");
  131. select length(repeat("a",65500)),length(concat(repeat("a",32000),repeat("a",32000))),length(replace("aaaaa","a",concat(repeat("a",10000)))),length(insert(repeat("a",40000),1,30000,repeat("b",50000)));
  132. select length(repeat("a",1000000)),length(concat(repeat("a",32000),repeat("a",32000),repeat("a",32000))),length(replace("aaaaa","a",concat(repeat("a",32000)))),length(insert(repeat("a",48000),1,1000,repeat("a",48000)));
  133. #
  134. # Problem med concat
  135. #
  136. create table t1 ( domain char(50) );
  137. insert into t1 VALUES ("hello.de" ), ("test.de" );
  138. select domain from t1 where concat('@', trim(leading '.' from concat('.', domain))) = '@hello.de';
  139. select domain from t1 where concat('@', trim(leading '.' from concat('.', domain))) = '@test.de';
  140. drop table t1;
  141. #
  142. # Test bug in concat_ws
  143. #
  144. CREATE TABLE t1 (
  145.   id int(10) unsigned NOT NULL,
  146.   title varchar(255) default NULL,
  147.   prio int(10) unsigned default NULL,
  148.   category int(10) unsigned default NULL,
  149.   program int(10) unsigned default NULL,
  150.   bugdesc text,
  151.   created datetime default NULL,
  152.   modified timestamp(14) NOT NULL,
  153.   bugstatus int(10) unsigned default NULL,
  154.   submitter int(10) unsigned default NULL
  155. ) ENGINE=MyISAM;
  156. INSERT INTO t1 VALUES (1,'Link',1,1,1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','2001-02-28 08:40:16',20010228084016,0,4);
  157. SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') FROM t1;
  158. SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') FROM t1;
  159. SELECT CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) FROM t1;
  160. SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') from t1 group by bugdesc;
  161. drop table t1;
  162. #
  163. # Test bug in AES_DECRYPT() when called with wrong argument
  164. #
  165. CREATE TABLE t1 (id int(11) NOT NULL auto_increment, tmp text NOT NULL, KEY id (id)) ENGINE=MyISAM;
  166. INSERT INTO t1 VALUES (1, 'a545f661efdd1fb66fdee3aab79945bf');
  167. SELECT 1 FROM t1 WHERE tmp=AES_DECRYPT(tmp,"password");
  168. DROP TABLE t1;
  169. CREATE TABLE t1 (
  170.   wid int(10) unsigned NOT NULL auto_increment,
  171.   data_podp date default NULL,
  172.   status_wnio enum('nowy','podp','real','arch') NOT NULL default 'nowy',
  173.   PRIMARY KEY(wid)
  174. );
  175. INSERT INTO t1 VALUES (8,NULL,'real');
  176. INSERT INTO t1 VALUES (9,NULL,'nowy');
  177. SELECT elt(status_wnio,data_podp) FROM t1 GROUP BY wid;
  178. DROP TABLE t1;
  179. #
  180. # test for #739
  181. CREATE TABLE t1 (title text) ENGINE=MyISAM;
  182. INSERT INTO t1 VALUES ('Congress reconvenes in September to debate welfare and adult education');
  183. INSERT INTO t1 VALUES ('House passes the CAREERS bill');
  184. SELECT CONCAT("</a>",RPAD("",(55 - LENGTH(title)),".")) from t1;
  185. DROP TABLE t1;
  186. #
  187. # test for Bug #2290 "output truncated with ELT when using DISTINCT"
  188. #
  189. CREATE TABLE t1 (i int, j int);
  190. INSERT INTO t1 VALUES (1,1),(2,2);
  191. SELECT DISTINCT i, ELT(j, '345', '34') FROM t1;
  192. DROP TABLE t1;
  193. #
  194. # bug #3756: quote and NULL
  195. #
  196. create table t1(a char(4));
  197. insert into t1 values ('one'),(NULL),('two'),('four');
  198. select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1;
  199. drop table t1;
  200. #
  201. # Bug #5498: TRIM fails with LEADING or TRAILING if remstr = str
  202. #
  203. select trim(trailing 'foo' from 'foo');
  204. select trim(leading 'foo' from 'foo');
  205. #
  206. # crashing bug with QUOTE() and LTRIM() or TRIM() fixed
  207. # Bug #7495
  208. #
  209. select quote(ltrim(concat('    ', 'a')));
  210. select quote(trim(concat('    ', 'a')));
  211. # Bad results from QUOTE(). Bug #8248
  212. CREATE TABLE t1 SELECT 1 UNION SELECT 2 UNION SELECT 3;
  213. SELECT QUOTE('A') FROM t1;
  214. DROP TABLE t1;
  215. # Test collation and coercibility
  216. #
  217. select 1=_latin1'1';
  218. select _latin1'1'=1;
  219. select _latin2'1'=1;
  220. select 1=_latin2'1';
  221. --error 1267
  222. select _latin1'1'=_latin2'1';
  223. select row('a','b','c') = row('a','b','c');
  224. select row('A','b','c') = row('a','b','c');
  225. select row('A' COLLATE latin1_bin,'b','c') = row('a','b','c');
  226. select row('A','b','c') = row('a' COLLATE latin1_bin,'b','c');
  227. --error 1267
  228. select row('A' COLLATE latin1_general_ci,'b','c') = row('a' COLLATE latin1_bin,'b','c');
  229. --error 1267
  230. select concat(_latin1'a',_latin2'a');
  231. --error 1270
  232. select concat(_latin1'a',_latin2'a',_latin5'a');
  233. --error 1271
  234. select concat(_latin1'a',_latin2'a',_latin5'a',_latin7'a');
  235. --error 1267
  236. select concat_ws(_latin1'a',_latin2'a');
  237. #
  238. # Test FIELD() and collations
  239. #
  240. select FIELD('b','A','B');
  241. select FIELD('B','A','B');
  242. select FIELD('b' COLLATE latin1_bin,'A','B');
  243. select FIELD('b','A' COLLATE latin1_bin,'B');
  244. --error 1270
  245. select FIELD(_latin2'b','A','B');
  246. --error 1270
  247. select FIELD('b',_latin2'A','B');
  248. select FIELD('b',_latin2'A','B',1);
  249. select POSITION(_latin1'B' IN _latin1'abcd');
  250. select POSITION(_latin1'B' IN _latin1'abcd' COLLATE latin1_bin);
  251. select POSITION(_latin1'B' COLLATE latin1_bin IN _latin1'abcd');
  252. --error 1267
  253. select POSITION(_latin1'B' COLLATE latin1_general_ci IN _latin1'abcd' COLLATE latin1_bin);
  254. --error 1267
  255. select POSITION(_latin1'B' IN _latin2'abcd');
  256. select FIND_IN_SET(_latin1'B',_latin1'a,b,c,d');
  257. --fix this:
  258. --select FIND_IN_SET(_latin1'B',_latin1'a,b,c,d' COLLATE latin1_bin);
  259. --select FIND_IN_SET(_latin1'B' COLLATE latin1_bin,_latin1'a,b,c,d');
  260. --error 1267
  261. select FIND_IN_SET(_latin1'B' COLLATE latin1_general_ci,_latin1'a,b,c,d' COLLATE latin1_bin);
  262. --error 1267
  263. select FIND_IN_SET(_latin1'B',_latin2'a,b,c,d');
  264. select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd',2);
  265. --fix this:
  266. --select SUBSTRING_INDEX(_latin1'abcdabcdabcd' COLLATE latin1_bin,_latin1'd',2);
  267. --select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin1'd' COLLATE latin1_bin,2);
  268. --error 1267
  269. select SUBSTRING_INDEX(_latin1'abcdabcdabcd',_latin2'd',2);
  270. --error 1267
  271. select SUBSTRING_INDEX(_latin1'abcdabcdabcd' COLLATE latin1_general_ci,_latin1'd' COLLATE latin1_bin,2);
  272. select _latin1'B' between _latin1'a' and _latin1'c';
  273. select _latin1'B' collate latin1_bin between _latin1'a' and _latin1'c';
  274. select _latin1'B' between _latin1'a' collate latin1_bin and _latin1'c';
  275. select _latin1'B' between _latin1'a' and _latin1'c' collate latin1_bin;
  276. --error 1270
  277. select _latin2'B' between _latin1'a' and _latin1'b';
  278. --error 1270
  279. select _latin1'B' between _latin2'a' and _latin1'b';
  280. --error 1270
  281. select _latin1'B' between _latin1'a' and _latin2'b';
  282. --error 1270
  283. select _latin1'B' collate latin1_general_ci between _latin1'a' collate latin1_bin and _latin1'b';
  284. select _latin1'B' in (_latin1'a',_latin1'b');
  285. select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
  286. select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
  287. select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
  288. --error 1270
  289. select _latin2'B' in (_latin1'a',_latin1'b');
  290. --error 1270
  291. select _latin1'B' in (_latin2'a',_latin1'b');
  292. --error 1270
  293. select _latin1'B' in (_latin1'a',_latin2'b');
  294. --error 1270
  295. select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
  296. --error 1270
  297. select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
  298. select collation(bin(130)), coercibility(bin(130));
  299. select collation(oct(130)), coercibility(oct(130));
  300. select collation(conv(130,16,10)), coercibility(conv(130,16,10));
  301. select collation(hex(130)), coercibility(hex(130));
  302. select collation(char(130)), coercibility(hex(130));
  303. select collation(format(130,10)), coercibility(format(130,10));
  304. select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
  305. select collation(ucase(_latin2'a')), coercibility(ucase(_latin2'a'));
  306. select collation(left(_latin2'a',1)), coercibility(left(_latin2'a',1));
  307. select collation(right(_latin2'a',1)), coercibility(right(_latin2'a',1));
  308. select collation(substring(_latin2'a',1,1)), coercibility(substring(_latin2'a',1,1));
  309. select collation(concat(_latin2'a',_latin2'b')), coercibility(concat(_latin2'a',_latin2'b'));
  310. select collation(lpad(_latin2'a',4,_latin2'b')), coercibility(lpad(_latin2'a',4,_latin2'b'));
  311. select collation(rpad(_latin2'a',4,_latin2'b')), coercibility(rpad(_latin2'a',4,_latin2'b'));
  312. select collation(concat_ws(_latin2'a',_latin2'b')), coercibility(concat_ws(_latin2'a',_latin2'b'));
  313. select collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')), coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'));
  314. select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '));
  315. select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a '));
  316. select collation(ltrim(_latin2' a ')), coercibility(ltrim(_latin2' a '));
  317. select collation(rtrim(_latin2' a ')), coercibility(rtrim(_latin2' a '));
  318. select collation(trim(LEADING _latin2' ' FROM _latin2'a')), coercibility(trim(LEADING _latin2'a' FROM _latin2'a'));
  319. select collation(trim(TRAILING _latin2' ' FROM _latin2'a')), coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'));
  320. select collation(trim(BOTH _latin2' ' FROM _latin2'a')), coercibility(trim(BOTH _latin2'a' FROM _latin2'a'));
  321. select collation(repeat(_latin2'a',10)), coercibility(repeat(_latin2'a',10));
  322. select collation(reverse(_latin2'ab')), coercibility(reverse(_latin2'ab'));
  323. select collation(quote(_latin2'ab')), coercibility(quote(_latin2'ab'));
  324. select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
  325. select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
  326. select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
  327. select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
  328. select collation(encode('abcd','ab')), coercibility(encode('abcd','ab'));
  329. create table t1 
  330. select
  331.   bin(130),
  332.   oct(130),
  333.   conv(130,16,10),
  334.   hex(130),
  335.   char(130),
  336.   format(130,10),
  337.   left(_latin2'a',1),
  338.   right(_latin2'a',1), 
  339.   lcase(_latin2'a'), 
  340.   ucase(_latin2'a'),
  341.   substring(_latin2'a',1,1),
  342.   concat(_latin2'a',_latin2'b'),
  343.   lpad(_latin2'a',4,_latin2'b'),
  344.   rpad(_latin2'a',4,_latin2'b'),
  345.   concat_ws(_latin2'a',_latin2'b'),
  346.   make_set(255,_latin2'a',_latin2'b',_latin2'c'),
  347.   export_set(255,_latin2'y',_latin2'n',_latin2' '),
  348.   trim(_latin2' a '),
  349.   ltrim(_latin2' a '),
  350.   rtrim(_latin2' a '),
  351.   trim(LEADING _latin2' ' FROM _latin2' a '),
  352.   trim(TRAILING _latin2' ' FROM _latin2' a '),
  353.   trim(BOTH _latin2' ' FROM _latin2' a '),
  354.   repeat(_latin2'a',10),
  355.   reverse(_latin2'ab'),
  356.   quote(_latin2'ab'),
  357.   soundex(_latin2'ab'),
  358.   substring(_latin2'ab',1),
  359.   insert(_latin2'abcd',2,3,_latin2'ef'),
  360.   replace(_latin2'abcd',_latin2'b',_latin2'B'),
  361.   encode('abcd','ab')
  362. ;
  363. show create table t1;
  364. drop table t1;
  365. #
  366. # Bug#9129
  367. #
  368. create table t1 (a char character set latin2);
  369. insert into t1 values (null);
  370. select charset(a), collation(a), coercibility(a) from t1;
  371. drop table t1;
  372. select charset(null), collation(null), coercibility(null);
  373. #
  374. # Make sure OUTER JOIN is not replaced with a regular joun
  375. #
  376. CREATE TABLE t1 (a int, b int);
  377. CREATE TABLE t2 (a int, b int);
  378. INSERT INTO t1 VALUES (1,1),(2,2);
  379. INSERT INTO t2 VALUES (2,2),(3,3);
  380. select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
  381. where collation(t2.a) = _utf8'binary' order by t1.a,t2.a;
  382. select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
  383. where charset(t2.a) = _utf8'binary' order by t1.a,t2.a;
  384. select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
  385. where coercibility(t2.a) = 2 order by t1.a,t2.a;
  386. DROP TABLE t1, t2;
  387. #
  388. # test for SUBSTR
  389. #
  390. select SUBSTR('abcdefg',3,2);
  391. select SUBSTRING('abcdefg',3,2);
  392. select SUBSTR('abcdefg',-3,2) FROM DUAL;
  393. select SUBSTR('abcdefg',-1,5) FROM DUAL;
  394. select SUBSTR('abcdefg',0,0) FROM DUAL;
  395. select SUBSTR('abcdefg',-1,-1) FROM DUAL;
  396. select SUBSTR('abcdefg',1,-1) FROM DUAL;
  397. #
  398. # Test that fix_fields doesn't follow to upper level (to comparison)
  399. # when an error on a lower level (in concat) has accured:
  400. #
  401. create table t7 (s1 char);
  402. --error 1267
  403. select * from t7
  404. where concat(s1 collate latin1_general_ci,s1 collate latin1_swedish_ci) = 'AA';
  405. drop table t7;
  406. select substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2),substring_index("1abcd;2abcd;3abcd;4abcd", ';', -2);
  407. explain extended select md5('hello'), sha('abc'), sha1('abc'), soundex(''), 'mood' sounds like 'mud', aes_decrypt(aes_encrypt('abc','1'),'1'),concat('*',space(5),'*'), reverse('abc'), rpad('a',4,'1'), lpad('a',4,'1'),  concat_ws(',','',NULL,'a'),make_set(255,_latin2'a',_latin2'b',_latin2'c'),elt(2,1),locate("a","b",2),format(130,10),char(0),conv(130,16,10),hex(130),binary 'HE', export_set(255,_latin2'y',_latin2'n',_latin2' '),FIELD('b' COLLATE latin1_bin,'A','B'),FIND_IN_SET(_latin1'B',_latin1'a,b,c,d'),collation(conv(130,16,10)), coercibility(conv(130,16,10)),length('ntrb_%\'),bit_length('ntrb_%\'),bit_length('ntrb_%\'),concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h'),quote(1/0),crc32("123"),replace('aaaa','a','b'),insert('txs',2,1,'hi'),left(_latin2'a',1),right(_latin2'a',1),lcase(_latin2'a'),ucase(_latin2'a'),SUBSTR('abcdefg',3,2),substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2),trim(_latin2' a '),ltrim(_latin2' a '),rtrim(_latin2' a '), decode(encode(repeat("a",100000),"monty"),"monty");
  408. #
  409. # lpad returns incorrect result (Bug #2182)
  410. #
  411. SELECT lpad(12345, 5, "#");
  412. #
  413. # Problem the the CONV() function (Bug #2972)
  414. #
  415.  
  416. SELECT conv(71, 10, 36), conv('1Z', 36, 10);
  417. #
  418. # Bug in SUBSTRING when mixed with CONCAT and ORDER BY (Bug #3089)
  419. #
  420. create table t1 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
  421. insert into t1 values (1,'aaaaaaaaaa'), (2,'bbbbbbbbbb');
  422. create table t2 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
  423. insert into t2 values (1,'cccccccccc'), (2,'dddddddddd');
  424. select substring(concat(t1.str, t2.str), 1, 15) "name" from t1, t2 
  425. where t2.id=t1.id order by name;
  426. drop table t1, t2;
  427. #
  428. # Test case for conversion of long string value to integer (Bug #3472)
  429. #
  430. create table t1 (c1 INT, c2 INT UNSIGNED);
  431. insert into t1 values ('21474836461','21474836461');
  432. insert into t1 values ('-21474836461','-21474836461');
  433. show warnings;
  434. select * from t1;
  435. drop table t1;
  436. #
  437. # Bug #4878: LEFT() in integer/float context
  438. #
  439. select left(1234, 3) + 0;
  440. #
  441. # Bug #7101: bug with LEFT() when used as a field in GROUP BY aggregation
  442. #
  443. create table t1 (a int not null primary key, b varchar(40), c datetime);
  444. insert into t1 (a,b,c) values (1,'Tom','2004-12-10 12:13:14'),(2,'ball games','2004-12-10 12:13:14'), (3,'Basil','2004-12-10 12:13:14'), (4,'Dean','2004-12-10 12:13:14'),(5,'Ellis','2004-12-10 12:13:14'), (6,'Serg','2004-12-10 12:13:14'), (7,'Sergei','2004-12-10 12:13:14'),(8,'Georg','2004-12-10 12:13:14'),(9,'Salle','2004-12-10 12:13:14'),(10,'Sinisa','2004-12-10 12:13:14'); 
  445. select count(*) as total, left(c,10) as reg from t1 group by reg order by reg desc limit 0,12;
  446. drop table t1;
  447. #
  448. # Bug#7455 unexpected result: TRIM(<NULL> FROM <whatever>) gives NOT NULL
  449. # According to ANSI if one of the TRIM arguments is NULL, then the result
  450. # must be NULL too.
  451. #
  452. select trim(null from 'kate') as "must_be_null";
  453. select trim('xyz' from null) as "must_be_null";
  454. #
  455. # Bug #7751 - conversion for a bigint unsigned constant 
  456. #
  457. CREATE TABLE t1 (
  458.   id int(11) NOT NULL auto_increment,
  459.   a bigint(20) unsigned default NULL,
  460.   PRIMARY KEY  (id)
  461. ) ENGINE=MyISAM;
  462. INSERT INTO t1 VALUES
  463. ('0','16307858876001849059');
  464. SELECT CONV('e251273eb74a8ee3', 16, 10);
  465. EXPLAIN 
  466. SELECT id
  467.   FROM t1
  468.   WHERE a = 16307858876001849059;
  469. EXPLAIN 
  470.   SELECT id
  471.   FROM t1
  472.   WHERE a = CONV('e251273eb74a8ee3', 16, 10);
  473. DROP TABLE t1;
  474. #
  475. # Bug #6317: string function CHAR, parameter is NULL, wrong result
  476. #
  477. SELECT CHAR(NULL,121,83,81,'76') as my_column;
  478. SELECT CHAR_LENGTH(CHAR(NULL,121,83,81,'76')) as my_column;
  479. #
  480. # Test case for bug #8669: null aes_decrypt result in order by query
  481. #
  482. CREATE TABLE t1 (id int PRIMARY KEY, str char(255) NOT NULL);
  483. CREATE TABLE t2 (id int NOT NULL UNIQUE);
  484. INSERT INTO t2 VALUES (1),(2);
  485. INSERT INTO t1 VALUES (1, aes_encrypt('foo', 'bar'));
  486. INSERT INTO t1 VALUES (2, 'not valid');
  487. SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id;
  488. SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id
  489.  ORDER BY t1.id;
  490. DROP TABLE t1, t2;
  491. #
  492. # Bug #10944: Mishandling of NULL arguments in FIELD()
  493. #
  494. select field(0,NULL,1,0), field("",NULL,"bar",""), field(0.0,NULL,1.0,0.0);
  495. select field(NULL,1,2,NULL), field(NULL,1,2,0);
  496. #
  497. # Bug #10124: access by integer index with a string key that is not a number  
  498. #
  499. CREATE TABLE t1 (str varchar(20) PRIMARY KEY);
  500. CREATE TABLE t2 (num int primary key);
  501. INSERT INTO t1 VALUES ('notnumber');
  502. INSERT INTO t2 VALUES (0), (1); 
  503. SELECT * FROM t1, t2 WHERE num=str;
  504. SELECT * FROM t1, t2 WHERE num=substring(str from 1 for 6);
  505. DROP TABLE t1,t2;
  506. #
  507. # Bug #11469: NOT NULL optimization wrongly used for arguments of CONCAT_WS  
  508. #
  509. CREATE TABLE t1(
  510.   id int(11) NOT NULL auto_increment,
  511.   pc int(11) NOT NULL default '0',
  512.   title varchar(20) default NULL,
  513.   PRIMARY KEY (id)
  514. );
  515. INSERT INTO t1 VALUES
  516.   (1, 0, 'Main'),
  517.   (2, 1, 'Toys'),
  518.   (3, 1, 'Games');
  519. SELECT t1.id, CONCAT_WS('->', t3.title, t2.title, t1.title) as col1
  520.   FROM t1 LEFT JOIN t1 AS t2 ON t1.pc=t2.id
  521.           LEFT JOIN t1 AS t3 ON t2.pc=t3.id;
  522. SELECT t1.id, CONCAT_WS('->', t3.title, t2.title, t1.title) as col1
  523.   FROM t1 LEFT JOIN t1 AS t2 ON t1.pc=t2.id
  524.           LEFT JOIN t1 AS t3 ON t2.pc=t3.id
  525.     WHERE CONCAT_WS('->', t3.title, t2.title, t1.title) LIKE '%Toys%';
  526. DROP TABLE t1;
  527. CREATE TABLE t1(
  528.   trackid     int(10) unsigned NOT NULL auto_increment,
  529.   trackname   varchar(100) NOT NULL default '',
  530.   PRIMARY KEY (trackid)
  531. );
  532. CREATE TABLE t2(
  533.   artistid    int(10) unsigned NOT NULL auto_increment,
  534.   artistname  varchar(100) NOT NULL default '',
  535.   PRIMARY KEY (artistid)
  536. );
  537. CREATE TABLE t3(
  538.   trackid     int(10) unsigned NOT NULL,
  539.   artistid    int(10) unsigned NOT NULL,
  540.   PRIMARY KEY (trackid,artistid)
  541. );
  542. INSERT INTO t1 VALUES (1, 'April In Paris'), (2, 'Autumn In New York');
  543. INSERT INTO t2 VALUES (1, 'Vernon Duke');
  544. INSERT INTO t3 VALUES (1,1);
  545. SELECT CONCAT_WS(' ', trackname, artistname) trackname, artistname
  546.   FROM t1 LEFT JOIN t3 ON t1.trackid=t3.trackid
  547.           LEFT JOIN t2 ON t2.artistid=t3.artistid
  548.     WHERE CONCAT_WS(' ', trackname, artistname) LIKE '%In%';
  549. DROP TABLE t1,t2,t3;
  550. #
  551. # Correct length reporting from substring() (BUG#10269)
  552. #
  553. create table t1 (b varchar(5));
  554. insert t1 values ('ab'), ('abc'), ('abcd'), ('abcde');
  555. select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1;
  556. select * from (select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1) t;
  557. drop table t1;
  558. #
  559. # Bug #9854  hex() and out of range handling
  560. #
  561. select hex(29223372036854775809), hex(-29223372036854775809);
  562. #
  563. # Bug #11311: Incorrect length returned from LPAD() and RPAD()
  564. #
  565. create table t1 (i int);
  566. insert into t1 values (1000000000),(1);
  567. --enable_metadata
  568. select lpad(i, 7, ' ') as t from t1;
  569. select rpad(i, 7, ' ') as t from t1;
  570. --disable_metadata
  571. drop table t1;
  572. # End of 4.1 tests