Loading mysql-test/r/key_primary.result +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ t1 AB% describe select * from t1 where t1="ABC"; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 3 const 1 t1 const PRIMARY PRIMARY 3 const 1 Using index describe select * from t1 where t1="ABCD"; Comment Impossible WHERE noticed after reading const tables Loading mysql-test/r/null_key.result +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ table type possible_keys key key_len ref rows Extra t1 ref a,b a 9 const,const 1 Using where; Using index explain select * from t1 where a=2 and b = 2; table type possible_keys key key_len ref rows Extra t1 const a,b a 9 const,const 1 t1 const a,b a 9 const,const 1 Using index explain select * from t1 where a<=>b limit 2; table type possible_keys key key_len ref rows Extra t1 index NULL a 9 NULL 12 Using where; Using index Loading mysql-test/r/select.result +16 −0 Original line number Diff line number Diff line Loading @@ -2327,3 +2327,19 @@ select * from t2,t3 where t2.s = t3.s; s s two two drop table t1, t2, t3; CREATE TABLE t1 ( i int(11) NOT NULL default '0', c char(10) NOT NULL default '', PRIMARY KEY (i), UNIQUE KEY c (c) ) TYPE=MyISAM; INSERT INTO t1 VALUES (1,'a'); INSERT INTO t1 VALUES (2,'b'); INSERT INTO t1 VALUES (3,'c'); EXPLAIN SELECT i FROM t1 WHERE i=1; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 4 const 1 Using index EXPLAIN SELECT i FROM t1 WHERE i=1; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 4 const 1 Using index DROP TABLE t1; mysql-test/t/select.test +21 −0 Original line number Diff line number Diff line Loading @@ -1874,3 +1874,24 @@ select * from t3 where s = 'one'; select * from t1,t2 where t1.s = t2.s; select * from t2,t3 where t2.s = t3.s; drop table t1, t2, t3; # # Covering index is mentioned in EXPLAIN output for const tables (bug #5333) # CREATE TABLE t1 ( i int(11) NOT NULL default '0', c char(10) NOT NULL default '', PRIMARY KEY (i), UNIQUE KEY c (c) ) TYPE=MyISAM; INSERT INTO t1 VALUES (1,'a'); INSERT INTO t1 VALUES (2,'b'); INSERT INTO t1 VALUES (3,'c'); EXPLAIN SELECT i FROM t1 WHERE i=1; EXPLAIN SELECT i FROM t1 WHERE i=1; DROP TABLE t1; No newline at end of file sql/sql_select.cc +10 −1 Original line number Diff line number Diff line Loading @@ -4907,6 +4907,15 @@ join_read_const_table(JOIN_TAB *tab, POSITION *pos) } else { if (!table->key_read && (table->used_keys & ((key_map) 1 << tab->ref.key)) && !table->no_keyread && (int) table->reginfo.lock_type <= (int) TL_READ_HIGH_PRIORITY) { table->key_read=1; table->file->extra(HA_EXTRA_KEYREAD); tab->index= tab->ref.key; } if ((error=join_read_const(tab))) { tab->info="unique row not found"; Loading Loading @@ -7623,7 +7632,7 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, sprintf(buff3,"%.0f",join->best_positions[i].records_read); item_list.push_back(new Item_string(buff3,strlen(buff3))); my_bool key_read=table->key_read; if (tab->type == JT_NEXT && if ((tab->type == JT_NEXT || tab->type == JT_CONST) && ((table->used_keys & ((key_map) 1 << tab->index)))) key_read=1; Loading Loading
mysql-test/r/key_primary.result +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ t1 AB% describe select * from t1 where t1="ABC"; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 3 const 1 t1 const PRIMARY PRIMARY 3 const 1 Using index describe select * from t1 where t1="ABCD"; Comment Impossible WHERE noticed after reading const tables Loading
mysql-test/r/null_key.result +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ table type possible_keys key key_len ref rows Extra t1 ref a,b a 9 const,const 1 Using where; Using index explain select * from t1 where a=2 and b = 2; table type possible_keys key key_len ref rows Extra t1 const a,b a 9 const,const 1 t1 const a,b a 9 const,const 1 Using index explain select * from t1 where a<=>b limit 2; table type possible_keys key key_len ref rows Extra t1 index NULL a 9 NULL 12 Using where; Using index Loading
mysql-test/r/select.result +16 −0 Original line number Diff line number Diff line Loading @@ -2327,3 +2327,19 @@ select * from t2,t3 where t2.s = t3.s; s s two two drop table t1, t2, t3; CREATE TABLE t1 ( i int(11) NOT NULL default '0', c char(10) NOT NULL default '', PRIMARY KEY (i), UNIQUE KEY c (c) ) TYPE=MyISAM; INSERT INTO t1 VALUES (1,'a'); INSERT INTO t1 VALUES (2,'b'); INSERT INTO t1 VALUES (3,'c'); EXPLAIN SELECT i FROM t1 WHERE i=1; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 4 const 1 Using index EXPLAIN SELECT i FROM t1 WHERE i=1; table type possible_keys key key_len ref rows Extra t1 const PRIMARY PRIMARY 4 const 1 Using index DROP TABLE t1;
mysql-test/t/select.test +21 −0 Original line number Diff line number Diff line Loading @@ -1874,3 +1874,24 @@ select * from t3 where s = 'one'; select * from t1,t2 where t1.s = t2.s; select * from t2,t3 where t2.s = t3.s; drop table t1, t2, t3; # # Covering index is mentioned in EXPLAIN output for const tables (bug #5333) # CREATE TABLE t1 ( i int(11) NOT NULL default '0', c char(10) NOT NULL default '', PRIMARY KEY (i), UNIQUE KEY c (c) ) TYPE=MyISAM; INSERT INTO t1 VALUES (1,'a'); INSERT INTO t1 VALUES (2,'b'); INSERT INTO t1 VALUES (3,'c'); EXPLAIN SELECT i FROM t1 WHERE i=1; EXPLAIN SELECT i FROM t1 WHERE i=1; DROP TABLE t1; No newline at end of file
sql/sql_select.cc +10 −1 Original line number Diff line number Diff line Loading @@ -4907,6 +4907,15 @@ join_read_const_table(JOIN_TAB *tab, POSITION *pos) } else { if (!table->key_read && (table->used_keys & ((key_map) 1 << tab->ref.key)) && !table->no_keyread && (int) table->reginfo.lock_type <= (int) TL_READ_HIGH_PRIORITY) { table->key_read=1; table->file->extra(HA_EXTRA_KEYREAD); tab->index= tab->ref.key; } if ((error=join_read_const(tab))) { tab->info="unique row not found"; Loading Loading @@ -7623,7 +7632,7 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, sprintf(buff3,"%.0f",join->best_positions[i].records_read); item_list.push_back(new Item_string(buff3,strlen(buff3))); my_bool key_read=table->key_read; if (tab->type == JT_NEXT && if ((tab->type == JT_NEXT || tab->type == JT_CONST) && ((table->used_keys & ((key_map) 1 << tab->index)))) key_read=1; Loading