aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/cluster_mapping.cpp
blob: fb2a5100b5b8e4600747443331475d01926bf412 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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();
}
}