+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ m_offending_row.m_chunk_offset = chunk_offset(chunk_index);
+@@ -3005,7 +3005,7 @@ bool SpillState::spread_hash_map_to_HF_c
+ const ulonglong primary_hash =
+ static_cast<ulonglong>(m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ const size_t set_index = chunk_index_to_set(chunk_index);
+ const size_t offset = chunk_offset(chunk_index);
+@@ -3070,7 +3070,7 @@ bool SpillState::append_hash_map_to_HF()
+ const ulonglong primary_hash =
+ static_cast<ulonglong>(m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ const size_t set_index = chunk_index_to_set(chunk_index);
+ const size_t offset = chunk_offset(chunk_index);
+@@ -3164,7 +3164,7 @@ bool SpillState::save_operand_to_IF_chun
+ m_materialized_table->hash_field->store(
+ static_cast<longlong>(primary_hash), true);
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ const size_t set_index = chunk_index_to_set(chunk_index);
+ const size_t offset = chunk_offset(chunk_index);
+@@ -3219,7 +3219,7 @@ bool SpillState::write_HF(THD *thd, size
+ const ulonglong primary_hash =
+ static_cast<ulonglong>(m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ const size_t set_index = chunk_index_to_set(chunk_index);
+ assert(chunk_offset(chunk_index) == chunk_idx);
+@@ -3452,7 +3452,7 @@ int SpillState::read_next_row(const Oper
+ const ulonglong primary_hash = static_cast<ulonglong>(
+ m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ const size_t set_index = chunk_index_to_set(chunk_index);
+ assert(chunk_offset(chunk_index) == m_current_chunk_idx);
+@@ -3485,7 +3485,7 @@ int SpillState::read_next_row(const Oper
+ const ulonglong primary_hash = static_cast<ulonglong>(
+ m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ assert(chunk_index_to_set(chunk_index) == set_idx);
+ assert(chunk_offset(chunk_index) == m_current_chunk_idx);
+@@ -3574,7 +3574,7 @@ int SpillState::read_next_row_secondary_
+ const ulonglong primary_hash = static_cast<ulonglong>(
+ m_materialized_table->hash_field->val_int());
+ const uint64_t chunk_hash =
+- MY_XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
++ XXH64(&primary_hash, sizeof(primary_hash), m_hash_seed);
+ const size_t chunk_index = hash_to_chunk_index(chunk_hash);
+ assert(chunk_index_to_set(chunk_index) == set_idx);
+ assert(chunk_offset(chunk_index) == m_current_chunk_idx);
+diff -urNpa mysql-8.4.0.orig/sql/iterators/hash_join_iterator.cc mysql-8.4.0/sql/iterators/hash_join_iterator.cc
+--- mysql-8.4.0.orig/sql/iterators/hash_join_iterator.cc 2024-05-09 18:15:03.989844233 +0200
++++ mysql-8.4.0/sql/iterators/hash_join_iterator.cc 2024-05-09 18:15:57.910584352 +0200
+@@ -38,7 +38,7 @@
+ #include "my_dbug.h"