From faf5df672d53388b91643c935e8bec2a416ddd6d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 15 Sep 2003 14:45:42 +0500 Subject: In CREATE syntax: KEY a (field_name(10)) 10 now means "number of characters", not number of bytes. --- sql/sql_table.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'sql/sql_table.cc') diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 5f16377d20a..5e4971a7372 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -729,6 +729,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, */ if (key->type == Key::FULLTEXT) column->length=test(f_is_blob(sql_field->pack_flag)); + else + column->length*= sql_field->charset->mbmaxlen; + if (f_is_blob(sql_field->pack_flag)) { if (!(file->table_flags() & HA_BLOB_KEY)) @@ -2099,10 +2102,11 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, { // Check if sub key if (cfield->field->type() != FIELD_TYPE_BLOB && (cfield->field->pack_length() == key_part_length || - cfield->length != cfield->pack_length || - cfield->pack_length <= key_part_length)) + cfield->length <= key_part_length / + key_part->field->charset()->mbmaxlen)) key_part_length=0; // Use whole field } + key_part_length /= key_part->field->charset()->mbmaxlen; key_parts.push_back(new key_part_spec(cfield->field_name, key_part_length)); } -- cgit v1.2.1