diff options
author | ilnaz <ilnaz@ydb.tech> | 2022-11-29 16:10:06 +0300 |
---|---|---|
committer | ilnaz <ilnaz@ydb.tech> | 2022-11-29 16:10:06 +0300 |
commit | 882d8b1b4006488e2756cb22f9bf1654098f8760 (patch) | |
tree | c34964a7efd47a68628a4a4ebd60c32ad6d29198 | |
parent | 2e13c3acdb5496eaaefb45f2856a5ab1ea9265db (diff) | |
download | ydb-882d8b1b4006488e2756cb22f9bf1654098f8760.tar.gz |
TVirtualTimestamp is a free-standing struct (without inheritance from std::tuple)
-rw-r--r-- | ydb/core/kqp/ut/kqp_scheme_ut.cpp | 4 | ||||
-rw-r--r-- | ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp | 39 | ||||
-rw-r--r-- | ydb/public/sdk/cpp/client/ydb_scheme/scheme.h | 18 |
3 files changed, 49 insertions, 12 deletions
diff --git a/ydb/core/kqp/ut/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/kqp_scheme_ut.cpp index b8ad69b6d60..e72501799f8 100644 --- a/ydb/core/kqp/ut/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/kqp_scheme_ut.cpp @@ -2916,8 +2916,8 @@ Y_UNIT_TEST_SUITE(KqpScheme) { UNIT_ASSERT_C(desc.IsSuccess(), desc.GetIssues().ToString()); createdAt = desc.GetEntry().CreatedAt; - UNIT_ASSERT(createdAt.PlanStep() > 0); - UNIT_ASSERT(createdAt.TxId() != 0); + UNIT_ASSERT(createdAt.PlanStep > 0); + UNIT_ASSERT(createdAt.TxId != 0); } { // describe dir diff --git a/ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp b/ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp index 108fe82dbe3..181d6a4fa7f 100644 --- a/ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp +++ b/ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp @@ -15,8 +15,13 @@ namespace NScheme { using namespace NThreading; using namespace Ydb::Scheme; +TVirtualTimestamp::TVirtualTimestamp(ui64 planStep, ui64 txId) + : PlanStep(planStep) + , TxId(txId) +{} + TVirtualTimestamp::TVirtualTimestamp(const ::Ydb::VirtualTimestamp& proto) - : std::tuple<ui64, ui64>(proto.plan_step(), proto.tx_id()) + : TVirtualTimestamp(proto.plan_step(), proto.tx_id()) {} TString TVirtualTimestamp::ToString() const { @@ -27,11 +32,35 @@ TString TVirtualTimestamp::ToString() const { } void TVirtualTimestamp::Out(IOutputStream& o) const { - o << "{ plan_step: " << PlanStep() - << ", tx_id: " << TxId() + o << "{ plan_step: " << PlanStep + << ", tx_id: " << TxId << " }"; } +bool TVirtualTimestamp::operator<(const TVirtualTimestamp& rhs) const { + return PlanStep < rhs.PlanStep && TxId < rhs.TxId; +} + +bool TVirtualTimestamp::operator<=(const TVirtualTimestamp& rhs) const { + return PlanStep <= rhs.PlanStep && TxId <= rhs.TxId; +} + +bool TVirtualTimestamp::operator>(const TVirtualTimestamp& rhs) const { + return PlanStep > rhs.PlanStep && TxId > rhs.TxId; +} + +bool TVirtualTimestamp::operator>=(const TVirtualTimestamp& rhs) const { + return PlanStep >= rhs.PlanStep && TxId >= rhs.TxId; +} + +bool TVirtualTimestamp::operator==(const TVirtualTimestamp& rhs) const { + return PlanStep == rhs.PlanStep && TxId == rhs.TxId; +} + +bool TVirtualTimestamp::operator!=(const TVirtualTimestamp& rhs) const { + return !(*this == rhs); +} + static ESchemeEntryType ConvertProtoEntryType(::Ydb::Scheme::Entry::Type entry) { switch (entry) { case ::Ydb::Scheme::Entry::DIRECTORY: @@ -262,3 +291,7 @@ TAsyncStatus TSchemeClient::ModifyPermissions(const TString& path, } // namespace NScheme } // namespace NYdb + +Y_DECLARE_OUT_SPEC(, NYdb::NScheme::TVirtualTimestamp, o, x) { + return x.Out(o); +} diff --git a/ydb/public/sdk/cpp/client/ydb_scheme/scheme.h b/ydb/public/sdk/cpp/client/ydb_scheme/scheme.h index dea529a02a4..be67a8a018a 100644 --- a/ydb/public/sdk/cpp/client/ydb_scheme/scheme.h +++ b/ydb/public/sdk/cpp/client/ydb_scheme/scheme.h @@ -41,15 +41,23 @@ enum class ESchemeEntryType : i32 { Topic = 17 }; -struct TVirtualTimestamp : std::tuple<ui64, ui64> { - ui64 PlanStep() const { return std::get<0>(*this); } - ui64 TxId() const { return std::get<1>(*this); } +struct TVirtualTimestamp { + ui64 PlanStep = 0; + ui64 TxId = 0; TVirtualTimestamp() = default; + TVirtualTimestamp(ui64 planStep, ui64 txId); TVirtualTimestamp(const ::Ydb::VirtualTimestamp& proto); TString ToString() const; void Out(IOutputStream& o) const; + + bool operator<(const TVirtualTimestamp& rhs) const; + bool operator<=(const TVirtualTimestamp& rhs) const; + bool operator>(const TVirtualTimestamp& rhs) const; + bool operator>=(const TVirtualTimestamp& rhs) const; + bool operator==(const TVirtualTimestamp& rhs) const; + bool operator!=(const TVirtualTimestamp& rhs) const; }; struct TSchemeEntry { @@ -166,7 +174,3 @@ private: } // namespace NScheme } // namespace NYdb - -Y_DECLARE_OUT_SPEC(inline, NYdb::NScheme::TVirtualTimestamp, o, x) { - return x.Out(o); -} |