Skip to content

Commit ee55ad0

Browse files
committed
check begin
1 parent cf90db5 commit ee55ad0

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

ydb/core/tablet_flat/flat_fwd_cache.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ namespace NFwd {
279279
TDeque<TPageEx> Pages;
280280
ui32 PagesBeginOffset = 0, PagesPendingOffset = 0;
281281
TDeque<TNodeState> Queue;
282-
TPageId EndPageId = 0;
282+
TPageId BeginPageId = Max<TPageId>(), EndPageId = 0;
283283
};
284284

285285
public:
@@ -301,6 +301,7 @@ namespace NFwd {
301301
auto& meta = Part->IndexPages.GetBTree(groupId);
302302
Levels.resize(meta.LevelCount + 1);
303303
Levels[0].Queue.push_back({meta.GetPageId(), meta.GetDataSize()});
304+
Levels[0].BeginPageId = 0;
304305
Levels[0].EndPageId = meta.GetPageId() + 1;
305306
if (meta.LevelCount) {
306307
IndexPageLocator.Add(meta.GetPageId(), GroupId, 0);
@@ -320,8 +321,8 @@ namespace NFwd {
320321
return {page, false, true};
321322
}
322323

323-
Y_ENSURE(pageId < level.EndPageId, "Requested page " << pageId << " is out of loaded slice "
324-
<< BeginRowId << " " << EndRowId << " " << level.EndPageId << " with index " << Part->IndexPages.GetBTree(GroupId).ToString());
324+
Y_ENSURE(level.BeginPageId <= pageId && pageId < level.EndPageId, "Requested page " << pageId << " is out of loaded slice "
325+
<< BeginRowId << " " << EndRowId << " " << level.BeginPageId << " " << level.EndPageId << " with index " << Part->IndexPages.GetBTree(GroupId).ToString());
325326

326327
DropPagesBefore(level, pageId);
327328
ShrinkPages(level);
@@ -437,6 +438,9 @@ namespace NFwd {
437438
auto& nextLevel = Levels[levelId + 1];
438439
Y_ENSURE(!nextLevel.Queue || nextLevel.Queue.back().PageId < child.GetPageId());
439440
nextLevel.Queue.push_back({child.GetPageId(), child.GetDataSize()});
441+
if (nextLevel.BeginPageId == Max<TPageId>()) {
442+
nextLevel.BeginPageId = child.GetPageId();
443+
}
440444
nextLevel.EndPageId = child.GetPageId() + 1;
441445
if (child.GetRowCount() >= EndRowId) {
442446
break;

ydb/core/tablet_flat/ut/ut_btree_index_iter_charge.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ namespace {
108108
Type7,
109109
// new types should go here
110110

111-
UpperLoopLimit
111+
End
112112
};
113113

114114
const ui32 Levels = Max<ui32>();
@@ -1074,7 +1074,7 @@ Y_UNIT_TEST_SUITE(TPartBtreeIndexIteration) {
10741074
}
10751075

10761076
Y_UNIT_TEST(OneNode_Slices) {
1077-
for (auto slices : xrange<ui32>(TTestParams::ESlices::None + 1, TTestParams::ESlices::UpperLoopLimit)) {
1077+
for (auto slices : xrange<ui32>(TTestParams::ESlices::None + 1, TTestParams::ESlices::End)) {
10781078
CheckPart({.Levels = 1, .Slices = TTestParams::ESlices(slices)});
10791079
}
10801080
}
@@ -1114,7 +1114,7 @@ Y_UNIT_TEST_SUITE(TPartBtreeIndexIteration) {
11141114
}
11151115

11161116
Y_UNIT_TEST(FewNodes_Slices) {
1117-
for (auto slices : xrange<ui32>(TTestParams::ESlices::None + 1, TTestParams::ESlices::UpperLoopLimit)) {
1117+
for (auto slices : xrange<ui32>(TTestParams::ESlices::None + 1, TTestParams::ESlices::End)) {
11181118
CheckPart({.Levels = 3, .Slices = TTestParams::ESlices(slices)});
11191119
}
11201120
}

0 commit comments

Comments
 (0)