| 754 | } |
| 755 | |
| 756 | static void writeCSRListNoPersistentDeletions(CheckpointReadCursor& readCursor, |
| 757 | CheckpointWriteCursor& writeCursor, offset_t oldCSRLength) { |
| 758 | readCursor.rangeSegments(oldCSRLength, |
| 759 | [&](auto& segmentData, auto offsetInSegment, auto lengthInSegment, auto) { |
| 760 | if (!canSkipWrite(readCursor, writeCursor)) { |
| 761 | [[maybe_unused]] auto [readSegmentData, readOffsetInSegment] = |
| 762 | readCursor.getDataToRead(); |
| 763 | DASSERT(readSegmentData == segmentData.segmentData.get() && |
| 764 | readOffsetInSegment == offsetInSegment); |
| 765 | writeCursor.appendToCurrentSegment(segmentData.segmentData.get(), offsetInSegment, |
| 766 | lengthInSegment); |
| 767 | } |
| 768 | readCursor.advance(lengthInSegment); |
| 769 | writeCursor.advance(lengthInSegment); |
| 770 | }); |
| 771 | } |
| 772 | |
| 773 | static void writeCSRListWithPersistentDeletions(const Transaction* transaction, |
| 774 | CheckpointReadCursor& readCursor, CheckpointWriteCursor& writeCursor, offset_t oldCSRLength, |
no test coverage detected