From cc38ac37640928737586b83decb20208cb32bd95 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sun, 11 Sep 2022 03:03:37 +0200 Subject: [PATCH] Better parallel hash JOIN for floats --- src/Columns/ColumnVector.cpp | 2 +- src/Common/HashTable/Hash.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Columns/ColumnVector.cpp b/src/Columns/ColumnVector.cpp index d89917fc6c2..d4408bb7f27 100644 --- a/src/Columns/ColumnVector.cpp +++ b/src/Columns/ColumnVector.cpp @@ -90,7 +90,7 @@ void ColumnVector::updateWeakHash32(WeakHash32 & hash) const while (begin < end) { - *hash_data = intHashCRC32(*begin, *hash_data); + *hash_data = hashCRC32(*begin, *hash_data); ++begin; ++hash_data; } diff --git a/src/Common/HashTable/Hash.h b/src/Common/HashTable/Hash.h index bf691458d27..9d240bee461 100644 --- a/src/Common/HashTable/Hash.h +++ b/src/Common/HashTable/Hash.h @@ -220,7 +220,7 @@ template struct HashCRC32; template requires (sizeof(T) <= sizeof(UInt64)) -inline size_t hashCRC32(T key) +inline size_t hashCRC32(T key, DB::UInt64 updated_value = -1) { union { @@ -229,14 +229,14 @@ inline size_t hashCRC32(T key) } u; u.out = 0; u.in = key; - return intHashCRC32(u.out); + return intHashCRC32(u.out, updated_value); } template requires (sizeof(T) > sizeof(UInt64)) -inline size_t hashCRC32(T key) +inline size_t hashCRC32(T key, DB::UInt64 updated_value = -1) { - return intHashCRC32(key, -1); + return intHashCRC32(key, updated_value); } #define DEFINE_HASH(T) \