aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruzhas <uzhas@ydb.tech>2023-08-28 11:37:06 +0300
committeruzhas <uzhas@ydb.tech>2023-08-28 12:03:29 +0300
commit8789983bf63ecc98f1aeff067b25a8785b15f9f7 (patch)
tree623e3ab5ab922c075e0c24abedf95ba4a3cfdc8d
parent8deda63a4dadb4d18d6e0f4d0dfcb1de03140ab0 (diff)
downloadydb-8789983bf63ecc98f1aeff067b25a8785b15f9f7.tar.gz
generic provider: tune for KQP
-rw-r--r--ydb/library/yql/providers/generic/provider/yql_generic_datasource.cpp19
-rw-r--r--ydb/library/yql/providers/generic/provider/yql_generic_logical_opt.cpp7
-rw-r--r--ydb/library/yql/providers/generic/provider/yql_generic_physical_opt.cpp7
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>()) {