aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <rvu@ydb.tech>2022-12-29 13:44:07 +0300
committerudovichenko-r <rvu@ydb.tech>2022-12-29 13:44:07 +0300
commit0e07981fd86e8cf0549a0cf6afae72186a60bc1b (patch)
treedb501b37697deab5422cb50df3f63d807a723253
parent4f9b085d90a088053016848bbf840374e0bcab38 (diff)
downloadydb-0e07981fd86e8cf0549a0cf6afae72186a60bc1b.tar.gz
[yql] Core optimizers for (ForwardList (ToStream ...)) and (ToFlow (ToList ...))
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_simple1.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
index 0f23273da0d..b1a5b4e40c2 100644
--- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
+++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
@@ -2384,6 +2384,11 @@ TExprNode::TPtr OptimizeToFlow(const TExprNode::TPtr& node, TExprContext& ctx) {
return ctx.ChangeChild(node->Head(), 0, ctx.NewCallable(node->Pos(), "ToFlow", { node->Head().HeadPtr() }));
}
+ if (node->Head().IsCallable("ToList") && node->Head().Head().GetTypeAnn()->GetKind() == ETypeAnnotationKind::Optional) {
+ YQL_CLOG(DEBUG, Core) << "Drop " << node->Head().Content() << " under " << node->Content();
+ return ctx.ChangeChildren(*node, node->Head().ChildrenList());
+ }
+
return node;
}
@@ -3964,6 +3969,11 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) {
return ctx.WrapByCallableIf(ETypeAnnotationKind::Stream == node->Head().Head().GetTypeAnn()->GetKind(), node->Content(), node->Head().HeadPtr());
}
+ if (node->Head().IsCallable("ToStream") && node->Head().Head().GetTypeAnn()->GetKind() == ETypeAnnotationKind::Optional) {
+ YQL_CLOG(DEBUG, Core) << node->Content() << " over " << node->Head().Content();
+ return ctx.NewCallable(node->Pos(), "ToList", {node->Head().HeadPtr()});
+ }
+
return node;
};