blob: ac53243ea3fe5d52a9ea847a824ec71e11ea379b (
plain) (
blame)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#pragma once
#include <Processors/ISimpleTransform.h>
#include <QueryPipeline/SizeLimits.h>
#include <Core/ColumnNumbers.h>
#include <Interpreters/SetVariants.h>
namespace DB
{
class DistinctTransform : public ISimpleTransform
{
public:
DistinctTransform(
const Block & header_,
const SizeLimits & set_size_limits_,
UInt64 limit_hint_,
const Names & columns_);
String getName() const override { return "DistinctTransform"; }
protected:
void transform(Chunk & chunk) override;
private:
ColumnNumbers key_columns_pos;
SetVariants data;
Sizes key_sizes;
const UInt64 limit_hint;
/// Restrictions on the maximum size of the output data.
SizeLimits set_size_limits;
template <typename Method>
void buildFilter(
Method & method,
const ColumnRawPtrs & key_columns,
IColumn::Filter & filter,
size_t rows,
SetVariants & variants) const;
};
}
|