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

MDEV-20760 Add Type_handler::KEY_pack_flags()

Backporting from 10.5 to 10.4

This is needed to fix MDEV-28727 easier.
This commit is contained in:
Alexander Barkov
2019-10-05 18:16:37 +04:00
parent 1118e979c2
commit 3744b8ae31
2 changed files with 34 additions and 9 deletions

View File

@ -4143,16 +4143,10 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
/* Use packed keys for long strings on the first column */
if (!((*db_options) & HA_OPTION_NO_PACK_KEYS) &&
!((create_info->table_options & HA_OPTION_NO_PACK_KEYS)) &&
(key_part_length >= KEY_DEFAULT_PACK_LENGTH &&
(sql_field->real_field_type() == MYSQL_TYPE_STRING ||
sql_field->real_field_type() == MYSQL_TYPE_VARCHAR ||
f_is_blob(sql_field->pack_flag))) && !is_hash_field_needed)
(key_part_length >= KEY_DEFAULT_PACK_LENGTH) &&
!is_hash_field_needed)
{
if ((column_nr == 0 && f_is_blob(sql_field->pack_flag)) ||
sql_field->real_field_type() == MYSQL_TYPE_VARCHAR)
key_info->flags|= HA_BINARY_PACK_KEY | HA_VAR_LENGTH_KEY;
else
key_info->flags|= HA_PACK_KEY;
key_info->flags|= sql_field->type_handler()->KEY_pack_flags(column_nr);
}
/* Check if the key segment is partial, set the key flag accordingly */
if (key_part_length != sql_field->key_length &&