aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilnaz <ilnaz@ydb.tech>2022-11-29 16:10:06 +0300
committerilnaz <ilnaz@ydb.tech>2022-11-29 16:10:06 +0300
commit882d8b1b4006488e2756cb22f9bf1654098f8760 (patch)
treec34964a7efd47a68628a4a4ebd60c32ad6d29198
parent2e13c3acdb5496eaaefb45f2856a5ab1ea9265db (diff)
downloadydb-882d8b1b4006488e2756cb22f9bf1654098f8760.tar.gz
TVirtualTimestamp is a free-standing struct (without inheritance from std::tuple)
-rw-r--r--ydb/core/kqp/ut/kqp_scheme_ut.cpp4
-rw-r--r--ydb/public/sdk/cpp/client/ydb_scheme/scheme.cpp39
-rw-r--r--ydb/public/sdk/cpp/client/ydb_scheme/scheme.h18
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);
-}