mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 9608773f75
			
		
	
	
	9608773f75
	
	
	
		
			
			This essentially reverts commit 4e89ec6692
and only disables InnoDB persistent statistics for tests where it is
desirable. By design, InnoDB persistent statistics will not be updated
except by ANALYZE TABLE or by STATS_AUTO_RECALC.
The internal transactions that update persistent InnoDB statistics
in background tasks (with innodb_stats_auto_recalc=ON) may cause
nondeterministic query plans or interfere with some tests that deal
with other InnoDB internals, such as the purge of transaction history.
		
	
			
		
			
				
	
	
		
			190 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| SET @save_stats_persistent=@@GLOBAL.innodb_stats_persistent;
 | ||
| SET GLOBAL innodb_stats_persistent=0;
 | ||
| SET SESSION DEFAULT_STORAGE_ENGINE = InnoDB;
 | ||
| drop table if exists t1, t2, t3,t4;
 | ||
| create table t1 (
 | ||
| pk1 int not NULL,
 | ||
| key1 int(11),
 | ||
| key2 int(11),
 | ||
| PRIMARY KEY  (pk1),
 | ||
| KEY key1 (key1),
 | ||
| KEY key2 (key2)
 | ||
| );
 | ||
| insert into t1 values (-5, 1, 1),
 | ||
| (-100, 1, 1),
 | ||
| (3, 1, 1),
 | ||
| (0, 1, 1),
 | ||
| (10, 1, 1);
 | ||
| explain select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | ||
| 1	SIMPLE	t1	index_merge	key1,key2	key1,key2	5,5	NULL	5	Using sort_union(key1,key2); Using where
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	key1	key2
 | ||
| -100	1	1
 | ||
| -5	1	1
 | ||
| 0	1	1
 | ||
| 3	1	1
 | ||
| 10	1	1
 | ||
| drop table t1;
 | ||
| create table t1 (
 | ||
| pk1 int unsigned not NULL,
 | ||
| key1 int(11),
 | ||
| key2 int(11),
 | ||
| PRIMARY KEY  (pk1),
 | ||
| KEY key1 (key1),
 | ||
| KEY key2 (key2)
 | ||
| );
 | ||
| insert into t1 values (0, 1, 1),
 | ||
| (0xFFFFFFFF, 1, 1),
 | ||
| (0xFFFFFFFE, 1, 1),
 | ||
| (1, 1, 1),
 | ||
| (2, 1, 1);
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	key1	key2
 | ||
| 0	1	1
 | ||
| 1	1	1
 | ||
| 2	1	1
 | ||
| 4294967294	1	1
 | ||
| 4294967295	1	1
 | ||
| drop table t1;
 | ||
| create table t1 (
 | ||
| pk1 char(4) not NULL,
 | ||
| key1 int(11),
 | ||
| key2 int(11),
 | ||
| PRIMARY KEY  (pk1),
 | ||
| KEY key1 (key1),
 | ||
| KEY key2 (key2)
 | ||
| ) collate latin2_general_ci;
 | ||
| insert into t1 values ('a1', 1, 1),
 | ||
| ('b2', 1, 1),
 | ||
| ('A3', 1, 1),
 | ||
| ('B4', 1, 1);
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	key1	key2
 | ||
| a1	1	1
 | ||
| A3	1	1
 | ||
| b2	1	1
 | ||
| B4	1	1
 | ||
| drop table t1;
 | ||
| create table t1 (
 | ||
| pk1 int not NULL,
 | ||
| pk2 char(4) not NULL collate latin1_german1_ci,
 | ||
| pk3 char(4) not NULL collate latin1_bin,
 | ||
| key1 int(11),
 | ||
| key2 int(11),
 | ||
| PRIMARY KEY  (pk1,pk2,pk3),
 | ||
| KEY key1 (key1),
 | ||
| KEY key2 (key2)
 | ||
| );
 | ||
| insert into t1 values
 | ||
| (1, 'u', 'u',        1, 1),
 | ||
| (1, 'u', char(0xEC), 1, 1),
 | ||
| (1, 'u', 'x',        1, 1);
 | ||
| insert ignore into t1 select pk1, char(0xEC), pk3, key1, key2  from t1;
 | ||
| insert ignore into t1 select pk1, 'x', pk3, key1, key2  from t1 where pk2='u';
 | ||
| insert ignore into t1 select 2, pk2, pk3, key1, key2  from t1;
 | ||
| select * from t1;
 | ||
| pk1	pk2	pk3	key1	key2
 | ||
| 1	<09>	u	1	1
 | ||
| 1	<09>	x	1	1
 | ||
| 1	<09>	<09>	1	1
 | ||
| 1	u	u	1	1
 | ||
| 1	u	x	1	1
 | ||
| 1	u	<09>	1	1
 | ||
| 1	x	u	1	1
 | ||
| 1	x	x	1	1
 | ||
| 1	x	<09>	1	1
 | ||
| 2	<09>	u	1	1
 | ||
| 2	<09>	x	1	1
 | ||
| 2	<09>	<09>	1	1
 | ||
| 2	u	u	1	1
 | ||
| 2	u	x	1	1
 | ||
| 2	u	<09>	1	1
 | ||
| 2	x	u	1	1
 | ||
| 2	x	x	1	1
 | ||
| 2	x	<09>	1	1
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	pk2	pk3	key1	key2
 | ||
| 1	<09>	u	1	1
 | ||
| 1	<09>	x	1	1
 | ||
| 1	<09>	<09>	1	1
 | ||
| 1	u	u	1	1
 | ||
| 1	u	x	1	1
 | ||
| 1	u	<09>	1	1
 | ||
| 1	x	u	1	1
 | ||
| 1	x	x	1	1
 | ||
| 1	x	<09>	1	1
 | ||
| 2	<09>	u	1	1
 | ||
| 2	<09>	x	1	1
 | ||
| 2	<09>	<09>	1	1
 | ||
| 2	u	u	1	1
 | ||
| 2	u	x	1	1
 | ||
| 2	u	<09>	1	1
 | ||
| 2	x	u	1	1
 | ||
| 2	x	x	1	1
 | ||
| 2	x	<09>	1	1
 | ||
| alter table t1 drop primary key;
 | ||
| select * from t1;
 | ||
| pk1	pk2	pk3	key1	key2
 | ||
| 1	<09>	u	1	1
 | ||
| 1	<09>	x	1	1
 | ||
| 1	<09>	<09>	1	1
 | ||
| 1	u	u	1	1
 | ||
| 1	u	x	1	1
 | ||
| 1	u	<09>	1	1
 | ||
| 1	x	u	1	1
 | ||
| 1	x	x	1	1
 | ||
| 1	x	<09>	1	1
 | ||
| 2	<09>	u	1	1
 | ||
| 2	<09>	x	1	1
 | ||
| 2	<09>	<09>	1	1
 | ||
| 2	u	u	1	1
 | ||
| 2	u	x	1	1
 | ||
| 2	u	<09>	1	1
 | ||
| 2	x	u	1	1
 | ||
| 2	x	x	1	1
 | ||
| 2	x	<09>	1	1
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	pk2	pk3	key1	key2
 | ||
| 1	<09>	u	1	1
 | ||
| 1	<09>	x	1	1
 | ||
| 1	<09>	<09>	1	1
 | ||
| 1	u	u	1	1
 | ||
| 1	u	x	1	1
 | ||
| 1	u	<09>	1	1
 | ||
| 1	x	u	1	1
 | ||
| 1	x	x	1	1
 | ||
| 1	x	<09>	1	1
 | ||
| 2	<09>	u	1	1
 | ||
| 2	<09>	x	1	1
 | ||
| 2	<09>	<09>	1	1
 | ||
| 2	u	u	1	1
 | ||
| 2	u	x	1	1
 | ||
| 2	u	<09>	1	1
 | ||
| 2	x	u	1	1
 | ||
| 2	x	x	1	1
 | ||
| 2	x	<09>	1	1
 | ||
| drop table t1;
 | ||
| create table t1  (
 | ||
| pk1 varchar(8) NOT NULL default '',
 | ||
| pk2 varchar(4) NOT NULL default '',
 | ||
| key1 int(11),
 | ||
| key2 int(11),
 | ||
| primary key(pk1, pk2),
 | ||
| KEY key1 (key1),
 | ||
| KEY key2 (key2)
 | ||
| );
 | ||
| insert into t1 values ('','empt',2,2),
 | ||
| ('a','a--a',2,2),
 | ||
| ('bb','b--b',2,2),
 | ||
| ('ccc','c--c',2,2),
 | ||
| ('dddd','d--d',2,2);
 | ||
| select * from t1 force index(key1, key2) where key1 < 3 or key2 < 3;
 | ||
| pk1	pk2	key1	key2
 | ||
| 	empt	2	2
 | ||
| a	a--a	2	2
 | ||
| bb	b--b	2	2
 | ||
| ccc	c--c	2	2
 | ||
| dddd	d--d	2	2
 | ||
| drop table t1;
 | ||
| SET GLOBAL innodb_stats_persistent=@save_stats_persistent;
 |