diff options
author | Sergey Petrunia <sergefp@mysql.com> | 2009-03-11 23:13:39 +0300 |
---|---|---|
committer | Sergey Petrunia <sergefp@mysql.com> | 2009-03-11 23:13:39 +0300 |
commit | fd35040890864139eba77c16c4292c28eadf0f10 (patch) | |
tree | f959e15dc0af30eb3066527235b89ec71e837e9f /mysql-test/t/index_merge_myisam.test | |
parent | 989ee96b64b9eb510a62857c0ca7ef7dbdf28f2b (diff) | |
download | mariadb-git-fd35040890864139eba77c16c4292c28eadf0f10.tar.gz |
Change optimizer_switch from no_xxx to xxx=on/xx=off.
mysql-test/r/index_merge_myisam.result:
Testcases
mysql-test/t/index_merge_myisam.test:
Testcases
sql/strfunc.cc:
Change optimizer_switch from no_xxx to xxx=on/xx=off.
- Add functions to parse the new syntax
Diffstat (limited to 'mysql-test/t/index_merge_myisam.test')
-rw-r--r-- | mysql-test/t/index_merge_myisam.test | 75 |
1 files changed, 58 insertions, 17 deletions
diff --git a/mysql-test/t/index_merge_myisam.test b/mysql-test/t/index_merge_myisam.test index 13997cfd427..d6945ec9cf4 100644 --- a/mysql-test/t/index_merge_myisam.test +++ b/mysql-test/t/index_merge_myisam.test @@ -21,7 +21,47 @@ let $merge_table_support= 1; --source include/index_merge_ror_cpk.inc --echo # ---echo # @@optimizer_switch support and check +--echo # Generic @@optimizer_switch tests (move those into a separate file if +--echo # we get another @@optimizer_switch user) +--echo # + +select @@optimizer_switch; + +set optimizer_switch='index_merge=off,index_merge_union=off'; +select @@optimizer_switch; + +set optimizer_switch='index_merge_union=on'; +select @@optimizer_switch; + +set optimizer_switch='default,index_merge_sort_union=off'; +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'; + +--echo # +--echo # Check index_merge's @@optimizer_switch flags --echo # select @@optimizer_switch; @@ -40,39 +80,39 @@ from t0 A, t0 B, t0 C; explain select * from t1 where a=1 or b=1; --echo This should use ALL: -set optimizer_switch='no_index_merge'; +set optimizer_switch='default,index_merge=off'; explain select * from t1 where a=1 or b=1; --echo This should use sort-union: -set optimizer_switch='no_index_merge_union'; +set optimizer_switch='default,index_merge_union=off'; explain select * from t1 where a=1 or b=1; --echo This will use sort-union: -set optimizer_switch=''; +set optimizer_switch=default; explain select * from t1 where a<1 or b <1; --echo This should use ALL: -set optimizer_switch='no_index_merge_sort_union'; +set optimizer_switch='default,index_merge_sort_union=off'; explain select * from t1 where a<1 or b <1; --echo This should use ALL: -set optimizer_switch='no_index_merge'; +set optimizer_switch='default,index_merge=off'; explain select * from t1 where a<1 or b <1; --echo This will use sort-union: -set optimizer_switch='no_index_merge_union'; +set optimizer_switch='default,index_merge_union=off'; explain select * from t1 where a<1 or b <1; alter table t1 add d int, add key(d); update t1 set d=a; --echo This will use sort_union: -set optimizer_switch=''; +set optimizer_switch=default; explain select * from t1 where (a=3 or b in (1,2)) and (c=3 or d=4); --echo And if we disable sort_union, union: -set optimizer_switch='no_index_merge_sort_union'; +set optimizer_switch='default,index_merge_sort_union=off'; explain select * from t1 where (a=3 or b in (1,2)) and (c=3 or d=4); drop table t1; @@ -89,40 +129,41 @@ select A.a+10*B.a, A.a+10*B.a, A.a+10*B.a+100*C.a, 'foo', 'bar' from t0 A, t0 B, t0 C, t0 D where D.a<5; --echo This should be intersect: -set optimizer_switch=''; +set optimizer_switch=default; explain select * from t1 where a=10 and b=10; --echo No intersect when index_merge is disabled: -set optimizer_switch='no_index_merge'; +set optimizer_switch='default,index_merge=off'; explain select * from t1 where a=10 and b=10; --echo No intersect if it is disabled: -set optimizer_switch='no_index_merge_intersection'; +set optimizer_switch='default,index_merge_intersection=off'; explain select * from t1 where a=10 and b=10; --echo Do intersect when union was disabled -set optimizer_switch='no_index_merge_union'; +set optimizer_switch='default,index_merge_union=off'; explain select * from t1 where a=10 and b=10; --echo Do intersect when sort_union was disabled -set optimizer_switch='no_index_merge_sort_union'; +set optimizer_switch='default,index_merge_sort_union=off'; explain select * from t1 where a=10 and b=10; # Now take union-of-intersection and see how we can disable parts of it --echo This will use intersection inside a union: -set optimizer_switch=''; +set optimizer_switch=default; explain select * from t1 where a=10 and b=10 or c=10; --echo Should be only union left: -set optimizer_switch='no_index_merge_intersection'; +set optimizer_switch='default,index_merge_intersection=off'; explain select * from t1 where a=10 and b=10 or c=10; --echo This will switch to sort-union (intersection will be gone, too, --echo thats a known limitation: -set optimizer_switch='no_index_merge_union'; +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; show variables like 'optimizer_switch'; + drop table t0, t1; |