aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-05-28 17:20:42 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-05-28 17:33:37 +0300
commit527ad7a63e71ce09e5b6e02cd17f863cb2c830e0 (patch)
tree90966679d587a3805f26cf330ef3273c3025e88d
parentafbcef3f55df5bc1054cd00a11f39cab08f83095 (diff)
downloadydb-527ad7a63e71ce09e5b6e02cd17f863cb2c830e0.tar.gz
Intermediate changes
commit_hash:ab24b3db82789b77ad465efa64de93c5eab43629
-rw-r--r--yql/essentials/sql/v1/complete/name/object/dispatch/schema.cpp36
-rw-r--r--yql/essentials/sql/v1/complete/name/object/dispatch/schema.h9
-rw-r--r--yql/essentials/sql/v1/complete/name/object/dispatch/ya.make11
-rw-r--r--yql/essentials/sql/v1/complete/name/object/simple/schema_ut.cpp20
-rw-r--r--yql/essentials/sql/v1/complete/name/object/simple/static/schema.cpp26
-rw-r--r--yql/essentials/sql/v1/complete/name/object/simple/static/schema.h2
-rw-r--r--yql/essentials/sql/v1/complete/name/object/ya.make1
-rw-r--r--yql/essentials/sql/v1/complete/sql_complete_ut.cpp28
-rw-r--r--yql/essentials/sql/v1/complete/ut/ya.make1
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