MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / addConvertingToCommonHeaderActionsIfNeeded

Function addConvertingToCommonHeaderActionsIfNeeded

src/Planner/Utils.cpp:146–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144}
145
146void addConvertingToCommonHeaderActionsIfNeeded(
147 std::vector<std::unique_ptr<QueryPlan>> & query_plans,
148 const Block & union_common_header,
149 SharedHeaders & query_plans_headers,
150 ContextPtr context)
151{
152 size_t queries_size = query_plans.size();
153 for (size_t i = 0; i < queries_size; ++i)
154 {
155 auto & query_node_plan = query_plans[i];
156 if (blocksHaveEqualStructure(*query_node_plan->getCurrentHeader(), union_common_header))
157 continue;
158
159 auto actions_dag = ActionsDAG::makeConvertingActions(
160 query_node_plan->getCurrentHeader()->getColumnsWithTypeAndName(),
161 union_common_header.getColumnsWithTypeAndName(),
162 ActionsDAG::MatchColumnsMode::Position,
163 context,
164 false /*ignore_constant_values*/,
165 false /*add_cast_columns*/,
166 nullptr /*new_names*/);
167 auto converting_step = std::make_unique<ExpressionStep>(query_node_plan->getCurrentHeader(), std::move(actions_dag));
168 converting_step->setStepDescription("Conversion before UNION");
169 query_node_plan->addStep(std::move(converting_step));
170
171 query_plans_headers[i] = query_node_plan->getCurrentHeader();
172 }
173}
174
175ASTPtr queryNodeToSelectQuery(const QueryTreeNodePtr & query_node, bool set_subquery_cte_name)
176{

Callers 2

decorrelateQueryPlanFunction · 0.85
buildPlanForUnionNodeMethod · 0.85

Calls 4

blocksHaveEqualStructureFunction · 0.85
sizeMethod · 0.45
setStepDescriptionMethod · 0.45
addStepMethod · 0.45

Tested by

no test coverage detected