diff options
author | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-02-16 15:17:34 +0300 |
---|---|---|
committer | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-02-16 15:17:34 +0300 |
commit | 7ac7666495e3f3ab80bd93ed6bf29755d90b54c4 (patch) | |
tree | 1412044dfd8b636549522210769f3ad210a3ec3c | |
parent | 69a6fb6759cff32d6f1f577f908ead97c8af2404 (diff) | |
download | ydb-7ac7666495e3f3ab80bd93ed6bf29755d90b54c4.tar.gz |
[yql] Move SqlIn over sorted optimizer to simple2
YQL-14369
ref:5df7a370715b18fba3511d4ddbc0a0d95cad6d94
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_simple1.cpp | 5 | ||||
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_simple2.cpp | 10 |
2 files changed, 10 insertions, 5 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 7a7fe755452..8a66d1bd60b 100644 --- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp @@ -3713,11 +3713,6 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) { } } - if (collectionKind == ETypeAnnotationKind::List && collection->GetConstraint<TSortedConstraintNode>()) { - YQL_CLOG(DEBUG, Core) << "IN over sorted collection"; - return ctx.ChangeChild(*node, 0, ctx.NewCallable(collection->Pos(), "Unordered", {collection})); - } - return node; }; diff --git a/ydb/library/yql/core/common_opt/yql_co_simple2.cpp b/ydb/library/yql/core/common_opt/yql_co_simple2.cpp index 6d59989b6a4..11839432a64 100644 --- a/ydb/library/yql/core/common_opt/yql_co_simple2.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_simple2.cpp @@ -488,6 +488,16 @@ void RegisterCoSimpleCallables2(TCallableOptimizerMap& map) { map["AggrNotEquals"] = map["AggrLess"] = map["AggrGreater"] = std::bind(&CheckCompareSame<false, true>, _1, _2); map["IfPresent"] = std::bind(&IfPresentSubsetFields, _1, _2, _3); + + map["SqlIn"] = [](const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext&) { + auto collection = node->HeadPtr(); + if (collection->GetTypeAnn()->GetKind() == ETypeAnnotationKind::List && collection->GetConstraint<TSortedConstraintNode>()) { + YQL_CLOG(DEBUG, Core) << "IN over sorted collection"; + return ctx.ChangeChild(*node, 0, ctx.NewCallable(collection->Pos(), "Unordered", {collection})); + } + + return node; + }; } } |