Skip to content

Commit 0771110

Browse files
committed
MDEV-33658 1/2 FULLTEXT and SPATIAL keys are not "too long"
max_key_length applies only to PRIMARY/UNIQUE/MULTIPLE keys, but not to FULLTEXT/SPATIAL/VECTOR keys. this fixes main.partition_geometries test followup for ecaedbe
1 parent 7d657fd commit 0771110

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

sql/sql_table.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2944,7 +2944,7 @@ my_bool init_key_part_spec(THD *thd, Alter_info *alter_info,
29442944
my_error(ER_WRONG_KEY_COLUMN, MYF(0), file->table_type(), field_name.str);
29452945
DBUG_RETURN(TRUE);
29462946
}
2947-
if (key_part_length > max_key_part_length && key.type != Key::FULLTEXT)
2947+
if (key_part_length > max_key_part_length)
29482948
{
29492949
if (key.type == Key::MULTIPLE)
29502950
{
@@ -2956,7 +2956,7 @@ my_bool init_key_part_spec(THD *thd, Alter_info *alter_info,
29562956
/* Align key length to multibyte char boundary */
29572957
key_part_length-= key_part_length % column->charset->mbmaxlen;
29582958
}
2959-
else if (key.type != Key::UNIQUE)
2959+
else if (key.type == Key::PRIMARY)
29602960
{
29612961
key_part_length= MY_MIN(max_key_length, max_key_part_length);
29622962
my_error(ER_TOO_LONG_KEY, MYF(0), key_part_length);
@@ -3023,14 +3023,15 @@ my_bool init_key_info(THD *thd, Alter_info *alter_info,
30233023
DBUG_RETURN(TRUE);
30243024

30253025
key.length+= kp.length;
3026-
if (key.length > max_key_length && key.type == Key::UNIQUE)
3027-
is_hash_field_needed= true; // for case "a BLOB UNIQUE"
3028-
3029-
if (key.length > max_key_length && key.type != Key::FULLTEXT &&
3030-
!is_hash_field_needed)
3026+
if (key.length > max_key_length)
30313027
{
3032-
my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length);
3033-
DBUG_RETURN(TRUE);
3028+
if (key.type == Key::UNIQUE)
3029+
is_hash_field_needed= true; // for case "a BLOB UNIQUE"
3030+
else if (key.type <= Key::MULTIPLE)
3031+
{
3032+
my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length);
3033+
DBUG_RETURN(TRUE);
3034+
}
30343035
}
30353036

30363037
KEY_CREATE_INFO *key_cinfo= &key.key_create_info;

0 commit comments

Comments
 (0)