From f692ef4c45bcdce608ceead9c3033d5e29aa2ff9 Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Tue, 8 Apr 2025 13:44:19 +0000 Subject: [PATCH 1/3] Increment ydb-cpp-sdk version to v3.3.1 --- .../client/draft/ydb_dynamic_config.h | 265 ---------- .../client/draft/ydb_replication.h | 196 -------- .../ydb-cpp-sdk/client/draft/ydb_scripting.h | 155 ------ include/ydb-cpp-sdk/client/draft/ydb_view.h | 58 --- src/client/CMakeLists.txt | 1 - src/client/draft/ydb_dynamic_config.cpp | 467 ------------------ src/client/draft/ydb_replication.cpp | 282 ----------- src/client/draft/ydb_scripting.cpp | 383 -------------- src/client/draft/ydb_view.cpp | 92 ---- src/version.h | 2 +- 10 files changed, 1 insertion(+), 1900 deletions(-) delete mode 100644 include/ydb-cpp-sdk/client/draft/ydb_dynamic_config.h delete mode 100644 include/ydb-cpp-sdk/client/draft/ydb_replication.h delete mode 100644 include/ydb-cpp-sdk/client/draft/ydb_scripting.h delete mode 100644 include/ydb-cpp-sdk/client/draft/ydb_view.h delete mode 100644 src/client/draft/ydb_dynamic_config.cpp delete mode 100644 src/client/draft/ydb_replication.cpp delete mode 100644 src/client/draft/ydb_scripting.cpp delete mode 100644 src/client/draft/ydb_view.cpp diff --git a/include/ydb-cpp-sdk/client/draft/ydb_dynamic_config.h b/include/ydb-cpp-sdk/client/draft/ydb_dynamic_config.h deleted file mode 100644 index 8949758990..0000000000 --- a/include/ydb-cpp-sdk/client/draft/ydb_dynamic_config.h +++ /dev/null @@ -1,265 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include - -#include - -namespace NYdb::inline V3::NDynamicConfig { - -struct TGetConfigResult : public TStatus { - TGetConfigResult( - TStatus&& status, - std::string&& clusterName, - uint64_t version, - std::string&& config, - std::map&& volatileConfigs) - : TStatus(std::move(status)) - , ClusterName_(std::move(clusterName)) - , Version_(version) - , Config_(std::move(config)) - , VolatileConfigs_(std::move(volatileConfigs)) - {} - - const std::string& GetClusterName() const { - return ClusterName_; - } - - uint64_t GetVersion() const { - return Version_; - } - - const std::string& GetConfig() const { - return Config_; - } - - const std::map& GetVolatileConfigs() const { - return VolatileConfigs_; - } - -private: - std::string ClusterName_; - uint64_t Version_; - std::string Config_; - std::map VolatileConfigs_; -}; - -using TAsyncGetConfigResult = NThreading::TFuture; - -struct TGetMetadataResult : public TStatus { - TGetMetadataResult( - TStatus&& status, - std::string&& metadata, - std::map&& volatileConfigs) - : TStatus(std::move(status)) - , Metadata_(std::move(metadata)) - , VolatileConfigs_(std::move(volatileConfigs)) - {} - - const std::string& GetMetadata() const { - return Metadata_; - } - - const std::map& GetVolatileConfigs() const { - return VolatileConfigs_; - } - -private: - std::string Metadata_; - std::map VolatileConfigs_; -}; - -using TAsyncGetMetadataResult = NThreading::TFuture; - -struct TResolveConfigResult : public TStatus { - TResolveConfigResult( - TStatus&& status, - std::string&& config) - : TStatus(std::move(status)) - , Config_(std::move(config)) - {} - - const std::string& GetConfig() const { - return Config_; - } - -private: - std::string Config_; -}; - -using TAsyncResolveConfigResult = NThreading::TFuture; - -struct TGetNodeLabelsResult : public TStatus { - TGetNodeLabelsResult( - TStatus&& status, - std::map&& labels) - : TStatus(std::move(status)) - , Labels_(std::move(labels)) - {} - - const std::map& GetLabels() const { - return Labels_; - } - -private: - std::map Labels_; -}; - -using TAsyncGetNodeLabelsResult = NThreading::TFuture; - -struct TVerboseResolveConfigResult : public TStatus { - struct TLabel { - enum class EType { - Negative = 0, - Empty, - Common, - }; - - EType Type; - std::string Value; - - bool operator<(const TLabel& other) const { - int lhs = static_cast(Type); - int rhs = static_cast(other.Type); - return std::tie(lhs, Value) < std::tie(rhs, other.Value); - } - - bool operator==(const TLabel& other) const { - int lhs = static_cast(Type); - int rhs = static_cast(other.Type); - return std::tie(lhs, Value) == std::tie(rhs, other.Value); - } - }; - - using ConfigByLabelSet = std::map>, std::string>; - - TVerboseResolveConfigResult( - TStatus&& status, - std::set&& labels, - ConfigByLabelSet&& configs) - : TStatus(std::move(status)) - , Labels_(std::move(labels)) - , Configs_(std::move(configs)) - {} - - const std::set& GetLabels() const { - return Labels_; - } - - const ConfigByLabelSet& GetConfigs() const { - return Configs_; - } - -private: - std::set Labels_; - ConfigByLabelSet Configs_; -}; - -using TAsyncVerboseResolveConfigResult = NThreading::TFuture; - -struct TFetchStartupConfigResult : public TStatus { - TFetchStartupConfigResult(TStatus&& status, std::string&& config) - : TStatus(std::move(status)) - , Config_(std::move(config)) - {} - - const std::string& GetConfig() const { - return Config_; - } - -private: - std::string Config_; -}; - -using TAsyncFetchStartupConfigResult = NThreading::TFuture; - -struct TDynamicConfigClientSettings : public TCommonClientSettingsBase { - using TSelf = TDynamicConfigClientSettings; -}; - -struct TClusterConfigSettings : public NYdb::TOperationRequestSettings {}; - -class TDynamicConfigClient { -public: - class TImpl; - - explicit TDynamicConfigClient(const TDriver& driver); - - // Set config - TAsyncStatus SetConfig(const std::string& config, bool dryRun = false, bool allowUnknownFields = false, const TClusterConfigSettings& settings = {}); - - // Replace config - TAsyncStatus ReplaceConfig(const std::string& config, bool dryRun = false, bool allowUnknownFields = false, const TClusterConfigSettings& settings = {}); - - // Drop config - TAsyncStatus DropConfig( - const std::string& cluster, - uint64_t version, - const TClusterConfigSettings& settings = {}); - - // Add volatile config - TAsyncStatus AddVolatileConfig( - const std::string& config, - const TClusterConfigSettings& settings = {}); - - // Remove specific volatile configs - TAsyncStatus RemoveVolatileConfig( - const std::string& cluster, - uint64_t version, - const std::vector& ids, - const TClusterConfigSettings& settings = {}); - - // Remove all volatile config - TAsyncStatus RemoveAllVolatileConfigs( - const std::string& cluster, - uint64_t version, - const TClusterConfigSettings& settings = {}); - - // Remove specific volatile configs - TAsyncStatus ForceRemoveVolatileConfig( - const std::vector& ids, - const TClusterConfigSettings& settings = {}); - - // Remove all volatile config - TAsyncStatus ForceRemoveAllVolatileConfigs( - const TClusterConfigSettings& settings = {}); - - // Get current cluster configs metadata - TAsyncGetMetadataResult GetMetadata(const TClusterConfigSettings& settings = {}); - - // Get current cluster configs - TAsyncGetConfigResult GetConfig(const TClusterConfigSettings& settings = {}); - - // Get current cluster configs - TAsyncGetNodeLabelsResult GetNodeLabels(uint64_t nodeId, const TClusterConfigSettings& settings = {}); - - // Resolve arbitrary config for specific labels - TAsyncResolveConfigResult ResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const std::map& labels, - const TClusterConfigSettings& settings = {}); - - // Resolve arbitrary config for all label combinations - TAsyncResolveConfigResult ResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const TClusterConfigSettings& settings = {}); - - // Resolve arbitrary config for all label combinations - TAsyncVerboseResolveConfigResult VerboseResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const TClusterConfigSettings& settings = {}); - - // Fetch startup config - TAsyncFetchStartupConfigResult FetchStartupConfig(const TClusterConfigSettings& settings = {}); - -private: - std::shared_ptr Impl_; -}; - -} // namespace NYdb::NDynamicConfig diff --git a/include/ydb-cpp-sdk/client/draft/ydb_replication.h b/include/ydb-cpp-sdk/client/draft/ydb_replication.h deleted file mode 100644 index 09eb0725d8..0000000000 --- a/include/ydb-cpp-sdk/client/draft/ydb_replication.h +++ /dev/null @@ -1,196 +0,0 @@ -#pragma once - -#include -#include - -#include - -#include - -namespace Ydb::Replication { - class ConnectionParams; - class ConsistencyLevelGlobal; - class DescribeReplicationResult; - class DescribeReplicationResult_Stats; -} - -namespace NYdb::inline V3 { - class TProtoAccessor; -} - -namespace NYdb::inline V3::NReplication { - -class TDescribeReplicationResult; -using TAsyncDescribeReplicationResult = NThreading::TFuture; - -struct TDescribeReplicationSettings: public TOperationRequestSettings { - using TSelf = TDescribeReplicationSettings; - FLUENT_SETTING_DEFAULT(bool, IncludeStats, false); -}; - -struct TStaticCredentials { - std::string User; - std::string PasswordSecretName; -}; - -struct TOAuthCredentials { - std::string TokenSecretName; -}; - -class TConnectionParams: private TCommonClientSettings { -public: - enum class ECredentials { - Static, - OAuth, - }; - - explicit TConnectionParams(const Ydb::Replication::ConnectionParams& params); - - const std::string& GetDiscoveryEndpoint() const; - const std::string& GetDatabase() const; - bool GetEnableSsl() const; - - ECredentials GetCredentials() const; - const TStaticCredentials& GetStaticCredentials() const; - const TOAuthCredentials& GetOAuthCredentials() const; - -private: - std::variant< - TStaticCredentials, - TOAuthCredentials - > Credentials_; -}; - -struct TRowConsistency { -}; - -class TGlobalConsistency { -public: - explicit TGlobalConsistency(const Ydb::Replication::ConsistencyLevelGlobal& proto); - - const TDuration& GetCommitInterval() const; - -private: - TDuration CommitInterval_; -}; - -class TStats { -public: - TStats() = default; - TStats(const Ydb::Replication::DescribeReplicationResult_Stats& stats); - - const std::optional& GetLag() const; - const std::optional& GetInitialScanProgress() const; - -private: - std::optional Lag_; - std::optional InitialScanProgress_; -}; - -class TRunningState { -public: - TRunningState() = default; - explicit TRunningState(const TStats& stats); - - const TStats& GetStats() const; - -private: - TStats Stats_; -}; - -struct TDoneState {}; - -struct TPausedState {}; - -class TErrorState { - class TImpl; - -public: - explicit TErrorState(NYdb::NIssue::TIssues&& issues); - - const NYdb::NIssue::TIssues& GetIssues() const; - -private: - std::shared_ptr Impl_; -}; - -class TReplicationDescription { -public: - struct TItem { - uint64_t Id; - std::string SrcPath; - std::string DstPath; - TStats Stats; - std::optional SrcChangefeedName; - }; - - enum class EConsistencyLevel { - Row, - Global, - }; - - enum class EState { - Running, - Error, - Done, - Paused, - }; - - explicit TReplicationDescription(const Ydb::Replication::DescribeReplicationResult& desc); - - const TConnectionParams& GetConnectionParams() const; - const std::vector GetItems() const; - - EConsistencyLevel GetConsistencyLevel() const; - const TGlobalConsistency& GetGlobalConsistency() const; - - EState GetState() const; - const TRunningState& GetRunningState() const; - const TErrorState& GetErrorState() const; - const TDoneState& GetDoneState() const; - const TPausedState& GetPausedState() const; - -private: - TConnectionParams ConnectionParams_; - std::vector Items_; - - std::variant< - TRowConsistency, - TGlobalConsistency - > ConsistencyLevel_; - - std::variant< - TRunningState, - TErrorState, - TDoneState, - TPausedState - > State_; -}; - -class TDescribeReplicationResult: public NScheme::TDescribePathResult { - friend class NYdb::TProtoAccessor; - const Ydb::Replication::DescribeReplicationResult& GetProto() const; - -public: - TDescribeReplicationResult(TStatus&& status, Ydb::Replication::DescribeReplicationResult&& desc); - const TReplicationDescription& GetReplicationDescription() const; - -private: - TReplicationDescription ReplicationDescription_; - std::unique_ptr Proto_; -}; - -class TReplicationClient { - class TImpl; - -public: - TReplicationClient(const TDriver& driver, const TCommonClientSettings& settings = TCommonClientSettings()); - - TAsyncDescribeReplicationResult DescribeReplication(const std::string& path, - const TDescribeReplicationSettings& settings = TDescribeReplicationSettings()); - -private: - std::shared_ptr Impl_; -}; - -} // namespace NYdb::NReplication diff --git a/include/ydb-cpp-sdk/client/draft/ydb_scripting.h b/include/ydb-cpp-sdk/client/draft/ydb_scripting.h deleted file mode 100644 index 274d381490..0000000000 --- a/include/ydb-cpp-sdk/client/draft/ydb_scripting.h +++ /dev/null @@ -1,155 +0,0 @@ -#pragma once - -#include -#include - -namespace NYdb::inline V3 { -namespace NScripting { - -class TExecuteYqlResult : public TStatus { -public: - TExecuteYqlResult(TStatus&& status, std::vector&& resultSets, - const std::optional& queryStats); - - const std::vector& GetResultSets() const; - TResultSet GetResultSet(size_t resultIndex) const; - - TResultSetParser GetResultSetParser(size_t resultIndex) const; - - const std::optional& GetStats() const; - -private: - std::vector ResultSets_; - std::optional QueryStats_; -}; - -class TYqlPartialResult { -public: - TYqlPartialResult(uint32_t resultSetIndex, TResultSet&& resultSet) - : ResultSetIndex_(resultSetIndex) - , ResultSet_(std::move(resultSet)) - {} - - uint32_t GetResultSetIndex() const { return ResultSetIndex_; } - const TResultSet& GetResultSet() const { return ResultSet_; } - -private: - uint32_t ResultSetIndex_; - TResultSet ResultSet_; -}; - -class TYqlResultPart : public TStreamPartStatus { -public: - bool HasPartialResult() const { return PartialResult_.has_value(); } - const TYqlPartialResult& GetPartialResult() const { return *PartialResult_; } - - bool HasQueryStats() const { return QueryStats_.has_value(); } - const NTable::TQueryStats& GetQueryStats() const { return *QueryStats_; } - NTable::TQueryStats ExtractQueryStats() { return std::move(*QueryStats_); } - - TYqlResultPart(TStatus&& status) - : TStreamPartStatus(std::move(status)) - {} - - TYqlResultPart(TStatus&& status, const std::optional &queryStats) - : TStreamPartStatus(std::move(status)) - , QueryStats_(queryStats) - {} - - TYqlResultPart(TStatus&& status, TYqlPartialResult&& partialResult, const std::optional &queryStats) - : TStreamPartStatus(std::move(status)) - , PartialResult_(std::move(partialResult)) - , QueryStats_(queryStats) - {} - -private: - std::optional PartialResult_; - std::optional QueryStats_; -}; - -using TAsyncYqlResultPart = NThreading::TFuture; - -class TYqlResultPartIterator : public TStatus { - friend class TScriptingClient; -public: - TAsyncYqlResultPart ReadNext(); - class TReaderImpl; -private: - TYqlResultPartIterator( - std::shared_ptr impl, - TPlainStatus&& status - ); - std::shared_ptr ReaderImpl_; -}; - -class TExplainYqlResult : public TStatus { -public: - TExplainYqlResult(TStatus&& status, const ::google::protobuf::Map&& types, std::string&& plan); - - std::map GetParameterTypes() const; - const std::string& GetPlan() const; - -private: - ::google::protobuf::Map ParameterTypes_; - std::string Plan_; -}; - -using TAsyncExecuteYqlResult = NThreading::TFuture; -using TAsyncYqlResultPartIterator = NThreading::TFuture; -using TAsyncExplainYqlResult = NThreading::TFuture; - -//////////////////////////////////////////////////////////////////////////////// - -struct TExecuteYqlRequestSettings : public TOperationRequestSettings { - FLUENT_SETTING_DEFAULT(Ydb::Query::Syntax, Syntax, Ydb::Query::SYNTAX_YQL_V1); - FLUENT_SETTING_DEFAULT(NTable::ECollectQueryStatsMode, CollectQueryStats, NTable::ECollectQueryStatsMode::None); -}; - -enum class ExplainYqlRequestMode { - // Parse = 1, - Validate = 2, - Plan = 3, -}; - -struct TExplainYqlRequestSettings : public TOperationRequestSettings { - FLUENT_SETTING_DEFAULT(ExplainYqlRequestMode, Mode, ExplainYqlRequestMode::Validate); -}; - -//////////////////////////////////////////////////////////////////////////////// - -class TScriptingClient { - class TImpl; - -public: - TScriptingClient(const TDriver& driver, const TCommonClientSettings& settings = TCommonClientSettings()); - - //! Returns new params builder - TParamsBuilder GetParamsBuilder(); - - TAsyncExecuteYqlResult ExecuteYqlScript(const std::string& script, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncExecuteYqlResult ExecuteYqlScript(const std::string& script, const TParams& params, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncExecuteYqlResult ExecuteYqlScript(const std::string& script, TParams&& params, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncYqlResultPartIterator StreamExecuteYqlScript(const std::string& script, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncYqlResultPartIterator StreamExecuteYqlScript(const std::string& script, const TParams& params, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncYqlResultPartIterator StreamExecuteYqlScript(const std::string& script, TParams&& params, - const TExecuteYqlRequestSettings& settings = TExecuteYqlRequestSettings()); - - TAsyncExplainYqlResult ExplainYqlScript(const std::string& script, - const TExplainYqlRequestSettings& settings = TExplainYqlRequestSettings()); - -private: - std::shared_ptr Impl_; -}; - -} // namespace NScripting -} // namespace NYdb diff --git a/include/ydb-cpp-sdk/client/draft/ydb_view.h b/include/ydb-cpp-sdk/client/draft/ydb_view.h deleted file mode 100644 index be59862f46..0000000000 --- a/include/ydb-cpp-sdk/client/draft/ydb_view.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -#include -#include - -namespace Ydb::View { - class DescribeViewResult; -} - -namespace NYdb::inline V3 { - class TProtoAccessor; -} - -namespace NYdb::inline V3::NView { - -class TDescribeViewResult; -using TAsyncDescribeViewResult = NThreading::TFuture; - -struct TDescribeViewSettings : public TOperationRequestSettings { - using TSelf = TDescribeViewSettings; -}; - -class TViewDescription { -public: - explicit TViewDescription(const Ydb::View::DescribeViewResult& desc); - - const std::string& GetQueryText() const; - -private: - std::string QueryText_; -}; - -class TDescribeViewResult : public NScheme::TDescribePathResult { - friend class NYdb::TProtoAccessor; - const Ydb::View::DescribeViewResult& GetProto() const; - -public: - TDescribeViewResult(TStatus&& status, Ydb::View::DescribeViewResult&& desc); - TViewDescription GetViewDescription() const; - -private: - std::unique_ptr Proto_; -}; - -class TViewClient { - class TImpl; - -public: - TViewClient(const TDriver& driver, const TCommonClientSettings& settings = TCommonClientSettings()); - - TAsyncDescribeViewResult DescribeView(const std::string& path, - const TDescribeViewSettings& settings = TDescribeViewSettings()); - -private: - std::shared_ptr Impl_; -}; - -} // namespace NYdb::NView diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index e6570ae0b9..e7f448e867 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -2,7 +2,6 @@ add_subdirectory(common_client) add_subdirectory(coordination) add_subdirectory(datastreams) add_subdirectory(discovery) -add_subdirectory(draft) add_subdirectory(driver) add_subdirectory(export) add_subdirectory(extension_common) diff --git a/src/client/draft/ydb_dynamic_config.cpp b/src/client/draft/ydb_dynamic_config.cpp deleted file mode 100644 index 723cdbe466..0000000000 --- a/src/client/draft/ydb_dynamic_config.cpp +++ /dev/null @@ -1,467 +0,0 @@ -#include - -#include -#include -#include - -namespace NYdb::inline V3::NDynamicConfig { - -class TDynamicConfigClient::TImpl : public TClientImplCommon { -public: - TImpl(std::shared_ptr connections) - : TClientImplCommon(std::move(connections), TDynamicConfigClientSettings{}) - { - } - - TAsyncStatus SetConfig(const std::string& config, bool dryRun, bool allowUnknownFields, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - request.set_dry_run(dryRun); - request.set_allow_unknown_fields(allowUnknownFields); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncSetConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus ReplaceConfig(const std::string& config, bool dryRun, bool allowUnknownFields, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - request.set_dry_run(dryRun); - request.set_allow_unknown_fields(allowUnknownFields); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncReplaceConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus DropConfig(const std::string& cluster, uint64_t version, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - request.mutable_identity()->set_cluster(TStringType{cluster}); - request.mutable_identity()->set_version(version); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncDropConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus AddVolatileConfig(const std::string& config, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncAddVolatileConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus RemoveVolatileConfig(const std::string& cluster, uint64_t version, const std::vector& ids, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - request.mutable_identity()->set_cluster(TStringType{cluster}); - request.mutable_identity()->set_version(version); - - for (auto& id: ids) { - request.mutable_ids()->add_ids(id); - } - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncRemoveVolatileConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus RemoveAllVolatileConfigs(const std::string& cluster, uint64_t version, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - request.mutable_identity()->set_cluster(TStringType{cluster}); - request.mutable_identity()->set_version(version); - request.set_all(true); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncRemoveVolatileConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus ForceRemoveVolatileConfig(const std::vector& ids, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - for (auto& id: ids) { - request.mutable_ids()->add_ids(id); - } - - request.set_force(true); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncRemoveVolatileConfig, - TRpcRequestSettings::Make(settings)); - } - - TAsyncStatus ForceRemoveAllVolatileConfigs(const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - request.set_all(true); - request.set_force(true); - - return RunSimple( - std::move(request), - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncRemoveVolatileConfig, - TRpcRequestSettings::Make(settings)); - } - - - TAsyncGetNodeLabelsResult GetNodeLabels(uint64_t nodeId, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_node_id(nodeId); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::map labels; - if (Ydb::DynamicConfig::GetNodeLabelsResult result; any && any->UnpackTo(&result)) { - for (auto& label : result.labels()) { - labels[label.label()] = label.value(); - } - } - - TGetNodeLabelsResult val(TStatus(std::move(status)), std::move(labels)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncGetNodeLabels, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncGetConfigResult GetConfig(const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string clusterName = ""; - uint64_t version = 0; - std::string config; - std::map volatileConfigs; - if (Ydb::DynamicConfig::GetConfigResult result; any && any->UnpackTo(&result)) { - // only if they are present - if (result.identity_size() && result.config_size()) { - clusterName = result.identity(0).cluster(); - version = result.identity(0).version(); - config = result.config(0); - } - for (const auto& config : result.volatile_configs()) { - volatileConfigs.emplace(config.id(), config.config()); - } - } - - TGetConfigResult val(TStatus(std::move(status)), std::move(clusterName), version, std::move(config), std::move(volatileConfigs)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncGetConfig, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncGetMetadataResult GetMetadata(const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string metadata; - std::map volatileConfigs; - if (Ydb::DynamicConfig::GetMetadataResult result; any && any->UnpackTo(&result)) { - metadata = result.metadata(); - for (const auto& config : result.volatile_configs()) { - volatileConfigs.emplace(config.id(), config.metadata()); - } - } - - TGetMetadataResult val(TStatus(std::move(status)),std::move(metadata), std::move(volatileConfigs)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncGetMetadata, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncResolveConfigResult ResolveConfig(const std::string& config, const std::map& volatileConfigs, const std::map& labels, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - for (auto& [id, volatileConfig] : volatileConfigs) { - auto* proto = request.add_volatile_configs(); - proto->set_id(id); - proto->set_config(TStringType{volatileConfig}); - } - for (auto& [name, value] : labels) { - auto* proto = request.add_labels(); - proto->set_label(TStringType{name}); - proto->set_value(TStringType{value}); - } - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string config; - if (Ydb::DynamicConfig::ResolveConfigResult result; any && any->UnpackTo(&result)) { - config = result.config(); - } - - TResolveConfigResult val(TStatus(std::move(status)), std::move(config)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncResolveConfig, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncResolveConfigResult ResolveConfig(const std::string& config, const std::map& volatileConfigs, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - for (auto& [id, volatileConfig] : volatileConfigs) { - auto* proto = request.add_volatile_configs(); - proto->set_id(id); - proto->set_config(TStringType{volatileConfig}); - } - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string config; - if (Ydb::DynamicConfig::ResolveAllConfigResult result; any && any->UnpackTo(&result)) { - config = result.config(); - } - - TResolveConfigResult val(TStatus(std::move(status)), std::move(config)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncResolveAllConfig, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncVerboseResolveConfigResult VerboseResolveConfig(const std::string& config, const std::map& volatileConfigs, const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - request.set_config(TStringType{config}); - for (auto& [id, volatileConfig] : volatileConfigs) { - auto* proto = request.add_volatile_configs(); - proto->set_id(id); - proto->set_config(TStringType{volatileConfig}); - } - request.set_verbose_response(true); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - auto convert = [] (const Ydb::DynamicConfig::YamlLabelExt::LabelType& label) -> TVerboseResolveConfigResult::TLabel::EType { - switch(label) { - case Ydb::DynamicConfig::YamlLabelExt::NOT_SET: - return TVerboseResolveConfigResult::TLabel::EType::Negative; - case Ydb::DynamicConfig::YamlLabelExt::COMMON: - return TVerboseResolveConfigResult::TLabel::EType::Common; - case Ydb::DynamicConfig::YamlLabelExt::EMPTY: - return TVerboseResolveConfigResult::TLabel::EType::Empty; - default: - Y_ABORT("unexpected enum value"); - } - }; - - std::set labels; - TVerboseResolveConfigResult::ConfigByLabelSet configs; - - if (Ydb::DynamicConfig::ResolveAllConfigResult result; any && any->UnpackTo(&result)) { - for (auto& config : result.configs()) { - std::set> labelSets; - for (auto& labelSet : config.label_sets()) { - std::vector set; - for (auto& label : labelSet.labels()) { - labels.insert(label.label()); - set.push_back(TVerboseResolveConfigResult::TLabel{convert(label.type()), label.value()}); - } - labelSets.insert(set); - } - configs[labelSets] = config.config(); - } - } - - TVerboseResolveConfigResult val(TStatus(std::move(status)), std::move(labels), std::move(configs)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncResolveAllConfig, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - TAsyncFetchStartupConfigResult FetchStartupConfig(const TClusterConfigSettings& settings = {}) { - auto request = MakeOperationRequest(settings); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string config; - if (Ydb::DynamicConfig::FetchStartupConfigResult result; any && any->UnpackTo(&result)) { - config = result.config(); - } - - TFetchStartupConfigResult val(TStatus(std::move(status)), std::move(config)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncFetchStartupConfig, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } -}; - -TDynamicConfigClient::TDynamicConfigClient(const TDriver& driver) - : Impl_(new TDynamicConfigClient::TImpl(CreateInternalInterface(driver))) -{} - -TAsyncStatus TDynamicConfigClient::SetConfig( - const std::string& config, - bool dryRun, - bool allowUnknownFields, - const TClusterConfigSettings& settings) { - return Impl_->SetConfig(config, dryRun, allowUnknownFields, settings); -} - -TAsyncStatus TDynamicConfigClient::ReplaceConfig( - const std::string& config, - bool dryRun, - bool allowUnknownFields, - const TClusterConfigSettings& settings) { - return Impl_->ReplaceConfig(config, dryRun, allowUnknownFields, settings); -} - -TAsyncStatus TDynamicConfigClient::DropConfig( - const std::string& cluster, - uint64_t version, - const TClusterConfigSettings& settings) { - return Impl_->DropConfig(cluster, version, settings); -} - -TAsyncStatus TDynamicConfigClient::AddVolatileConfig( - const std::string& config, - const TClusterConfigSettings& settings) { - return Impl_->AddVolatileConfig(config, settings); -} - -TAsyncStatus TDynamicConfigClient::RemoveVolatileConfig( - const std::string& cluster, - uint64_t version, - const std::vector& ids, - const TClusterConfigSettings& settings) { - return Impl_->RemoveVolatileConfig(cluster, version, ids, settings); -} - -TAsyncStatus TDynamicConfigClient::RemoveAllVolatileConfigs( - const std::string& cluster, - uint64_t version, - const TClusterConfigSettings& settings) { - return Impl_->RemoveAllVolatileConfigs(cluster, version, settings); -} - -TAsyncStatus TDynamicConfigClient::ForceRemoveVolatileConfig( - const std::vector& ids, - const TClusterConfigSettings& settings) { - return Impl_->ForceRemoveVolatileConfig(ids, settings); -} - -TAsyncStatus TDynamicConfigClient::ForceRemoveAllVolatileConfigs( - const TClusterConfigSettings& settings) { - return Impl_->ForceRemoveAllVolatileConfigs(settings); -} - -TAsyncGetMetadataResult TDynamicConfigClient::GetMetadata(const TClusterConfigSettings& settings) { - return Impl_->GetMetadata(settings); -} - -TAsyncGetConfigResult TDynamicConfigClient::GetConfig(const TClusterConfigSettings& settings) { - return Impl_->GetConfig(settings); -} - -TAsyncGetNodeLabelsResult TDynamicConfigClient::GetNodeLabels(uint64_t nodeId, const TClusterConfigSettings& settings) { - return Impl_->GetNodeLabels(nodeId, settings); -} - -TAsyncResolveConfigResult TDynamicConfigClient::ResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const std::map& labels, - const TClusterConfigSettings& settings) { - return Impl_->ResolveConfig(config, volatileConfigs, labels, settings); -} - -TAsyncResolveConfigResult TDynamicConfigClient::ResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const TClusterConfigSettings& settings) { - return Impl_->ResolveConfig(config, volatileConfigs, settings); -} - -TAsyncVerboseResolveConfigResult TDynamicConfigClient::VerboseResolveConfig( - const std::string& config, - const std::map& volatileConfigs, - const TClusterConfigSettings& settings) { - return Impl_->VerboseResolveConfig(config, volatileConfigs, settings); -} - -TAsyncFetchStartupConfigResult TDynamicConfigClient::FetchStartupConfig(const TClusterConfigSettings& settings) { - return Impl_->FetchStartupConfig(settings); -} - -} // namespace NYdb::NDynamicConfig diff --git a/src/client/draft/ydb_replication.cpp b/src/client/draft/ydb_replication.cpp deleted file mode 100644 index d637cb3e7f..0000000000 --- a/src/client/draft/ydb_replication.cpp +++ /dev/null @@ -1,282 +0,0 @@ -#include - -#define INCLUDE_YDB_INTERNAL_H -#include -#undef INCLUDE_YDB_INTERNAL_H - -#include -#include -#include -#include -#include - -#include -#include - -namespace NYdb::inline V3 { -namespace NReplication { - -TConnectionParams::TConnectionParams(const Ydb::Replication::ConnectionParams& params) { - DiscoveryEndpoint(params.endpoint()); - Database(params.database()); - SslCredentials(params.enable_ssl()); - - switch (params.credentials_case()) { - case Ydb::Replication::ConnectionParams::kStaticCredentials: - Credentials_ = TStaticCredentials{ - .User = params.static_credentials().user(), - .PasswordSecretName = params.static_credentials().password_secret_name(), - }; - break; - - case Ydb::Replication::ConnectionParams::kOauth: - Credentials_ = TOAuthCredentials{ - .TokenSecretName = params.oauth().token_secret_name(), - }; - break; - - default: - break; - } -} - -const std::string& TConnectionParams::GetDiscoveryEndpoint() const { - return *DiscoveryEndpoint_; -} - -const std::string& TConnectionParams::GetDatabase() const { - return *Database_; -} - -bool TConnectionParams::GetEnableSsl() const { - return SslCredentials_->IsEnabled; -} - -TConnectionParams::ECredentials TConnectionParams::GetCredentials() const { - return static_cast(Credentials_.index()); -} - -const TStaticCredentials& TConnectionParams::GetStaticCredentials() const { - return std::get(Credentials_); -} - -const TOAuthCredentials& TConnectionParams::GetOAuthCredentials() const { - return std::get(Credentials_); -} - -static TDuration DurationToDuration(const google::protobuf::Duration& value) { - return TDuration::MilliSeconds(google::protobuf::util::TimeUtil::DurationToMilliseconds(value)); -} - -TGlobalConsistency::TGlobalConsistency(const Ydb::Replication::ConsistencyLevelGlobal& proto) - : CommitInterval_(DurationToDuration(proto.commit_interval())) -{ -} - -const TDuration& TGlobalConsistency::GetCommitInterval() const { - return CommitInterval_; -} - -TStats::TStats(const Ydb::Replication::DescribeReplicationResult_Stats& stats) - : Lag_(stats.has_lag() ? std::make_optional(DurationToDuration(stats.lag())) : std::nullopt) - , InitialScanProgress_(stats.has_initial_scan_progress() ? std::make_optional(stats.initial_scan_progress()) : std::nullopt) -{ -} - -const std::optional& TStats::GetLag() const { - return Lag_; -} - -const std::optional& TStats::GetInitialScanProgress() const { - return InitialScanProgress_; -} - -TRunningState::TRunningState(const TStats& stats) - : Stats_(stats) -{ -} - -const TStats& TRunningState::GetStats() const { - return Stats_; -} - -class TErrorState::TImpl { -public: - NYdb::NIssue::TIssues Issues; - - explicit TImpl(NYdb::NIssue::TIssues&& issues) - : Issues(std::move(issues)) - { - } -}; - -TErrorState::TErrorState(NYdb::NIssue::TIssues&& issues) - : Impl_(std::make_shared(std::move(issues))) -{ -} - -const NYdb::NIssue::TIssues& TErrorState::GetIssues() const { - return Impl_->Issues; -} - -NYdb::NIssue::TIssues IssuesFromMessage(const ::google::protobuf::RepeatedPtrField& message) { - NYdb::NIssue::TIssues issues; - NYdb::NIssue::IssuesFromMessage(message, issues); - return issues; -} - -TReplicationDescription::TReplicationDescription(const Ydb::Replication::DescribeReplicationResult& desc) - : ConnectionParams_(desc.connection_params()) -{ - Items_.reserve(desc.items_size()); - for (const auto& item : desc.items()) { - Items_.push_back(TItem{ - .Id = item.id(), - .SrcPath = item.source_path(), - .DstPath = item.destination_path(), - .Stats = TStats(item.stats()), - .SrcChangefeedName = item.has_source_changefeed_name() - ? std::make_optional(item.source_changefeed_name()) : std::nullopt, - }); - } - - switch (desc.consistency_level_case()) { - case Ydb::Replication::DescribeReplicationResult::kGlobalConsistency: - ConsistencyLevel_ = TGlobalConsistency(desc.global_consistency()); - break; - - default: - break; - } - - switch (desc.state_case()) { - case Ydb::Replication::DescribeReplicationResult::kRunning: - State_ = TRunningState(desc.running().stats()); - break; - - case Ydb::Replication::DescribeReplicationResult::kError: - State_ = TErrorState(IssuesFromMessage(desc.error().issues())); - break; - - case Ydb::Replication::DescribeReplicationResult::kDone: - State_ = TDoneState(); - break; - - case Ydb::Replication::DescribeReplicationResult::kPaused: - State_ = TPausedState(); - break; - - default: - break; - } -} - -const TConnectionParams& TReplicationDescription::GetConnectionParams() const { - return ConnectionParams_; -} - -const std::vector TReplicationDescription::GetItems() const { - return Items_; -} - -TReplicationDescription::EConsistencyLevel TReplicationDescription::GetConsistencyLevel() const { - return static_cast(ConsistencyLevel_.index()); -} - -const TGlobalConsistency& TReplicationDescription::GetGlobalConsistency() const { - return std::get(ConsistencyLevel_); -} - - -TReplicationDescription::EState TReplicationDescription::GetState() const { - return static_cast(State_.index()); -} - -const TRunningState& TReplicationDescription::GetRunningState() const { - return std::get(State_); -} - -const TErrorState& TReplicationDescription::GetErrorState() const { - return std::get(State_); -} - -const TDoneState& TReplicationDescription::GetDoneState() const { - return std::get(State_); -} - -const TPausedState& TReplicationDescription::GetPausedState() const { - return std::get(State_); -} - -TDescribeReplicationResult::TDescribeReplicationResult(TStatus&& status, Ydb::Replication::DescribeReplicationResult&& desc) - : NScheme::TDescribePathResult(std::move(status), desc.self()) - , ReplicationDescription_(desc) - , Proto_(std::make_unique()) -{ - *Proto_ = std::move(desc); -} - -const TReplicationDescription& TDescribeReplicationResult::GetReplicationDescription() const { - return ReplicationDescription_; -} - -const Ydb::Replication::DescribeReplicationResult& TDescribeReplicationResult::GetProto() const { - return *Proto_; -} - -class TReplicationClient::TImpl: public TClientImplCommon { -public: - TImpl(std::shared_ptr&& connections, const TCommonClientSettings& settings) - : TClientImplCommon(std::move(connections), settings) - { - } - - TAsyncDescribeReplicationResult DescribeReplication(const std::string& path, const TDescribeReplicationSettings& settings) { - using namespace Ydb::Replication; - - auto request = MakeOperationRequest(settings); - request.set_path(TStringType{path}); - request.set_include_stats(settings.IncludeStats_); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] - (google::protobuf::Any* any, TPlainStatus status) mutable { - DescribeReplicationResult result; - if (any) { - any->UnpackTo(&result); - } - - TDescribeReplicationResult val(TStatus(std::move(status)), std::move(result)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &V1::ReplicationService::Stub::AsyncDescribeReplication, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - -}; - -TReplicationClient::TReplicationClient(const TDriver& driver, const TCommonClientSettings& settings) - : Impl_(std::make_shared(CreateInternalInterface(driver), settings)) -{ -} - -TAsyncDescribeReplicationResult TReplicationClient::DescribeReplication(const std::string& path, const TDescribeReplicationSettings& settings) { - return Impl_->DescribeReplication(path, settings); -} - -} // NReplication - -const Ydb::Replication::DescribeReplicationResult& TProtoAccessor::GetProto(const NReplication::TDescribeReplicationResult& result) { - return result.GetProto(); -} - -} // NYdb diff --git a/src/client/draft/ydb_scripting.cpp b/src/client/draft/ydb_scripting.cpp deleted file mode 100644 index e785b31836..0000000000 --- a/src/client/draft/ydb_scripting.cpp +++ /dev/null @@ -1,383 +0,0 @@ -#include - -#define INCLUDE_YDB_INTERNAL_H -#include -#include -#undef INCLUDE_YDB_INTERNAL_H - -#include -#include -#include - -namespace NYdb::inline V3 { -namespace NScripting { - -using namespace NThreading; - -TExecuteYqlResult::TExecuteYqlResult(TStatus&& status, std::vector&& resultSets, - const std::optional& queryStats) - : TStatus(std::move(status)) - , ResultSets_(std::move(resultSets)) - , QueryStats_(queryStats) {} - -const std::vector& TExecuteYqlResult::GetResultSets() const { - return ResultSets_; -} - -TResultSet TExecuteYqlResult::GetResultSet(size_t resultIndex) const { - if (resultIndex >= ResultSets_.size()) { - RaiseError(std::string("Requested index out of range\n")); - } - - return ResultSets_[resultIndex]; -} - -TResultSetParser TExecuteYqlResult::GetResultSetParser(size_t resultIndex) const { - return TResultSetParser(GetResultSet(resultIndex)); -} - -const std::optional& TExecuteYqlResult::GetStats() const { - return QueryStats_; -} - -//////////////////////////////////////////////////////////////////////////////// - -class TYqlResultPartIterator::TReaderImpl { -public: - using TSelf = TYqlResultPartIterator::TReaderImpl; - using TResponse = Ydb::Scripting::ExecuteYqlPartialResponse; - using TStreamProcessorPtr = NYdbGrpc::IStreamRequestReadProcessor::TPtr; - using TReadCallback = NYdbGrpc::IStreamRequestReadProcessor::TReadCallback; - using TGRpcStatus = NYdbGrpc::TGrpcStatus; - - TReaderImpl(TStreamProcessorPtr streamProcessor, const std::string& endpoint) - : StreamProcessor_(streamProcessor) - , Finished_(false) - , Endpoint_(endpoint) - {} - - ~TReaderImpl() { - StreamProcessor_->Cancel(); - } - - bool IsFinished() const { - return Finished_; - } - - TAsyncYqlResultPart ReadNext(std::shared_ptr self) { - auto promise = NThreading::NewPromise(); - // Capture self - guarantee no dtor call during the read - auto readCb = [self, promise](TGRpcStatus&& grpcStatus) mutable { - if (!grpcStatus.Ok()) { - self->Finished_ = true; - promise.SetValue({ TStatus(TPlainStatus(grpcStatus, self->Endpoint_)) }); - } else { - NYdb::NIssue::TIssues issues; - NYdb::NIssue::IssuesFromMessage(self->Response_.issues(), issues); - EStatus clientStatus = static_cast(self->Response_.status()); - TPlainStatus plainStatus{ clientStatus, std::move(issues), self->Endpoint_, {} }; - TStatus status{ std::move(plainStatus) }; - std::optional queryStats; - - if (self->Response_.result().has_query_stats()) { - queryStats = NTable::TQueryStats(self->Response_.result().query_stats()); - } - if (self->Response_.result().has_result_set()) { - promise.SetValue( - { - std::move(status), - TYqlPartialResult( - self->Response_.result().result_set_index(), - TResultSet(std::move(*self->Response_.mutable_result()->mutable_result_set())) - ), - queryStats - } - ); - } else { - promise.SetValue({ std::move(status), queryStats }); - } - } - }; - StreamProcessor_->Read(&Response_, readCb); - return promise.GetFuture(); - } -private: - TStreamProcessorPtr StreamProcessor_; - TResponse Response_; - bool Finished_; - std::string Endpoint_; -}; - -TYqlResultPartIterator::TYqlResultPartIterator( - std::shared_ptr impl, - TPlainStatus&& status) - : TStatus(std::move(status)) - , ReaderImpl_(impl) -{} - -TAsyncYqlResultPart TYqlResultPartIterator::ReadNext() { - if (ReaderImpl_->IsFinished()) - RaiseError("Attempt to perform read on invalid or finished stream"); - return ReaderImpl_->ReadNext(ReaderImpl_); -} - -//////////////////////////////////////////////////////////////////////////////// - -TExplainYqlResult::TExplainYqlResult(TStatus&& status, const ::google::protobuf::Map&& types, std::string&& plan) - : TStatus(std::move(status)) - , ParameterTypes_(std::move(types)) - , Plan_(plan) {} - -std::map TExplainYqlResult::GetParameterTypes() const { - std::map typesMap; - for (const auto& param : ParameterTypes_) { - typesMap.emplace(param.first, TType(param.second)); - } - return typesMap; -} - -const std::string& TExplainYqlResult::GetPlan() const { - return Plan_; -} - -//////////////////////////////////////////////////////////////////////////////// - -class TScriptingClient::TImpl : public TClientImplCommon { -public: - using TYqlScriptProcessorPtr = TYqlResultPartIterator::TReaderImpl::TStreamProcessorPtr; - - TImpl(std::shared_ptr&& connections, const TCommonClientSettings& settings) - : TClientImplCommon(std::move(connections), settings) {} - - template - TAsyncExecuteYqlResult ExecuteYqlScript(const std::string& script, TParamsType params, - const TExecuteYqlRequestSettings& settings) - { - auto request = MakeOperationRequest(settings); - request.set_script(TStringType{script}); - SetParams(params, &request); - request.set_collect_stats(GetStatsCollectionMode(settings.CollectQueryStats_)); - request.set_syntax(settings.Syntax_); - - auto promise = NewPromise(); - - auto extractor = [promise] - (google::protobuf::Any* any, TPlainStatus status) mutable { - std::vector res; - std::optional queryStats; - if (any) { - Ydb::Scripting::ExecuteYqlResult result; - any->UnpackTo(&result); - - for (size_t i = 0; i < static_cast(result.result_sets_size()); i++) { - res.push_back(TResultSet(*result.mutable_result_sets(i))); - } - - if (result.has_query_stats()) { - queryStats = NTable::TQueryStats(result.query_stats()); - } - } - - TExecuteYqlResult executeResult(TStatus(std::move(status)), std::move(res), - queryStats); - promise.SetValue(std::move(executeResult)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::Scripting::V1::ScriptingService::Stub::AsyncExecuteYql, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - - template - TFuture> StreamExecuteYqlScriptInternal(const std::string& script, - TParamsType params, const TExecuteYqlRequestSettings& settings) - { - auto request = MakeOperationRequest(settings); - request.set_script(TStringType{script}); - SetParams(params, &request); - request.set_collect_stats(GetStatsCollectionMode(settings.CollectQueryStats_)); - request.set_syntax(settings.Syntax_); - - auto promise = NewPromise>(); - - Connections_->StartReadStream< - Ydb::Scripting::V1::ScriptingService, - Ydb::Scripting::ExecuteYqlRequest, - Ydb::Scripting::ExecuteYqlPartialResponse> - ( - std::move(request), - [promise](TPlainStatus status, TYqlScriptProcessorPtr processor) mutable { - promise.SetValue(std::make_pair(status, processor)); - }, - &Ydb::Scripting::V1::ScriptingService::Stub::AsyncStreamExecuteYql, - DbDriverState_, - TRpcRequestSettings::Make(settings) - ); - - return promise.GetFuture(); - } - - template - TAsyncYqlResultPartIterator StreamExecuteYqlScript(const std::string& query, TParamsType params, - const TExecuteYqlRequestSettings& settings) - { - auto promise = NewPromise(); - - auto iteratorCallback = [promise](TFuture> future) mutable - { - Y_ASSERT(future.HasValue()); - auto pair = future.ExtractValue(); - promise.SetValue(TYqlResultPartIterator( - pair.second - ? std::make_shared(pair.second, pair.first.Endpoint) - : nullptr, - std::move(pair.first))); - }; - - StreamExecuteYqlScriptInternal(query, params, settings).Subscribe(iteratorCallback); - return promise.GetFuture(); - } - - TAsyncExplainYqlResult ExplainYqlScript(const std::string& script, - const TExplainYqlRequestSettings& settings) - { - auto request = MakeOperationRequest(settings); - request.set_script(TStringType{script}); - - switch (settings.Mode_) { - // KIKIMR-10990 - //case ExplainYqlRequestMode::Parse: - // request.set_mode(::Ydb::Scripting::ExplainYqlRequest_Mode::ExplainYqlRequest_Mode_PARSE); - // break; - case ExplainYqlRequestMode::Validate: - request.set_mode(::Ydb::Scripting::ExplainYqlRequest_Mode::ExplainYqlRequest_Mode_VALIDATE); - break; - case ExplainYqlRequestMode::Plan: - request.set_mode(::Ydb::Scripting::ExplainYqlRequest_Mode::ExplainYqlRequest_Mode_PLAN); - break; - } - - auto promise = NewPromise(); - - auto extractor = [promise] - (google::protobuf::Any* any, TPlainStatus status) mutable { - std::string plan; - ::google::protobuf::Map types; - if (any) { - Ydb::Scripting::ExplainYqlResult result; - any->UnpackTo(&result); - - plan = result.plan(); - types = result.parameters_types(); - } - - TExplainYqlResult explainResult(TStatus(std::move(status)), - std::move(types), std::move(plan)); - promise.SetValue(std::move(explainResult)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &Ydb::Scripting::V1::ScriptingService::Stub::AsyncExplainYql, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - -private: - template - static void SetParams(::google::protobuf::Map* params, TRequest* request) { - if (params) { - request->mutable_parameters()->swap(*params); - } - } - - template - static void SetParams(const ::google::protobuf::Map& params, TRequest* request) { - *request->mutable_parameters() = params; - } - -}; - -TScriptingClient::TScriptingClient(const TDriver& driver, const TCommonClientSettings &settings) - : Impl_(new TImpl(CreateInternalInterface(driver), settings)) -{} - -TParamsBuilder TScriptingClient::GetParamsBuilder() { - return TParamsBuilder(); -} - -TAsyncExecuteYqlResult TScriptingClient::ExecuteYqlScript(const std::string &query, NYdb::TParams&& params, - const TExecuteYqlRequestSettings &settings) -{ - auto paramsPtr = params.Empty() ? nullptr : params.GetProtoMapPtr(); - return Impl_->ExecuteYqlScript(query, paramsPtr, settings); -} - -TAsyncExecuteYqlResult TScriptingClient::ExecuteYqlScript(const std::string &query, const NYdb::TParams& params, - const TExecuteYqlRequestSettings &settings) -{ - if (params.Empty()) { - return Impl_->ExecuteYqlScript( - query, - nullptr, - settings); - } else { - using TProtoParamsType = const ::google::protobuf::Map; - return Impl_->ExecuteYqlScript( - query, - params.GetProtoMap(), - settings); - } -} - -TAsyncExecuteYqlResult TScriptingClient::ExecuteYqlScript(const std::string &script, - const TExecuteYqlRequestSettings &settings) -{ - return Impl_->ExecuteYqlScript(script, nullptr, settings); -} - -TAsyncYqlResultPartIterator TScriptingClient::StreamExecuteYqlScript(const std::string& script, - const TExecuteYqlRequestSettings& settings) -{ - return Impl_->StreamExecuteYqlScript(script, nullptr, settings); -} - -TAsyncYqlResultPartIterator TScriptingClient::StreamExecuteYqlScript(const std::string& script, const TParams& params, - const TExecuteYqlRequestSettings& settings) -{ - if (params.Empty()) { - return Impl_->StreamExecuteYqlScript(script, nullptr, settings); - } else { - using TProtoParamsType = const ::google::protobuf::Map; - return Impl_->StreamExecuteYqlScript(script, params.GetProtoMap(), settings); - } -} - -TAsyncYqlResultPartIterator TScriptingClient::StreamExecuteYqlScript(const std::string& script, TParams&& params, - const TExecuteYqlRequestSettings& settings) -{ - auto paramsPtr = params.Empty() ? nullptr : params.GetProtoMapPtr(); - return Impl_->StreamExecuteYqlScript(script, paramsPtr, settings); -} - -TAsyncExplainYqlResult TScriptingClient::ExplainYqlScript(const std::string& script, - const TExplainYqlRequestSettings& settings) -{ - return Impl_->ExplainYqlScript(script, settings); -} - -} // namespace NScheme -} // namespace NYdb diff --git a/src/client/draft/ydb_view.cpp b/src/client/draft/ydb_view.cpp deleted file mode 100644 index 75fa55606b..0000000000 --- a/src/client/draft/ydb_view.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include - -#define INCLUDE_YDB_INTERNAL_H -#include -#undef INCLUDE_YDB_INTERNAL_H - -#include -#include -#include -#include - -namespace NYdb::inline V3 { -namespace NView { - -TViewDescription::TViewDescription(const Ydb::View::DescribeViewResult& desc) - : QueryText_(desc.query_text()) -{ -} - -const std::string& TViewDescription::GetQueryText() const { - return QueryText_; -} - -TDescribeViewResult::TDescribeViewResult(TStatus&& status, Ydb::View::DescribeViewResult&& desc) - : NScheme::TDescribePathResult(std::move(status), desc.self()) - , Proto_(std::make_unique(std::move(desc))) -{ -} - -TViewDescription TDescribeViewResult::GetViewDescription() const { - return TViewDescription(*Proto_); -} - -const Ydb::View::DescribeViewResult& TDescribeViewResult::GetProto() const { - return *Proto_; -} - -class TViewClient::TImpl : public TClientImplCommon { -public: - TImpl(std::shared_ptr&& connections, const TCommonClientSettings& settings) - : TClientImplCommon(std::move(connections), settings) - { - } - - TAsyncDescribeViewResult DescribeView(const std::string& path, const TDescribeViewSettings& settings) { - using namespace Ydb::View; - - auto request = MakeOperationRequest(settings); - request.set_path(TStringType{path}); - - auto promise = NThreading::NewPromise(); - - auto extractor = [promise] - (google::protobuf::Any* any, TPlainStatus status) mutable { - DescribeViewResult result; - if (any) { - any->UnpackTo(&result); - } - - TDescribeViewResult val(TStatus(std::move(status)), std::move(result)); - promise.SetValue(std::move(val)); - }; - - Connections_->RunDeferred( - std::move(request), - extractor, - &V1::ViewService::Stub::AsyncDescribeView, - DbDriverState_, - INITIAL_DEFERRED_CALL_DELAY, - TRpcRequestSettings::Make(settings)); - - return promise.GetFuture(); - } - -}; - -TViewClient::TViewClient(const TDriver& driver, const TCommonClientSettings& settings) - : Impl_(std::make_shared(CreateInternalInterface(driver), settings)) -{ -} - -TAsyncDescribeViewResult TViewClient::DescribeView(const std::string& path, const TDescribeViewSettings& settings) { - return Impl_->DescribeView(path, settings); -} - -} // NView - -const Ydb::View::DescribeViewResult& TProtoAccessor::GetProto(const NView::TDescribeViewResult& result) { - return result.GetProto(); -} - -} // NYdb diff --git a/src/version.h b/src/version.h index dc5f199bd1..3275e7ac1d 100644 --- a/src/version.h +++ b/src/version.h @@ -2,7 +2,7 @@ namespace NYdb { -inline const char* YDB_SDK_VERSION = "3.3.0"; +inline const char* YDB_SDK_VERSION = "3.3.1"; inline const char* YDB_CERTIFICATE_FILE_KEY = "ydb_root_ca_v3.pem"; } // namespace NYdb From 5d762763fc62720b012aa1300ff9489af99416ab Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Tue, 8 Apr 2025 14:07:22 +0000 Subject: [PATCH 2/3] Fix --- tests/unit/client/CMakeLists.txt | 18 ------------ .../unit/client/draft/helpers/CMakeLists.txt | 13 --------- tests/unit/client/draft/helpers/grpc_server.h | 18 ------------ .../draft/helpers/grpc_services/scripting.cpp | 21 -------------- .../draft/helpers/grpc_services/scripting.h | 16 ---------- .../draft/helpers/grpc_services/view.cpp | 19 ------------ .../client/draft/helpers/grpc_services/view.h | 18 ------------ .../ydb_scripting_response_headers_ut.cpp | 29 ------------------- tests/unit/client/draft/ydb_view_ut.cpp | 27 ----------------- 9 files changed, 179 deletions(-) delete mode 100644 tests/unit/client/draft/helpers/CMakeLists.txt delete mode 100644 tests/unit/client/draft/helpers/grpc_server.h delete mode 100644 tests/unit/client/draft/helpers/grpc_services/scripting.cpp delete mode 100644 tests/unit/client/draft/helpers/grpc_services/scripting.h delete mode 100644 tests/unit/client/draft/helpers/grpc_services/view.cpp delete mode 100644 tests/unit/client/draft/helpers/grpc_services/view.h delete mode 100644 tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp delete mode 100644 tests/unit/client/draft/ydb_view_ut.cpp diff --git a/tests/unit/client/CMakeLists.txt b/tests/unit/client/CMakeLists.txt index b9fea2c443..78778d8d13 100644 --- a/tests/unit/client/CMakeLists.txt +++ b/tests/unit/client/CMakeLists.txt @@ -1,5 +1,3 @@ -add_subdirectory(draft/helpers) - add_ydb_test(NAME client-ydb_coordination_ut SOURCES coordination/coordination_ut.cpp @@ -24,22 +22,6 @@ add_ydb_test(NAME client-extensions-discovery_mutator_ut unit ) -add_ydb_test(NAME client-draft_ut - SOURCES - draft/ydb_scripting_response_headers_ut.cpp - draft/ydb_view_ut.cpp - LINK_LIBRARIES - yutil - cpp-testing-unittest_main - YDB-CPP-SDK::Draft - LABELS - unit -) -target_link_libraries(client-draft_ut - PRIVATE - client-draft_ut_helpers -) - add_ydb_test(NAME client-ydb_driver_ut SOURCES driver/driver_ut.cpp diff --git a/tests/unit/client/draft/helpers/CMakeLists.txt b/tests/unit/client/draft/helpers/CMakeLists.txt deleted file mode 100644 index 28133bff0e..0000000000 --- a/tests/unit/client/draft/helpers/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -_ydb_sdk_add_library(client-draft_ut_helpers) - -target_link_libraries(client-draft_ut_helpers - PRIVATE - api-grpc - api-grpc-draft -) - -target_sources(client-draft_ut_helpers - PRIVATE - grpc_services/scripting.cpp - grpc_services/view.cpp -) diff --git a/tests/unit/client/draft/helpers/grpc_server.h b/tests/unit/client/draft/helpers/grpc_server.h deleted file mode 100644 index af3a9df8fe..0000000000 --- a/tests/unit/client/draft/helpers/grpc_server.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include -#include - -#include - -namespace NYdb::inline V3 { - -template -std::unique_ptr StartGrpcServer(const std::string& address, TService& service) { - grpc::ServerBuilder builder; - builder.AddListeningPort(TStringType{address}, grpc::InsecureServerCredentials()); - builder.RegisterService(&service); - return builder.BuildAndStart(); -} - -} diff --git a/tests/unit/client/draft/helpers/grpc_services/scripting.cpp b/tests/unit/client/draft/helpers/grpc_services/scripting.cpp deleted file mode 100644 index f798c05480..0000000000 --- a/tests/unit/client/draft/helpers/grpc_services/scripting.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "scripting.h" - -namespace NYdb::inline V3::NScripting { - -grpc::Status TMockSlyDbProxy::ExecuteYql( - grpc::ServerContext* context, - [[maybe_unused]] const Ydb::Scripting::ExecuteYqlRequest* request, - Ydb::Scripting::ExecuteYqlResponse* response -) { - context->AddInitialMetadata("key", "value"); - - // Just to make sdk core happy - auto* op = response->mutable_operation(); - op->set_ready(true); - op->set_status(Ydb::StatusIds::SUCCESS); - op->mutable_result(); - - return grpc::Status::OK; -} - -} diff --git a/tests/unit/client/draft/helpers/grpc_services/scripting.h b/tests/unit/client/draft/helpers/grpc_services/scripting.h deleted file mode 100644 index 432e208549..0000000000 --- a/tests/unit/client/draft/helpers/grpc_services/scripting.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include - -namespace NYdb::inline V3::NScripting { - -class TMockSlyDbProxy : public Ydb::Scripting::V1::ScriptingService::Service -{ -public: - grpc::Status ExecuteYql( - grpc::ServerContext* context, - const Ydb::Scripting::ExecuteYqlRequest* request, - Ydb::Scripting::ExecuteYqlResponse* response) override; -}; - -} diff --git a/tests/unit/client/draft/helpers/grpc_services/view.cpp b/tests/unit/client/draft/helpers/grpc_services/view.cpp deleted file mode 100644 index 82e7335a9d..0000000000 --- a/tests/unit/client/draft/helpers/grpc_services/view.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "view.h" - -namespace NYdb::inline V3::NView { - -grpc::Status TViewDummyService::DescribeView( - [[maybe_unused]] grpc::ServerContext* context, - [[maybe_unused]] const Ydb::View::DescribeViewRequest* request, - Ydb::View::DescribeViewResponse* response -) { - auto* op = response->mutable_operation(); - op->set_ready(true); - op->set_status(Ydb::StatusIds::SUCCESS); - Ydb::View::DescribeViewResult describeResult; - describeResult.set_query_text(DummyQueryText); - op->mutable_result()->PackFrom(describeResult); - return grpc::Status::OK; -} - -} diff --git a/tests/unit/client/draft/helpers/grpc_services/view.h b/tests/unit/client/draft/helpers/grpc_services/view.h deleted file mode 100644 index e507ba61b6..0000000000 --- a/tests/unit/client/draft/helpers/grpc_services/view.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include - -namespace NYdb::inline V3::NView { - -constexpr const char* DummyQueryText = "select 42"; - -class TViewDummyService : public Ydb::View::V1::ViewService::Service -{ -public: - grpc::Status DescribeView( - grpc::ServerContext* context, - const Ydb::View::DescribeViewRequest* request, - Ydb::View::DescribeViewResponse* response) override; -}; - -} diff --git a/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp b/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp deleted file mode 100644 index affb4fdbf6..0000000000 --- a/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "helpers/grpc_server.h" -#include "helpers/grpc_services/scripting.h" - -#include - -#include - -using namespace NYdb; - -Y_UNIT_TEST_SUITE(ResponseHeaders) { - Y_UNIT_TEST(PassHeader) { - NScripting::TMockSlyDbProxy slyDbProxy; - - std::string addr = "localhost:10000"; - - auto server = StartGrpcServer(addr, slyDbProxy); - - auto config = TDriverConfig() - .SetEndpoint(addr); - TDriver driver(config); - NScripting::TScriptingClient client(driver); - - auto result = client.ExecuteYqlScript("SMTH").GetValueSync(); - auto metadata = result.GetResponseMetadata(); - - UNIT_ASSERT(metadata.find("key") != metadata.end()); - UNIT_ASSERT_VALUES_EQUAL(metadata.find("key")->second, "value"); - } -} diff --git a/tests/unit/client/draft/ydb_view_ut.cpp b/tests/unit/client/draft/ydb_view_ut.cpp deleted file mode 100644 index 7414f2ead9..0000000000 --- a/tests/unit/client/draft/ydb_view_ut.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "helpers/grpc_server.h" -#include "helpers/grpc_services/view.h" - -#include - -#include - -using namespace NYdb; - -Y_UNIT_TEST_SUITE(ViewClient) { - Y_UNIT_TEST(Basic) { - TString addr = "localhost:2000"; - NView::TViewDummyService viewService; - - auto server = StartGrpcServer(addr, viewService); - - auto config = TDriverConfig().SetEndpoint(addr); - TDriver driver(config); - NView::TViewClient client(driver); - - auto result = client.DescribeView("any").ExtractValueSync(); - UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); - - auto queryText = result.GetViewDescription().GetQueryText(); - UNIT_ASSERT_STRINGS_EQUAL(queryText, NView::DummyQueryText); - } -} From 1f222080d2a862193ed2584e96a45ed9b1c25743 Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Tue, 8 Apr 2025 16:01:36 +0000 Subject: [PATCH 3/3] fix --- include/ydb-cpp-sdk/client/proto/accessor.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/include/ydb-cpp-sdk/client/proto/accessor.h b/include/ydb-cpp-sdk/client/proto/accessor.h index fcd53785dc..9b94371dc9 100644 --- a/include/ydb-cpp-sdk/client/proto/accessor.h +++ b/include/ydb-cpp-sdk/client/proto/accessor.h @@ -1,7 +1,5 @@ #pragma once -#include -#include #include #include #include @@ -10,8 +8,6 @@ #include #include -#include -#include #include #include #include @@ -49,8 +45,6 @@ class TProtoAccessor { static const Ydb::Topic::DescribeConsumerResult& GetProto(const NYdb::NTopic::TConsumerDescription& consumerDescription); static const Ydb::Monitoring::SelfCheckResult& GetProto(const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult); static const Ydb::Coordination::DescribeNodeResult& GetProto(const NYdb::NCoordination::TNodeDescription &describeNodeResult); - static const Ydb::Replication::DescribeReplicationResult& GetProto(const NYdb::NReplication::TDescribeReplicationResult& desc); - static const Ydb::View::DescribeViewResult& GetProto(const NYdb::NView::TDescribeViewResult& desc); static NTable::TQueryStats FromProto(const Ydb::TableStats::QueryStats& queryStats); static NTable::TTableDescription FromProto(const Ydb::Table::CreateTableRequest& request);