Commit 6b4e759c authored by sergefp@mysql.com's avatar sergefp@mysql.com

Fix for BUG#9439:

Changed type of "Sub_part" column in SHOW KEYS from TINYINT to SMALLINT (as MAX_KEY_LENGTH=1024)
(this is the final cset with proper tests)
parent 62079eca
...@@ -477,3 +477,24 @@ t1 CREATE TABLE `t1` ( ...@@ -477,3 +477,24 @@ t1 CREATE TABLE `t1` (
KEY `i` TYPE BTREE (`i`) KEY `i` TYPE BTREE (`i`)
) ENGINE=HEAP DEFAULT CHARSET=latin1 ) ENGINE=HEAP DEFAULT CHARSET=latin1
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(
field1 text NOT NULL,
PRIMARY KEY(field1(1000))
);
show index from t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def Table 253 64 2 N 129 31 63
def Non_unique 1 1 1 N 32929 0 63
def Key_name 253 64 7 N 129 31 63
def Seq_in_index 1 2 1 N 32929 0 63
def Column_name 253 64 6 N 129 31 63
def Collation 253 1 1 Y 128 31 63
def Cardinality 8 21 1 Y 32896 0 63
def Sub_part 2 3 4 Y 32928 0 63
def Packed 253 10 0 Y 128 31 63
def Null 253 3 0 N 129 31 63
def Index_type 253 16 5 N 129 31 63
def Comment 253 255 0 N 129 31 63
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 field1 A 0 1000 NULL BTREE
drop table t1;
...@@ -357,3 +357,14 @@ SHOW CREATE TABLE t1; ...@@ -357,3 +357,14 @@ SHOW CREATE TABLE t1;
ALTER TABLE t1 ENGINE=MEMORY; ALTER TABLE t1 ENGINE=MEMORY;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
# Test for BUG#9439 "Reporting wrong datatype for sub_part on show index"
CREATE TABLE t1(
field1 text NOT NULL,
PRIMARY KEY(field1(1000))
);
--enable_metadata
show index from t1;
--disable_metadata
drop table t1;
...@@ -980,7 +980,7 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list) ...@@ -980,7 +980,7 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
field_list.push_back(item=new Item_int("Cardinality",0,21)); field_list.push_back(item=new Item_int("Cardinality",0,21));
item->maybe_null=1; item->maybe_null=1;
field_list.push_back(item=new Item_return_int("Sub_part",3, field_list.push_back(item=new Item_return_int("Sub_part",3,
MYSQL_TYPE_TINY)); MYSQL_TYPE_SHORT));
item->maybe_null=1; item->maybe_null=1;
field_list.push_back(item=new Item_empty_string("Packed",10)); field_list.push_back(item=new Item_empty_string("Packed",10));
item->maybe_null=1; item->maybe_null=1;
...@@ -1025,7 +1025,7 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list) ...@@ -1025,7 +1025,7 @@ 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_short((longlong) key_part->length /
key_part->field->charset()->mbmaxlen); key_part->field->charset()->mbmaxlen);
else else
protocol->store_null(); protocol->store_null();
......
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