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

Method buildSelectWithUnionExpression

src/Analyzer/QueryTreeBuilder.cpp:187–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

185}
186
187QueryTreeNodePtr QueryTreeBuilder::buildSelectWithUnionExpression(
188 const ASTPtr & select_with_union_query,
189 bool is_subquery,
190 const CommonTableExpressionData & cte_data,
191 const ASTPtr & aliases,
192 const ContextPtr & context) const
193{
194 auto & select_with_union_query_typed = select_with_union_query->as<ASTSelectWithUnionQuery &>();
195 auto & select_lists = select_with_union_query_typed.list_of_selects->as<ASTExpressionList &>();
196
197 if (select_lists.children.size() == 1)
198 return buildSelectOrUnionExpression(select_lists.children[0], is_subquery, cte_data, aliases, context);
199
200 auto union_node = std::make_shared<UnionNode>(Context::createCopy(context), select_with_union_query_typed.union_mode);
201 union_node->setIsSubquery(is_subquery);
202 union_node->setIsCTE(!cte_data.cte_name.empty());
203 union_node->setCTEName(std::string(cte_data.cte_name));
204 union_node->setIsMaterialized(cte_data.is_materialized);
205 union_node->setOriginalAST(select_with_union_query);
206
207 size_t select_lists_children_size = select_lists.children.size();
208
209 for (size_t i = 0; i < select_lists_children_size; ++i)
210 {
211 auto & select_list_node = select_lists.children[i];
212 QueryTreeNodePtr query_node = buildSelectOrUnionExpression(select_list_node, false /*is_subquery*/, {} /*cte_name*/, aliases, context);
213 union_node->getQueries().getNodes().push_back(std::move(query_node));
214 }
215
216 return union_node;
217}
218
219QueryTreeNodePtr QueryTreeBuilder::buildSelectIntersectExceptQuery(
220 const ASTPtr & select_intersect_except_query,

Callers

nothing calls this directly

Calls 9

setOriginalASTMethod · 0.80
getNodesMethod · 0.80
sizeMethod · 0.45
setIsSubqueryMethod · 0.45
setIsCTEMethod · 0.45
emptyMethod · 0.45
setCTENameMethod · 0.45
setIsMaterializedMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected