@@ -297,12 +297,12 @@ namespace NTable {
297
297
return EReady::Data;
298
298
}
299
299
300
- EReady SeekToStart () noexcept
300
+ EReady SeekToSliceFirstRow () noexcept
301
301
{
302
302
return Seek (BeginRowId);
303
303
}
304
304
305
- EReady SeekToEnd () noexcept
305
+ EReady SeekToSliceLastRow () noexcept
306
306
{
307
307
return Seek (EndRowId - 1 );
308
308
}
@@ -828,16 +828,16 @@ namespace NTable {
828
828
return Main.Seek (rowId);
829
829
}
830
830
831
- EReady SeekToStart () noexcept
831
+ EReady SeekToSliceFirstRow () noexcept
832
832
{
833
833
ClearKey ();
834
- return Main.SeekToStart ();
834
+ return Main.SeekToSliceFirstRow ();
835
835
}
836
836
837
- EReady SeekToEnd () noexcept
837
+ EReady SeekToSliceLastRow () noexcept
838
838
{
839
839
ClearKey ();
840
- return Main.SeekToEnd ();
840
+ return Main.SeekToSliceLastRow ();
841
841
}
842
842
843
843
EReady Next () noexcept
@@ -1387,18 +1387,7 @@ namespace NTable {
1387
1387
1388
1388
EReady Seek (const TCells key, ESeek seek) noexcept
1389
1389
{
1390
- if (Run.size () == 1 ) {
1391
- // Avoid overhead of extra key comparisons in a single slice
1392
- Current = Run.begin ();
1393
-
1394
- if (!CurrentIt) {
1395
- InitCurrent ();
1396
- }
1397
-
1398
- return CurrentIt->Seek (key, seek);
1399
- }
1400
-
1401
- bool seekToStart = false ;
1390
+ bool seekToSliceFirstRow = false ;
1402
1391
TRun::const_iterator pos;
1403
1392
1404
1393
switch (seek) {
@@ -1409,16 +1398,16 @@ namespace NTable {
1409
1398
case ESeek::Lower:
1410
1399
if (!key) {
1411
1400
pos = Run.begin ();
1412
- seekToStart = true ;
1401
+ seekToSliceFirstRow = true ;
1413
1402
break ;
1414
1403
}
1415
1404
1416
1405
pos = Run.LowerBound (key);
1417
1406
if (pos != Run.end () &&
1418
1407
TSlice::CompareSearchKeyFirstKey (key, pos->Slice , *KeyCellDefaults) <= 0 )
1419
1408
{
1420
- // Key is at the start of the slice
1421
- seekToStart = true ;
1409
+ // key <= FirstKey
1410
+ seekToSliceFirstRow = true ;
1422
1411
}
1423
1412
break ;
1424
1413
@@ -1432,8 +1421,8 @@ namespace NTable {
1432
1421
if (pos != Run.end () &&
1433
1422
TSlice::CompareSearchKeyFirstKey (key, pos->Slice , *KeyCellDefaults) < 0 )
1434
1423
{
1435
- // Key is at the start of the slice
1436
- seekToStart = true ;
1424
+ // key < FirstKey
1425
+ seekToSliceFirstRow = true ;
1437
1426
}
1438
1427
break ;
1439
1428
@@ -1452,7 +1441,7 @@ namespace NTable {
1452
1441
UpdateCurrent ();
1453
1442
}
1454
1443
1455
- if (!seekToStart ) {
1444
+ if (!seekToSliceFirstRow ) {
1456
1445
auto ready = CurrentIt->Seek (key, seek);
1457
1446
if (ready != EReady::Gone) {
1458
1447
return ready;
@@ -1472,23 +1461,12 @@ namespace NTable {
1472
1461
UpdateCurrent ();
1473
1462
}
1474
1463
1475
- return SeekToStart ();
1464
+ return SeekToSliceFirstRow ();
1476
1465
}
1477
1466
1478
1467
EReady SeekReverse (const TCells key, ESeek seek) noexcept
1479
1468
{
1480
- if (Run.size () == 1 ) {
1481
- // Avoid overhead of extra key comparisons in a single slice
1482
- Current = Run.begin ();
1483
-
1484
- if (!CurrentIt) {
1485
- InitCurrent ();
1486
- }
1487
-
1488
- return CurrentIt->SeekReverse (key, seek);
1489
- }
1490
-
1491
- bool seekToEnd = false ;
1469
+ bool seekToSliceLastRow = false ;
1492
1470
TRun::const_iterator pos;
1493
1471
1494
1472
switch (seek) {
@@ -1498,7 +1476,7 @@ namespace NTable {
1498
1476
1499
1477
case ESeek::Lower:
1500
1478
if (!key) {
1501
- seekToEnd = true ;
1479
+ seekToSliceLastRow = true ;
1502
1480
pos = Run.end ();
1503
1481
--pos;
1504
1482
break ;
@@ -1508,7 +1486,8 @@ namespace NTable {
1508
1486
if (pos != Run.end () &&
1509
1487
TSlice::CompareLastKeySearchKey (pos->Slice , key, *KeyCellDefaults) <= 0 )
1510
1488
{
1511
- seekToEnd = true ;
1489
+ // LastKey <= key
1490
+ seekToSliceLastRow = true ;
1512
1491
}
1513
1492
break ;
1514
1493
@@ -1522,7 +1501,8 @@ namespace NTable {
1522
1501
if (pos != Run.end () &&
1523
1502
TSlice::CompareLastKeySearchKey (pos->Slice , key, *KeyCellDefaults) < 0 )
1524
1503
{
1525
- seekToEnd = true ;
1504
+ // LastKey < key
1505
+ seekToSliceLastRow = true ;
1526
1506
}
1527
1507
break ;
1528
1508
@@ -1541,7 +1521,7 @@ namespace NTable {
1541
1521
UpdateCurrent ();
1542
1522
}
1543
1523
1544
- if (!seekToEnd ) {
1524
+ if (!seekToSliceLastRow ) {
1545
1525
auto ready = CurrentIt->SeekReverse (key, seek);
1546
1526
if (ready != EReady::Gone) {
1547
1527
return ready;
@@ -1563,7 +1543,7 @@ namespace NTable {
1563
1543
UpdateCurrent ();
1564
1544
}
1565
1545
1566
- return SeekToEnd ();
1546
+ return SeekToSliceLastRow ();
1567
1547
}
1568
1548
1569
1549
EReady Next () noexcept
@@ -1586,7 +1566,7 @@ namespace NTable {
1586
1566
1587
1567
UpdateCurrent ();
1588
1568
1589
- ready = SeekToStart ();
1569
+ ready = SeekToSliceFirstRow ();
1590
1570
if (ready == EReady::Page) {
1591
1571
// we haven't sought start, will do it again later
1592
1572
Current--;
@@ -1618,7 +1598,7 @@ namespace NTable {
1618
1598
--Current;
1619
1599
UpdateCurrent ();
1620
1600
1621
- ready = SeekToEnd ();
1601
+ ready = SeekToSliceLastRow ();
1622
1602
if (ready == EReady::Page) {
1623
1603
// we haven't sought end, will do it again later
1624
1604
Current++;
@@ -1747,17 +1727,17 @@ namespace NTable {
1747
1727
InitCurrent ();
1748
1728
}
1749
1729
1750
- Y_FORCE_INLINE EReady SeekToStart () noexcept
1730
+ Y_FORCE_INLINE EReady SeekToSliceFirstRow () noexcept
1751
1731
{
1752
- auto ready = CurrentIt->SeekToStart ();
1732
+ auto ready = CurrentIt->SeekToSliceFirstRow ();
1753
1733
Y_ABORT_UNLESS (ready != EReady::Gone,
1754
1734
" Unexpected slice without the first row" );
1755
1735
return ready;
1756
1736
}
1757
1737
1758
- Y_FORCE_INLINE EReady SeekToEnd () noexcept
1738
+ Y_FORCE_INLINE EReady SeekToSliceLastRow () noexcept
1759
1739
{
1760
- auto ready = CurrentIt->SeekToEnd ();
1740
+ auto ready = CurrentIt->SeekToSliceLastRow ();
1761
1741
Y_ABORT_UNLESS (ready != EReady::Gone,
1762
1742
" Unexpected slice without the last row" );
1763
1743
return ready;
0 commit comments