diff --git a/velox/expression/ExprToSubfieldFilter.cpp b/velox/expression/ExprToSubfieldFilter.cpp index 000d8d4cebee..eae28c14a8b9 100644 --- a/velox/expression/ExprToSubfieldFilter.cpp +++ b/velox/expression/ExprToSubfieldFilter.cpp @@ -536,8 +536,16 @@ std::pair> toSubfieldFilter( if (auto call = asCall(expr.get())) { if (call->name() == "or") { auto left = toSubfieldFilter(call->inputs()[0], evaluator); + if (!left.second) { + return {}; + } auto right = toSubfieldFilter(call->inputs()[1], evaluator); - VELOX_CHECK(left.first == right.first); + if (!right.second) { + return {}; + } + if (left.first != right.first) { + return {}; + } return { std::move(left.first), makeOrFilter(std::move(left.second), std::move(right.second))}; @@ -559,8 +567,7 @@ std::pair> toSubfieldFilter( return std::make_pair(std::move(subfield), std::move(filter)); } } - VELOX_UNSUPPORTED( - "Unsupported expression for range filter: {}", expr->toString()); + return {}; } } // namespace facebook::velox::exec