Commit e08b1b4c authored by unknown's avatar unknown

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)


mysql-test/r/show_check.result:
  Testcase for BUG#9439
mysql-test/t/show_check.test:
  Testcase for BUG#9439
sql/sql_show.cc:
  Fix for BUG#9439:
  Changed type of "Sub_part" column in SHOW KEYS from TINYINT to SMALLINT (as MAX_KEY_LENGTH=1024)
parent 49acc72f
......@@ -477,3 +477,24 @@ t1 CREATE TABLE `t1` (
KEY `i` TYPE BTREE (`i`)
) ENGINE=HEAP DEFAULT CHARSET=latin1
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;
ALTER TABLE t1 ENGINE=MEMORY;
SHOW CREATE 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)
field_list.push_back(item=new Item_int("Cardinality",0,21));
item->maybe_null=1;
field_list.push_back(item=new Item_return_int("Sub_part",3,
MYSQL_TYPE_TINY));
MYSQL_TYPE_SHORT));
item->maybe_null=1;
field_list.push_back(item=new Item_empty_string("Packed",10));
item->maybe_null=1;
......@@ -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 */
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_short((longlong) key_part->length /
key_part->field->charset()->mbmaxlen);
else
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