mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	* Removed unused parameters * Fixed several cost calculation errors in ror_intersect_add * Better code structure for ror_intersect_add and get_best_ror_intersect include/my_bitmap.h: Comments added mysql-test/r/index_merge_innodb.result: Test results updated mysql-test/r/index_merge_ror_cpk.result: Test results updated. mysql-test/t/index_merge_innodb.test: Drop all tables after use sql/opt_range.cc: Fixes in ROR plan choice code * Removed unused parameters * Fixed several cost calculation errors in ror_intersect_add * Better code structure for ror_intersect_add and get_best_ror_intersect
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Index merge tests
 | |
| #
 | |
| -- source include/have_innodb.inc
 | |
| 
 | |
| --disable_warnings
 | |
| drop table if exists t1,t2;
 | |
| --enable_warnings
 | |
| 
 | |
| create table t1
 | |
| (
 | |
|   key1 int not null, 
 | |
|   key2 int not null, 
 | |
|   
 | |
|   INDEX i1(key1),
 | |
|   INDEX i2(key2)
 | |
| ) engine=innodb;
 | |
| 
 | |
| --disable_query_log
 | |
| let $1=200;
 | |
| while ($1)
 | |
| {
 | |
|   eval insert into t1 values (200-$1, $1);
 | |
|   dec $1;
 | |
| }
 | |
| --enable_query_log
 | |
| 
 | |
| # No primary key
 | |
| explain select * from t1 where key1 < 5 or key2 > 197;
 | |
| 
 | |
| select * from t1 where key1 < 5 or key2 > 197;
 | |
| 
 | |
| explain select * from t1 where key1 < 3 or key2 > 195;
 | |
| select * from t1 where key1 < 3 or key2 > 195;
 | |
| 
 | |
| # Primary key as case-sensitive string with \0s.
 | |
| # also make primary key be longer then max. index length of MyISAM.
 | |
| alter table t1 add str1 char (255) not null, 
 | |
|                 add zeroval int not null default 0,
 | |
|                 add str2 char (255) not null,
 | |
|                 add str3 char (255) not null;
 | |
| 
 | |
| update t1 set str1='aaa', str2='bbb', str3=concat(key2, '-', key1 div 2, '_' ,if(key1 mod 2 = 0, 'a', 'A'));
 | |
| 
 | |
| alter table t1 add primary key (str1, zeroval, str2, str3);
 | |
|                 
 | |
| explain select * from t1 where key1 < 5 or key2 > 197;
 | |
| 
 | |
| select * from t1 where key1 < 5 or key2 > 197;
 | |
| 
 | |
| explain select * from t1 where key1 < 3 or key2 > 195;
 | |
| select * from t1 where key1 < 3 or key2 > 195;
 | |
| 
 | |
| # Test for BUG#5401
 | |
| drop table t1;
 | |
| create table t1 (
 | |
|   pk    integer not null auto_increment primary key,
 | |
|   key1  integer,
 | |
|   key2  integer not null,
 | |
|   filler char  (200),
 | |
|   index (key1),
 | |
|   index (key2)
 | |
| ) engine=innodb;
 | |
| show warnings;
 | |
| --disable_query_log
 | |
| let $1=30;
 | |
| while ($1)
 | |
| {
 | |
|   eval insert into t1 (key1, key2, filler) values ($1/4, $1/8, 'filler-data');
 | |
|   dec $1;
 | |
| }
 | |
| --enable_query_log
 | |
| explain select pk from t1 where key1 = 1 and key2 = 1;
 | |
| select pk from t1 where key2 = 1 and key1 = 1;
 | |
| select pk from t1 ignore index(key1,key2) where key2 = 1 and key1 = 1;
 | |
| 
 | |
| # More tests for BUG#5401. 
 | |
| drop table t1;
 | |
| create table t1 (
 | |
|   pk int primary key auto_increment,
 | |
|   key1a  int,
 | |
|   key2a  int,
 | |
|   key1b  int,
 | |
|   key2b  int,
 | |
|   dummy1 int,
 | |
|   dummy2 int,
 | |
|   dummy3 int,
 | |
|   dummy4 int,
 | |
|   key3a  int,
 | |
|   key3b  int,
 | |
|   filler1 char (200),
 | |
|   index i1(key1a, key1b),
 | |
|   index i2(key2a, key2b),
 | |
|   index i3(key3a, key3b)
 | |
| ) engine=innodb;
 | |
| 
 | |
| create table t2 (a int);
 | |
| insert into t2 values (0),(1),(2),(3),(4),(NULL);
 | |
| 
 | |
| insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b) 
 | |
|   select A.a, B.a, C.a, D.a, C.a, D.a from t2 A,t2 B,t2 C, t2 D;
 | |
| insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b) 
 | |
|   select key1a, key1b, key2a, key2b, key3a, key3b from t1;
 | |
| insert into t1 (key1a, key1b, key2a, key2b, key3a, key3b) 
 | |
|   select key1a, key1b, key2a, key2b, key3a, key3b from t1;
 | |
| analyze table t1;
 | |
| select count(*) from t1;
 | |
| 
 | |
| explain select count(*) from t1 where 
 | |
|   key1a = 2 and key1b is null and  key2a = 2 and key2b is null;
 | |
| 
 | |
| select count(*) from t1 where 
 | |
|   key1a = 2 and key1b is null and key2a = 2 and key2b is null;
 | |
| 
 | |
| explain select count(*) from t1 where 
 | |
|   key1a = 2 and key1b is null and key3a = 2 and key3b is null;
 | |
| 
 | |
| select count(*) from t1 where 
 | |
|   key1a = 2 and key1b is null and key3a = 2 and key3b is null;
 | |
| 
 | |
| drop table t1,t2;
 | |
| 
 |