Commit 182688f0 authored by unknown's avatar unknown
Browse files

Merge rurik.mysql.com:/home/igor/mysql-4.0

into rurik.mysql.com:/home/igor/dev/mysql-4.0-0


sql/sql_select.cc:
  Auto merged
parents b871ea38 afac3c31
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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
+16 −0
Original line number Diff line number Diff line
@@ -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;
+21 −0
Original line number Diff line number Diff line
@@ -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
+10 −1
Original line number Diff line number Diff line
@@ -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";
@@ -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;