mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.5 into 10.6
This commit is contained in:
@ -4663,7 +4663,7 @@ int handler::check_collation_compatibility()
|
||||
{
|
||||
ulong mysql_version= table->s->mysql_version;
|
||||
|
||||
if (mysql_version < 50124)
|
||||
if (mysql_version < Charset::latest_mariadb_version_with_collation_change())
|
||||
{
|
||||
KEY *key= table->key_info;
|
||||
KEY *key_end= key + table->s->keys;
|
||||
@ -4677,18 +4677,7 @@ int handler::check_collation_compatibility()
|
||||
continue;
|
||||
Field *field= table->field[key_part->fieldnr - 1];
|
||||
uint cs_number= field->charset()->number;
|
||||
if ((mysql_version < 50048 &&
|
||||
(cs_number == 11 || /* ascii_general_ci - bug #29499, bug #27562 */
|
||||
cs_number == 41 || /* latin7_general_ci - bug #29461 */
|
||||
cs_number == 42 || /* latin7_general_cs - bug #29461 */
|
||||
cs_number == 20 || /* latin7_estonian_cs - bug #29461 */
|
||||
cs_number == 21 || /* latin2_hungarian_ci - bug #29461 */
|
||||
cs_number == 22 || /* koi8u_general_ci - bug #29461 */
|
||||
cs_number == 23 || /* cp1251_ukrainian_ci - bug #29461 */
|
||||
cs_number == 26)) || /* cp1250_general_ci - bug #29461 */
|
||||
(mysql_version < 50124 &&
|
||||
(cs_number == 33 || /* utf8mb3_general_ci - bug #27877 */
|
||||
cs_number == 35))) /* ucs2_general_ci - bug #27877 */
|
||||
if (Charset::collation_changed_order(mysql_version, cs_number))
|
||||
return HA_ADMIN_NEEDS_UPGRADE;
|
||||
}
|
||||
}
|
||||
@ -8015,11 +8004,13 @@ static
|
||||
int del_global_index_stats_for_table(THD *thd, uchar* cache_key, size_t cache_key_length)
|
||||
{
|
||||
int res = 0;
|
||||
uint to_delete_counter= 0;
|
||||
INDEX_STATS *index_stats_to_delete[MAX_INDEXES];
|
||||
DBUG_ENTER("del_global_index_stats_for_table");
|
||||
|
||||
mysql_mutex_lock(&LOCK_global_index_stats);
|
||||
|
||||
for (uint i= 0; i < global_index_stats.records;)
|
||||
for (uint i= 0; i < global_index_stats.records; i++)
|
||||
{
|
||||
INDEX_STATS *index_stats =
|
||||
(INDEX_STATS*) my_hash_element(&global_index_stats, i);
|
||||
@ -8029,19 +8020,13 @@ int del_global_index_stats_for_table(THD *thd, uchar* cache_key, size_t cache_ke
|
||||
index_stats->index_name_length >= cache_key_length &&
|
||||
!memcmp(index_stats->index, cache_key, cache_key_length))
|
||||
{
|
||||
res= my_hash_delete(&global_index_stats, (uchar*)index_stats);
|
||||
/*
|
||||
In our HASH implementation on deletion one elements
|
||||
is moved into a place where a deleted element was,
|
||||
and the last element is moved into the empty space.
|
||||
Thus we need to re-examine the current element, but
|
||||
we don't have to restart the search from the beginning.
|
||||
*/
|
||||
index_stats_to_delete[to_delete_counter++]= index_stats;
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
|
||||
for (uint i= 0; i < to_delete_counter; i++)
|
||||
res= my_hash_delete(&global_index_stats, (uchar*)index_stats_to_delete[i]);
|
||||
|
||||
mysql_mutex_unlock(&LOCK_global_index_stats);
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
Reference in New Issue
Block a user