mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
100 lines
3.4 KiB
Text
100 lines
3.4 KiB
Text
SET SESSION STORAGE_ENGINE='InnoDB';
|
|
set @save_optimizer_switch_for_selectivity_test=@@optimizer_switch;
|
|
set optimizer_switch='extended_keys=on';
|
|
drop table if exists t0,t1,t2,t3;
|
|
select @@global.use_stat_tables;
|
|
@@global.use_stat_tables
|
|
COMPLEMENTARY
|
|
select @@session.use_stat_tables;
|
|
@@session.use_stat_tables
|
|
COMPLEMENTARY
|
|
set @save_use_stat_tables=@@use_stat_tables;
|
|
set use_stat_tables='preferably';
|
|
set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity;
|
|
set @save_histogram_size=@@histogram_size;
|
|
set @save_histogram_type=@@histogram_type;
|
|
set join_cache_level=2;
|
|
set @@global.histogram_size=0,@@local.histogram_size=0;
|
|
set histogram_type='single_prec_hb';
|
|
set optimizer_use_condition_selectivity=3;
|
|
#
|
|
# MDEV-31067: selectivity_from_histogram >1.0 for a DOUBLE_PREC_HB histogram
|
|
#
|
|
create table t0(a int);
|
|
insert into t0 select 1 from seq_1_to_78;
|
|
create table t1(a int);
|
|
insert into t1 select 1 from seq_1_to_26;
|
|
create table t10 (a int);
|
|
insert into t10 select 0 from t0, seq_1_to_4;
|
|
insert into t10 select 8693 from t1;
|
|
insert into t10 select 8694 from t1;
|
|
insert into t10 select 8695 from t1;
|
|
insert into t10 select 34783 from t1;
|
|
insert into t10 select 34784 from t1;
|
|
insert into t10 select 34785 from t1;
|
|
insert into t10 select 34785 from t0, seq_1_to_8;
|
|
insert into t10 select 65214 from t1;
|
|
insert into t10 select 65215 from t1;
|
|
insert into t10 select 65216 from t1;
|
|
insert into t10 select 65216 from t0, seq_1_to_52;
|
|
insert into t10 select 65217 from t1;
|
|
insert into t10 select 65218 from t1;
|
|
insert into t10 select 65219 from t1;
|
|
insert into t10 select 65219 from t0;
|
|
insert into t10 select 73913 from t1;
|
|
insert into t10 select 73914 from t1;
|
|
insert into t10 select 73915 from t1;
|
|
insert into t10 select 73915 from t0, seq_1_to_40;
|
|
insert into t10 select 78257 from t1;
|
|
insert into t10 select 78258 from t1;
|
|
insert into t10 select 78259 from t1;
|
|
insert into t10 select 91300 from t1;
|
|
insert into t10 select 91301 from t1;
|
|
insert into t10 select 91302 from t1;
|
|
insert into t10 select 91302 from t0, seq_1_to_6;
|
|
insert into t10 select 91303 from t1;
|
|
insert into t10 select 91304 from t1;
|
|
insert into t10 select 91305 from t1;
|
|
insert into t10 select 91305 from t0, seq_1_to_8;
|
|
insert into t10 select 99998 from t1;
|
|
insert into t10 select 99999 from t1;
|
|
insert into t10 select 100000 from t1;
|
|
set use_stat_tables=preferably;
|
|
analyze table t10 persistent for all;
|
|
Table Op Msg_type Msg_text
|
|
test.t10 analyze status Engine-independent statistics collected
|
|
test.t10 analyze status OK
|
|
flush tables;
|
|
set @tmp=@@optimizer_trace;
|
|
set optimizer_trace=1;
|
|
explain select * from t10 where a in (91303);
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t10 ALL NULL NULL NULL NULL 9984 Using where
|
|
# Must have selectivity_from_histogram <= 1.0:
|
|
select json_detailed(json_extract(trace, '$**.selectivity_for_columns')) as sel
|
|
from information_schema.optimizer_trace;
|
|
sel
|
|
[
|
|
[
|
|
{
|
|
"column_name": "a",
|
|
"ranges":
|
|
["91303 <= a <= 91303"],
|
|
"selectivity_from_histogram": 0.0357
|
|
}
|
|
]
|
|
]
|
|
set optimizer_trace=@tmp;
|
|
drop table t0,t1,t10;
|
|
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
|
set histogram_size=@save_histogram_size;
|
|
set use_stat_tables= @save_use_stat_tables;
|
|
#
|
|
# End of 10.4 tests
|
|
#
|
|
#
|
|
# Clean up
|
|
#
|
|
set @@global.histogram_size=@save_histogram_size;
|
|
set optimizer_switch=@save_optimizer_switch_for_selectivity_test;
|
|
SET SESSION STORAGE_ENGINE=DEFAULT;
|