summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2005-02-10 22:55:05 -0800
committerunknown <igor@rurik.mysql.com>2005-02-10 22:55:05 -0800
commit20cbf9c2f69d84aff92562ac88d756d55aa88c4a (patch)
tree2575a1d3fc090780767702c64b96ff0aae291da8
parentcb754b989ae94454ca14cc0ba7bcb107f4a307d2 (diff)
parent954094562473aad37baf40f97df2a8787eca6f1c (diff)
downloadmariadb-git-20cbf9c2f69d84aff92562ac88d756d55aa88c4a.tar.gz
Merge rurik.mysql.com:/home/igor/mysql-4.0
into rurik.mysql.com:/home/igor/dev/mysql-4.0-0
-rw-r--r--mysql-test/r/select.result13
-rw-r--r--mysql-test/t/select.test15
-rw-r--r--sql/table.cc1
3 files changed, 29 insertions, 0 deletions
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result
index cc90547722f..4c6ad1c34f0 100644
--- a/mysql-test/r/select.result
+++ b/mysql-test/r/select.result
@@ -2364,3 +2364,16 @@ 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;
+CREATE TABLE t1 ( a BLOB, INDEX (a(20)) );
+CREATE TABLE t2 ( a BLOB, INDEX (a(20)) );
+INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five');
+INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five');
+EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a;
+table type possible_keys key key_len ref rows Extra
+t1 ALL NULL NULL NULL NULL 5
+t2 ref a a 23 t1.a 5
+EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a;
+table type possible_keys key key_len ref rows Extra
+t1 ALL NULL NULL NULL NULL 5
+t2 ref a a 23 t1.a 5
+DROP TABLE t1, t2;
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test
index e6b1ffbe8d7..9be08b8390b 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -1909,3 +1909,18 @@ EXPLAIN SELECT i FROM t1 WHERE i=1;
EXPLAIN SELECT i FROM t1 WHERE i=1;
DROP TABLE t1;
+
+#
+# Test case for bug 7520: a wrong cost of the index for a BLOB field
+#
+
+CREATE TABLE t1 ( a BLOB, INDEX (a(20)) );
+CREATE TABLE t2 ( a BLOB, INDEX (a(20)) );
+
+INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five');
+INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five');
+
+EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a;
+EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a;
+
+DROP TABLE t1, t2;
diff --git a/sql/table.cc b/sql/table.cc
index 573fa11a4c4..244c7fa94f3 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -486,6 +486,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
if (!(field->flags & BINARY_FLAG))
keyinfo->flags|= HA_END_SPACE_KEY;
}
+ set_if_bigger(outparam->max_key_length, keyinfo->key_length);
if (i == 0 && key != primary_key)
field->flags |=
((keyinfo->flags & HA_NOSAME) &&