diff options
author | hcpp <hcpp@ydb.tech> | 2022-07-20 16:40:25 +0300 |
---|---|---|
committer | hcpp <hcpp@ydb.tech> | 2022-07-20 16:40:25 +0300 |
commit | 1488927ea39daea1a84a7f2996ea74ff46c67318 (patch) | |
tree | 587d84c7d2d907246de257a95b0bfb737965cbe0 | |
parent | 3c7d69ef625871f9fdf0eeca19c0836b347135a1 (diff) | |
download | ydb-1488927ea39daea1a84a7f2996ea74ff46c67318.tar.gz |
url encoding for s3 has been fixed
-rw-r--r-- | ydb/core/yq/libs/actors/CMakeLists.txt | 1 | ||||
-rw-r--r-- | ydb/core/yq/libs/actors/clusters_from_connections.cpp | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/ydb/core/yq/libs/actors/CMakeLists.txt b/ydb/core/yq/libs/actors/CMakeLists.txt index 01c3558e76..4c200da59e 100644 --- a/ydb/core/yq/libs/actors/CMakeLists.txt +++ b/ydb/core/yq/libs/actors/CMakeLists.txt @@ -19,6 +19,7 @@ target_link_libraries(yq-libs-actors PUBLIC cpp-json-yson cpp-monlib-dynamic_counters library-cpp-random_provider + cpp-string_utils-quote library-cpp-time_provider library-cpp-yson cpp-yson-node diff --git a/ydb/core/yq/libs/actors/clusters_from_connections.cpp b/ydb/core/yq/libs/actors/clusters_from_connections.cpp index 8ddc4096ae..6ffb882389 100644 --- a/ydb/core/yq/libs/actors/clusters_from_connections.cpp +++ b/ydb/core/yq/libs/actors/clusters_from_connections.cpp @@ -1,11 +1,14 @@ #include "clusters_from_connections.h" #include <ydb/library/yql/providers/common/provider/yql_provider_names.h> +#include <ydb/library/yql/utils/url_builder.h> #include <util/generic/hash.h> #include <util/string/builder.h> #include <util/system/env.h> +#include <library/cpp/string_utils/quote/quote.h> + namespace NYq { using namespace NYql; @@ -55,10 +58,14 @@ void FillS3ClusterConfig(NYql::TS3ClusterConfig& clusterConfig, const YandexQuery::ObjectStorageConnection& s3) { clusterConfig.SetName(name); TString objectStorageUrl; + + if (objectStorageEndpoint == "https://s3.mds.yandex.net") { - objectStorageUrl = TStringBuilder() << "https://" << s3.bucket() << ".s3.mds.yandex.net/"; + TUrlBuilder builder{"https://"}; + objectStorageUrl = builder.AddPathComponent(s3.bucket() + ".s3.mds.yandex.net/").Build(); } else { - objectStorageUrl = TStringBuilder() << objectStorageEndpoint << '/' << s3.bucket() << '/'; + TUrlBuilder builder{UrlEscapeRet(objectStorageEndpoint, true)}; + objectStorageUrl = builder.AddPathComponent(s3.bucket() + "/").Build(); } clusterConfig.SetUrl(objectStorageUrl); FillClusterAuth(clusterConfig, s3.auth(), authToken, accountIdSignatures); |