set up api chain

This commit is contained in:
2024-04-25 15:05:53 +00:00
parent 243156d497
commit 4b5ebaeef4
11 changed files with 26 additions and 11 deletions

View File

@ -34,6 +34,7 @@ class BPlusTreeIndexer {
// TODO
}
};
BPlusTreeIndexer() = delete;
BPlusTreeIndexer(const BPlusTreeIndexer &) = delete;
BPlusTreeIndexer(BPlusTreeIndexer &&) = delete;
BPlusTreeIndexer &operator=(const BPlusTreeIndexer &) = delete;
@ -80,12 +81,17 @@ class BPlusTreeIndexer {
return true;
}
size_t Size() { return siz; }
void Flush() {
// TODO: do some recording
bpm->FlushAllPages();
}
private:
page_id_t root_page_id;
size_t siz;
page_id_t root_page_id; // stored in the first 4 (0-3) bytes of RawDatMemory
uint64_t siz; // stored in the next 8 (4-11) bytes of RawDatMemory
static KeyComparator key_cmp;
std::shared_mutex latch;
BufferPoolManager *bpm;
};
template <typename KeyType, typename KeyComparator>
KeyComparator BPlusTreeIndexer<KeyType, KeyComparator>::key_cmp = KeyComparator();

View File

@ -249,6 +249,8 @@ class BufferPoolManager {
BufferPoolManager &operator=(const BufferPoolManager &) = delete;
BufferPoolManager &operator=(BufferPoolManager &&) = delete;
~BufferPoolManager();
inline char *RawDataMemory() { return disk_manager->RawDataMemory(); }
inline size_t RawDatMemorySize() { return disk_manager->RawDatMemorySize(); }
/**
* @brief Allocate a page on disk. Caller should acquire the latch before calling this function.
* @return the id of the allocated page

View File

@ -21,7 +21,7 @@ class DiskManager {
~DiskManager();
char *RawDataMemory();
size_t RawDatMemorySize();
void FlushInternalPage();
void FullyFlush();
void Close();
void ReadPage(page_id_t page_id, char *page_data_ptr);
void WritePage(page_id_t page_id, const char *page_data_ptr); // in fact, the page_id is the offest