Commit ff79cd68 authored by unknown's avatar unknown

WL#3527: Extend IGNORE INDEX so places where index is ignored can

         be specified
 5.0 part of the fix. Implements IGNORE INDEX FOR JOIN as a synonym
 of IGNORE INDEX for backward compatibility with the 5.1 fix.


mysql-test/r/select.result:
  WL#3527: Extend IGNORE INDEX so places where index is ignored can 
           be specified
  - test case
mysql-test/t/select.test:
  WL#3527: Extend IGNORE INDEX so places where index is ignored can 
           be specified
  - test case
parent 5df7d39e
...@@ -3611,3 +3611,12 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -3611,3 +3611,12 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range si,ai si 5 NULL 2 Using where 1 SIMPLE t2 range si,ai si 5 NULL 2 Using where
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where 1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
CREATE TABLE t1 (a INT, b INT, KEY (a));
INSERT INTO t1 VALUES (1,1),(2,2);
EXPLAIN SELECT 1 FROM t1 WHERE a = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
EXPLAIN SELECT 1 FROM t1 IGNORE INDEX FOR JOIN (a) WHERE a = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
DROP TABLE t1;
...@@ -3092,3 +3092,13 @@ SELECT t3.a FROM t1,t2,t3 ...@@ -3092,3 +3092,13 @@ SELECT t3.a FROM t1,t2,t3
t3.c IN ('bb','ee'); t3.c IN ('bb','ee');
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
#
# WL3527: Extend IGNORE INDEX so places where index is ignored can
# be specified
#
CREATE TABLE t1 (a INT, b INT, KEY (a)); INSERT INTO t1 VALUES (1,1),(2,2);
EXPLAIN SELECT 1 FROM t1 WHERE a = 1;
EXPLAIN SELECT 1 FROM t1 IGNORE INDEX FOR JOIN (a) WHERE a = 1;
DROP TABLE t1;
...@@ -772,7 +772,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -772,7 +772,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
key_alg opt_btree_or_rtree key_alg opt_btree_or_rtree
%type <string_list> %type <string_list>
key_usage_list using_list key_usage_list key_usage_list_inner using_list
%type <key_part> %type <key_part>
key_part key_part
...@@ -5553,6 +5553,10 @@ opt_outer: ...@@ -5553,6 +5553,10 @@ opt_outer:
/* empty */ {} /* empty */ {}
| OUTER {}; | OUTER {};
opt_for_join:
/* empty */
| FOR_SYM JOIN_SYM;
opt_key_definition: opt_key_definition:
/* empty */ {} /* empty */ {}
| USE_SYM key_usage_list | USE_SYM key_usage_list
...@@ -5568,15 +5572,20 @@ opt_key_definition: ...@@ -5568,15 +5572,20 @@ opt_key_definition:
sel->use_index_ptr= &sel->use_index; sel->use_index_ptr= &sel->use_index;
sel->table_join_options|= TL_OPTION_FORCE_INDEX; sel->table_join_options|= TL_OPTION_FORCE_INDEX;
} }
| IGNORE_SYM key_usage_list | IGNORE_SYM key_or_index opt_for_join key_usage_list_inner
{ {
SELECT_LEX *sel= Select; SELECT_LEX *sel= Select;
sel->ignore_index= *$2; sel->ignore_index= *$4;
sel->ignore_index_ptr= &sel->ignore_index; sel->ignore_index_ptr= &sel->ignore_index;
}; };
key_usage_list: key_usage_list:
key_or_index { Select->interval_list.empty(); } key_or_index key_usage_list_inner
{ $$= $2; }
;
key_usage_list_inner:
{ Select->interval_list.empty(); }
'(' key_list_or_empty ')' '(' key_list_or_empty ')'
{ $$= &Select->interval_list; } { $$= &Select->interval_list; }
; ;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment