MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / scanCommittedUpdatesForColumn

Method scanCommittedUpdatesForColumn

src/storage/table/node_group.cpp:435–457  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

433}
434
435void 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
459std::unique_ptr<ChunkedNodeGroup> NodeGroup::checkpointInMemAndOnDisk(MemoryManager& memoryManager,
460 const UniqLock& lock, NodeGroupCheckpointState& state) const {

Callers

nothing calls this directly

Calls 9

LazySegmentScannerClass · 0.85
getDataTypeMethod · 0.80
getFirstGroupMethod · 0.80
emplace_backMethod · 0.80
copyMethod · 0.45
getNumValuesMethod · 0.45
initializeScanStateMethod · 0.45
rangeSegmentsMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected