| 195 | } |
| 196 | |
| 197 | void FilterStep::describeActions(FormatSettings & settings) const |
| 198 | { |
| 199 | const String & prefix = settings.detail_prefix; |
| 200 | |
| 201 | auto cloned_dag = actions_dag.clone(); |
| 202 | |
| 203 | std::vector<ActionsAndName> and_atoms; |
| 204 | if (!settings.pretty && !actions_dag.hasStatefulFunctions()) |
| 205 | and_atoms = splitAndChainIntoMultipleFilters(cloned_dag, filter_column_name); |
| 206 | |
| 207 | for (auto & and_atom : and_atoms) |
| 208 | { |
| 209 | settings.out << prefix << "AND column: " << and_atom.name << '\n'; |
| 210 | if (!settings.compact) |
| 211 | { |
| 212 | auto expression = std::make_shared<ExpressionActions>(std::move(and_atom.dag)); |
| 213 | expression->describeActions(settings.out, prefix); |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | settings.out << prefix << "Filter column: " |
| 218 | << (settings.pretty ? QueryPlanFormat::formatColumnPretty(filter_column_name, settings.pretty_names) : filter_column_name); |
| 219 | |
| 220 | if (!settings.pretty && remove_filter_column) |
| 221 | settings.out << " (removed)"; |
| 222 | settings.out << '\n'; |
| 223 | |
| 224 | auto expression = std::make_shared<ExpressionActions>(std::move(cloned_dag)); |
| 225 | if (!settings.compact) |
| 226 | expression->describeActions(settings.out, prefix); |
| 227 | } |
| 228 | |
| 229 | void FilterStep::describeActions(JSONBuilder::JSONMap & map) const |
| 230 | { |
nothing calls this directly
no test coverage detected