mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-04 05:22:17 +00:00
39 lines
808 B
C++
39 lines
808 B
C++
#include "FunctionsConsistentHashing.h"
|
|
#include <Functions/FunctionFactory.h>
|
|
|
|
#include <sumbur.h>
|
|
|
|
|
|
namespace DB
|
|
{
|
|
namespace
|
|
{
|
|
|
|
struct SumburConsistentHashImpl
|
|
{
|
|
static constexpr auto name = "sumburConsistentHash";
|
|
|
|
using HashType = UInt32;
|
|
using ResultType = UInt16;
|
|
using BucketsType = ResultType;
|
|
static constexpr auto max_buckets = static_cast<UInt64>(std::numeric_limits<BucketsType>::max());
|
|
|
|
static inline ResultType apply(HashType hash, BucketsType n)
|
|
{
|
|
return static_cast<ResultType>(sumburConsistentHash(hash, n));
|
|
}
|
|
};
|
|
|
|
using FunctionSumburConsistentHash = FunctionConsistentHashImpl<SumburConsistentHashImpl>;
|
|
|
|
}
|
|
|
|
void registerFunctionSumburConsistentHash(FunctionFactory & factory)
|
|
{
|
|
factory.registerFunction<FunctionSumburConsistentHash>();
|
|
}
|
|
|
|
}
|
|
|
|
|