PR changed-lines coverage: 89.35% (235/263, 0 noise lines excluded) Uncovered changed code (with context): ================================================================================ src/Analyzer/Passes/PruneArrayJoinColumnsPass.cpp ================================================================================ --- uncovered block 115-115 --- 113 | const auto & arguments = function_node->getArguments().getNodes(); 114 | if (arguments.size() < 2) >> 115 | return; 116 | 117 | auto * column_node = arguments[0]->as(); --- uncovered block 120-120 --- 118 | auto * constant_node = arguments[1]->as(); 119 | if (!column_node || !constant_node) >> 120 | return; 121 | 122 | auto source = column_node->getColumnSourceOrNull(); --- uncovered block 124-124 --- 122 | auto source = column_node->getColumnSourceOrNull(); 123 | if (!source || !tracked_nodes.contains(source.get())) >> 124 | return; 125 | 126 | auto map_it = usage_map.find(source.get()); --- uncovered block 128-128 --- 126 | auto map_it = usage_map.find(source.get()); 127 | if (map_it == usage_map.end()) >> 128 | return; 129 | 130 | auto expr_it = map_it->second.find(column_node->getColumnName()); --- uncovered block 147-148 --- 145 | if (index >= 1 && index <= expr_it->second.nested_subcolumn_names.size()) 146 | expr_it->second.used_subcolumns.insert(expr_it->second.nested_subcolumn_names[index - 1]); >> 147 | else >> 148 | expr_it->second.fully_used = true; 149 | } 150 | else --- uncovered block 150-153 --- 148 | expr_it->second.fully_used = true; 149 | } >> 150 | else >> 151 | { >> 152 | expr_it->second.fully_used = true; >> 153 | } 154 | } 155 | else --- uncovered block 172-172 --- 170 | auto map_it = usage_map.find(source.get()); 171 | if (map_it == usage_map.end()) >> 172 | return; 173 | 174 | auto expr_it = map_it->second.find(column_node->getColumnName()); --- uncovered block 262-262 --- 260 | const auto & arguments = function_node->getArguments().getNodes(); 261 | if (arguments.size() < 2) >> 262 | return; 263 | 264 | auto * column_node = arguments[0]->as(); --- uncovered block 266-266 --- 264 | auto * column_node = arguments[0]->as(); 265 | if (!column_node) >> 266 | return; 267 | 268 | auto source = column_node->getColumnSourceOrNull(); --- uncovered block 270-270 --- 268 | auto source = column_node->getColumnSourceOrNull(); 269 | if (!source || !tracked_nodes.contains(source.get())) >> 270 | return; 271 | 272 | auto node_it = updated_types.find(source.get()); --- uncovered block 274-274 --- 272 | auto node_it = updated_types.find(source.get()); 273 | if (node_it == updated_types.end()) >> 274 | return; 275 | 276 | auto type_it = node_it->second.find(column_node->getColumnName()); --- uncovered block 278-278 --- 276 | auto type_it = node_it->second.find(column_node->getColumnName()); 277 | if (type_it == node_it->second.end()) >> 278 | return; 279 | 280 | const auto & new_type = type_it->second; --- uncovered block 324-324 --- 322 | auto * column_node = join_expr->as(); 323 | if (!column_node || !column_node->hasExpression()) >> 324 | continue; 325 | 326 | ExpressionUsage expr_usage; --- uncovered block 373-373 --- 371 | } 372 | if (!array_join_node) >> 373 | continue; 374 | 375 | auto & join_expressions = array_join_node->getJoinExpressions().getNodes(); --- uncovered block 386-389 --- 384 | auto * column_node = join_expr->as(); 385 | if (!column_node) >> 386 | { >> 387 | kept.push_back(std::move(join_expr)); >> 388 | continue; >> 389 | } 390 | 391 | auto expr_it = expressions_usage.find(column_node->getColumnName()); --- uncovered block 408-408 --- 406 | auto * column_node = join_expr->as(); 407 | if (!column_node || !column_node->hasExpression()) >> 408 | continue; 409 | 410 | auto expr_it = expressions_usage.find(column_node->getColumnName()); --- uncovered block 412-412 --- 410 | auto expr_it = expressions_usage.find(column_node->getColumnName()); 411 | if (expr_it == expressions_usage.end()) >> 412 | continue; 413 | 414 | auto & expr_usage = expr_it->second; --- uncovered block 420-420 --- 418 | auto * function_node = column_node->getExpression()->as(); 419 | if (!function_node) >> 420 | continue; 421 | 422 | pruneNestedFunctionArguments(*column_node, *function_node, expr_usage, context); --- uncovered block 431-431 --- 429 | auto * col_node = join_expr->as(); 430 | if (!col_node) >> 431 | continue; 432 | type_map[col_node->getColumnName()] = col_node->getColumnType(); 433 | } ================================================================================ src/Analyzer/Passes/PruneArrayJoinColumnsPass.h ================================================================================ --- uncovered block 27-27 --- 25 | { 26 | public: >> 27 | String getName() override { return "PruneArrayJoinColumns"; } 28 | 29 | String getDescription() override { return "Prune unused ARRAY JOIN expressions and nested() subcolumns"; } --- uncovered block 29-29 --- 27 | String getName() override { return "PruneArrayJoinColumns"; } 28 | >> 29 | String getDescription() override { return "Prune unused ARRAY JOIN expressions and nested() subcolumns"; } 30 | 31 | void run(QueryTreeNodePtr & query_tree_node, ContextPtr context) override; WARNING: Failed to get start time for [Print Uncovered Code] - start time and duration won't be set