ClickHouse/dbms/Processors/Transforms/FilterTransform.h

45 lines
1.1 KiB
C++
Raw Normal View History

#pragma once
#include <Processors/ISimpleTransform.h>
#include <Columns/FilterDescription.h>
namespace DB
{
class ExpressionActions;
using ExpressionActionsPtr = std::shared_ptr<ExpressionActions>;
/** Has one input and one output.
* Simply pull a block from input, transform it, and push it to output.
* If remove_filter_column is true, remove filter column from block.
*/
class FilterTransform : public ISimpleTransform
{
public:
FilterTransform(
2019-08-03 11:02:40 +00:00
const Block & header_, ExpressionActionsPtr expression_, String filter_column_name_, bool remove_filter_column_);
2019-04-05 10:52:07 +00:00
String getName() const override { return "FilterTransform"; }
Status prepare() override;
protected:
void transform(Chunk & chunk) override;
private:
ExpressionActionsPtr expression;
String filter_column_name;
bool remove_filter_column;
ConstantFilterDescription constant_filter_description;
size_t filter_column_position = 0;
2019-04-05 10:52:07 +00:00
/// Header after expression, but before removing filter column.
Block transformed_header;
bool are_prepared_sets_initialized = false;
void removeFilterIfNeed(Chunk & chunk);
};
}