Coverage Report

Created: 2025-06-12 07:25

/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp
Line
Count
Source (jump to first uncovered line)
1
#include "duckdb/optimizer/filter_pullup.hpp"
2
#include "duckdb/planner/operator/logical_comparison_join.hpp"
3
#include "duckdb/planner/operator/logical_join.hpp"
4
5
namespace duckdb {
6
7
4.96k
unique_ptr<LogicalOperator> FilterPullup::PullupFromLeft(unique_ptr<LogicalOperator> op) {
8
4.96k
  D_ASSERT(op->type == LogicalOperatorType::LOGICAL_COMPARISON_JOIN ||
9
4.96k
           op->type == LogicalOperatorType::LOGICAL_ASOF_JOIN || op->type == LogicalOperatorType::LOGICAL_ANY_JOIN ||
10
4.96k
           op->type == LogicalOperatorType::LOGICAL_EXCEPT || op->type == LogicalOperatorType::LOGICAL_DELIM_JOIN);
11
12
4.96k
  FilterPullup left_pullup(true, can_add_column);
13
4.96k
  FilterPullup right_pullup(false, can_add_column);
14
15
4.96k
  op->children[0] = left_pullup.Rewrite(std::move(op->children[0]));
16
4.96k
  op->children[1] = right_pullup.Rewrite(std::move(op->children[1]));
17
18
  // check only for filters from the LHS
19
4.96k
  if (!left_pullup.filters_expr_pullup.empty() && right_pullup.filters_expr_pullup.empty()) {
20
0
    return GeneratePullupFilter(std::move(op), left_pullup.filters_expr_pullup);
21
0
  }
22
4.96k
  return op;
23
4.96k
}
24
25
} // namespace duckdb