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

Function countChunkDataPages

src/function/table/disk_size_info.cpp:41–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39};
40
41static uint64_t countChunkDataPages(const ColumnChunkData& chunkData) {
42 uint64_t pages = 0;
43 auto metadata = chunkData.getResidencyState() == ResidencyState::ON_DISK ?
44 chunkData.getMetadata() :
45 chunkData.getMetadataToFlush();
46 pages += metadata.getNumPages();
47
48 if (chunkData.hasNullData()) {
49 pages += countChunkDataPages(*chunkData.getNullData());
50 }
51
52 auto physicalType = chunkData.getDataType().getPhysicalType();
53 switch (physicalType) {
54 case PhysicalTypeID::STRUCT: {
55 auto& structChunk = chunkData.cast<StructChunkData>();
56 for (auto i = 0u; i < structChunk.getNumChildren(); i++) {
57 pages += countChunkDataPages(structChunk.getChild(i));
58 }
59 } break;
60 case PhysicalTypeID::STRING:
61 case PhysicalTypeID::JSON: {
62 auto& stringChunk = chunkData.cast<StringChunkData>();
63 pages += countChunkDataPages(*stringChunk.getIndexColumnChunk());
64 auto& dictionaryChunk = stringChunk.getDictionaryChunk();
65 pages += countChunkDataPages(*dictionaryChunk.getStringDataChunk());
66 pages += countChunkDataPages(*dictionaryChunk.getOffsetChunk());
67 } break;
68 case PhysicalTypeID::ARRAY:
69 case PhysicalTypeID::LIST: {
70 auto& listChunk = chunkData.cast<ListChunkData>();
71 pages += countChunkDataPages(*listChunk.getOffsetColumnChunk());
72 pages += countChunkDataPages(*listChunk.getSizeColumnChunk());
73 pages += countChunkDataPages(*listChunk.getDataColumnChunk());
74 } break;
75 default:
76 break;
77 }
78 return pages;
79}
80
81static uint64_t countChunkedGroupPages(ChunkedNodeGroup* chunkedGroup) {
82 uint64_t pages = 0;

Callers 1

countChunkedGroupPagesFunction · 0.85

Calls 11

getMetadataMethod · 0.80
getMetadataToFlushMethod · 0.80
getDataTypeMethod · 0.80
getNumChildrenMethod · 0.80
getIndexColumnChunkMethod · 0.80
getStringDataChunkMethod · 0.80
getOffsetChunkMethod · 0.80
getResidencyStateMethod · 0.45
getNumPagesMethod · 0.45
getPhysicalTypeMethod · 0.45
getChildMethod · 0.45

Tested by

no test coverage detected