Commit f813e0da authored by unknown's avatar unknown
Browse files

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 4bfad5ae
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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