Skip to content

Commit 523950c

Browse files
committed
KIKIMR-19521 BTreeIndex Builder
1 parent 7e96bc9 commit 523950c

File tree

4 files changed

+479
-78
lines changed

4 files changed

+479
-78
lines changed

ydb/core/tablet_flat/flat_page_btree_index.h

+9-5
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace NKikimr::NTable::NPage {
2424
TBtreeIndexNode page binary layout
2525
- TLabel - page label
2626
- THeader - page header
27-
- TKey[N] - keys data <-- var-size
2827
- TPgSize[N] - keys offsets
28+
- TKey[N] - keys data <-- var-size
2929
- TChild[N+1] - children
3030
*/
3131

@@ -118,7 +118,8 @@ namespace NKikimr::NTable::NPage {
118118

119119
TString ToString() const noexcept
120120
{
121-
return TStringBuilder() << "PageId: " << PageId << " Count: " << Count << " Size: " << Size;
121+
// copy values to prevent 'reference binding to misaligned address' error
122+
return TStringBuilder() << "PageId: " << TPageId(PageId) << " Count: " << TRowId(Count) << " Size: " << ui64(Size);
122123
}
123124
} Y_PACKED;
124125

@@ -137,12 +138,12 @@ namespace NKikimr::NTable::NPage {
137138
Keys.Count = header->KeysCount;
138139
size_t offset = sizeof(THeader);
139140

140-
Keys.Base = Raw.data();
141-
offset += header->KeysSize;
142-
143141
Keys.Offsets = TDeref<const TRecordsEntry>::At(header, offset);
144142
offset += Keys.Count * sizeof(TRecordsEntry);
145143

144+
Keys.Base = Raw.data();
145+
offset += header->KeysSize;
146+
146147
Children = TDeref<const TChild>::At(header, offset);
147148
offset += (1 + Keys.Count) * sizeof(TChild);
148149

@@ -177,4 +178,7 @@ namespace NKikimr::NTable::NPage {
177178
const TChild* Children;
178179
};
179180

181+
struct TBtreeIndexMeta : public TBtreeIndexNode::TChild {
182+
size_t LevelsCount;
183+
};
180184
}

0 commit comments

Comments
 (0)