Skip to content

Commit 9807afd

Browse files
committed
ydb scheme describe for external data sources / external tables
1 parent 293d1e8 commit 9807afd

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@ int TCommandDescribe::PrintPathResponse(TDriver& driver, const NScheme::TDescrib
283283
return DescribeReplication(driver);
284284
case NScheme::ESchemeEntryType::View:
285285
return DescribeView(driver);
286+
case NScheme::ESchemeEntryType::ExternalDataSource:
287+
return DescribeExternalDataSource(driver);
288+
case NScheme::ESchemeEntryType::ExternalTable:
289+
return DescribeExternalTable(driver);
286290
default:
287291
return DescribeEntryDefault(entry);
288292
}
@@ -615,6 +619,36 @@ int TCommandDescribe::DescribeView(const TDriver& driver) {
615619
return PrintDescription(this, OutputFormat, result, &TCommandDescribe::PrintViewResponsePretty);
616620
}
617621

622+
int TCommandDescribe::PrintExternalDataSourceResponsePretty(const NYdb::NTable::TExternalDataSourceDescription& description) const {
623+
Cout << "\nProperties:\n" << "to be done..." << Endl;
624+
return EXIT_SUCCESS;
625+
}
626+
627+
int TCommandDescribe::DescribeExternalDataSource(const TDriver& driver) {
628+
NTable::TTableClient client(driver);
629+
const auto sessionResult = client.CreateSession().ExtractValueSync();
630+
NStatusHelpers::ThrowOnErrorOrPrintIssues(sessionResult);
631+
const auto description = sessionResult.GetSession().DescribeExternalDataSource(Path).ExtractValueSync();
632+
NStatusHelpers::ThrowOnErrorOrPrintIssues(description);
633+
634+
return PrintDescription(this, OutputFormat, description.GetExternalDataSourceDescription(), &TCommandDescribe::PrintExternalDataSourceResponsePretty);
635+
}
636+
637+
int TCommandDescribe::PrintExternalTableResponsePretty(const NYdb::NTable::TExternalTableDescription& description) const {
638+
Cout << "\nProperties:\n" << "to be done..." << Endl;
639+
return EXIT_SUCCESS;
640+
}
641+
642+
int TCommandDescribe::DescribeExternalTable(const TDriver& driver) {
643+
NTable::TTableClient client(driver);
644+
const auto sessionResult = client.CreateSession().ExtractValueSync();
645+
NStatusHelpers::ThrowOnErrorOrPrintIssues(sessionResult);
646+
const auto result = sessionResult.GetSession().DescribeExternalTable(Path).ExtractValueSync();
647+
NStatusHelpers::ThrowOnErrorOrPrintIssues(result);
648+
649+
return PrintDescription(this, OutputFormat, result.GetExternalTableDescription(), &TCommandDescribe::PrintExternalTableResponsePretty);
650+
}
651+
618652
namespace {
619653
void PrintColumns(const NTable::TTableDescription& tableDescription) {
620654
if (!tableDescription.GetTableColumns().size()) {

ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ class TCommandDescribe : public TYdbOperationCommand, public TCommandWithPath, p
105105
int DescribeView(const TDriver& driver);
106106
int PrintViewResponsePretty(const NYdb::NView::TDescribeViewResult& result) const;
107107

108+
int DescribeExternalDataSource(const TDriver& driver);
109+
int PrintExternalDataSourceResponsePretty(const NYdb::NTable::TExternalDataSourceDescription& result) const;
110+
111+
int DescribeExternalTable(const TDriver& driver);
112+
int PrintExternalTableResponsePretty(const NYdb::NTable::TExternalTableDescription& result) const;
113+
108114
int TryTopicConsumerDescribeOrFail(NYdb::TDriver& driver, const NScheme::TDescribePathResult& result);
109115
std::pair<TString, TString> ParseTopicConsumer() const;
110116
int PrintConsumerResponsePretty(const NYdb::NTopic::TConsumerDescription& description) const;

ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/proto/accessor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ class TProtoAccessor {
4343
static ::google::protobuf::Map<TStringType, Ydb::TypedValue>* GetProtoMapPtr(TParams& params);
4444
static const Ydb::TableStats::QueryStats& GetProto(const NTable::TQueryStats& queryStats);
4545
static const Ydb::Table::DescribeTableResult& GetProto(const NTable::TTableDescription& tableDescription);
46+
static const Ydb::Table::DescribeExternalDataSourceResult& GetProto(const NTable::TExternalDataSourceDescription&);
47+
static const Ydb::Table::DescribeExternalTableResult& GetProto(const NTable::TExternalTableDescription&);
4648
static const Ydb::Topic::DescribeTopicResult& GetProto(const NYdb::NTopic::TTopicDescription& topicDescription);
4749
static const Ydb::Topic::DescribeConsumerResult& GetProto(const NYdb::NTopic::TConsumerDescription& consumerDescription);
4850
static const Ydb::Monitoring::SelfCheckResult& GetProto(const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult);

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ const Ydb::Table::DescribeTableResult& TProtoAccessor::GetProto(const NTable::TT
1212
return tableDescription.GetProto();
1313
}
1414

15+
const Ydb::Table::DescribeExternalDataSourceResult& TProtoAccessor::GetProto(const NTable::TExternalDataSourceDescription& description) {
16+
return description.GetProto();
17+
}
18+
19+
const Ydb::Table::DescribeExternalTableResult& TProtoAccessor::GetProto(const NTable::TExternalTableDescription& description) {
20+
return description.GetProto();
21+
}
22+
1523
NTable::TQueryStats TProtoAccessor::FromProto(const Ydb::TableStats::QueryStats& queryStats) {
1624
return NTable::TQueryStats(queryStats);
1725
}

0 commit comments

Comments
 (0)