diff options
author | udovichenko-r <rvu@ydb.tech> | 2022-12-29 13:44:07 +0300 |
---|---|---|
committer | udovichenko-r <rvu@ydb.tech> | 2022-12-29 13:44:07 +0300 |
commit | 0e07981fd86e8cf0549a0cf6afae72186a60bc1b (patch) | |
tree | db501b37697deab5422cb50df3f63d807a723253 | |
parent | 4f9b085d90a088053016848bbf840374e0bcab38 (diff) | |
download | ydb-0e07981fd86e8cf0549a0cf6afae72186a60bc1b.tar.gz |
[yql] Core optimizers for (ForwardList (ToStream ...)) and (ToFlow (ToList ...))
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_simple1.cpp | 10 |
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; }; |