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

Function formatFilterPretty

src/Processors/QueryPlan/QueryPlanFormat.cpp:149–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147 }
148
149 static PrettyColumnName formatFilterPretty(
150 const ActionsDAG & dag,
151 const String & column_name,
152 const std::unordered_map<String, PrettyColumnName> & pretty_names,
153 const std::unordered_map<String, RuntimeFilterInfo> & runtime_filter_names,
154 std::unordered_map<FutureSet::Hash, String, PreparedSets::Hashing> & subquery_set_names)
155 {
156 const auto * root = dag.tryFindInOutputs(column_name);
157 if (!root)
158 return PrettyColumnName(trimColumnIdentifier(column_name));
159
160 auto atoms = ActionsDAG::extractConjunctionAtoms(root);
161
162 std::vector<String> user_parts;
163 std::vector<String> rf_parts;
164 for (const auto * atom : atoms)
165 {
166 if (atom->type == ActionsDAG::ActionType::FUNCTION
167 && atom->function_base
168 && atom->function_base->getName() == "__applyFilter")
169 rf_parts.push_back(formatNodePretty(atom, pretty_names, runtime_filter_names, subquery_set_names, 4));
170 else
171 user_parts.push_back(formatNodePretty(atom, pretty_names, runtime_filter_names, subquery_set_names, 4));
172 }
173
174 String expression;
175 if (!user_parts.empty())
176 expression = fmt::format(" {}", fmt::join(user_parts, " AND "));
177 if (expression.empty() && rf_parts.empty())
178 expression = fmt::format(" {}", trimColumnIdentifier(column_name));
179
180 String annotation;
181 if (!rf_parts.empty())
182 annotation = fmt::format("Runtime filters: {}", fmt::join(rf_parts, " AND "));
183
184 return {std::move(expression), std::move(annotation)};
185 }
186
187 namespace
188 {

Callers 1

buildPrettyNamesForNodeFunction · 0.85

Calls 8

PrettyColumnNameClass · 0.85
trimColumnIdentifierFunction · 0.85
formatNodePrettyFunction · 0.85
tryFindInOutputsMethod · 0.80
formatFunction · 0.50
getNameMethod · 0.45
push_backMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected