@@ -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 ;
0 commit comments