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

Method checkpoint

src/storage/table/node_group.cpp:397–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

395}
396
397void NodeGroup::checkpoint(MemoryManager& memoryManager, NodeGroupCheckpointState& state) {
398 const auto lock = chunkedGroups.lock();
399 DASSERT(chunkedGroups.getNumGroups(lock) >= 1);
400 const auto firstGroup = chunkedGroups.getFirstGroup(lock);
401 const auto hasPersistentData = firstGroup->getResidencyState() == ResidencyState::ON_DISK;
402 const auto* txn = state.transaction ? state.transaction : &DUMMY_CHECKPOINT_TRANSACTION;
403 // Re-populate version info here first.
404 auto checkpointedVersionInfo = checkpointVersionInfo(lock, txn);
405 std::unique_ptr<ChunkedNodeGroup> checkpointedChunkedGroup;
406 if (checkpointedVersionInfo->getNumDeletions(txn, 0, numRows) ==
407 numRows - firstGroup->getStartRowIdx()) {
408 reclaimStorage(state.pageAllocator, lock);
409 checkpointedChunkedGroup =
410 ChunkedNodeGroup::flushEmpty(memoryManager, dataTypes, enableCompression,
411 StorageConfig::CHUNKED_NODE_GROUP_CAPACITY, numRows, state.pageAllocator);
412 } else {
413 if (hasPersistentData) {
414 checkpointedChunkedGroup = checkpointInMemAndOnDisk(memoryManager, lock, state);
415 } else {
416 checkpointedChunkedGroup = checkpointInMemOnly(memoryManager, lock, state);
417 }
418 checkpointedChunkedGroup->setVersionInfo(std::move(checkpointedVersionInfo));
419 }
420 chunkedGroups.clear(lock);
421 chunkedGroups.appendGroup(lock, std::move(checkpointedChunkedGroup));
422 checkpointDataTypesNoLock(state);
423}
424
425void NodeGroup::checkpointDataTypesNoLock(const NodeGroupCheckpointState& state) {
426 std::vector<LogicalType> checkpointedTypes;

Callers 1

Calls 10

reclaimStorageFunction · 0.85
getFirstGroupMethod · 0.80
getStartRowIdxMethod · 0.80
setVersionInfoMethod · 0.80
appendGroupMethod · 0.80
lockMethod · 0.45
getNumGroupsMethod · 0.45
getResidencyStateMethod · 0.45
getNumDeletionsMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected