| 433 | } |
| 434 | |
| 435 | void NodeGroup::scanCommittedUpdatesForColumn( |
| 436 | std::vector<ChunkCheckpointState>& chunkCheckpointStates, MemoryManager& memoryManager, |
| 437 | const UniqLock& lock, column_id_t columnID, const Column* column, |
| 438 | const Transaction* transaction) const { |
| 439 | auto updateSegmentScanner = |
| 440 | LazySegmentScanner(memoryManager, column->getDataType().copy(), enableCompression); |
| 441 | ChunkState chunkState; |
| 442 | auto& firstColumnChunk = chunkedGroups.getFirstGroup(lock)->getColumnChunk(columnID); |
| 443 | const auto numPersistentRows = firstColumnChunk.getNumValues(); |
| 444 | firstColumnChunk.initializeScanState(chunkState, column); |
| 445 | for (auto& chunkedGroup : chunkedGroups.getAllGroups(lock)) { |
| 446 | chunkedGroup->getColumnChunk(columnID).scanCommitted<ResidencyState::ON_DISK>(transaction, |
| 447 | chunkState, updateSegmentScanner); |
| 448 | } |
| 449 | DASSERT(updateSegmentScanner.getNumValues() == numPersistentRows); |
| 450 | updateSegmentScanner.rangeSegments(updateSegmentScanner.begin(), numPersistentRows, |
| 451 | [&chunkCheckpointStates](auto& segment, auto, auto segmentLength, auto offsetInChunk) { |
| 452 | if (segment.segmentData) { |
| 453 | chunkCheckpointStates.emplace_back(std::move(segment.segmentData), offsetInChunk, |
| 454 | segmentLength); |
| 455 | } |
| 456 | }); |
| 457 | } |
| 458 | |
| 459 | std::unique_ptr<ChunkedNodeGroup> NodeGroup::checkpointInMemAndOnDisk(MemoryManager& memoryManager, |
| 460 | const UniqLock& lock, NodeGroupCheckpointState& state) const { |
nothing calls this directly
no test coverage detected