From 1007ec8f803dca446248170b22179caadc07e216 Mon Sep 17 00:00:00 2001 From: Jianhong Shi Date: Fri, 24 Jul 2026 13:11:59 -0500 Subject: [PATCH] avoid lifting CREATE_FILTERs across binding-changing operators --- src/optimizer/robust_optimizer.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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;