cluster_mapping.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. #include "cluster_mapping.h"
  2. #include <yql/essentials/providers/common/provider/yql_provider_names.h>
  3. using namespace NYql;
  4. namespace NSQLTranslation {
  5. TClusterMapping::TClusterMapping(const THashMap<TString, TString>& mapping) {
  6. for (const auto& p : mapping) {
  7. if (p.second == KikimrProviderName) {
  8. CaseSensitiveClusters.emplace(p);
  9. continue;
  10. }
  11. TString clusterLowerCase = to_lower(p.first);
  12. CaseInsensitiveClusters.emplace(clusterLowerCase, p.second);
  13. }
  14. }
  15. TMaybe<TString> TClusterMapping::GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
  16. auto providerPtr1 = CaseSensitiveClusters.FindPtr(cluster);
  17. if (providerPtr1) {
  18. normalizedClusterName = cluster;
  19. return *providerPtr1;
  20. }
  21. TString clusterLowerCase = to_lower(cluster);
  22. auto providerPtr2 = CaseInsensitiveClusters.FindPtr(clusterLowerCase);
  23. if (providerPtr2) {
  24. normalizedClusterName = clusterLowerCase;
  25. return *providerPtr2;
  26. }
  27. return Nothing();
  28. }
  29. }