dbms: Server: Removed useless hashing in the case of 32-bit floating point values. [#METR-17276]

This commit is contained in:
Alexey Arno 2015-08-04 15:33:08 +03:00
parent b32721432b
commit 58e2a7ef6b

View File

@ -183,7 +183,7 @@ namespace detail
};
template<typename T>
struct CombinedCardinalityTraits<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
struct CombinedCardinalityTraits<T, typename std::enable_if<std::is_same<T, Float64>::value>::type>
{
using Op = Hash64To32<UInt64>;
@ -195,6 +195,17 @@ namespace detail
}
};
template<typename T>
struct CombinedCardinalityTraits<T, typename std::enable_if<std::is_same<T, Float32>::value>::type>
{
static UInt32 hash(T key)
{
UInt32 res = 0;
memcpy(reinterpret_cast<char *>(&res), reinterpret_cast<char *>(&key), sizeof(key));
return res;
}
};
/** Структура для делегации работы по добавлению одного элемента в агрегатные функции uniq.
* Используется для частичной специализации для добавления строк.
*/