mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	adding test case. item_cmpfunc.cc: Bug#12611 ESCAPE + LIKE do not work when the escape char is a multibyte one Additional fix for 8bit character sets: escape character must be converted into operation character set. sql/item_cmpfunc.cc: Bug#12611 ESCAPE + LIKE do not work when the escape char is a multibyte one Additional fix for 8bit character sets: escape character must be converted into operation character set. mysql-test/t/func_like.test: adding test case. mysql-test/r/func_like.result: adding test case.
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.2 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 select * from t1 where a like 'abc%';
 | |
| explain 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 ('ÆÙ×Á'),('æÙ×Á'),('Æù×Á'),('ÆÙ÷Á'),('ÆÙ×á'),('æù÷á');
 | |
| INSERT INTO t1 VALUES ('ÆÙ×ÁÐÒÏÌÄÖ'),('æÙ×ÁÐÒÏÌÄÖ'),('Æù×ÁÐÒÏÌÄÖ'),('ÆÙ÷ÁÐÒÏÌÄÖ');
 | |
| INSERT INTO t1 VALUES ('ÆÙ×áÐÒÏÌÄÖ'),('ÆÙ×ÁðÒÏÌÄÖ'),('ÆÙ×ÁÐòÏÌÄÖ'),('ÆÙ×ÁÐÒïÌÄÖ');
 | |
| INSERT INTO t1 VALUES ('ÆÙ×ÁÐÒÏìÄÖ'),('ÆÙ×ÁÐÒÏÌäÖ'),('ÆÙ×ÁÐÒÏÌÄö'),('æù÷áðòïìäö');
 | |
| 
 | |
| SELECT * FROM t1 WHERE a LIKE '%Æù×Á%';
 | |
| SELECT * FROM t1 WHERE a LIKE '%Æù×%';
 | |
| SELECT * FROM t1 WHERE a LIKE 'Æù×Á%';
 | |
| 
 | |
| 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Ê%' escape 'Ê';
 | |
| 
 | |
| # 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Ê%' using cp1251)  escape 'Ê';
 | |
| 
 | |
| #
 | |
| # End of 4.1 tests
 |