mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-02 12:32:04 +00:00
27 lines
699 B
C++
27 lines
699 B
C++
#pragma once
|
|
|
|
#include <Columns/IColumn.h>
|
|
|
|
|
|
namespace DB
|
|
{
|
|
|
|
/** Create a 'selector' to be used in IColumn::scatter method
|
|
* according to sharding scheme and values of column with sharding key.
|
|
*
|
|
* Each of num_shards has its weight. Weight must be small.
|
|
* 'slots' contains weight elements for each shard, in total - sum of all weight elements.
|
|
*
|
|
* Values of column get divided to sum_weight, and modulo of division
|
|
* will map to corresponding shard through 'slots' array.
|
|
*
|
|
* Column must have integer type.
|
|
* T is type of column elements.
|
|
*/
|
|
template <typename T>
|
|
IColumn::Selector createBlockSelector(
|
|
const IColumn & column,
|
|
const std::vector<UInt64> & slots);
|
|
|
|
}
|