136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | # | |||
|  | # Test of like | |||
|  | # | |||
|  | 
 | |||
|  | --disable_warnings | |||
|  | drop table if exists t1; | |||
|  | --enable_warnings | |||
|  | 
 | |||
|  | create table t1 (a varchar(10), key(a)); | |||
|  | insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test"); | |||
|  | explain extended select * from t1 where a like 'abc%'; | |||
|  | explain extended select * from t1 where a like concat('abc','%'); | |||
|  | select * from t1 where a like "abc%"; | |||
|  | select * from t1 where a like concat("abc","%"); | |||
|  | select * from t1 where a like "ABC%"; | |||
|  | select * from t1 where a like "test%"; | |||
|  | select * from t1 where a like "te_t"; | |||
|  | 
 | |||
|  | # | |||
|  | # The following will test the Turbo Boyer-Moore code | |||
|  | # | |||
|  | select * from t1 where a like "%a%"; | |||
|  | select * from t1 where a like "%abcd%"; | |||
|  | select * from t1 where a like "%abc\d%"; | |||
|  | 
 | |||
|  | drop table t1; | |||
|  | 
 | |||
|  | create table t1 (a varchar(10), key(a)); | |||
|  | 
 | |||
|  | # | |||
|  | # Bug #2231 | |||
|  | # | |||
|  | insert into t1 values ('a'), ('a\\b'); | |||
|  | select * from t1 where a like 'a\\%' escape '#'; | |||
|  | select * from t1 where a like 'a\\%' escape '#' and a like 'a\\\\b'; | |||
|  | 
 | |||
|  | # | |||
|  | # Bug #4200: Prepared statement parameter as argument to ESCAPE | |||
|  | # | |||
|  | prepare stmt1 from 'select * from t1 where a like \'a\\%\' escape ?'; | |||
|  | set @esc='#'; | |||
|  | execute stmt1 using @esc;   | |||
|  | deallocate prepare stmt1; | |||
|  | 
 | |||
|  | drop table t1; | |||
|  | 
 | |||
|  | # | |||
|  | # Bug #2885: like and datetime | |||
|  | # | |||
|  | 
 | |||
|  | create table t1 (a datetime); | |||
|  | insert into t1 values ('2004-03-11 12:00:21'); | |||
|  | select * from t1 where a like '2004-03-11 12:00:21'; | |||
|  | drop table t1; | |||
|  | 
 | |||
|  | # | |||
|  | # Test like with non-default character set | |||
|  | # | |||
|  | 
 | |||
|  | SET NAMES koi8r; | |||
|  | 
 | |||
|  | CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET koi8r); | |||
|  | 
 | |||
|  | INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'); | |||
|  | INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'); | |||
|  | INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'); | |||
|  | INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'); | |||
|  | 
 | |||
|  | SELECT * FROM t1 WHERE a LIKE '%<25><><EFBFBD><EFBFBD>%'; | |||
|  | SELECT * FROM t1 WHERE a LIKE '%<25><><EFBFBD>%'; | |||
|  | SELECT * FROM t1 WHERE a LIKE '<27><><EFBFBD><EFBFBD>%'; | |||
|  | 
 | |||
|  | DROP TABLE t1; | |||
|  | 
 | |||
|  | # Bug #2547 Strange "like" behaviour in tables with default charset=cp1250 | |||
|  | # Test like with non-default character set using TurboBM | |||
|  | # | |||
|  | SET NAMES cp1250; | |||
|  | CREATE TABLE t1 (a varchar(250) NOT NULL) DEFAULT CHARACTER SET=cp1250; | |||
|  | INSERT INTO t1 VALUES | |||
|  | ('Techni Tapes Sp. z o.o.'), | |||
|  | ('Pojazdy Szynowe PESA Bydgoszcz SA Holding'), | |||
|  | ('AKAPESTER 1 P.P.H.U.'), | |||
|  | ('Pojazdy Szynowe PESA Bydgoszcz S A Holding'), | |||
|  | ('PPUH PESKA-I Maria Struniarska'); | |||
|  | 
 | |||
|  | select * from t1 where a like '%PESA%'; | |||
|  | select * from t1 where a like '%PESA %'; | |||
|  | select * from t1 where a like '%PES%'; | |||
|  | select * from t1 where a like '%PESKA%'; | |||
|  | select * from t1 where a like '%ESKA%'; | |||
|  | DROP TABLE t1; | |||
|  | 
 | |||
|  | # | |||
|  | # LIKE crashed for binary collations in some cases | |||
|  | # | |||
|  | select _cp866'aaaaaaaaa' like _cp866'%aaaa%' collate cp866_bin; | |||
|  | 
 | |||
|  | # | |||
|  | # Check 8bit escape character | |||
|  | # | |||
|  | set names koi8r; | |||
|  | select 'andre%' like 'andre<72>%' escape '<27>'; | |||
|  | 
 | |||
|  | # Check 8bit escape character with charset conversion: | |||
|  | # For "a LIKE b ESCAPE c" expressions, | |||
|  | # escape character is converted into the operation character set, | |||
|  | # which is result of aggregation  of character sets of "a" and "b". | |||
|  | # "c" itself doesn't take part in aggregation, because its collation | |||
|  | # doesn't matter, escape character is always compared binary. | |||
|  | # In the example below, escape character is converted from koi8r into cp1251: | |||
|  | # | |||
|  | select _cp1251'andre%' like convert('andre<72>%' using cp1251)  escape '<27>'; | |||
|  | 
 | |||
|  | 
 | |||
|  | --echo End of 4.1 tests | |||
|  | 
 | |||
|  | 
 | |||
|  | --echo # | |||
|  | --echo # Bug #54575: crash when joining tables with unique set column | |||
|  | --echo # | |||
|  | CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a)); | |||
|  | CREATE TABLE t2(b INT PRIMARY KEY); | |||
|  | INSERT INTO t1 VALUES (); | |||
|  | INSERT INTO t2 VALUES (1), (2), (3); | |||
|  | SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a; | |||
|  | DROP TABLE t1, t2; | |||
|  | 
 | |||
|  | --echo # | |||
|  | --echo # Bug#59149 valgrind warnings with "like .. escape .." function | |||
|  | --echo # | |||
|  | --error ER_WRONG_ARGUMENTS | |||
|  | SELECT '' LIKE '1' ESCAPE COUNT(1); | |||
|  | 
 | |||
|  | --echo End of 5.1 tests |