diff options
author | uzhas <uzhas@ydb.tech> | 2023-08-28 11:37:06 +0300 |
---|---|---|
committer | uzhas <uzhas@ydb.tech> | 2023-08-28 12:03:29 +0300 |
commit | 8789983bf63ecc98f1aeff067b25a8785b15f9f7 (patch) | |
tree | 623e3ab5ab922c075e0c24abedf95ba4a3cfdc8d | |
parent | 8deda63a4dadb4d18d6e0f4d0dfcb1de03140ab0 (diff) | |
download | ydb-8789983bf63ecc98f1aeff067b25a8785b15f9f7.tar.gz |
generic provider: tune for KQP
3 files changed, 26 insertions, 7 deletions
diff --git a/ydb/library/yql/providers/generic/provider/yql_generic_datasource.cpp b/ydb/library/yql/providers/generic/provider/yql_generic_datasource.cpp index 332431e2fc..7b5de4b2dd 100644 --- a/ydb/library/yql/providers/generic/provider/yql_generic_datasource.cpp +++ b/ydb/library/yql/providers/generic/provider/yql_generic_datasource.cpp @@ -73,6 +73,25 @@ namespace NYql { return node; } + bool CanPullResult(const TExprNode& node, TSyncMap& syncList, bool& canRef) override { + Y_UNUSED(syncList); + canRef = false; + if (node.IsCallable(TCoRight::CallableName())) { + const auto input = node.Child(0); + if (input->IsCallable(TGenReadTable::CallableName())) { + return true; + } + } + return false; + } + + bool CanExecute(const TExprNode& node) override { + if (node.IsCallable(TGenReadTable::CallableName())) { + return true; + } + return false; + } + const THashMap<TString, TString>* GetClusterTokens() override { return &State_->Configuration->Tokens; } diff --git a/ydb/library/yql/providers/generic/provider/yql_generic_logical_opt.cpp b/ydb/library/yql/providers/generic/provider/yql_generic_logical_opt.cpp index 406942a0d1..52a0866008 100644 --- a/ydb/library/yql/providers/generic/provider/yql_generic_logical_opt.cpp +++ b/ydb/library/yql/providers/generic/provider/yql_generic_logical_opt.cpp @@ -23,19 +23,12 @@ namespace NYql { , State_(state) { #define HNDL(name) "LogicalOptimizer-" #name, Hndl(&TGenericLogicalOptProposalTransformer::name) - AddHandler(0, &TCoLeft::Match, HNDL(TrimReadWorld)); AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembers)); AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembersOverDqWrap)); AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembersOverDqSourceWrap)); #undef HNDL } - TMaybeNode<TExprBase> TrimReadWorld(TExprBase node, TExprContext& ctx) const { - if (const auto maybeRead = node.Cast<TCoLeft>().Input().Maybe<TGenReadTable>()) - return TExprBase(ctx.NewWorld(node.Pos())); - return node; - } - TMaybeNode<TExprBase> ExtractMembers(TExprBase node, TExprContext& ctx) const { const auto extract = node.Cast<TCoExtractMembers>(); const auto input = extract.Input(); diff --git a/ydb/library/yql/providers/generic/provider/yql_generic_physical_opt.cpp b/ydb/library/yql/providers/generic/provider/yql_generic_physical_opt.cpp index 5141983d11..719316c467 100644 --- a/ydb/library/yql/providers/generic/provider/yql_generic_physical_opt.cpp +++ b/ydb/library/yql/providers/generic/provider/yql_generic_physical_opt.cpp @@ -23,10 +23,17 @@ namespace NYql { , State_(state) { #define HNDL(name) "PhysicalOptimizer-" #name, Hndl(&TGenericPhysicalOptProposalTransformer::name) + AddHandler(0, &TCoLeft::Match, HNDL(TrimReadWorld)); AddHandler(0, &TCoNarrowMap::Match, HNDL(ReadZeroColumns)); #undef HNDL } + TMaybeNode<TExprBase> TrimReadWorld(TExprBase node, TExprContext& ctx) const { + if (const auto maybeRead = node.Cast<TCoLeft>().Input().Maybe<TGenReadTable>()) + return TExprBase(ctx.NewWorld(node.Pos())); + return node; + } + TMaybeNode<TExprBase> ReadZeroColumns(TExprBase node, TExprContext& ctx) const { const auto& narrow = node.Maybe<TCoNarrowMap>(); if (const auto& wide = narrow.Cast().Input().Maybe<TDqReadWideWrap>()) { |