summaryrefslogtreecommitdiff
path: root/sql/ha_partition.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2023-02-15 16:30:53 +0100
committerSergei Golubchik <serg@mariadb.org>2023-02-15 16:30:53 +0100
commitb45ed284a69cdbffac61bdcf74bf86fa7b7391a4 (patch)
treede26ce8e0a5aa40889e889d758e3a3a98b9f71a8 /sql/ha_partition.cc
parentcc182aca9352fb7efde0deb0a83844e1d5f0c64c (diff)
parentcafba8761af55ae16cc69c9b53a341340a845b36 (diff)
downloadmariadb-git-bb-11.0-all-builders.tar.gz
Merge branch '10.11' into 11.0bb-11.0-all-builders
Diffstat (limited to 'sql/ha_partition.cc')
-rw-r--r--sql/ha_partition.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 08e3b45e02b..fdb4726a930 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -10034,8 +10034,7 @@ uint8 ha_partition::table_cache_type()
uint32 ha_partition::calculate_key_hash_value(Field **field_array)
{
- ulong nr1= 1;
- ulong nr2= 4;
+ Hasher hasher;
bool use_51_hash;
use_51_hash= MY_TEST((*field_array)->table->part_info->key_algorithm ==
partition_info::KEY_ALGORITHM_51);
@@ -10062,12 +10061,12 @@ uint32 ha_partition::calculate_key_hash_value(Field **field_array)
{
if (field->is_null())
{
- nr1^= (nr1 << 1) | 1;
+ hasher.add_null();
continue;
}
/* Force this to my_hash_sort_bin, which was used in 5.1! */
uint len= field->pack_length();
- my_charset_bin.hash_sort(field->ptr, len, &nr1, &nr2);
+ hasher.add(&my_charset_bin, field->ptr, len);
/* Done with this field, continue with next one. */
continue;
}
@@ -10085,12 +10084,12 @@ uint32 ha_partition::calculate_key_hash_value(Field **field_array)
{
if (field->is_null())
{
- nr1^= (nr1 << 1) | 1;
+ hasher.add_null();
continue;
}
/* Force this to my_hash_sort_bin, which was used in 5.1! */
uint len= field->pack_length();
- my_charset_latin1.hash_sort(field->ptr, len, &nr1, &nr2);
+ hasher.add(&my_charset_latin1, field->ptr, len);
continue;
}
/* New types in mysql-5.6. */
@@ -10117,9 +10116,9 @@ uint32 ha_partition::calculate_key_hash_value(Field **field_array)
}
/* fall through, use collation based hashing. */
}
- field->hash(&nr1, &nr2);
+ field->hash(&hasher);
} while (*(++field_array));
- return (uint32) nr1;
+ return (uint32) hasher.finalize();
}