1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Additional tweak to fix for bug #10543, to prevent a change in

behavior when extending fields that were fully part of a
multi-part key.


mysql-test/r/key.result:
  Update results
mysql-test/t/key.test:
  Add test for behavior of extending fields in a multi-part key
  that were defined with a partial length the same as their
  field length.
sql/sql_table.cc:
  Reset key_part_length when old field length was the same as the
  old key_part_length.
This commit is contained in:
unknown
2005-06-02 10:00:36 -07:00
parent f0329bfb8c
commit dd8e174fa6
3 changed files with 42 additions and 0 deletions

View File

@ -3341,11 +3341,15 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
previous type, or the field length is less than the key part
length, unset the key part length.
We also unset the key part length if it is the same as the
old field's length, so the whole new field will be used.
BLOBs may have cfield->length == 0, which is why we test it before
checking whether cfield->length < key_part_length (in chars).
*/
if (!Field::type_can_have_key_part(cfield->field->type()) ||
!Field::type_can_have_key_part(cfield->sql_type) ||
cfield->field->field_length == key_part_length ||
(cfield->length && (cfield->length < key_part_length /
key_part->field->charset()->mbmaxlen)))
key_part_length= 0; // Use whole field