Skip to content

Commit bcb2745

Browse files
committed
add describe external data source / external table methods to the table client
1 parent 338f219 commit bcb2745

File tree

4 files changed

+81
-0
lines changed

4 files changed

+81
-0
lines changed

ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/table/table.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,11 +1070,16 @@ class TRenameItem {
10701070

10711071
////////////////////////////////////////////////////////////////////////////////
10721072

1073+
class TDescribeExternalDataSourceResult;
1074+
class TDescribeExternalTableResult;
1075+
10731076
using TAsyncCreateSessionResult = NThreading::TFuture<TCreateSessionResult>;
10741077
using TAsyncDataQueryResult = NThreading::TFuture<TDataQueryResult>;
10751078
using TAsyncPrepareQueryResult = NThreading::TFuture<TPrepareQueryResult>;
10761079
using TAsyncExplainDataQueryResult = NThreading::TFuture<TExplainQueryResult>;
10771080
using TAsyncDescribeTableResult = NThreading::TFuture<TDescribeTableResult>;
1081+
using TAsyncDescribeExternalDataSourceResult = NThreading::TFuture<TDescribeExternalDataSourceResult>;
1082+
using TAsyncDescribeExternalTableResult = NThreading::TFuture<TDescribeExternalTableResult>;
10781083
using TAsyncBeginTransactionResult = NThreading::TFuture<TBeginTransactionResult>;
10791084
using TAsyncCommitTransactionResult = NThreading::TFuture<TCommitTransactionResult>;
10801085
using TAsyncTablePartIterator = NThreading::TFuture<TTablePartIterator>;
@@ -1696,6 +1701,10 @@ struct TDescribeTableSettings : public TOperationRequestSettings<TDescribeTableS
16961701
FLUENT_SETTING_DEFAULT(bool, WithShardNodesInfo, false);
16971702
};
16981703

1704+
struct TDescribeExternalDataSourceSettings : public TOperationRequestSettings<TDescribeExternalDataSourceSettings> {};
1705+
1706+
struct TDescribeExternalTableSettings : public TOperationRequestSettings<TDescribeExternalTableSettings> {};
1707+
16991708
struct TExplainDataQuerySettings : public TOperationRequestSettings<TExplainDataQuerySettings> {
17001709
FLUENT_SETTING_DEFAULT(bool, WithCollectFullDiagnostics, false);
17011710
};
@@ -1780,6 +1789,12 @@ class TSession {
17801789
TAsyncDescribeTableResult DescribeTable(const std::string& path,
17811790
const TDescribeTableSettings& settings = TDescribeTableSettings());
17821791

1792+
TAsyncDescribeExternalDataSourceResult DescribeExternalDataSource(const std::string& path,
1793+
const TDescribeExternalDataSourceSettings& settings = {});
1794+
1795+
TAsyncDescribeExternalTableResult DescribeExternalTable(const std::string& path,
1796+
const TDescribeExternalTableSettings& settings = {});
1797+
17831798
TAsyncBeginTransactionResult BeginTransaction(const TTxSettings& txSettings = TTxSettings(),
17841799
const TBeginTxSettings& settings = TBeginTxSettings());
17851800

ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,62 @@ TAsyncDescribeTableResult TTableClient::TImpl::DescribeTable(const std::string&
557557
return promise.GetFuture();
558558
}
559559

560+
TAsyncDescribeExternalDataSourceResult TTableClient::TImpl::DescribeExternalDataSource(const std::string& path, const TDescribeExternalDataSourceSettings& settings) {
561+
auto request = MakeOperationRequest<Ydb::Table::DescribeExternalDataSourceRequest>(settings);
562+
request.set_path(path);
563+
564+
auto promise = NewPromise<TDescribeExternalDataSourceResult>();
565+
566+
auto extractor = [promise, settings](google::protobuf::Any* any, TPlainStatus status) mutable {
567+
Ydb::Table::DescribeExternalDataSourceResult proto;
568+
if (any) {
569+
any->UnpackTo(&proto);
570+
}
571+
promise.SetValue(TDescribeExternalDataSourceResult(TStatus(std::move(status)), std::move(proto)));
572+
};
573+
574+
Connections_->RunDeferred<Ydb::Table::V1::TableService,
575+
Ydb::Table::DescribeExternalDataSourceRequest,
576+
Ydb::Table::DescribeExternalDataSourceResponse>(
577+
std::move(request),
578+
extractor,
579+
&Ydb::Table::V1::TableService::Stub::AsyncDescribeExternalDataSource,
580+
DbDriverState_,
581+
INITIAL_DEFERRED_CALL_DELAY,
582+
TRpcRequestSettings::Make(settings)
583+
);
584+
585+
return promise.GetFuture();
586+
}
587+
588+
TAsyncDescribeExternalTableResult TTableClient::TImpl::DescribeExternalTable(const std::string& path, const TDescribeExternalTableSettings& settings) {
589+
auto request = MakeOperationRequest<Ydb::Table::DescribeExternalTableRequest>(settings);
590+
request.set_path(path);
591+
592+
auto promise = NewPromise<TDescribeExternalTableResult>();
593+
594+
auto extractor = [promise, settings](google::protobuf::Any* any, TPlainStatus status) mutable {
595+
Ydb::Table::DescribeExternalTableResult proto;
596+
if (any) {
597+
any->UnpackTo(&proto);
598+
}
599+
promise.SetValue(TDescribeExternalTableResult(TStatus(std::move(status)), std::move(proto)));
600+
};
601+
602+
Connections_->RunDeferred<Ydb::Table::V1::TableService,
603+
Ydb::Table::DescribeExternalTableRequest,
604+
Ydb::Table::DescribeExternalTableResponse>(
605+
std::move(request),
606+
extractor,
607+
&Ydb::Table::V1::TableService::Stub::AsyncDescribeExternalTable,
608+
DbDriverState_,
609+
INITIAL_DEFERRED_CALL_DELAY,
610+
TRpcRequestSettings::Make(settings)
611+
);
612+
613+
return promise.GetFuture();
614+
}
615+
560616
TAsyncPrepareQueryResult TTableClient::TImpl::PrepareDataQuery(const TSession& session, const std::string& query,
561617
const TPrepareDataQuerySettings& settings)
562618
{

ydb/public/sdk/cpp/src/client/table/impl/table_client.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class TTableClient::TImpl: public TClientImplCommon<TTableClient::TImpl>, public
6666
TFuture<TStatus> RenameTables(Ydb::Table::RenameTablesRequest&& request, const TRenameTablesSettings& settings);
6767
TFuture<TStatus> DropTable(const std::string& sessionId, const std::string& path, const TDropTableSettings& settings);
6868
TAsyncDescribeTableResult DescribeTable(const std::string& sessionId, const std::string& path, const TDescribeTableSettings& settings);
69+
TAsyncDescribeExternalDataSourceResult DescribeExternalDataSource(const std::string& path, const TDescribeExternalDataSourceSettings& settings);
70+
TAsyncDescribeExternalTableResult DescribeExternalTable(const std::string& path, const TDescribeExternalTableSettings& settings);
6971

7072
template<typename TParamsType>
7173
TAsyncDataQueryResult ExecuteDataQuery(TSession& session, const std::string& query, const TTxControl& txControl,

ydb/public/sdk/cpp/src/client/table/table.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,6 +1830,14 @@ TAsyncDescribeTableResult TSession::DescribeTable(const std::string& path, const
18301830
return Client_->DescribeTable(SessionImpl_->GetId(), path, settings);
18311831
}
18321832

1833+
TAsyncDescribeExternalDataSourceResult TSession::DescribeExternalDataSource(const std::string& path, const TDescribeExternalDataSourceSettings& settings) {
1834+
return Client_->DescribeExternalDataSource(path, settings);
1835+
}
1836+
1837+
TAsyncDescribeExternalTableResult TSession::DescribeExternalTable(const std::string& path, const TDescribeExternalTableSettings& settings) {
1838+
return Client_->DescribeExternalTable(path, settings);
1839+
}
1840+
18331841
TAsyncDataQueryResult TSession::ExecuteDataQuery(const std::string& query, const TTxControl& txControl,
18341842
const TExecDataQuerySettings& settings)
18351843
{

0 commit comments

Comments
 (0)