Loading mysql-test/r/key.result +8 −0 Original line number Diff line number Diff line Loading @@ -455,3 +455,11 @@ ORDER BY c.b, c.d a b c d e f g h i j a b c d 2 2 1 2004-11-30 12:00:00 1 0 0 0 0 0 2 3388000 -553000 NULL DROP TABLE t1, t2; CREATE TABLE t1( a TINYINT, KEY(a) ) ENGINE=MyISAM; INSERT INTO t1 VALUES( 1 ); ALTER TABLE t1 DISABLE KEYS; EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1 DROP TABLE t1; End of 5.0 tests. mysql-test/r/myisam.result +26 −0 Original line number Diff line number Diff line Loading @@ -1780,4 +1780,30 @@ create table t3 (c1 int) engine=myisam pack_keys=default; create table t4 (c1 int) engine=myisam pack_keys=2; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1 drop table t1, t2, t3; CREATE TABLE t1(a INT, b INT, KEY inx (a), UNIQUE KEY uinx (b)) ENGINE=MyISAM; INSERT INTO t1(a,b) VALUES (1,1),(2,2),(3,3),(4,4),(5,5); SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 ALTER TABLE t1 DISABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 SELECT a FROM t1 USE INDEX (inx) WHERE a=1; a 1 SELECT b FROM t1 FORCE INDEX (uinx) WHERE b=1; b 1 SELECT b FROM t1 USE INDEX (uinx) WHERE b=1; b 1 SELECT a FROM t1 FORCE INDEX (inx,uinx) WHERE a=1; a 1 ALTER TABLE t1 ENABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 DROP TABLE t1; End of 5.0 tests mysql-test/t/key.test +12 −0 Original line number Diff line number Diff line Loading @@ -432,3 +432,15 @@ ORDER BY c.b, c.d ; DROP TABLE t1, t2; # # Bug #20604: Test for disabled keys with aggregate functions and FORCE INDEX. # CREATE TABLE t1( a TINYINT, KEY(a) ) ENGINE=MyISAM; INSERT INTO t1 VALUES( 1 ); ALTER TABLE t1 DISABLE KEYS; EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a); DROP TABLE t1; --echo End of 5.0 tests. mysql-test/t/myisam.test +16 −0 Original line number Diff line number Diff line Loading @@ -1145,4 +1145,20 @@ create table t3 (c1 int) engine=myisam pack_keys=default; create table t4 (c1 int) engine=myisam pack_keys=2; drop table t1, t2, t3; # # Bug#28476: force index on a disabled myisam index gives error 124 # CREATE TABLE t1(a INT, b INT, KEY inx (a), UNIQUE KEY uinx (b)) ENGINE=MyISAM; INSERT INTO t1(a,b) VALUES (1,1),(2,2),(3,3),(4,4),(5,5); SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; ALTER TABLE t1 DISABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; SELECT a FROM t1 USE INDEX (inx) WHERE a=1; SELECT b FROM t1 FORCE INDEX (uinx) WHERE b=1; SELECT b FROM t1 USE INDEX (uinx) WHERE b=1; SELECT a FROM t1 FORCE INDEX (inx,uinx) WHERE a=1; ALTER TABLE t1 ENABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; DROP TABLE t1; --echo End of 5.0 tests sql/sql_base.cc +6 −1 Original line number Diff line number Diff line Loading @@ -5167,7 +5167,12 @@ bool setup_tables(THD *thd, Name_resolution_context *context, get_key_map_from_key_list(&map, table, table_list->use_index); if (map.is_set_all()) DBUG_RETURN(1); table->keys_in_use_for_query=map; /* Don't introduce keys in keys_in_use_for_query that weren't there before. FORCE/USE INDEX should not add keys, it should only remove all keys except the key(s) specified in the hint. */ table->keys_in_use_for_query.intersect(map); } if (table_list->ignore_index) { Loading Loading
mysql-test/r/key.result +8 −0 Original line number Diff line number Diff line Loading @@ -455,3 +455,11 @@ ORDER BY c.b, c.d a b c d e f g h i j a b c d 2 2 1 2004-11-30 12:00:00 1 0 0 0 0 0 2 3388000 -553000 NULL DROP TABLE t1, t2; CREATE TABLE t1( a TINYINT, KEY(a) ) ENGINE=MyISAM; INSERT INTO t1 VALUES( 1 ); ALTER TABLE t1 DISABLE KEYS; EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1 DROP TABLE t1; End of 5.0 tests.
mysql-test/r/myisam.result +26 −0 Original line number Diff line number Diff line Loading @@ -1780,4 +1780,30 @@ create table t3 (c1 int) engine=myisam pack_keys=default; create table t4 (c1 int) engine=myisam pack_keys=2; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1 drop table t1, t2, t3; CREATE TABLE t1(a INT, b INT, KEY inx (a), UNIQUE KEY uinx (b)) ENGINE=MyISAM; INSERT INTO t1(a,b) VALUES (1,1),(2,2),(3,3),(4,4),(5,5); SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 ALTER TABLE t1 DISABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 SELECT a FROM t1 USE INDEX (inx) WHERE a=1; a 1 SELECT b FROM t1 FORCE INDEX (uinx) WHERE b=1; b 1 SELECT b FROM t1 USE INDEX (uinx) WHERE b=1; b 1 SELECT a FROM t1 FORCE INDEX (inx,uinx) WHERE a=1; a 1 ALTER TABLE t1 ENABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; a 1 DROP TABLE t1; End of 5.0 tests
mysql-test/t/key.test +12 −0 Original line number Diff line number Diff line Loading @@ -432,3 +432,15 @@ ORDER BY c.b, c.d ; DROP TABLE t1, t2; # # Bug #20604: Test for disabled keys with aggregate functions and FORCE INDEX. # CREATE TABLE t1( a TINYINT, KEY(a) ) ENGINE=MyISAM; INSERT INTO t1 VALUES( 1 ); ALTER TABLE t1 DISABLE KEYS; EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a); DROP TABLE t1; --echo End of 5.0 tests.
mysql-test/t/myisam.test +16 −0 Original line number Diff line number Diff line Loading @@ -1145,4 +1145,20 @@ create table t3 (c1 int) engine=myisam pack_keys=default; create table t4 (c1 int) engine=myisam pack_keys=2; drop table t1, t2, t3; # # Bug#28476: force index on a disabled myisam index gives error 124 # CREATE TABLE t1(a INT, b INT, KEY inx (a), UNIQUE KEY uinx (b)) ENGINE=MyISAM; INSERT INTO t1(a,b) VALUES (1,1),(2,2),(3,3),(4,4),(5,5); SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; ALTER TABLE t1 DISABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; SELECT a FROM t1 USE INDEX (inx) WHERE a=1; SELECT b FROM t1 FORCE INDEX (uinx) WHERE b=1; SELECT b FROM t1 USE INDEX (uinx) WHERE b=1; SELECT a FROM t1 FORCE INDEX (inx,uinx) WHERE a=1; ALTER TABLE t1 ENABLE KEYS; SELECT a FROM t1 FORCE INDEX (inx) WHERE a=1; DROP TABLE t1; --echo End of 5.0 tests
sql/sql_base.cc +6 −1 Original line number Diff line number Diff line Loading @@ -5167,7 +5167,12 @@ bool setup_tables(THD *thd, Name_resolution_context *context, get_key_map_from_key_list(&map, table, table_list->use_index); if (map.is_set_all()) DBUG_RETURN(1); table->keys_in_use_for_query=map; /* Don't introduce keys in keys_in_use_for_query that weren't there before. FORCE/USE INDEX should not add keys, it should only remove all keys except the key(s) specified in the hint. */ table->keys_in_use_for_query.intersect(map); } if (table_list->ignore_index) { Loading