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` ( ...@@ -33,7 +33,7 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1; SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment 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); ALTER TABLE t1 CHANGE a a CHAR(4);
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
...@@ -53,5 +53,5 @@ t1 CREATE TABLE `t1` ( ...@@ -53,5 +53,5 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1; SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment 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; DROP TABLE t1;
...@@ -1025,7 +1025,8 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list) ...@@ -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 */ /* Check if we have a key part that only uses part of the field */
if (!(key_info->flags & HA_FULLTEXT) && (!key_part->field || if (!(key_info->flags & HA_FULLTEXT) && (!key_part->field ||
key_part->length != table->field[key_part->fieldnr-1]->key_length())) 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 else
protocol->store_null(); protocol->store_null();
protocol->store_null(); // No pack_information yet 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