diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2025-05-28 17:20:42 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2025-05-28 17:33:37 +0300 |
commit | 527ad7a63e71ce09e5b6e02cd17f863cb2c830e0 (patch) | |
tree | 90966679d587a3805f26cf330ef3273c3025e88d | |
parent | afbcef3f55df5bc1054cd00a11f39cab08f83095 (diff) | |
download | ydb-527ad7a63e71ce09e5b6e02cd17f863cb2c830e0.tar.gz |
Intermediate changes
commit_hash:ab24b3db82789b77ad465efa64de93c5eab43629
9 files changed, 37 insertions, 97 deletions
diff --git a/yql/essentials/sql/v1/complete/name/object/dispatch/schema.cpp b/yql/essentials/sql/v1/complete/name/object/dispatch/schema.cpp deleted file mode 100644 index f6d79b280a0..00000000000 --- a/yql/essentials/sql/v1/complete/name/object/dispatch/schema.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "schema.h" - -namespace NSQLComplete { - - namespace { - - class TSchema: public ISchema { - public: - explicit TSchema(THashMap<TString, ISchema::TPtr> mapping) - : Mapping_(std::move(mapping)) - { - } - - NThreading::TFuture<TListResponse> List(const TListRequest& request) const override { - auto iter = Mapping_.find(request.Cluster); - if (iter == std::end(Mapping_)) { - yexception e; - e << "unknown cluster '" << request.Cluster << "'"; - std::exception_ptr p = std::make_exception_ptr(e); - return NThreading::MakeErrorFuture<TListResponse>(p); - } - - return iter->second->List(request); - } - - private: - THashMap<TString, ISchema::TPtr> Mapping_; - }; - - } // namespace - - ISchema::TPtr MakeDispatchSchema(THashMap<TString, ISchema::TPtr> mapping) { - return new TSchema(std::move(mapping)); - } - -} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/object/dispatch/schema.h b/yql/essentials/sql/v1/complete/name/object/dispatch/schema.h deleted file mode 100644 index 517a3ad0af7..00000000000 --- a/yql/essentials/sql/v1/complete/name/object/dispatch/schema.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include <yql/essentials/sql/v1/complete/name/object/schema.h> - -namespace NSQLComplete { - - ISchema::TPtr MakeDispatchSchema(THashMap<TString, ISchema::TPtr> mapping); - -} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/object/dispatch/ya.make b/yql/essentials/sql/v1/complete/name/object/dispatch/ya.make deleted file mode 100644 index 071bf5dff7d..00000000000 --- a/yql/essentials/sql/v1/complete/name/object/dispatch/ya.make +++ /dev/null @@ -1,11 +0,0 @@ -LIBRARY() - -SRCS( - schema.cpp -) - -PEERDIR( - yql/essentials/sql/v1/complete/name/object -) - -END() diff --git a/yql/essentials/sql/v1/complete/name/object/simple/schema_ut.cpp b/yql/essentials/sql/v1/complete/name/object/simple/schema_ut.cpp index 954ecc4da75..7fdd5d66b21 100644 --- a/yql/essentials/sql/v1/complete/name/object/simple/schema_ut.cpp +++ b/yql/essentials/sql/v1/complete/name/object/simple/schema_ut.cpp @@ -9,16 +9,16 @@ using namespace NSQLComplete; Y_UNIT_TEST_SUITE(StaticSchemaTests) { ISchema::TPtr MakeStaticSchemaUT() { - THashMap<TString, TVector<TFolderEntry>> fs = { - {"/", {{"Folder", "local"}, - {"Folder", "test"}, - {"Folder", "prod"}}}, - {"/local/", {{"Table", "example"}, - {"Table", "account"}, - {"Table", "abacaba"}}}, - {"/test/", {{"Folder", "service"}, - {"Table", "meta"}}}, - {"/test/service/", {{"Table", "example"}}}, + THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> fs = { + {"", {{"/", {{"Folder", "local"}, + {"Folder", "test"}, + {"Folder", "prod"}}}, + {"/local/", {{"Table", "example"}, + {"Table", "account"}, + {"Table", "abacaba"}}}, + {"/test/", {{"Folder", "service"}, + {"Table", "meta"}}}, + {"/test/service/", {{"Table", "example"}}}}}, }; return MakeSimpleSchema( MakeStaticSimpleSchema(std::move(fs))); diff --git a/yql/essentials/sql/v1/complete/name/object/simple/static/schema.cpp b/yql/essentials/sql/v1/complete/name/object/simple/static/schema.cpp index 99d946a0d26..3482da8a332 100644 --- a/yql/essentials/sql/v1/complete/name/object/simple/static/schema.cpp +++ b/yql/essentials/sql/v1/complete/name/object/simple/static/schema.cpp @@ -6,12 +6,14 @@ namespace NSQLComplete { class TSimpleSchema: public ISimpleSchema { public: - explicit TSimpleSchema(THashMap<TString, TVector<TFolderEntry>> data) + explicit TSimpleSchema(THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> data) : Data_(std::move(data)) { - for (const auto& [k, _] : Data_) { - Y_ENSURE(k.StartsWith("/"), k << " must start with the '/'"); - Y_ENSURE(k.EndsWith("/"), k << " must end with the '/'"); + for (const auto& [_, tables] : Data_) { + for (const auto& [k, _] : tables) { + Y_ENSURE(k.StartsWith("/"), k << " must start with the '/'"); + Y_ENSURE(k.EndsWith("/"), k << " must end with the '/'"); + } } } @@ -26,25 +28,31 @@ namespace NSQLComplete { return {head, tail}; } - NThreading::TFuture<TVector<TFolderEntry>> List(TString folder) const override { + NThreading::TFuture<TVector<TFolderEntry>> List(TString cluster, TString folder) const override { if (!folder.StartsWith('/')) { folder.prepend('/'); } TVector<TFolderEntry> entries; - if (const auto* data = Data_.FindPtr(folder)) { - entries = *data; + + const THashMap<TString, TVector<TFolderEntry>>* tables = nullptr; + const TVector<TFolderEntry>* items = nullptr; + if ((tables = Data_.FindPtr(cluster)) && + (items = tables->FindPtr(folder))) { + entries = *items; } + return NThreading::MakeFuture(std::move(entries)); } private: - THashMap<TString, TVector<TFolderEntry>> Data_; + THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> Data_; }; } // namespace - ISimpleSchema::TPtr MakeStaticSimpleSchema(THashMap<TString, TVector<TFolderEntry>> fs) { + ISimpleSchema::TPtr MakeStaticSimpleSchema( + THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> fs) { return new TSimpleSchema(std::move(fs)); } diff --git a/yql/essentials/sql/v1/complete/name/object/simple/static/schema.h b/yql/essentials/sql/v1/complete/name/object/simple/static/schema.h index f04c89f0b23..009b433ee4a 100644 --- a/yql/essentials/sql/v1/complete/name/object/simple/static/schema.h +++ b/yql/essentials/sql/v1/complete/name/object/simple/static/schema.h @@ -5,6 +5,6 @@ namespace NSQLComplete { ISimpleSchema::TPtr MakeStaticSimpleSchema( - THashMap<TString, TVector<TFolderEntry>> fs); + THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> fs); } // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/object/ya.make b/yql/essentials/sql/v1/complete/name/object/ya.make index 2561c018292..dd5e5046315 100644 --- a/yql/essentials/sql/v1/complete/name/object/ya.make +++ b/yql/essentials/sql/v1/complete/name/object/ya.make @@ -11,6 +11,5 @@ PEERDIR( END() RECURSE( - dispatch simple ) diff --git a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp index f3430fca4a0..7460924b48f 100644 --- a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp @@ -2,7 +2,6 @@ #include <yql/essentials/sql/v1/complete/syntax/grammar.h> #include <yql/essentials/sql/v1/complete/name/cluster/static/discovery.h> -#include <yql/essentials/sql/v1/complete/name/object/dispatch/schema.h> #include <yql/essentials/sql/v1/complete/name/object/simple/schema.h> #include <yql/essentials/sql/v1/complete/name/object/simple/static/schema.h> #include <yql/essentials/sql/v1/complete/name/service/ranking/frequency.h> @@ -17,6 +16,8 @@ #include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> #include <library/cpp/testing/unittest/registar.h> +#include <library/cpp/iterator/iterate_keys.h> +#include <library/cpp/iterator/functools.h> #include <util/charset/utf8.h> @@ -79,7 +80,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { }, }; - THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> fss = { + THashMap<TString, THashMap<TString, TVector<TFolderEntry>>> fs = { {"", {{"/", {{"Folder", "local"}, {"Folder", "test"}, {"Folder", "prod"}, @@ -99,30 +100,19 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {{"/", {{"Table", "maxim"}}}}}, }; - TVector<TString> clusters; - for (const auto& [cluster, _] : fss) { - clusters.emplace_back(cluster); - } - EraseIf(clusters, [](const auto& s) { return s.empty(); }); + auto clustersIt = NFuncTools::Filter( + [](const auto& x) { return !x.empty(); }, IterateKeys(fs)); + TVector<TString> clusters(begin(clustersIt), end(clustersIt)); TFrequencyData frequency; - IRanking::TPtr ranking = MakeDefaultRanking(frequency); - - THashMap<TString, ISchema::TPtr> schemasByCluster; - for (auto& [cluster, fs] : fss) { - schemasByCluster[std::move(cluster)] = - MakeSimpleSchema( - MakeStaticSimpleSchema(std::move(fs))); - } - TVector<INameService::TPtr> children = { MakeStaticNameService(std::move(names), frequency), - MakeSchemaNameService(MakeDispatchSchema(std::move(schemasByCluster))), + MakeSchemaNameService(MakeSimpleSchema(MakeStaticSimpleSchema(std::move(fs)))), MakeClusterNameService(MakeStaticClusterDiscovery(std::move(clusters))), }; - - INameService::TPtr service = MakeUnionNameService(std::move(children), ranking); + INameService::TPtr service = MakeUnionNameService( + std::move(children), MakeDefaultRanking(frequency)); return MakeSqlCompletionEngine(std::move(lexer), std::move(service)); } diff --git a/yql/essentials/sql/v1/complete/ut/ya.make b/yql/essentials/sql/v1/complete/ut/ya.make index c978e6e6048..d53220ff3b2 100644 --- a/yql/essentials/sql/v1/complete/ut/ya.make +++ b/yql/essentials/sql/v1/complete/ut/ya.make @@ -8,7 +8,6 @@ PEERDIR( yql/essentials/sql/v1/lexer/antlr4_pure yql/essentials/sql/v1/lexer/antlr4_pure_ansi yql/essentials/sql/v1/complete/name/cluster/static - yql/essentials/sql/v1/complete/name/object/dispatch yql/essentials/sql/v1/complete/name/object/simple yql/essentials/sql/v1/complete/name/object/simple/static yql/essentials/sql/v1/complete/name/service/cluster |