Skip to content

Commit 80a08cf

Browse files
committed
add describe external data source / external table methods to the table client
1 parent 4fee494 commit 80a08cf

File tree

4 files changed

+203
-0
lines changed

4 files changed

+203
-0
lines changed

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

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class ColumnFamily;
2222
class CreateTableRequest;
2323
class Changefeed;
2424
class ChangefeedDescription;
25+
class DescribeExternalDataSourceResult;
26+
class DescribeExternalTableResult;
2527
class DescribeTableResult;
2628
class ExplicitPartitions;
2729
class GlobalIndexSettings;
@@ -1068,11 +1070,16 @@ class TRenameItem {
10681070

10691071
////////////////////////////////////////////////////////////////////////////////
10701072

1073+
class TDescribeExternalDataSourceResult;
1074+
class TDescribeExternalTableResult;
1075+
10711076
using TAsyncCreateSessionResult = NThreading::TFuture<TCreateSessionResult>;
10721077
using TAsyncDataQueryResult = NThreading::TFuture<TDataQueryResult>;
10731078
using TAsyncPrepareQueryResult = NThreading::TFuture<TPrepareQueryResult>;
10741079
using TAsyncExplainDataQueryResult = NThreading::TFuture<TExplainQueryResult>;
10751080
using TAsyncDescribeTableResult = NThreading::TFuture<TDescribeTableResult>;
1081+
using TAsyncDescribeExternalDataSourceResult = NThreading::TFuture<TDescribeExternalDataSourceResult>;
1082+
using TAsyncDescribeExternalTableResult = NThreading::TFuture<TDescribeExternalTableResult>;
10761083
using TAsyncBeginTransactionResult = NThreading::TFuture<TBeginTransactionResult>;
10771084
using TAsyncCommitTransactionResult = NThreading::TFuture<TCommitTransactionResult>;
10781085
using TAsyncTablePartIterator = NThreading::TFuture<TTablePartIterator>;
@@ -1694,6 +1701,10 @@ struct TDescribeTableSettings : public TOperationRequestSettings<TDescribeTableS
16941701
FLUENT_SETTING_DEFAULT(bool, WithShardNodesInfo, false);
16951702
};
16961703

1704+
struct TDescribeExternalDataSourceSettings : public TOperationRequestSettings<TDescribeExternalDataSourceSettings> {};
1705+
1706+
struct TDescribeExternalTableSettings : public TOperationRequestSettings<TDescribeExternalTableSettings> {};
1707+
16971708
struct TExplainDataQuerySettings : public TOperationRequestSettings<TExplainDataQuerySettings> {
16981709
FLUENT_SETTING_DEFAULT(bool, WithCollectFullDiagnostics, false);
16991710
};
@@ -1778,6 +1789,12 @@ class TSession {
17781789
TAsyncDescribeTableResult DescribeTable(const std::string& path,
17791790
const TDescribeTableSettings& settings = TDescribeTableSettings());
17801791

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

@@ -2194,5 +2211,57 @@ class TReadRowsResult : public TStatus {
21942211
}
21952212
};
21962213

2214+
class TExternalDataSourceDescription {
2215+
public:
2216+
TExternalDataSourceDescription(Ydb::Table::DescribeExternalDataSourceResult&& description);
2217+
2218+
private:
2219+
class TImpl;
2220+
std::shared_ptr<TImpl> Impl_;
2221+
2222+
friend class NYdb::V3::TProtoAccessor;
2223+
const Ydb::Table::DescribeExternalDataSourceResult& GetProto() const;
2224+
};
2225+
2226+
//! Represents the result of a DescribeExternalDataSource call.
2227+
class TDescribeExternalDataSourceResult : public NScheme::TDescribePathResult {
2228+
public:
2229+
TDescribeExternalDataSourceResult(
2230+
TStatus&& status,
2231+
Ydb::Table::DescribeExternalDataSourceResult&& description
2232+
);
2233+
2234+
TExternalDataSourceDescription GetExternalDataSourceDescription() const;
2235+
2236+
private:
2237+
TExternalDataSourceDescription ExternalDataSourceDescription_;
2238+
};
2239+
2240+
class TExternalTableDescription {
2241+
public:
2242+
TExternalTableDescription(Ydb::Table::DescribeExternalTableResult&& description);
2243+
2244+
private:
2245+
class TImpl;
2246+
std::shared_ptr<TImpl> Impl_;
2247+
2248+
friend class NYdb::V3::TProtoAccessor;
2249+
const Ydb::Table::DescribeExternalTableResult& GetProto() const;
2250+
};
2251+
2252+
//! Represents the result of a DescribeExternalTable call.
2253+
class TDescribeExternalTableResult : public NScheme::TDescribePathResult {
2254+
public:
2255+
TDescribeExternalTableResult(
2256+
TStatus&& status,
2257+
Ydb::Table::DescribeExternalTableResult&& description
2258+
);
2259+
2260+
TExternalTableDescription GetExternalTableDescription() const;
2261+
2262+
private:
2263+
TExternalTableDescription ExternalTableDescription_;
2264+
};
2265+
21972266
} // namespace NTable
21982267
} // namespace NYdb

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: 76 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
{
@@ -3308,5 +3316,73 @@ TReadRowsResult::TReadRowsResult(TStatus&& status, TResultSet&& resultSet)
33083316
, ResultSet(std::move(resultSet))
33093317
{}
33103318

3319+
////////////////////////////////////////////////////////////////////////////////
3320+
3321+
class TExternalDataSourceDescription::TImpl {
3322+
Ydb::Table::DescribeExternalDataSourceResult Proto_;
3323+
3324+
public:
3325+
TImpl(Ydb::Table::DescribeExternalDataSourceResult&& description)
3326+
: Proto_(std::move(description))
3327+
{}
3328+
3329+
const Ydb::Table::DescribeExternalDataSourceResult& GetProto() const {
3330+
return Proto_;
3331+
}
3332+
};
3333+
3334+
TExternalDataSourceDescription::TExternalDataSourceDescription(Ydb::Table::DescribeExternalDataSourceResult&& description)
3335+
: Impl_(std::make_shared<TImpl>(std::move(description)))
3336+
{
3337+
}
3338+
3339+
const Ydb::Table::DescribeExternalDataSourceResult& TExternalDataSourceDescription::GetProto() const {
3340+
return Impl_->GetProto();
3341+
}
3342+
3343+
TDescribeExternalDataSourceResult::TDescribeExternalDataSourceResult(TStatus&& status, Ydb::Table::DescribeExternalDataSourceResult&& description)
3344+
: NScheme::TDescribePathResult(std::move(status), description.self())
3345+
, ExternalDataSourceDescription_(std::move(description))
3346+
{}
3347+
3348+
TExternalDataSourceDescription TDescribeExternalDataSourceResult::GetExternalDataSourceDescription() const {
3349+
CheckStatusOk("TDescribeExternalDataSourceResult::GetExternalDataSourceDescription");
3350+
return ExternalDataSourceDescription_;
3351+
}
3352+
3353+
////////////////////////////////////////////////////////////////////////////////
3354+
3355+
class TExternalTableDescription::TImpl {
3356+
Ydb::Table::DescribeExternalTableResult Proto_;
3357+
3358+
public:
3359+
TImpl(Ydb::Table::DescribeExternalTableResult&& description)
3360+
: Proto_(std::move(description))
3361+
{}
3362+
3363+
const Ydb::Table::DescribeExternalTableResult& GetProto() const {
3364+
return Proto_;
3365+
}
3366+
};
3367+
3368+
TExternalTableDescription::TExternalTableDescription(Ydb::Table::DescribeExternalTableResult&& description)
3369+
: Impl_(std::make_shared<TImpl>(std::move(description)))
3370+
{
3371+
}
3372+
3373+
const Ydb::Table::DescribeExternalTableResult& TExternalTableDescription::GetProto() const {
3374+
return Impl_->GetProto();
3375+
}
3376+
3377+
TDescribeExternalTableResult::TDescribeExternalTableResult(TStatus&& status, Ydb::Table::DescribeExternalTableResult&& description)
3378+
: NScheme::TDescribePathResult(std::move(status), description.self())
3379+
, ExternalTableDescription_(std::move(description))
3380+
{}
3381+
3382+
TExternalTableDescription TDescribeExternalTableResult::GetExternalTableDescription() const {
3383+
CheckStatusOk("TDescribeExternalTableResult::GetExternalTableDescription");
3384+
return ExternalTableDescription_;
3385+
}
3386+
33113387
} // namespace NTable
33123388
} // namespace NYdb

0 commit comments

Comments
 (0)