mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 20:36:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			442 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			442 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
set @innodb_stats_persistent_save= @@innodb_stats_persistent;
 | 
						|
set @innodb_stats_persistent_sample_pages_save=
 | 
						|
@@innodb_stats_persistent_sample_pages;
 | 
						|
set global innodb_stats_persistent= 1;
 | 
						|
set global innodb_stats_persistent_sample_pages=100;
 | 
						|
drop view if exists v1;
 | 
						|
drop table if exists t1,t4;
 | 
						|
create table t4 (
 | 
						|
pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
 | 
						|
) engine=innodb;
 | 
						|
insert into t4 (a1, a2, b, c, d) values
 | 
						|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
 | 
						|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
 | 
						|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
 | 
						|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
 | 
						|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
 | 
						|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
 | 
						|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
 | 
						|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
 | 
						|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
 | 
						|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
 | 
						|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
 | 
						|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
 | 
						|
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
 | 
						|
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
 | 
						|
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
 | 
						|
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'),
 | 
						|
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
 | 
						|
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
 | 
						|
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
 | 
						|
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
 | 
						|
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
 | 
						|
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
 | 
						|
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
 | 
						|
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
 | 
						|
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
 | 
						|
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
 | 
						|
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
 | 
						|
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
 | 
						|
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
 | 
						|
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
 | 
						|
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
 | 
						|
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4');
 | 
						|
create index idx12672_0 on t4 (a1);
 | 
						|
create index idx12672_1 on t4 (a1,a2,b,c);
 | 
						|
create index idx12672_2 on t4 (a1,a2,b);
 | 
						|
analyze table t4;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t4	analyze	status	Engine-independent statistics collected
 | 
						|
test.t4	analyze	status	OK
 | 
						|
select distinct a1 from t4 where pk_col not in (1,2,3,4);
 | 
						|
a1
 | 
						|
a
 | 
						|
b
 | 
						|
c
 | 
						|
d
 | 
						|
drop table t4;
 | 
						|
create table t1 (
 | 
						|
a varchar(30), b varchar(30), primary key(a), key(b)
 | 
						|
) engine=innodb;
 | 
						|
select distinct a from t1;
 | 
						|
a
 | 
						|
drop table t1;
 | 
						|
create table t1(a int, key(a)) engine=innodb;
 | 
						|
insert into t1 values(1);
 | 
						|
select a, count(a) from t1 group by a with rollup;
 | 
						|
a	count(a)
 | 
						|
1	1
 | 
						|
NULL	1
 | 
						|
drop table t1;
 | 
						|
create table t1 (f1 int, f2 char(1), primary key(f1,f2)) engine=innodb;
 | 
						|
insert into t1 values ( 1,"e"),(2,"a"),( 3,"c"),(4,"d");
 | 
						|
alter table t1 drop primary key, add primary key (f2, f1);
 | 
						|
explain select distinct f1 a, f1 b from t1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	index	NULL	PRIMARY	5	NULL	4	Using index; Using temporary
 | 
						|
explain select distinct f1, f2 from t1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	index	NULL	PRIMARY	5	NULL	4	Using index
 | 
						|
drop table t1;
 | 
						|
create table t1(pk int primary key) engine=innodb;
 | 
						|
create view v1 as select pk from t1 where pk < 20;
 | 
						|
insert into t1 values (1), (2), (3), (4);
 | 
						|
select distinct pk from v1;
 | 
						|
pk
 | 
						|
1
 | 
						|
2
 | 
						|
3
 | 
						|
4
 | 
						|
insert into t1 values (5), (6), (7);
 | 
						|
select distinct pk from v1;
 | 
						|
pk
 | 
						|
1
 | 
						|
2
 | 
						|
3
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
drop view v1;
 | 
						|
drop table t1;
 | 
						|
End of 5.1 tests
 | 
						|
#
 | 
						|
# Bug#12540545 61101: ASSERTION FAILURE IN THREAD 1256741184 IN
 | 
						|
# FILE /BUILDDIR/BUILD/BUILD/MYSQ
 | 
						|
#
 | 
						|
CREATE TABLE t1 (a CHAR(1), b CHAR(1), PRIMARY KEY (a,b)) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES ('a', 'b'), ('c', 'd');
 | 
						|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 WHERE b = 'b';
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	index	NULL	PRIMARY	2	NULL	2	Using where; Using index
 | 
						|
SELECT COUNT(DISTINCT a) FROM t1 WHERE b = 'b';
 | 
						|
COUNT(DISTINCT a)
 | 
						|
1
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (a CHAR(1) NOT NULL, b CHAR(1) NOT NULL, UNIQUE KEY (a,b))
 | 
						|
ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES ('a', 'b'), ('c', 'd');
 | 
						|
EXPLAIN SELECT COUNT(DISTINCT a) FROM t1 WHERE b = 'b';
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	index	NULL	a	2	NULL	2	Using where; Using index
 | 
						|
SELECT COUNT(DISTINCT a) FROM t1 WHERE b = 'b';
 | 
						|
COUNT(DISTINCT a)
 | 
						|
1
 | 
						|
DROP TABLE t1;
 | 
						|
End of 5.5 tests
 | 
						|
#
 | 
						|
# Bug#17909656 - WRONG RESULTS FOR A SIMPLE QUERY WITH GROUP BY
 | 
						|
#
 | 
						|
CREATE TABLE t0 (
 | 
						|
i1 INTEGER NOT NULL
 | 
						|
);
 | 
						|
INSERT INTO t0 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
 | 
						|
(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
 | 
						|
(21),(22),(23),(24),(25),(26),(27),(28),(29),(30);
 | 
						|
CREATE TABLE t1 (
 | 
						|
c1 CHAR(1) NOT NULL,
 | 
						|
i1 INTEGER NOT NULL,
 | 
						|
i2 INTEGER NOT NULL,
 | 
						|
UNIQUE KEY k1 (c1,i2)
 | 
						|
) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 SELECT 'A',i1,i1 FROM t0;
 | 
						|
INSERT INTO t1 SELECT 'B',i1,i1 FROM t0;
 | 
						|
INSERT INTO t1 SELECT 'C',i1,i1 FROM t0;
 | 
						|
INSERT INTO t1 SELECT 'D',i1,i1 FROM t0;
 | 
						|
INSERT INTO t1 SELECT 'E',i1,i1 FROM t0;
 | 
						|
INSERT INTO t1 SELECT 'F',i1,i1 FROM t0;
 | 
						|
CREATE TABLE t2 (
 | 
						|
c1 CHAR(1) NOT NULL,
 | 
						|
i1 INTEGER NOT NULL,
 | 
						|
i2 INTEGER NOT NULL,
 | 
						|
UNIQUE KEY k2 (c1,i1,i2)
 | 
						|
) ENGINE=InnoDB;
 | 
						|
INSERT INTO t2 SELECT 'A',i1,i1 FROM t0;
 | 
						|
INSERT INTO t2 SELECT 'B',i1,i1 FROM t0;
 | 
						|
INSERT INTO t2 SELECT 'C',i1,i1 FROM t0;
 | 
						|
INSERT INTO t2 SELECT 'D',i1,i1 FROM t0;
 | 
						|
INSERT INTO t2 SELECT 'E',i1,i1 FROM t0;
 | 
						|
INSERT INTO t2 SELECT 'F',i1,i1 FROM t0;
 | 
						|
ANALYZE TABLE t1;
 | 
						|
ANALYZE TABLE t2;
 | 
						|
EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' AND i2 = 17) OR ( c1 = 'F')
 | 
						|
GROUP BY c1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	range	k1	k1	5	NULL	31	Using where; Using index
 | 
						|
SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' AND i2 = 17) OR ( c1 = 'F')
 | 
						|
GROUP BY c1;
 | 
						|
c1	max(i2)
 | 
						|
C	17
 | 
						|
F	30
 | 
						|
EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR ( c1 = 'F' AND i2 = 17))
 | 
						|
GROUP BY c1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	range	k1	k1	5	NULL	31	Using where; Using index
 | 
						|
SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR ( c1 = 'F' AND i2 = 17))
 | 
						|
GROUP BY c1;
 | 
						|
c1	max(i2)
 | 
						|
C	30
 | 
						|
F	17
 | 
						|
EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
 | 
						|
GROUP BY c1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	range	k1	k1	5	NULL	1	Using where; Using index for group-by
 | 
						|
SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
 | 
						|
GROUP BY c1;
 | 
						|
c1	max(i2)
 | 
						|
C	17
 | 
						|
F	17
 | 
						|
EXPLAIN SELECT c1, max(i2) FROM t1 
 | 
						|
WHERE ((c1 = 'C' AND (i2 = 40 OR i2 = 30)) OR ( c1 = 'F' AND (i2 = 40 )))
 | 
						|
GROUP BY c1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t1	range	k1	k1	5	NULL	3	Using where; Using index
 | 
						|
SELECT c1, max(i2) FROM t1 
 | 
						|
WHERE ((c1 = 'C' AND (i2 = 40 OR i2 = 30)) OR ( c1 = 'F' AND (i2 = 40 )))
 | 
						|
GROUP BY c1;
 | 
						|
c1	max(i2)
 | 
						|
C	30
 | 
						|
EXPLAIN SELECT c1, i1, max(i2) FROM t2
 | 
						|
WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )
 | 
						|
GROUP BY c1,i1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t2	range	k2	k2	9	NULL	60	Using where; Using index for group-by
 | 
						|
SELECT c1, i1, max(i2) FROM t2
 | 
						|
WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )
 | 
						|
GROUP BY c1,i1;
 | 
						|
c1	i1	max(i2)
 | 
						|
C	17	17
 | 
						|
F	17	17
 | 
						|
EXPLAIN SELECT c1, i1, max(i2) FROM t2 
 | 
						|
WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ))
 | 
						|
GROUP BY c1,i1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t2	range	k2	k2	9	NULL	60	Using where; Using index for group-by
 | 
						|
SELECT c1, i1, max(i2) FROM t2 
 | 
						|
WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ))
 | 
						|
GROUP BY c1,i1;
 | 
						|
c1	i1	max(i2)
 | 
						|
C	17	17
 | 
						|
F	17	17
 | 
						|
EXPLAIN SELECT c1, i1, max(i2) FROM t2 
 | 
						|
WHERE ((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35) OR ( i2 = 17 ))
 | 
						|
GROUP BY c1,i1;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	SIMPLE	t2	index	k2	k2	9	NULL	180	Using where; Using index
 | 
						|
SELECT c1, i1, max(i2) FROM t2 
 | 
						|
WHERE ((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35) OR ( i2 = 17 ))
 | 
						|
GROUP BY c1,i1;
 | 
						|
c1	i1	max(i2)
 | 
						|
A	17	17
 | 
						|
B	17	17
 | 
						|
C	1	1
 | 
						|
C	2	2
 | 
						|
C	3	3
 | 
						|
C	4	4
 | 
						|
C	5	5
 | 
						|
C	6	6
 | 
						|
C	7	7
 | 
						|
C	8	8
 | 
						|
C	9	9
 | 
						|
C	10	10
 | 
						|
C	11	11
 | 
						|
C	12	12
 | 
						|
C	13	13
 | 
						|
C	14	14
 | 
						|
C	15	15
 | 
						|
C	16	16
 | 
						|
C	17	17
 | 
						|
C	18	18
 | 
						|
C	19	19
 | 
						|
C	20	20
 | 
						|
C	21	21
 | 
						|
C	22	22
 | 
						|
C	23	23
 | 
						|
C	24	24
 | 
						|
C	25	25
 | 
						|
C	26	26
 | 
						|
C	27	27
 | 
						|
C	28	28
 | 
						|
C	29	29
 | 
						|
C	30	30
 | 
						|
D	17	17
 | 
						|
E	17	17
 | 
						|
F	1	1
 | 
						|
F	2	2
 | 
						|
F	3	3
 | 
						|
F	4	4
 | 
						|
F	5	5
 | 
						|
F	6	6
 | 
						|
F	7	7
 | 
						|
F	8	8
 | 
						|
F	9	9
 | 
						|
F	10	10
 | 
						|
F	11	11
 | 
						|
F	12	12
 | 
						|
F	13	13
 | 
						|
F	14	14
 | 
						|
F	15	15
 | 
						|
F	16	16
 | 
						|
F	17	17
 | 
						|
F	18	18
 | 
						|
F	19	19
 | 
						|
F	20	20
 | 
						|
F	21	21
 | 
						|
F	22	22
 | 
						|
F	23	23
 | 
						|
F	24	24
 | 
						|
F	25	25
 | 
						|
F	26	26
 | 
						|
F	27	27
 | 
						|
F	28	28
 | 
						|
F	29	29
 | 
						|
F	30	30
 | 
						|
DROP TABLE t0,t1,t2;
 | 
						|
#
 | 
						|
# MDEV-MariaDB daemon leaks memory with specific query
 | 
						|
#
 | 
						|
CREATE TABLE t1 (`voter_id` int(11) unsigned NOT NULL,
 | 
						|
`language_id` int(11) unsigned NOT NULL DEFAULT '1'
 | 
						|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 | 
						|
CREATE TABLE t2 (`voter_id` int(10) unsigned NOT NULL DEFAULT '0',
 | 
						|
`serialized_c` mediumblob) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 | 
						|
insert into t2 values (1,repeat("a",1000)),(2,repeat("a",1000)),(3,repeat("b",1000)),(4,repeat("c",1000)),(4,repeat("b",1000));
 | 
						|
SELECT GROUP_CONCAT(t1.language_id SEPARATOR ',') AS `translation_resources`, `d`.`serialized_c` FROM t2 AS `d` LEFT JOIN t1 ON `d`.`voter_id` = t1.`voter_id` GROUP BY `d`.`voter_id` ORDER BY 10-d.voter_id+RAND()*0;
 | 
						|
translation_resources	serialized_c
 | 
						|
NULL	cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 | 
						|
NULL	bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 | 
						|
NULL	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
NULL	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
drop table t1,t2;
 | 
						|
#
 | 
						|
# MDEV-30143: Segfault on select query using index for group-by and filesort
 | 
						|
#
 | 
						|
CREATE TABLE t1 (a varchar(35), b varchar(4)) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES
 | 
						|
('Albania','AXA'),('Australia','AUS'),('American Samoa','AMSA'),('Bahamas','BS');
 | 
						|
CREATE TABLE t2 (a varchar(4), b varchar(50), PRIMARY KEY (b,a), KEY (a)) ENGINE=InnoDB;
 | 
						|
INSERT INTO t2 VALUES
 | 
						|
('BERM','African Methodist Episcopal'),('AUS','Anglican'),('BERM','Anglican'),('BS','Anglican'),('BS','Baptist'),('BS','Methodist');
 | 
						|
EXPLAIN SELECT t1.a
 | 
						|
FROM (SELECT a FROM t2 GROUP BY a ORDER BY COUNT(DISTINCT b) LIMIT 1) dt
 | 
						|
JOIN t1 ON dt.a=t1.b;
 | 
						|
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						|
1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	#	Using where
 | 
						|
1	PRIMARY	<derived2>	ref	key0	key0	6	test.t1.b	#	
 | 
						|
2	DERIVED	t2	range	a	a	58	NULL	#	Using index for group-by; Using temporary; Using filesort
 | 
						|
SELECT t1.a
 | 
						|
FROM (SELECT a FROM t2 GROUP BY a ORDER BY COUNT(DISTINCT b) LIMIT 1) dt
 | 
						|
JOIN t1 ON dt.a=t1.b;
 | 
						|
a
 | 
						|
Australia
 | 
						|
DROP TABLES t1, t2;
 | 
						|
#
 | 
						|
# MDEV-15656: Assertion `is_last_prefix <= 0' failed in
 | 
						|
#             QUICK_GROUP_MIN_MAX_SELECT::get_next
 | 
						|
#
 | 
						|
SET @lru_depth.save= @@innodb_lru_scan_depth;
 | 
						|
SET GLOBAL innodb_lru_scan_depth= 1024;
 | 
						|
CREATE TABLE t1 (
 | 
						|
pk_part1 INT AUTO_INCREMENT,
 | 
						|
a VARCHAR(4),
 | 
						|
row_start timestamp(6) default current_timestamp,
 | 
						|
PRIMARY KEY (pk_part1, row_start)
 | 
						|
) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 (a) VALUES
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo'),
 | 
						|
('foo'),('bar'),('foo'),('bar'),('foo');
 | 
						|
connect  con1,localhost,root,,test;
 | 
						|
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
SELECT DISTINCT pk_part1 FROM t1;
 | 
						|
connection default;
 | 
						|
INSERT INTO t1 (pk_part1) VALUES (NULL);
 | 
						|
connection con1;
 | 
						|
disconnect con1;
 | 
						|
connection default;
 | 
						|
DROP TABLE t1;
 | 
						|
SET GLOBAL innodb_lru_scan_depth= @lru_depth.save;
 | 
						|
set global innodb_stats_persistent= @innodb_stats_persistent_save;
 | 
						|
set global innodb_stats_persistent_sample_pages=
 | 
						|
@innodb_stats_persistent_sample_pages_save;
 |