diff --git a/src/optimizer/robust_optimizer.cpp b/src/optimizer/robust_optimizer.cpp index 547754b..8616518 100644 --- a/src/optimizer/robust_optimizer.cpp +++ b/src/optimizer/robust_optimizer.cpp @@ -1571,13 +1571,16 @@ void RobustOptimizerContextState::SetupDynamicFilterPushdown(LogicalOperator *pl static LogicalOperator *FindDeepestCreateFilter(LogicalOperator *node) { LogicalOperator *deepest = nullptr; while (node) { + if (node->children.empty()) { + break; + } + if (node->children.size() != 1 || node->GetColumnBindings() != node->children[0]->GetColumnBindings()) { + break; + } if (node->type == LogicalOperatorType::LOGICAL_EXTENSION_OPERATOR && dynamic_cast(node)) { deepest = node; } - if (node->children.empty()) { - break; - } node = node->children[0].get(); } return deepest;