1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-08 00:28:29 +03:00

MDEV-24726 Assertion on compressed varstring as key field in optimizer

temporary table

Compressed field cannot be part of a key by its nature: there is no
data to order, only the compressed data.

For optimizer temporary table we create uncompressed substitute.

In all other cases (MDEV-16808) we don't use key: add_keyuse() is
skipped by !field->compression_method() condition.
This commit is contained in:
Aleksey Midenkov
2025-05-25 23:23:29 +03:00
parent 31aa8b6939
commit c4a2688328
6 changed files with 176 additions and 1 deletions

View File

@@ -7082,7 +7082,13 @@ add_key_part(DYNAMIC_ARRAY *keyuse_array, KEY_FIELD *key_field)
}
}
}
if (field->hash_join_is_possible() &&
/*
Compressed field cannot be part of a key. For optimizer temporary table
compressed fields are replaced by uncompressed, see
is_optimizer_tmp_table() and Field_*_compressed::make_new_field().
*/
if (!field->compression_method() &&
field->hash_join_is_possible() &&
(key_field->optimize & KEY_OPTIMIZE_EQ) &&
key_field->val->used_tables())
{