Packages

An Elixir DuckDB library

Current section

Files

Jump to
exduckdb c_src duckdb src optimizer statistics expression propagate_case.cpp
Raw

c_src/duckdb/src/optimizer/statistics/expression/propagate_case.cpp

#include "duckdb/optimizer/statistics_propagator.hpp"
#include "duckdb/planner/expression/bound_case_expression.hpp"
namespace duckdb {
unique_ptr<BaseStatistics> StatisticsPropagator::PropagateExpression(BoundCaseExpression &bound_case,
unique_ptr<Expression> *expr_ptr) {
// propagate in all the children
auto result_stats = PropagateExpression(bound_case.else_expr);
for (auto &case_check : bound_case.case_checks) {
PropagateExpression(case_check.when_expr);
auto then_stats = PropagateExpression(case_check.then_expr);
if (!then_stats) {
result_stats.reset();
} else if (result_stats) {
result_stats->Merge(*then_stats);
}
}
return result_stats;
}
} // namespace duckdb