aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkungurtsev <kungasc@ydb.tech>2024-06-18 13:42:18 +0200
committerGitHub <noreply@github.com>2024-06-18 13:42:18 +0200
commit6ff66f609fef8bf83c298d1fb0c47868631ad3ae (patch)
tree3fd3e8fa1465549684790cd0375f2e00aeeb7190
parente9bce00c5aca7e5a2d24bb4696562bdbf8a231ef (diff)
downloadydb-6ff66f609fef8bf83c298d1fb0c47868631ad3ae.tar.gz
Avoid Undefined behavior: reference binding to misaligned address (#5638)
-rw-r--r--ydb/core/tablet_flat/flat_fwd_cache.h14
-rw-r--r--ydb/core/tablet_flat/flat_page_btree_index.h78
-rw-r--r--ydb/core/tablet_flat/flat_page_btree_index_writer.h20
-rw-r--r--ydb/core/tablet_flat/flat_part_charge_btree_index.h78
-rw-r--r--ydb/core/tablet_flat/flat_part_dump.cpp4
-rw-r--r--ydb/core/tablet_flat/flat_part_index_iter_bree_index.h12
-rw-r--r--ydb/core/tablet_flat/flat_part_loader.cpp2
-rw-r--r--ydb/core/tablet_flat/flat_part_writer.h10
-rw-r--r--ydb/core/tablet_flat/flat_stat_part_group_btree_index.h15
-rw-r--r--ydb/core/tablet_flat/flat_stat_table_btree_index.h24
-rw-r--r--ydb/core/tablet_flat/flat_stat_table_btree_index_histogram.h8
-rw-r--r--ydb/core/tablet_flat/ut/ut_btree_index_nodes.cpp48
-rw-r--r--ydb/core/tablet_flat/ut/ut_charge.cpp4
-rw-r--r--ydb/core/tablet_flat/ut/ut_stat.cpp2
14 files changed, 176 insertions, 143 deletions
diff --git a/ydb/core/tablet_flat/flat_fwd_cache.h b/ydb/core/tablet_flat/flat_fwd_cache.h
index eb7e2f66b9..7f070ff132 100644
--- a/ydb/core/tablet_flat/flat_fwd_cache.h
+++ b/ydb/core/tablet_flat/flat_fwd_cache.h
@@ -301,9 +301,9 @@ namespace NFwd {
auto& meta = Part->IndexPages.GetBTree(groupId);
Levels.resize(meta.LevelCount + 1);
- Levels[0].Queue.push_back({meta.PageId, meta.DataSize});
+ Levels[0].Queue.push_back({meta.GetPageId(), meta.GetDataSize()});
if (meta.LevelCount) {
- IndexPageLocator.Add(meta.PageId, GroupId, 0);
+ IndexPageLocator.Add(meta.GetPageId(), GroupId, 0);
}
}
@@ -371,7 +371,7 @@ namespace NFwd {
if (levelId + 2 < Levels.size()) { // next level is index
NPage::TBtreeIndexNode node(page.Data);
for (auto pos : xrange(node.GetChildrenCount())) {
- IndexPageLocator.Add(node.GetShortChild(pos).PageId, GroupId, levelId + 1);
+ IndexPageLocator.Add(node.GetShortChild(pos).GetPageId(), GroupId, levelId + 1);
}
}
@@ -433,12 +433,12 @@ namespace NFwd {
NPage::TBtreeIndexNode node(page.Data);
for (auto pos : xrange(node.GetChildrenCount())) {
auto& child = node.GetShortChild(pos);
- if (child.RowCount <= BeginRowId) {
+ if (child.GetRowCount() <= BeginRowId) {
continue;
}
- Y_ABORT_UNLESS(!Levels[levelId + 1].Queue || Levels[levelId + 1].Queue.back().PageId < child.PageId);
- Levels[levelId + 1].Queue.push_back({child.PageId, child.DataSize});
- if (child.RowCount >= EndRowId) {
+ Y_ABORT_UNLESS(!Levels[levelId + 1].Queue || Levels[levelId + 1].Queue.back().PageId < child.GetPageId());
+ Levels[levelId + 1].Queue.push_back({child.GetPageId(), child.GetDataSize()});
+ if (child.GetRowCount() >= EndRowId) {
break;
}
}
diff --git a/ydb/core/tablet_flat/flat_page_btree_index.h b/ydb/core/tablet_flat/flat_page_btree_index.h
index 5d463cbf57..515d04a081 100644
--- a/ydb/core/tablet_flat/flat_page_btree_index.h
+++ b/ydb/core/tablet_flat/flat_page_btree_index.h
@@ -84,9 +84,21 @@ namespace NKikimr::NTable::NPage {
static_assert(sizeof(TIsNullBitmap) == 1, "Invalid TBtreeIndexNode TIsNullBitmap size");
struct TShortChild {
- TPageId PageId;
- TRowId RowCount;
- ui64 DataSize;
+ TPageId PageId_;
+ TRowId RowCount_;
+ ui64 DataSize_;
+
+ inline TPageId GetPageId() const noexcept {
+ return PageId_;
+ }
+
+ inline TRowId GetRowCount() const noexcept {
+ return RowCount_;
+ }
+
+ inline ui64 GetDataSize() const noexcept {
+ return DataSize_;
+ }
auto operator<=>(const TShortChild&) const = default;
} Y_PACKED;
@@ -94,38 +106,58 @@ namespace NKikimr::NTable::NPage {
static_assert(sizeof(TShortChild) == 20, "Invalid TBtreeIndexNode TShortChild size");
struct TChild {
- TPageId PageId;
- TRowId RowCount;
- ui64 DataSize;
- ui64 GroupDataSize;
- TRowId ErasedRowCount;
+ TPageId PageId_;
+ TRowId RowCount_;
+ ui64 DataSize_;
+ ui64 GroupDataSize_;
+ TRowId ErasedRowCount_;
auto operator<=>(const TChild&) const = default;
- TRowId GetNonErasedRowCount() const noexcept {
- return RowCount - ErasedRowCount;
+ inline TPageId GetPageId() const noexcept {
+ return PageId_;
+ }
+
+ inline TRowId GetRowCount() const noexcept {
+ return RowCount_;
+ }
+
+ inline ui64 GetDataSize() const noexcept {
+ return DataSize_;
+ }
+
+ inline ui64 GetGroupDataSize() const noexcept {
+ return GroupDataSize_;
+ }
+
+ inline TRowId GetErasedRowCount() const noexcept {
+ return ErasedRowCount_;
+ }
+
+ inline TRowId GetNonErasedRowCount() const noexcept {
+ return RowCount_ - ErasedRowCount_;
}
- ui64 GetTotalDataSize() const noexcept {
- return DataSize + GroupDataSize;
+ inline ui64 GetTotalDataSize() const noexcept {
+ return DataSize_ + GroupDataSize_;
}
TString ToString() const noexcept {
TStringBuilder result;
- result << "PageId: " << PageId << " RowCount: " << RowCount << " DataSize: " << DataSize;
- if (GroupDataSize) {
- result << " GroupDataSize: " << GroupDataSize;
+ result << "PageId: " << GetPageId() << " RowCount: " << GetRowCount() << " DataSize: " << GetDataSize();
+ if (GetGroupDataSize()) {
+ result << " GroupDataSize: " << GetGroupDataSize();
}
- result << " ErasedRowCount: " << ErasedRowCount;
+ result << " ErasedRowCount: " << GetErasedRowCount();
return result;
}
} Y_PACKED;
static_assert(sizeof(TChild) == 36, "Invalid TBtreeIndexNode TChild size");
- static_assert(offsetof(TChild, PageId) == offsetof(TShortChild, PageId));
- static_assert(offsetof(TChild, RowCount) == offsetof(TShortChild, RowCount));
- static_assert(offsetof(TChild, DataSize) == offsetof(TShortChild, DataSize));
+ static_assert(offsetof(TChild, PageId_) == offsetof(TShortChild, PageId_));
+ static_assert(offsetof(TChild, RowCount_) == offsetof(TShortChild, RowCount_));
+ static_assert(offsetof(TChild, DataSize_) == offsetof(TShortChild, DataSize_));
#pragma pack(pop)
@@ -357,19 +389,19 @@ namespace NKikimr::NTable::NPage {
auto range = xrange(0u, childrenCount);
const auto cmp = [this](TRowId rowId, TPos pos) {
- return rowId < GetShortChild(pos).RowCount;
+ return rowId < GetShortChild(pos).GetRowCount();
};
TRecIdx result;
if (!on) {
// Will do a full binary search on full range
- } else if (GetShortChild(*on).RowCount <= rowId) {
+ } else if (GetShortChild(*on).GetRowCount() <= rowId) {
// Try a short linear search first
result = *on;
for (int linear = 0; linear < 4; ++linear) {
result++;
Y_ABORT_UNLESS(result < childrenCount, "Should always seek some child");
- if (GetShortChild(result).RowCount > rowId) {
+ if (GetShortChild(result).GetRowCount() > rowId) {
return result;
}
}
@@ -383,7 +415,7 @@ namespace NKikimr::NTable::NPage {
if (result == 0) {
return 0;
}
- if (GetShortChild(result - 1).RowCount <= rowId) {
+ if (GetShortChild(result - 1).GetRowCount() <= rowId) {
return result;
}
result--;
diff --git a/ydb/core/tablet_flat/flat_page_btree_index_writer.h b/ydb/core/tablet_flat/flat_page_btree_index_writer.h
index 8f3a83a3fa..837f276cca 100644
--- a/ydb/core/tablet_flat/flat_page_btree_index_writer.h
+++ b/ydb/core/tablet_flat/flat_page_btree_index_writer.h
@@ -50,7 +50,7 @@ namespace NKikimr::NTable::NPage {
}
void AddChild(TChild child) {
- Y_ABORT_UNLESS(child.ErasedRowCount == 0 || !IsShortChildFormat(), "Short format can't have ErasedRowCount");
+ Y_ABORT_UNLESS(child.GetErasedRowCount() == 0 || !IsShortChildFormat(), "Short format can't have ErasedRowCount");
Children.push_back(child);
}
@@ -249,9 +249,9 @@ namespace NKikimr::NTable::NPage {
void PlaceChild(const TChild& child) noexcept
{
if (IsShortChildFormat()) {
- Y_DEBUG_ABORT_UNLESS(child.GroupDataSize == 0);
- Y_DEBUG_ABORT_UNLESS(child.ErasedRowCount == 0);
- Place<TShortChild>() = TShortChild{child.PageId, child.RowCount, child.DataSize};
+ Y_DEBUG_ABORT_UNLESS(child.GetGroupDataSize() == 0);
+ Y_DEBUG_ABORT_UNLESS(child.GetErasedRowCount() == 0);
+ Place<TShortChild>() = TShortChild{child.GetPageId(), child.GetRowCount(), child.GetDataSize()};
} else {
Place<TChild>() = child;
}
@@ -377,15 +377,15 @@ namespace NKikimr::NTable::NPage {
}
void AddShortChild(TShortChild child) {
- AddChild(TChild{child.PageId, child.RowCount, child.DataSize, 0, 0});
+ AddChild(TChild{child.GetPageId(), child.GetRowCount(), child.GetDataSize(), 0, 0});
}
void AddChild(TChild child) {
// aggregate in order to perform search by row id from any leaf node
- child.RowCount = (ChildRowCount += child.RowCount);
- child.DataSize = (ChildDataSize += child.DataSize);
- child.GroupDataSize = (ChildGroupDataSize += child.GroupDataSize);
- child.ErasedRowCount = (ChildErasedRowCount += child.ErasedRowCount);
+ child.RowCount_ = (ChildRowCount += child.GetRowCount());
+ child.DataSize_ = (ChildDataSize += child.GetDataSize());
+ child.GroupDataSize_ = (ChildGroupDataSize += child.GetGroupDataSize());
+ child.ErasedRowCount_ = (ChildErasedRowCount += child.GetErasedRowCount());
Levels[0].PushChild(child);
}
@@ -478,7 +478,7 @@ namespace NKikimr::NTable::NPage {
Levels.emplace_back();
Y_ABORT_UNLESS(Levels.size() < Max<ui32>(), "Levels size is out of bounds");
}
- lastChild.PageId = pageId;
+ lastChild.PageId_ = pageId;
Levels[levelIndex + 1].PushChild(lastChild);
if (!last) {
Levels[levelIndex + 1].PushKey(Levels[levelIndex].PopKey());
diff --git a/ydb/core/tablet_flat/flat_part_charge_btree_index.h b/ydb/core/tablet_flat/flat_part_charge_btree_index.h
index 68cb63b39a..dee2c63bc6 100644
--- a/ydb/core/tablet_flat/flat_part_charge_btree_index.h
+++ b/ydb/core/tablet_flat/flat_part_charge_btree_index.h
@@ -74,7 +74,7 @@ public:
const TRowId sliceBeginRowId = beginRowId, sliceEndRowId = endRowId;
const auto& meta = Part->IndexPages.GetBTree({});
Y_ABORT_UNLESS(beginRowId < endRowId);
- Y_ABORT_UNLESS(endRowId <= meta.RowCount);
+ Y_ABORT_UNLESS(endRowId <= meta.GetRowCount());
if (Y_UNLIKELY(key1 && key2 && Compare(key1, key2, keyDefaults) > 0)) {
key2 = key1; // will not go further than key1
@@ -82,8 +82,8 @@ public:
}
TVector<TNodeState> level, nextLevel(::Reserve(3));
- TPageId key1PageId = key1 ? meta.PageId : Max<TPageId>();
- TPageId key2PageId = key2 ? meta.PageId : Max<TPageId>();
+ TPageId key1PageId = key1 ? meta.GetPageId() : Max<TPageId>();
+ TPageId key2PageId = key2 ? meta.GetPageId() : Max<TPageId>();
TChildState firstChild = BuildRootChildState(meta);
const auto iterateLevel = [&](const auto& tryHandleChild) {
@@ -139,17 +139,17 @@ public:
if (child.PageId == key1PageId) {
TRecIdx pos = node.Seek(ESeek::Lower, key1, Scheme.Groups[0].ColsKeyIdx, &keyDefaults);
auto& key1Child = node.GetChild(pos);
- key1PageId = key1Child.PageId;
+ key1PageId = key1Child.GetPageId();
if (pos) {
- beginRowId = Max(beginRowId, node.GetChild(pos - 1).RowCount); // move beginRowId to the first key >= key1
+ beginRowId = Max(beginRowId, node.GetChild(pos - 1).GetRowCount()); // move beginRowId to the first key >= key1
}
}
if (child.PageId == key2PageId) {
TRecIdx pos = node.Seek(ESeek::Lower, key2, Scheme.Groups[0].ColsKeyIdx, &keyDefaults);
auto& key2Child = node.GetChild(pos);
- key2PageId = key2Child.PageId;
- endRowId = Min(endRowId, key2Child.RowCount + 1); // move endRowId - 1 to the first key > key2
- if (key2Child.RowCount <= sliceBeginRowId) {
+ key2PageId = key2Child.GetPageId();
+ endRowId = Min(endRowId, key2Child.GetRowCount() + 1); // move endRowId - 1 to the first key > key2
+ if (key2Child.GetRowCount() <= sliceBeginRowId) {
hasValidRowsRange = false; // key2 is before current slice
endRowId = Max(endRowId, sliceBeginRowId + 1); // always load sliceBeginRowId regardless of key2
}
@@ -224,7 +224,7 @@ public:
const TRowId sliceBeginRowId = beginRowId, sliceEndRowId = endRowId;
const auto& meta = Part->IndexPages.GetBTree({});
Y_ABORT_UNLESS(beginRowId < endRowId);
- Y_ABORT_UNLESS(endRowId <= meta.RowCount);
+ Y_ABORT_UNLESS(endRowId <= meta.GetRowCount());
if (Y_UNLIKELY(key1 && key2 && Compare(key2, key1, keyDefaults) > 0)) {
key2 = key1; // will not go further than key1
@@ -233,8 +233,8 @@ public:
// level's nodes is in reverse order
TVector<TNodeState> level, nextLevel(::Reserve(3));
- TPageId key1PageId = key1 ? meta.PageId : Max<TPageId>();
- TPageId key2PageId = key2 ? meta.PageId : Max<TPageId>();
+ TPageId key1PageId = key1 ? meta.GetPageId() : Max<TPageId>();
+ TPageId key2PageId = key2 ? meta.GetPageId() : Max<TPageId>();
TChildState lastChild = BuildRootChildState(meta);
const auto iterateLevel = [&](const auto& tryHandleChild) {
@@ -290,16 +290,16 @@ public:
if (child.PageId == key1PageId) {
TRecIdx pos = node.SeekReverse(ESeek::Lower, key1, Scheme.Groups[0].ColsKeyIdx, &keyDefaults);
auto& key1Child = node.GetChild(pos);
- key1PageId = key1Child.PageId;
- endRowId = Min(endRowId, key1Child.RowCount); // move endRowId - 1 to the last key <= key1
+ key1PageId = key1Child.GetPageId();
+ endRowId = Min(endRowId, key1Child.GetRowCount()); // move endRowId - 1 to the last key <= key1
}
if (child.PageId == key2PageId) {
TRecIdx pos = node.Seek(ESeek::Lower, key2, Scheme.Groups[0].ColsKeyIdx, &keyDefaults);
- key2PageId = node.GetChild(pos).PageId;
+ key2PageId = node.GetChild(pos).GetPageId();
if (pos) {
auto& prevKey2Child = node.GetChild(pos - 1);
- beginRowId = Max(beginRowId, prevKey2Child.RowCount - 1); // move beginRowId to the last key < key2
- if (prevKey2Child.RowCount >= sliceEndRowId) {
+ beginRowId = Max(beginRowId, prevKey2Child.GetRowCount() - 1); // move beginRowId to the last key < key2
+ if (prevKey2Child.GetRowCount() >= sliceEndRowId) {
hasValidRowsRange = false; // key2 is after current slice
beginRowId = Min(beginRowId, sliceEndRowId - 1); // always load endRowId - 1 regardless of keys
}
@@ -586,10 +586,10 @@ private:
const TGroupId groupId(0, true);
const auto& meta = Part->IndexPages.GetBTree(TGroupId{0, true});
- TRowId beginRowId = 0, endRowId = meta.RowCount;
+ TRowId beginRowId = 0, endRowId = meta.GetRowCount();
TVector<TNodeState> level, nextLevel(::Reserve(3));
- TPageId key1PageId = meta.PageId, key2PageId = meta.PageId;
+ TPageId key1PageId = meta.GetPageId(), key2PageId = meta.GetPageId();
const auto iterateLevel = [&](const auto& tryHandleChild) {
for (const auto &node : level) {
@@ -625,16 +625,16 @@ private:
if (child.PageId == key1PageId) {
TRecIdx pos = node.Seek(ESeek::Lower, key1, scheme.ColsKeyIdx, keyDefaults);
auto& key1Child = node.GetShortChild(pos);
- key1PageId = key1Child.PageId;
+ key1PageId = key1Child.GetPageId();
if (pos) {
- beginRowId = Max(beginRowId, node.GetShortChild(pos - 1).RowCount); // move beginRowId to the first key >= key1
+ beginRowId = Max(beginRowId, node.GetShortChild(pos - 1).GetRowCount()); // move beginRowId to the first key >= key1
}
}
if (child.PageId == key2PageId) {
TRecIdx pos = node.Seek(ESeek::Lower, key2, scheme.ColsKeyIdx, keyDefaults);
auto& key2Child = node.GetShortChild(pos);
- key2PageId = key2Child.PageId;
- endRowId = Min(endRowId, key2Child.RowCount); // move endRowId to the first key > key2
+ key2PageId = key2Child.GetPageId();
+ endRowId = Min(endRowId, key2Child.GetRowCount()); // move endRowId to the first key > key2
}
return true;
} else {
@@ -704,7 +704,7 @@ private:
private:
ui64 GetPrevBytes(const TBtreeIndexMeta& meta, TRowId rowId) const {
- TPageId pageId = meta.PageId;
+ TPageId pageId = meta.GetPageId();
ui64 result = 0;
for (ui32 height = 0; height < meta.LevelCount; height++) {
@@ -714,9 +714,9 @@ private:
}
auto node = TBtreeIndexNode(*page);
auto pos = node.Seek(rowId);
- pageId = node.GetShortChild(pos).PageId;
+ pageId = node.GetShortChild(pos).GetPageId();
if (pos) {
- result = node.GetShortChild(pos - 1).DataSize;
+ result = node.GetShortChild(pos - 1).GetDataSize();
}
}
@@ -724,8 +724,8 @@ private:
}
ui64 GetBytes(TBtreeIndexMeta meta, TRowId rowId) const {
- TPageId pageId = meta.PageId;
- ui64 result = meta.DataSize;
+ TPageId pageId = meta.GetPageId();
+ ui64 result = meta.GetDataSize();
for (ui32 height = 0; height < meta.LevelCount; height++) {
auto page = Env->TryGetPage(Part, pageId, {});
@@ -734,8 +734,8 @@ private:
}
auto node = TBtreeIndexNode(*page);
auto pos = node.Seek(rowId);
- pageId = node.GetShortChild(pos).PageId;
- result = node.GetShortChild(pos).DataSize;
+ pageId = node.GetShortChild(pos).GetPageId();
+ result = node.GetShortChild(pos).GetDataSize();
}
return result;
@@ -778,24 +778,24 @@ private:
}
TChildState BuildRootChildState(const TBtreeIndexMeta& meta) const noexcept {
- return TChildState(meta.PageId,
- 0, meta.RowCount,
+ return TChildState(meta.GetPageId(),
+ 0, meta.GetRowCount(),
0, meta.GetNonErasedRowCount(),
- 0, meta.DataSize);
+ 0, meta.GetDataSize());
}
TChildState BuildChildState(const TNodeState& parent, TChild child, const TChild* prevChild) const noexcept {
- return TChildState(child.PageId,
- prevChild ? prevChild->RowCount : parent.BeginRowId, child.RowCount,
+ return TChildState(child.GetPageId(),
+ prevChild ? prevChild->GetRowCount() : parent.BeginRowId, child.GetRowCount(),
prevChild ? prevChild->GetNonErasedRowCount() : parent.PrevItems, child.GetNonErasedRowCount(),
- prevChild ? prevChild->DataSize : parent.PrevBytes, child.DataSize);
+ prevChild ? prevChild->GetDataSize() : parent.PrevBytes, child.GetDataSize());
}
TChildState BuildChildState(const TNodeState& parent, TShortChild child, const TShortChild* prevChild) const noexcept {
- return TChildState(child.PageId,
- prevChild ? prevChild->RowCount : parent.BeginRowId, child.RowCount,
- prevChild ? prevChild->RowCount : parent.BeginRowId, child.RowCount,
- prevChild ? prevChild->DataSize : parent.PrevBytes, child.DataSize);
+ return TChildState(child.GetPageId(),
+ prevChild ? prevChild->GetRowCount() : parent.BeginRowId, child.GetRowCount(),
+ prevChild ? prevChild->GetRowCount() : parent.BeginRowId, child.GetRowCount(),
+ prevChild ? prevChild->GetDataSize() : parent.PrevBytes, child.GetDataSize());
}
bool LimitExceeded(ui64 prev, ui64 current, ui64 limit) const noexcept {
diff --git a/ydb/core/tablet_flat/flat_part_dump.cpp b/ydb/core/tablet_flat/flat_part_dump.cpp
index 8908c088df..e1bdd4e253 100644
--- a/ydb/core/tablet_flat/flat_part_dump.cpp
+++ b/ydb/core/tablet_flat/flat_part_dump.cpp
@@ -304,14 +304,14 @@ namespace {
}
auto dumpChild = [&] (NPage::TBtreeIndexNode::TChild child) {
- if (part.GetPageType(child.PageId, {}) == EPage::BTreeIndex) {
+ if (part.GetPageType(child.GetPageId(), {}) == EPage::BTreeIndex) {
BTreeIndexNode(part, child, level + 1);
} else {
Out << intend << " | " << child.ToString() << Endl;
}
};
- auto page = Env->TryGetPage(&part, meta.PageId, {});
+ auto page = Env->TryGetPage(&part, meta.GetPageId(), {});
if (!page) {
Out << intend << " | -- the rest of the index pages aren't loaded" << Endl;
return;
diff --git a/ydb/core/tablet_flat/flat_part_index_iter_bree_index.h b/ydb/core/tablet_flat/flat_part_index_iter_bree_index.h
index d686aedfa6..9185a04a4c 100644
--- a/ydb/core/tablet_flat/flat_part_index_iter_bree_index.h
+++ b/ydb/core/tablet_flat/flat_part_index_iter_bree_index.h
@@ -118,7 +118,7 @@ public:
, State(Reserve(Meta.LevelCount + 1))
{
const static TCellsIterable EmptyKey(static_cast<const char*>(nullptr), TColumns());
- State.emplace_back(Meta.PageId, 0, GetEndRowId(), EmptyKey, EmptyKey);
+ State.emplace_back(Meta.GetPageId(), 0, GetEndRowId(), EmptyKey, EmptyKey);
}
EReady Seek(TRowId rowId) override {
@@ -246,7 +246,7 @@ public:
}
TRowId GetEndRowId() const override {
- return Meta.RowCount;
+ return Meta.GetRowCount();
}
TPageId GetPageId() const override {
@@ -346,13 +346,13 @@ private:
auto& child = current.Node->GetShortChild(pos);
- TRowId beginRowId = pos ? current.Node->GetShortChild(pos - 1).RowCount : current.BeginRowId;
- TRowId endRowId = child.RowCount;
-
+ TPageId pageId = child.GetPageId();
+ TRowId beginRowId = pos ? current.Node->GetShortChild(pos - 1).GetRowCount() : current.BeginRowId;
+ TRowId endRowId = child.GetRowCount();
TCellsIterable beginKey = pos ? current.Node->GetKeyCellsIterable(pos - 1, GroupInfo.ColsKeyIdx) : current.BeginKey;
TCellsIterable endKey = pos < current.Node->GetKeysCount() ? current.Node->GetKeyCellsIterable(pos, GroupInfo.ColsKeyIdx) : current.EndKey;
- State.emplace_back(child.PageId, beginRowId, endRowId, beginKey, endKey);
+ State.emplace_back(pageId, beginRowId, endRowId, beginKey, endKey);
}
bool TryLoad(TNodeState& state) {
diff --git a/ydb/core/tablet_flat/flat_part_loader.cpp b/ydb/core/tablet_flat/flat_part_loader.cpp
index fad1d99f59..164903684b 100644
--- a/ydb/core/tablet_flat/flat_part_loader.cpp
+++ b/ydb/core/tablet_flat/flat_part_loader.cpp
@@ -140,7 +140,7 @@ void TLoader::StageParseMeta() noexcept
<< " " << Packs.size() << "s " << meta.TotalPages() << "pg"
<< ", Scheme " << SchemeId
<< ", FlatIndex " << (FlatGroupIndexes.size() ? FlatGroupIndexes[0] : Max<TPageId>())
- << ", BTreeIndex " << (BTreeGroupIndexes.size() ? BTreeGroupIndexes[0].PageId : Max<TPageId>())
+ << ", BTreeIndex " << (BTreeGroupIndexes.size() ? BTreeGroupIndexes[0].GetPageId() : Max<TPageId>())
<< ", Blobs " << GlobsId << ", Small " << SmallId
<< ", Large " << LargeId << ", ByKey " << ByKeyId
<< ", Garbage " << GarbageStatsId
diff --git a/ydb/core/tablet_flat/flat_part_writer.h b/ydb/core/tablet_flat/flat_part_writer.h
index c9dafac34e..bef4e44a51 100644
--- a/ydb/core/tablet_flat/flat_part_writer.h
+++ b/ydb/core/tablet_flat/flat_part_writer.h
@@ -672,13 +672,13 @@ namespace NTable {
for (bool history : {false, true}) {
for (auto meta : history ? Current.BTreeHistoricIndexes : Current.BTreeGroupIndexes) {
auto m = history ? lay->AddBTreeHistoricIndexes() : lay->AddBTreeGroupIndexes();
- m->SetRootPageId(meta.PageId);
+ m->SetRootPageId(meta.GetPageId());
m->SetLevelCount(meta.LevelCount);
m->SetIndexSize(meta.IndexSize);
- m->SetDataSize(meta.DataSize);
- m->SetGroupDataSize(meta.GroupDataSize);
- m->SetRowCount(meta.RowCount);
- m->SetErasedRowCount(meta.ErasedRowCount);
+ m->SetDataSize(meta.GetDataSize());
+ m->SetGroupDataSize(meta.GetGroupDataSize());
+ m->SetRowCount(meta.GetRowCount());
+ m->SetErasedRowCount(meta.GetErasedRowCount());
}
}
}
diff --git a/ydb/core/tablet_flat/flat_stat_part_group_btree_index.h b/ydb/core/tablet_flat/flat_stat_part_group_btree_index.h
index 3c1ff86ec5..24c3ce1302 100644
--- a/ydb/core/tablet_flat/flat_stat_part_group_btree_index.h
+++ b/ydb/core/tablet_flat/flat_stat_part_group_btree_index.h
@@ -58,7 +58,7 @@ public:
bool ready = true;
TVector<TNodeState> nextNodes;
- Nodes.emplace_back(Meta.PageId, 0, GetEndRowId(), EmptyKey, 0, Meta.DataSize);
+ Nodes.emplace_back(Meta.GetPageId(), 0, GetEndRowId(), EmptyKey, 0, Meta.GetDataSize());
for (ui32 height = 0; height < Meta.LevelCount; height++) {
bool hasChanges = false;
@@ -86,13 +86,14 @@ public:
for (TRecIdx pos : xrange<TRecIdx>(0, node.GetChildrenCount())) {
auto& child = node.GetShortChild(pos);
- TRowId beginRowId = pos ? node.GetShortChild(pos - 1).RowCount : nodeState.BeginRowId;
- TRowId endRowId = child.RowCount;
+ TPageId pageId = child.GetPageId();
+ TRowId beginRowId = pos ? node.GetShortChild(pos - 1).GetRowCount() : nodeState.BeginRowId;
+ TRowId endRowId = child.GetRowCount();
TCellsIterable beginKey = pos ? node.GetKeyCellsIterable(pos - 1, GroupInfo.ColsKeyIdx) : nodeState.BeginKey;
- ui64 beginDataSize = pos ? node.GetShortChild(pos - 1).DataSize : nodeState.BeginDataSize;
- ui64 endDataSize = child.DataSize;
+ ui64 beginDataSize = pos ? node.GetShortChild(pos - 1).GetDataSize() : nodeState.BeginDataSize;
+ ui64 endDataSize = child.GetDataSize();
- nextNodes.emplace_back(child.PageId, beginRowId, endRowId, beginKey, beginDataSize, endDataSize);
+ nextNodes.emplace_back(pageId, beginRowId, endRowId, beginKey, beginDataSize, endDataSize);
hasChanges = true;
}
}
@@ -137,7 +138,7 @@ public:
}
TRowId GetEndRowId() const override {
- return Meta.RowCount;
+ return Meta.GetRowCount();
}
TPageId GetPageId() const override {
diff --git a/ydb/core/tablet_flat/flat_stat_table_btree_index.h b/ydb/core/tablet_flat/flat_stat_table_btree_index.h
index d7f64e720e..a82c8e70a4 100644
--- a/ydb/core/tablet_flat/flat_stat_table_btree_index.h
+++ b/ydb/core/tablet_flat/flat_stat_table_btree_index.h
@@ -21,11 +21,11 @@ ui64 GetPrevDataSize(const TPart* part, TGroupId groupId, TRowId rowId, IPages*
if (rowId == 0) {
return 0;
}
- if (rowId >= meta.RowCount) {
- return meta.DataSize;
+ if (rowId >= meta.GetRowCount()) {
+ return meta.GetDataSize();
}
- TPageId pageId = meta.PageId;
+ TPageId pageId = meta.GetPageId();
ui64 prevDataSize = 0;
for (ui32 height = 0; height < meta.LevelCount; height++) {
@@ -37,9 +37,9 @@ ui64 GetPrevDataSize(const TPart* part, TGroupId groupId, TRowId rowId, IPages*
auto node = TBtreeIndexNode(*page);
auto pos = node.Seek(rowId);
- pageId = node.GetShortChild(pos).PageId;
+ pageId = node.GetShortChild(pos).GetPageId();
if (pos) {
- prevDataSize = node.GetShortChild(pos - 1).DataSize;
+ prevDataSize = node.GetShortChild(pos - 1).GetDataSize();
}
}
@@ -55,12 +55,12 @@ ui64 GetPrevHistoricDataSize(const TPart* part, TGroupId groupId, TRowId rowId,
historicRowId = 0;
return 0;
}
- if (rowId >= part->IndexPages.GetBTree({}).RowCount) {
- historicRowId = meta.RowCount;
- return meta.DataSize;
+ if (rowId >= part->IndexPages.GetBTree({}).GetRowCount()) {
+ historicRowId = meta.GetRowCount();
+ return meta.GetDataSize();
}
- TPageId pageId = meta.PageId;
+ TPageId pageId = meta.GetPageId();
ui64 prevDataSize = 0;
historicRowId = 0;
@@ -83,11 +83,11 @@ ui64 GetPrevHistoricDataSize(const TPart* part, TGroupId groupId, TRowId rowId,
auto node = TBtreeIndexNode(*page);
auto pos = node.Seek(ESeek::Lower, key1, part->Scheme->HistoryGroup.ColsKeyIdx, part->Scheme->HistoryKeys.Get());
- pageId = node.GetShortChild(pos).PageId;
+ pageId = node.GetShortChild(pos).GetPageId();
if (pos) {
const auto& prevChild = node.GetShortChild(pos - 1);
- prevDataSize = prevChild.DataSize;
- historicRowId = prevChild.RowCount;
+ prevDataSize = prevChild.GetDataSize();
+ historicRowId = prevChild.GetRowCount();
}
}
diff --git a/ydb/core/tablet_flat/flat_stat_table_btree_index_histogram.h b/ydb/core/tablet_flat/flat_stat_table_btree_index_histogram.h
index 367f41972a..78bb64b69c 100644
--- a/ydb/core/tablet_flat/flat_stat_table_btree_index_histogram.h
+++ b/ydb/core/tablet_flat/flat_stat_table_btree_index_histogram.h
@@ -46,7 +46,7 @@ public:
struct TGetRowCount {
static ui64 Get(const TChild& child) noexcept {
- return child.RowCount;
+ return child.GetRowCount();
}
};
@@ -153,7 +153,7 @@ public:
auto& part = Subset.Flatten[index];
auto& meta = part->IndexPages.GetBTree({});
parts.emplace_back(part.Part.Get(), index);
- LoadedStateNodes.emplace_back(meta.PageId, meta.LevelCount, 0, meta.RowCount, EmptyKey, EmptyKey, 0, TGetSize::Get(meta));
+ LoadedStateNodes.emplace_back(meta.GetPageId(), meta.LevelCount, 0, meta.GetRowCount(), EmptyKey, EmptyKey, 0, TGetSize::Get(meta));
ready &= SlicePart<TGetSize>(parts.back(), *part.Slices, LoadedStateNodes.back());
endSize += parts.back().GetSize();
}
@@ -446,8 +446,8 @@ private:
for (auto pos : xrange(bTreeNode.GetChildrenCount())) {
auto& child = bTreeNode.GetChild(pos);
- LoadedStateNodes.emplace_back(child.PageId, parent.Level - 1,
- pos ? bTreeNode.GetChild(pos - 1).RowCount : parent.BeginRowId, child.RowCount,
+ LoadedStateNodes.emplace_back(child.GetPageId(), parent.Level - 1,
+ pos ? bTreeNode.GetChild(pos - 1).GetRowCount() : parent.BeginRowId, child.GetRowCount(),
pos ? bTreeNode.GetKeyCellsIterable(pos - 1, groupInfo.ColsKeyData) : parent.BeginKey,
pos < bTreeNode.GetKeysCount() ? bTreeNode.GetKeyCellsIterable(pos, groupInfo.ColsKeyData) : parent.EndKey,
pos ? TGetSize::Get(bTreeNode.GetChild(pos - 1)) : parent.BeginSize, TGetSize::Get(child));
diff --git a/ydb/core/tablet_flat/ut/ut_btree_index_nodes.cpp b/ydb/core/tablet_flat/ut/ut_btree_index_nodes.cpp
index 78278bbe98..9e266f69f9 100644
--- a/ydb/core/tablet_flat/ut/ut_btree_index_nodes.cpp
+++ b/ydb/core/tablet_flat/ut/ut_btree_index_nodes.cpp
@@ -73,18 +73,18 @@ namespace {
TChild child;
if (node.IsShortChildFormat()) {
auto shortChild = node.GetShortChild(pos);
- child = {shortChild.PageId, shortChild.RowCount, shortChild.DataSize, 0, 0};
+ child = {shortChild.GetPageId(), shortChild.GetRowCount(), shortChild.GetDataSize(), 0, 0};
} else {
child = node.GetChild(pos);
}
- if (child.PageId < 1000) {
+ if (child.GetPageId() < 1000) {
Dump(child, groupInfo, store, level + 1);
} else {
Cerr << intend << " | " << child.ToString() << Endl;
}
};
- auto node = TBtreeIndexNode(*store.GetPage(0, meta.PageId));
+ auto node = TBtreeIndexNode(*store.GetPage(0, meta.GetPageId()));
auto label = node.Label();
@@ -152,7 +152,7 @@ namespace {
UNIT_ASSERT_VALUES_EQUAL(node.GetKeysCount() + 1, children.size());
for (TRecIdx i : xrange(node.GetKeysCount() + 1)) {
UNIT_ASSERT_EQUAL(node.GetChild(i), children[i]);
- TShortChild shortChild{children[i].PageId, children[i].RowCount, children[i].DataSize};
+ TShortChild shortChild{children[i].GetPageId(), children[i].GetRowCount(), children[i].GetDataSize()};
UNIT_ASSERT_EQUAL(node.GetShortChild(i), shortChild);
}
}
@@ -299,7 +299,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexNode) {
writer.AddKey(deserialized.GetCells());
}
for (auto &c : children) {
- writer.AddChild({c.PageId, c.RowCount, c.DataSize, 0, 0});
+ writer.AddChild({c.GetPageId(), c.GetRowCount(), c.GetDataSize(), 0, 0});
}
auto serialized = writer.Finish();
@@ -343,7 +343,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexNode) {
writer.AddKey(deserialized.GetCells());
}
for (auto &c : children) {
- writer.AddChild({c.PageId, c.RowCount, c.DataSize, 0, 0});
+ writer.AddChild({c.GetPageId(), c.GetRowCount(), c.GetDataSize(), 0, 0});
}
auto serialized = writer.Finish();
@@ -542,7 +542,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexBuilder) {
TBtreeIndexMeta expected{{0, 1155, 11055, 22055, 385}, 1, 683};
UNIT_ASSERT_EQUAL_C(result, expected, "Got " + result.ToString());
- CheckKeys(result.PageId, keys, builder.GroupInfo, pager.Back());
+ CheckKeys(result.GetPageId(), keys, builder.GroupInfo, pager.Back());
}
Y_UNIT_TEST(FewNodes) {
@@ -576,10 +576,10 @@ Y_UNIT_TEST_SUITE(TBtreeIndexBuilder) {
TBtreeIndexMeta expected{{9, 0, 0, 0, 0}, 3, 1790};
for (auto c : children) {
- expected.RowCount += c.RowCount;
- expected.DataSize += c.DataSize;
- expected.GroupDataSize += c.GroupDataSize;
- expected.ErasedRowCount += c.ErasedRowCount;
+ expected.RowCount_ += c.GetRowCount();
+ expected.DataSize_ += c.GetDataSize();
+ expected.GroupDataSize_ += c.GetGroupDataSize();
+ expected.ErasedRowCount_ += c.GetErasedRowCount();
}
UNIT_ASSERT_EQUAL_C(result, expected, "Got " + result.ToString());
@@ -730,7 +730,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
auto pages = IndexTools::CountMainPages(*part);
UNIT_ASSERT_VALUES_EQUAL(pages, 2);
- TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].PageId, 10, 10480, 0, 0}, 1, 1131};
+ TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].GetPageId(), 10, 10480, 0, 0}, 1, 1131};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected, "Got " + part->IndexPages.BTreeGroups[0].ToString());
}
@@ -763,7 +763,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
auto pages = IndexTools::CountMainPages(*part);
UNIT_ASSERT_VALUES_EQUAL(pages, 117);
- TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].PageId, 700, 733140, 0, 0}, 3, 87172};
+ TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].GetPageId(), 700, 733140, 0, 0}, 3, 87172};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected, "Got " + part->IndexPages.BTreeGroups[0].ToString());
}
@@ -797,7 +797,7 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
auto pages = IndexTools::CountMainPages(*part);
UNIT_ASSERT_VALUES_EQUAL(pages, 31);
- TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].PageId, 1000, 22098, 0, 143}, 2, 1668};
+ TBtreeIndexMeta expected{{part->IndexPages.BTreeGroups[0].GetPageId(), 1000, 22098, 0, 143}, 2, 1668};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected, "Got " + part->IndexPages.BTreeGroups[0].ToString());
}
@@ -831,10 +831,10 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
auto pages = IndexTools::CountMainPages(*part);
UNIT_ASSERT_VALUES_EQUAL(pages, 334);
- TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].PageId, 1000, 16680, 21890, 0}, 3, 18430};
+ TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].GetPageId(), 1000, 16680, 21890, 0}, 3, 18430};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected0, "Got " + part->IndexPages.BTreeGroups[0].ToString());
- TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].PageId, 1000, 21890, 0, 0}, 3, 6497};
+ TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].GetPageId(), 1000, 21890, 0, 0}, 3, 6497};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[1], expected1, "Got " + part->IndexPages.BTreeGroups[1].ToString());
}
@@ -876,16 +876,16 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
ui64 dataSizeHist0 = IndexTools::CountDataSize(*part, TGroupId{0, 1});
ui64 dataSizeHist1 = IndexTools::CountDataSize(*part, TGroupId{1, 1});
- TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].PageId, 1000, dataSize0, dataSize1+dataSizeHist0+dataSizeHist1, 0}, 3, 18430};
+ TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].GetPageId(), 1000, dataSize0, dataSize1+dataSizeHist0+dataSizeHist1, 0}, 3, 18430};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected0, "Got " + part->IndexPages.BTreeGroups[0].ToString());
- TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].PageId, 1000, dataSize1, 0, 0}, 3, 8284};
+ TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].GetPageId(), 1000, dataSize1, 0, 0}, 3, 8284};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[1], expected1, "Got " + part->IndexPages.BTreeGroups[1].ToString());
- TBtreeIndexMeta expectedHist0{{part->IndexPages.BTreeHistoric[0].PageId, 2000, dataSizeHist0, 0, 0}, 4, 34225};
+ TBtreeIndexMeta expectedHist0{{part->IndexPages.BTreeHistoric[0].GetPageId(), 2000, dataSizeHist0, 0, 0}, 4, 34225};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeHistoric[0], expectedHist0, "Got " + part->IndexPages.BTreeHistoric[0].ToString());
- TBtreeIndexMeta expectedHist1{{part->IndexPages.BTreeHistoric[1].PageId, 2000, dataSizeHist1, 0, 0}, 3, 16645};
+ TBtreeIndexMeta expectedHist1{{part->IndexPages.BTreeHistoric[1].GetPageId(), 2000, dataSizeHist1, 0, 0}, 3, 16645};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeHistoric[1], expectedHist1, "Got " + part->IndexPages.BTreeHistoric[1].ToString());
}
@@ -930,16 +930,16 @@ Y_UNIT_TEST_SUITE(TBtreeIndexTPart) {
ui64 dataSizeHist1 = IndexTools::CountDataSize(*part, TGroupId{1, 1});
ui64 groupDataSize = dataSize1+dataSizeHist0+dataSizeHist1 + 120463 + 7413329;
- TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].PageId, 1000, dataSize0, groupDataSize, 0}, 3, 18430};
+ TBtreeIndexMeta expected0{{part->IndexPages.BTreeGroups[0].GetPageId(), 1000, dataSize0, groupDataSize, 0}, 3, 18430};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[0], expected0, "Got " + part->IndexPages.BTreeGroups[0].ToString());
- TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].PageId, 1000, dataSize1, 0, 0}, 3, 6497};
+ TBtreeIndexMeta expected1{{part->IndexPages.BTreeGroups[1].GetPageId(), 1000, dataSize1, 0, 0}, 3, 6497};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeGroups[1], expected1, "Got " + part->IndexPages.BTreeGroups[1].ToString());
- TBtreeIndexMeta expectedHist0{{part->IndexPages.BTreeHistoric[0].PageId, 2000, dataSizeHist0, 0, 0}, 4, 34225};
+ TBtreeIndexMeta expectedHist0{{part->IndexPages.BTreeHistoric[0].GetPageId(), 2000, dataSizeHist0, 0, 0}, 4, 34225};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeHistoric[0], expectedHist0, "Got " + part->IndexPages.BTreeHistoric[0].ToString());
- TBtreeIndexMeta expectedHist1{{part->IndexPages.BTreeHistoric[1].PageId, 2000, dataSizeHist1, 0, 0}, 3, 13014};
+ TBtreeIndexMeta expectedHist1{{part->IndexPages.BTreeHistoric[1].GetPageId(), 2000, dataSizeHist1, 0, 0}, 3, 13014};
UNIT_ASSERT_EQUAL_C(part->IndexPages.BTreeHistoric[1], expectedHist1, "Got " + part->IndexPages.BTreeHistoric[1].ToString());
}
}
diff --git a/ydb/core/tablet_flat/ut/ut_charge.cpp b/ydb/core/tablet_flat/ut/ut_charge.cpp
index dde747f327..36bc354559 100644
--- a/ydb/core/tablet_flat/ut/ut_charge.cpp
+++ b/ydb/core/tablet_flat/ut/ut_charge.cpp
@@ -333,10 +333,10 @@ namespace {
}
for (auto &x : pages.BTreeGroups) {
- result.insert({mainGroupId, x.PageId});
+ result.insert({mainGroupId, x.GetPageId()});
}
for (auto &x : pages.BTreeHistoric) {
- result.insert({mainGroupId, x.PageId});
+ result.insert({mainGroupId, x.GetPageId()});
}
return result;
diff --git a/ydb/core/tablet_flat/ut/ut_stat.cpp b/ydb/core/tablet_flat/ut/ut_stat.cpp
index f13bc4ec9c..a021514725 100644
--- a/ydb/core/tablet_flat/ut/ut_stat.cpp
+++ b/ydb/core/tablet_flat/ut/ut_stat.cpp
@@ -108,7 +108,7 @@ namespace {
ui64 byIndexBytes = 0;
for (const auto& part : subset.Flatten) {
auto &root = part->IndexPages.GetBTree({});
- byIndexBytes += root.DataSize + root.GroupDataSize;
+ byIndexBytes += root.GetDataSize() + root.GetGroupDataSize();
}
UNIT_ASSERT_VALUES_EQUAL(byIndexBytes, expectedData);
}