ClickHouse/dbms/Processors/Transforms/FilterTransform.h
Ivan 97f2a2213e
Move all folders inside /dbms one level up (#9974)
* Move some code outside dbms/src folder
* Fix paths
2020-04-02 02:51:21 +03:00

45 lines
1.1 KiB
C++

#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(
const Block & header_, ExpressionActionsPtr expression_, String filter_column_name_, bool remove_filter_column_);
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;
/// Header after expression, but before removing filter column.
Block transformed_header;
bool are_prepared_sets_initialized = false;
void removeFilterIfNeed(Chunk & chunk);
};
}