234 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			234 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# test of new fulltext search features
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# two-level tree
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								--disable_warnings
							 | 
						|||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						|||
| 
								 | 
							
								--enable_warnings
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						|||
| 
								 | 
							
								  i int(10) unsigned not null auto_increment primary key,
							 | 
						|||
| 
								 | 
							
								  a varchar(255) not null,
							 | 
						|||
| 
								 | 
							
								  FULLTEXT KEY (a)
							 | 
						|||
| 
								 | 
							
								) ENGINE=MyISAM;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# two-level entry, second-level tree with depth 2
							 | 
						|||
| 
								 | 
							
								--disable_query_log
							 | 
						|||
| 
								 | 
							
								let $1=260;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# two-level entry, second-level tree has only one page
							 | 
						|||
| 
								 | 
							
								let $1=255;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaazzz');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# one-level entry (entries)
							 | 
						|||
| 
								 | 
							
								let $1=250;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaayyy');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								--enable_query_log
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# converting to two-level
							 | 
						|||
| 
								 | 
							
								repair table t1 quick;
							 | 
						|||
| 
								 | 
							
								check table t1;
							 | 
						|||
| 
								 | 
							
								optimize table t1; # BUG#5327 - mi_sort_index() of 2-level tree
							 | 
						|||
| 
								 | 
							
								check table t1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaax*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaay*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaa*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# mi_write:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx'),('aaayyy');
							 | 
						|||
| 
								 | 
							
								# call to enlarge_root() below
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# mi_delete
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx 000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								delete from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								delete from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								# double-check without index
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaaxxx';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaayyy';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaazzz';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# update
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx 000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaazzz' where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaazzz' where a = 'aaaxxx';
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaaxxx' where a = 'aaayyy';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								drop table t1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						|||
| 
								 | 
							
								  i int(10) unsigned not null auto_increment primary key,
							 | 
						|||
| 
								 | 
							
								  a varchar(255) not null,
							 | 
						|||
| 
								 | 
							
								  FULLTEXT KEY (a)
							 | 
						|||
| 
								 | 
							
								) ENGINE=MyISAM;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# now same as about but w/o repair table
							 | 
						|||
| 
								 | 
							
								# 2-level tree created by mi_write
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# two-level entry, second-level tree with depth 2
							 | 
						|||
| 
								 | 
							
								--disable_query_log
							 | 
						|||
| 
								 | 
							
								let $1=260;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								let $1=255;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaazzz');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								let $1=250;
							 | 
						|||
| 
								 | 
							
								while ($1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  eval insert t1 (a) values ('aaayyy');
							 | 
						|||
| 
								 | 
							
								  dec $1;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								--enable_query_log
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaax*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaay*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaa*' in boolean mode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# mi_write:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx'),('aaayyy');
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# mi_delete
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx 000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								delete from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx');
							 | 
						|||
| 
								 | 
							
								delete from t1 where match a against ('aaazzz');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								# double-check without index
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaaxxx';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaayyy';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where a = 'aaazzz';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# update
							 | 
						|||
| 
								 | 
							
								insert t1 (a) values ('aaaxxx 000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaazzz' where match a against ('000000');
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaazzz' where a = 'aaaxxx';
							 | 
						|||
| 
								 | 
							
								update t1 set a='aaaxxx' where a = 'aaayyy';
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaayyy' in boolean mode);
							 | 
						|||
| 
								 | 
							
								select count(*) from t1 where match a against ('aaazzz' in boolean mode);
							 | 
						|||
| 
								 | 
							
								drop table t1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# BUG#11336
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# for uca collation isalnum and strnncollsp don't agree on whether
							 | 
						|||
| 
								 | 
							
								# 0xC2A0 is a space (strnncollsp is right, isalnum is wrong).
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# they still don't, the bug was fixed by avoiding strnncollsp
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set names utf8;
							 | 
						|||
| 
								 | 
							
								create table t1(a text,fulltext(a)) collate=utf8_swedish_ci;
							 | 
						|||
| 
								 | 
							
								insert into t1 values('test test '),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
							 | 
						|||
| 
								 | 
							
								('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
							 | 
						|||
| 
								 | 
							
								delete from t1 limit 1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# BUG#16489: utf8 + fulltext leads to corrupt index file.
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								truncate table t1;
							 | 
						|||
| 
								 | 
							
								insert into t1 values('ab c d');
							 | 
						|||
| 
								 | 
							
								update t1 set a='ab c d';
							 | 
						|||
| 
								 | 
							
								select * from t1 where match a against('ab c' in boolean mode);
							 | 
						|||
| 
								 | 
							
								drop table t1;
							 | 
						|||
| 
								 | 
							
								set names latin1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# End of 4.1 tests
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# BUG#19580 - FULLTEXT search produces wrong results on UTF-8 columns
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						|||
| 
								 | 
							
								CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
							 | 
						|||
| 
								 | 
							
								INSERT INTO t1 VALUES('„MySQL“');
							 | 
						|||
| 
								 | 
							
								SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE);
							 | 
						|||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						|||
| 
								 | 
							
								SET NAMES latin1;
							 |