mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merged bug 37742 to 5.1-bugteam
This commit is contained in:
@ -1683,3 +1683,88 @@ CREATE INDEX i1 on t1 (a(3));
|
|||||||
SELECT * FROM t1 WHERE a = 'abcde';
|
SELECT * FROM t1 WHERE a = 'abcde';
|
||||||
a
|
a
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE foo (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
CREATE TABLE foo2 (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
CREATE TABLE bar (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=myisam;
|
||||||
|
INSERT INTO foo VALUES
|
||||||
|
(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
|
||||||
|
(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
|
||||||
|
INSERT INTO bar SELECT * FROM foo;
|
||||||
|
INSERT INTO foo2 SELECT * FROM foo;
|
||||||
|
EXPLAIN SELECT c FROM bar WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table bar
|
||||||
|
type ALL
|
||||||
|
possible_keys b
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo
|
||||||
|
type ALL
|
||||||
|
possible_keys b
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo2 WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo2
|
||||||
|
type range
|
||||||
|
possible_keys b
|
||||||
|
key b
|
||||||
|
key_len 5
|
||||||
|
ref NULL
|
||||||
|
rows 3
|
||||||
|
Extra Using where; Using index
|
||||||
|
EXPLAIN SELECT c FROM bar WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table bar
|
||||||
|
type ALL
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo
|
||||||
|
type ALL
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo2 WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo2
|
||||||
|
type index
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key b
|
||||||
|
key_len 5
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where; Using index
|
||||||
|
DROP TABLE foo, bar, foo2;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -53,3 +53,42 @@ CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
|
|||||||
CREATE INDEX i1 on t1 (a(3));
|
CREATE INDEX i1 on t1 (a(3));
|
||||||
SELECT * FROM t1 WHERE a = 'abcde';
|
SELECT * FROM t1 WHERE a = 'abcde';
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #37742: HA_EXTRA_KEYREAD flag is set when key contains only prefix of
|
||||||
|
# requested column
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE foo (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
|
||||||
|
CREATE TABLE foo2 (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
|
||||||
|
CREATE TABLE bar (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=myisam;
|
||||||
|
|
||||||
|
INSERT INTO foo VALUES
|
||||||
|
(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
|
||||||
|
(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
|
||||||
|
|
||||||
|
INSERT INTO bar SELECT * FROM foo;
|
||||||
|
INSERT INTO foo2 SELECT * FROM foo;
|
||||||
|
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM bar WHERE b>2;
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM foo WHERE b>2;
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM foo2 WHERE b>2;
|
||||||
|
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM bar WHERE c>2;
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM foo WHERE c>2;
|
||||||
|
--query_vertical EXPLAIN SELECT c FROM foo2 WHERE c>2;
|
||||||
|
|
||||||
|
DROP TABLE foo, bar, foo2;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -1416,7 +1416,9 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
|
|||||||
*/
|
*/
|
||||||
if (ha_option & HA_PRIMARY_KEY_IN_READ_INDEX)
|
if (ha_option & HA_PRIMARY_KEY_IN_READ_INDEX)
|
||||||
{
|
{
|
||||||
field->part_of_key= share->keys_in_use;
|
if (field->key_length() == key_part->length &&
|
||||||
|
!(field->flags & BLOB_FLAG))
|
||||||
|
field->part_of_key= share->keys_in_use;
|
||||||
if (field->part_of_sortkey.is_set(key))
|
if (field->part_of_sortkey.is_set(key))
|
||||||
field->part_of_sortkey= share->keys_in_use;
|
field->part_of_sortkey= share->keys_in_use;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user