Fix added input.

This commit is contained in:
Nikolai Kochetov 2021-03-17 20:08:30 +03:00
parent 3eba817a68
commit 2c1539f641
2 changed files with 5 additions and 5 deletions

View File

@ -91,7 +91,7 @@ const ActionsDAG::Node & ActionsDAG::addInput(std::string name, DataTypePtr type
return addNode(std::move(node), can_replace, add_to_index); return addNode(std::move(node), can_replace, add_to_index);
} }
const ActionsDAG::Node & ActionsDAG::addInput(ColumnWithTypeAndName column, bool can_replace) const ActionsDAG::Node & ActionsDAG::addInput(ColumnWithTypeAndName column, bool can_replace, bool add_to_index)
{ {
Node node; Node node;
node.type = ActionType::INPUT; node.type = ActionType::INPUT;
@ -99,7 +99,7 @@ const ActionsDAG::Node & ActionsDAG::addInput(ColumnWithTypeAndName column, bool
node.result_name = std::move(column.name); node.result_name = std::move(column.name);
node.column = std::move(column.column); node.column = std::move(column.column);
return addNode(std::move(node), can_replace); return addNode(std::move(node), can_replace, add_to_index);
} }
const ActionsDAG::Node & ActionsDAG::addColumn(ColumnWithTypeAndName column, bool can_replace, bool materialize) const ActionsDAG::Node & ActionsDAG::addColumn(ColumnWithTypeAndName column, bool can_replace, bool materialize)
@ -1430,7 +1430,7 @@ ActionsDAGPtr ActionsDAG::cloneActionsForConjunction(std::vector<Node *> conjunc
Node * input; Node * input;
auto & list = required_inputs[col.name]; auto & list = required_inputs[col.name];
if (list.empty()) if (list.empty())
input = &const_cast<Node &>(actions->addInput(col)); input = &const_cast<Node &>(actions->addInput(col, true, false));
else else
{ {
input = list.front(); input = list.front();

View File

@ -200,7 +200,7 @@ public:
std::string dumpDAG() const; std::string dumpDAG() const;
const Node & addInput(std::string name, DataTypePtr type, bool can_replace = false, bool add_to_index = true); const Node & addInput(std::string name, DataTypePtr type, bool can_replace = false, bool add_to_index = true);
const Node & addInput(ColumnWithTypeAndName column, bool can_replace = false); const Node & addInput(ColumnWithTypeAndName column, bool can_replace = false, bool add_to_index = true);
const Node & addColumn(ColumnWithTypeAndName column, bool can_replace = false, bool materialize = false); const Node & addColumn(ColumnWithTypeAndName column, bool can_replace = false, bool materialize = false);
const Node & addAlias(const std::string & name, std::string alias, bool can_replace = false); const Node & addAlias(const std::string & name, std::string alias, bool can_replace = false);
const Node & addArrayJoin(const std::string & source_name, std::string result_name); const Node & addArrayJoin(const std::string & source_name, std::string result_name);
@ -301,7 +301,7 @@ public:
/// Pushed condition: z > 0 /// Pushed condition: z > 0
/// GROUP BY step will transform columns `x, y, z` -> `sum(x), y, z` /// GROUP BY step will transform columns `x, y, z` -> `sum(x), y, z`
/// If we just add filter step with actions `z -> z > 0` before GROUP BY, /// If we just add filter step with actions `z -> z > 0` before GROUP BY,
/// columns will be transformed like `x, y, z` -> `z, z > 0, x, y` -(remove filter)-> `z, z, y`. /// columns will be transformed like `x, y, z` -> `z, z > 0, x, y` -(remove filter)-> `z, x, y`.
/// To avoid it, add inputs from `all_inputs` list, /// To avoid it, add inputs from `all_inputs` list,
/// so actions `x, y, z -> x, y, z, z > 0` -(remove filter)-> `x, y, z` will not change columns order. /// so actions `x, y, z -> x, y, z, z > 0` -(remove filter)-> `x, y, z` will not change columns order.
ActionsDAGPtr cloneActionsForFilterPushDown( ActionsDAGPtr cloneActionsForFilterPushDown(