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

Method deserialize

src/storage/database_header.cpp:88–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88DatabaseHeader DatabaseHeader::deserialize(common::Deserializer& deSer) {
89 validateMagicBytes(deSer);
90 const auto savedStorageVersion = validateStorageVersion(deSer);
91 PageRange catalogPageRange{}, metaPageRange{};
92 common::uuid databaseID{};
93 std::string key;
94 deSer.validateDebuggingInfo(key, "catalog");
95 deSer.deserializeValue(catalogPageRange.startPageIdx);
96 deSer.deserializeValue(catalogPageRange.numPages);
97 deSer.validateDebuggingInfo(key, "metadata");
98 deSer.deserializeValue(metaPageRange.startPageIdx);
99 deSer.deserializeValue(metaPageRange.numPages);
100 deSer.validateDebuggingInfo(key, "databaseID");
101 deSer.deserializeValue(databaseID.value);
102 common::page_idx_t dataFileNumPages = 0;
103 uint8_t headerFormatVersion = 0;
104 // Old format (e.g. lbug-0.14.1) ends here; reading 9 bytes would read beyond logical header.
105 // Read one byte: only if it matches our format version do we read the following 8 bytes.
106 deSer.deserializeValue(headerFormatVersion);
107 if (headerFormatVersion == HEADER_FORMAT_VERSION_WITH_DATAFILE_NUM_PAGES) {
108 deSer.deserializeValue(dataFileNumPages);
109 }
110 return {catalogPageRange, metaPageRange, dataFileNumPages, databaseID, savedStorageVersion};
111}
112
113DatabaseHeader DatabaseHeader::createInitialHeader(common::RandomEngine* randomEngine) {
114 // We generate a random UUID to act as the database ID

Callers

nothing calls this directly

Calls 4

validateMagicBytesFunction · 0.85
validateStorageVersionFunction · 0.85
validateDebuggingInfoMethod · 0.80
deserializeValueMethod · 0.80

Tested by

no test coverage detected