mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Fix @@optimizer_switch support
- Let "mysqld --help --verbose" list all optimizer options - Make it possible to add new @@optimizer_switch flags w/o causing .result changes all over the testsuite: = Remove "select @@optimizer_switch" from tests that do not need all switches = Move @@optimizer_switch-specific tests to t/optimizer_switch.test
This commit is contained in:
parent
4274e9b5d4
commit
13058d8056
16 changed files with 233 additions and 292 deletions
|
@ -1413,66 +1413,6 @@ WHERE
|
|||
`RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND
|
||||
`TESTID`='' AND `UCCHECK`='';
|
||||
drop table t1;
|
||||
#
|
||||
# Generic @@optimizer_switch tests (move those into a separate file if
|
||||
# we get another @@optimizer_switch user)
|
||||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='index_merge_union=on';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,index_merge_sort_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=4;
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of '4'
|
||||
set optimizer_switch=NULL;
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'NULL'
|
||||
set optimizer_switch='default,index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge'
|
||||
set optimizer_switch='index_merge=index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=index_merge'
|
||||
set optimizer_switch='index_merge=on,but...';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'but...'
|
||||
set optimizer_switch='index_merge=';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge='
|
||||
set optimizer_switch='index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge'
|
||||
set optimizer_switch='on';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'on'
|
||||
set optimizer_switch='index_merge=on,index_merge=off';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=off'
|
||||
set optimizer_switch='index_merge_union=on,index_merge_union=default';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge_union=default'
|
||||
set optimizer_switch='default,index_merge=on,index_merge=off,default';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=off,default'
|
||||
set optimizer_switch=default;
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off,default';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set @@global.optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
#
|
||||
# Check index_merge's @@optimizer_switch flags
|
||||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (a int, b int, c int, filler char(100),
|
||||
|
@ -1580,7 +1520,4 @@ explain select * from t1 where a=10 and b=10 or c=10;
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index_merge a,b,c a,c 5,5 NULL 54 Using sort_union(a,c); Using where
|
||||
set optimizer_switch=default;
|
||||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
drop table t0, t1;
|
||||
|
|
|
@ -392,9 +392,9 @@ drop table t0, t1;
|
|||
# Part of MWL#67: DS-MRR backport: add an @@optimizer_switch flag for
|
||||
# index_condition pushdown:
|
||||
# - engine_condition_pushdown does not affect ICP
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
select @@optimizer_switch like '%index_condition_pushdown=on%';
|
||||
@@optimizer_switch like '%index_condition_pushdown=on%'
|
||||
1
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (a int, b int, key(a));
|
||||
|
|
99
mysql-test/r/optimizer_switch.result
Normal file
99
mysql-test/r/optimizer_switch.result
Normal file
|
@ -0,0 +1,99 @@
|
|||
#
|
||||
# Generic @@optimizer_switch tests
|
||||
#
|
||||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='index_merge_union=on';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,index_merge_sort_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=4;
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of '4'
|
||||
set optimizer_switch=NULL;
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'NULL'
|
||||
set optimizer_switch='default,index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge'
|
||||
set optimizer_switch='index_merge=index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=index_merge'
|
||||
set optimizer_switch='index_merge=on,but...';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'but...'
|
||||
set optimizer_switch='index_merge=';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge='
|
||||
set optimizer_switch='index_merge';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge'
|
||||
set optimizer_switch='on';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'on'
|
||||
set optimizer_switch='index_merge=on,index_merge=off';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=off'
|
||||
set optimizer_switch='index_merge_union=on,index_merge_union=default';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge_union=default'
|
||||
set optimizer_switch='default,index_merge=on,index_merge=off,default';
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'index_merge=off,default'
|
||||
set optimizer_switch=default;
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off,default';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set @@global.optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
#
|
||||
# Check index_merge's @@optimizer_switch flags
|
||||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
|
||||
BUG#37120 optimizer_switch allowable values not according to specification
|
||||
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=default;
|
|
@ -1,6 +1,6 @@
|
|||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
1
|
||||
set optimizer_switch='materialization=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
@ -4925,6 +4925,6 @@ DROP TABLE t3;
|
|||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
set optimizer_switch=default;
|
||||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
1
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='materialization=off,semijoin=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
@ -4925,6 +4922,3 @@ DROP TABLE t3;
|
|||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
set optimizer_switch=default;
|
||||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='semijoin=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
@ -4925,6 +4922,3 @@ DROP TABLE t3;
|
|||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
set optimizer_switch=default;
|
||||
show variables like 'optimizer_switch';
|
||||
Variable_name Value
|
||||
optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
|
|
|
@ -197,45 +197,6 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 103 100.00 Using where; Using join buffer
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t10`.`pk`) and (`test`.`t10`.`pk` < 3))
|
||||
|
||||
BUG#37120 optimizer_switch allowable values not according to specification
|
||||
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=default;
|
||||
drop table t0, t1, t2;
|
||||
drop table t10, t11, t12;
|
||||
|
||||
|
|
|
@ -201,45 +201,6 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 103 100.00 Using where; Using join buffer
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t10`.`pk`) and (`test`.`t10`.`pk` < 3))
|
||||
|
||||
BUG#37120 optimizer_switch allowable values not according to specification
|
||||
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=on,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,firstmatch=on,loosescan=off,materialization=off,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on
|
||||
set optimizer_switch=default;
|
||||
drop table t0, t1, t2;
|
||||
drop table t10, t11, t12;
|
||||
|
||||
|
|
|
@ -20,78 +20,6 @@ let $merge_table_support= 1;
|
|||
--source include/index_merge_2sweeps.inc
|
||||
--source include/index_merge_ror_cpk.inc
|
||||
|
||||
--echo #
|
||||
--echo # Generic @@optimizer_switch tests (move those into a separate file if
|
||||
--echo # we get another @@optimizer_switch user)
|
||||
--echo #
|
||||
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='index_merge_union=on';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,index_merge_sort_union=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch=4;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch=NULL;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='default,index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=on,but...';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='on';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=on,index_merge=off';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge_union=on,index_merge_union=default';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='default,index_merge=on,index_merge=off,default';
|
||||
|
||||
set optimizer_switch=default;
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off,default';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
|
||||
# Check setting defaults for global vars
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@global.optimizer_switch;
|
||||
set @@global.optimizer_switch=default;
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@global.optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # Check index_merge's @@optimizer_switch flags
|
||||
--echo #
|
||||
--replace_regex /,table_elimination.on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (a int, b int, c int, filler char(100),
|
||||
|
@ -190,8 +118,6 @@ set optimizer_switch='default,index_merge_union=off';
|
|||
explain select * from t1 where a=10 and b=10 or c=10;
|
||||
|
||||
set optimizer_switch=default;
|
||||
--replace_regex /,table_elimination.on//
|
||||
show variables like 'optimizer_switch';
|
||||
|
||||
drop table t0, t1;
|
||||
|
||||
|
|
|
@ -103,8 +103,7 @@ drop table t0, t1;
|
|||
|
||||
|
||||
# Check that optimizer_switch is present
|
||||
--replace_regex /,table_elimination=o[nf]*//
|
||||
select @@optimizer_switch;
|
||||
select @@optimizer_switch like '%index_condition_pushdown=on%';
|
||||
|
||||
# Check if it affects ICP
|
||||
create table t0 (a int);
|
||||
|
|
113
mysql-test/t/optimizer_switch.test
Normal file
113
mysql-test/t/optimizer_switch.test
Normal file
|
@ -0,0 +1,113 @@
|
|||
--echo #
|
||||
--echo # Generic @@optimizer_switch tests
|
||||
--echo #
|
||||
--echo #
|
||||
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='index_merge_union=on';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,index_merge_sort_union=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch=4;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch=NULL;
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='default,index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=on,but...';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='on';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge=on,index_merge=off';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='index_merge_union=on,index_merge_union=default';
|
||||
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set optimizer_switch='default,index_merge=on,index_merge=off,default';
|
||||
|
||||
set optimizer_switch=default;
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off,default';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
|
||||
# Check setting defaults for global vars
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@global.optimizer_switch;
|
||||
set @@global.optimizer_switch=default;
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@global.optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # Check index_merge's @@optimizer_switch flags
|
||||
--echo #
|
||||
--replace_regex /,table_elimination.on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
--echo
|
||||
--echo BUG#37120 optimizer_switch allowable values not according to specification
|
||||
--echo
|
||||
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off,semijoin=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,materialization=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
|
||||
|
|
@ -1,13 +1,11 @@
|
|||
#
|
||||
# Run subselect.test without semi-join optimization (test materialize)
|
||||
#
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
set optimizer_switch='materialization=off';
|
||||
|
||||
--source t/subselect.test
|
||||
|
||||
set optimizer_switch=default;
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
#
|
||||
# Run subselect.test without semi-join optimization (test materialize)
|
||||
#
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
set optimizer_switch='materialization=off,semijoin=off';
|
||||
|
||||
--source t/subselect.test
|
||||
|
||||
set optimizer_switch=default;
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
#
|
||||
# Run subselect.test without semi-join optimization (test materialize)
|
||||
#
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
set optimizer_switch='semijoin=off';
|
||||
|
||||
--source t/subselect.test
|
||||
|
||||
set optimizer_switch=default;
|
||||
--replace_regex /,table_elimination=on//
|
||||
show variables like 'optimizer_switch';
|
||||
|
||||
|
|
|
@ -92,46 +92,6 @@ execute s1;
|
|||
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
|
||||
explain extended select * from t1 where a in (select pk from t10 where pk<3);
|
||||
|
||||
--echo
|
||||
--echo BUG#37120 optimizer_switch allowable values not according to specification
|
||||
--echo
|
||||
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off,semijoin=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,materialization=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
--replace_regex /,table_elimination=on//
|
||||
select @@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
|
||||
drop table t0, t1, t2;
|
||||
drop table t10, t11, t12;
|
||||
|
||||
|
|
|
@ -409,6 +409,12 @@ static const char *optimizer_switch_str="index_merge=on,index_merge_union=on,"
|
|||
"index_merge_sort_union=on,"
|
||||
"index_merge_intersection=on,"
|
||||
"index_condition_pushdown=on,"
|
||||
"firstmatch=on,"
|
||||
"loosescan=on,"
|
||||
"materialization=on,"
|
||||
"semijoin=on,"
|
||||
"partial_match_rowid_merge=on,"
|
||||
"partial_match_table_scan=on,"
|
||||
"subquery_cache=on"
|
||||
#ifndef DBUG_OFF
|
||||
",table_elimination=on";
|
||||
|
@ -7227,7 +7233,9 @@ The minimum value for this variable is 4096.",
|
|||
{"optimizer_switch", OPT_OPTIMIZER_SWITCH,
|
||||
"optimizer_switch=option=val[,option=val...], where option={index_merge, "
|
||||
"index_merge_union, index_merge_sort_union, index_merge_intersection, "
|
||||
"index_condition_pushdown, subquery_cache"
|
||||
"index_condition_pushdown, firstmatch, loosescan, materialization, "
|
||||
"semijoin, partial_match_rowid_merge, partial_match_table_scan, "
|
||||
"subquery_cache"
|
||||
#ifndef DBUG_OFF
|
||||
", table_elimination"
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue