mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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
This commit is contained in:
@ -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
|
|||||||
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);
|
|||||||
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:
|
|||||||
/* 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:
|
|||||||
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; }
|
||||||
;
|
;
|
||||||
|
Reference in New Issue
Block a user