AddingSelectorTransform.h 704 字节
Newer Older
N
Nikolai Kochetov 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#pragma once
#include <Processors/IProcessor.h>
#include <Processors/ISimpleTransform.h>
#include <Core/ColumnNumbers.h>
#include <Common/WeakHash.h>

namespace DB
{

/// Add IColumn::Selector to chunk (see SelectorInfo.h).
/// Selector is filled by formula (WeakHash(key_columns) * num_outputs / MAX_INT).
class AddingSelectorTransform : public ISimpleTransform
{
public:
    AddingSelectorTransform(const Block & header, size_t num_outputs_, ColumnNumbers key_columns_);
    String getName() const override { return "SplittingByHash"; }
    void transform(Chunk & input_chunk, Chunk & output_chunk) override;

private:
    size_t num_outputs;
    ColumnNumbers key_columns;

    WeakHash32 hash;
};

}