Commit 2f6e0864 authored by bar@mysql.com's avatar bar@mysql.com

Bug#7943: Wrong prefix lengths reported on UTF-8 columns

SHOW KEYS FROM t1 now displays number of characters in Sub_part,
not number of bytes, to be compatible with SHOW CREATE TABLE.
parent e0df86cd
......@@ -33,7 +33,7 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 key_a 1 a A NULL 9 NULL YES BTREE
t1 1 key_a 1 a A NULL 3 NULL YES BTREE
ALTER TABLE t1 CHANGE a a CHAR(4);
SHOW CREATE TABLE t1;
Table Create Table
......@@ -53,5 +53,5 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 key_a 1 a A NULL 9 NULL YES BTREE
t1 1 key_a 1 a A NULL 3 NULL YES BTREE
DROP TABLE t1;
......@@ -1025,7 +1025,8 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
/* Check if we have a key part that only uses part of the field */
if (!(key_info->flags & HA_FULLTEXT) && (!key_part->field ||
key_part->length != table->field[key_part->fieldnr-1]->key_length()))
protocol->store_tiny((longlong) key_part->length);
protocol->store_tiny((longlong) key_part->length /
key_part->field->charset()->mbmaxlen);
else
protocol->store_null();
protocol->store_null(); // No pack_information yet
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment