mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
MDEV-8779: mysqld got signal 11 in sql/opt_range_mrr.cc:100(step_down_to)
The crash was caused by range optimizer using RANGE_OPT_PARAM::min_key (and max_key) to store keys. Buffer size was a good upper bound for range analysis and partition pruning, but not for EITS selectivity calculations. Fixed by making these buffers variable-size. The sizes are calculated from [pseudo]indexes used for range analysis.
This commit is contained in:
@@ -276,6 +276,23 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
Warnings:
|
||||
Note 1003 select `test`.`ta`.`a` AS `a`,`test`.`tb`.`a` AS `a` from `test`.`t1` `ta` join `test`.`t2` `tb` where ((`test`.`tb`.`a` = `test`.`ta`.`a`) and (`test`.`ta`.`a` < 40) and (`test`.`ta`.`a` < 100))
|
||||
drop table t0,t1,t2;
|
||||
#
|
||||
# MDEV-8779: mysqld got signal 11 in sql/opt_range_mrr.cc:100(step_down_to)
|
||||
#
|
||||
set @tmp_mdev8779=@@optimizer_use_condition_selectivity;
|
||||
set optimizer_use_condition_selectivity=5;
|
||||
CREATE TABLE t1 (
|
||||
i int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
n varchar(2048) NOT NULL,
|
||||
d tinyint(1) unsigned NOT NULL,
|
||||
p int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (i)
|
||||
) DEFAULT CHARSET=utf8;
|
||||
insert into t1 values (1,'aaa',1,1), (2,'bbb',2,2);
|
||||
SELECT * FROM t1 WHERE t1.d = 0 AND t1.p = '1' AND t1.i != '-1' AND t1.n = 'some text';
|
||||
i n d p
|
||||
set optimizer_use_condition_selectivity= @tmp_mdev8779;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of the test file
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user