diff options
Diffstat (limited to 'yql/essentials/core/yql_opt_utils.cpp')
-rw-r--r-- | yql/essentials/core/yql_opt_utils.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/yql/essentials/core/yql_opt_utils.cpp b/yql/essentials/core/yql_opt_utils.cpp index 2ab0522ede..618105e08d 100644 --- a/yql/essentials/core/yql_opt_utils.cpp +++ b/yql/essentials/core/yql_opt_utils.cpp @@ -1832,6 +1832,15 @@ TExprNode::TPtr FindNonYieldTransparentNodeImpl(const TExprNode::TPtr& root, con } return candidate; } + + auto callableType = candidate.Get()->Head().GetTypeAnn()->Cast<TCallableExprType>(); + for (const auto& arg : callableType->GetArguments()) { + if (arg.Type->GetKind() == ETypeAnnotationKind::Stream && + arg.Flags & NUdf::ICallablePayload::TArgumentFlags::NoYield) { + return candidate; + } + } + if (!udfSupportsYield) { while (TCoApply::Match(candidate.Get())) { candidate = candidate->HeadPtr(); |