aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/cluster_mapping.cpp
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2024-11-07 12:29:36 +0300
committervvvv <vvvv@yandex-team.com>2024-11-07 13:49:47 +0300
commitd4c258e9431675bab6745c8638df6e3dfd4dca6b (patch)
treeb5efcfa11351152a4c872fccaea35749141c0b11 /yql/essentials/sql/cluster_mapping.cpp
parent13a4f274caef5cfdaf0263b24e4d6bdd5521472b (diff)
downloadydb-d4c258e9431675bab6745c8638df6e3dfd4dca6b.tar.gz
Moved other yql/essentials libs YQL-19206
init commit_hash:7d4c435602078407bbf20dd3c32f9c90d2bbcbc0
Diffstat (limited to 'yql/essentials/sql/cluster_mapping.cpp')
-rw-r--r--yql/essentials/sql/cluster_mapping.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/yql/essentials/sql/cluster_mapping.cpp b/yql/essentials/sql/cluster_mapping.cpp
new file mode 100644
index 0000000000..7a6ab64ecd
--- /dev/null
+++ b/yql/essentials/sql/cluster_mapping.cpp
@@ -0,0 +1,34 @@
+#include "cluster_mapping.h"
+#include <yql/essentials/providers/common/provider/yql_provider_names.h>
+
+using namespace NYql;
+
+namespace NSQLTranslation {
+TClusterMapping::TClusterMapping(const THashMap<TString, TString>& mapping) {
+ for (const auto& p : mapping) {
+ if (p.second == KikimrProviderName) {
+ CaseSensitiveClusters.emplace(p);
+ continue;
+ }
+
+ TString clusterLowerCase = to_lower(p.first);
+ CaseInsensitiveClusters.emplace(clusterLowerCase, p.second);
+ }
+}
+
+TMaybe<TString> TClusterMapping::GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
+ auto providerPtr1 = CaseSensitiveClusters.FindPtr(cluster);
+ if (providerPtr1) {
+ normalizedClusterName = cluster;
+ return *providerPtr1;
+ }
+
+ TString clusterLowerCase = to_lower(cluster);
+ auto providerPtr2 = CaseInsensitiveClusters.FindPtr(clusterLowerCase);
+ if (providerPtr2) {
+ normalizedClusterName = clusterLowerCase;
+ return *providerPtr2;
+ }
+ return Nothing();
+}
+}