Skip to content

Commit

Permalink
KIKIMR-19521 BTreeIndex Builder
Browse files Browse the repository at this point in the history
  • Loading branch information
kunga committed Oct 25, 2023
1 parent 7e96bc9 commit 523950c
Show file tree
Hide file tree
Showing 4 changed files with 479 additions and 78 deletions.
14 changes: 9 additions & 5 deletions ydb/core/tablet_flat/flat_page_btree_index.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ namespace NKikimr::NTable::NPage {
TBtreeIndexNode page binary layout
- TLabel - page label
- THeader - page header
- TKey[N] - keys data <-- var-size
- TPgSize[N] - keys offsets
- TKey[N] - keys data <-- var-size
- TChild[N+1] - children
*/

Expand Down Expand Up @@ -118,7 +118,8 @@ namespace NKikimr::NTable::NPage {

TString ToString() const noexcept
{
return TStringBuilder() << "PageId: " << PageId << " Count: " << Count << " Size: " << Size;
// copy values to prevent 'reference binding to misaligned address' error
return TStringBuilder() << "PageId: " << TPageId(PageId) << " Count: " << TRowId(Count) << " Size: " << ui64(Size);
}
} Y_PACKED;

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

Keys.Base = Raw.data();
offset += header->KeysSize;

Keys.Offsets = TDeref<const TRecordsEntry>::At(header, offset);
offset += Keys.Count * sizeof(TRecordsEntry);

Keys.Base = Raw.data();
offset += header->KeysSize;

Children = TDeref<const TChild>::At(header, offset);
offset += (1 + Keys.Count) * sizeof(TChild);

Expand Down Expand Up @@ -177,4 +178,7 @@ namespace NKikimr::NTable::NPage {
const TChild* Children;
};

struct TBtreeIndexMeta : public TBtreeIndexNode::TChild {
size_t LevelsCount;
};
}
Loading

0 comments on commit 523950c

Please sign in to comment.