char* BANDB::read(int transID, int key) { int pageIndex = bm->findKey(key); if (pageIndex == -1) { return ""; } Record* rec = bm->locateRecord(pageIndex, key); return rec->readData(); }
bool BANDB::remove(int transID, int key) { int pageIndex = bm->findKey(key); if (pageIndex == -1) { return false; } int pageNum = bm->getNumAtIndex(pageIndex); Record* oldRecP = bm->locateRecord(pageIndex, key); Record oldRec = *oldRecP; char* oldData = (char*) &oldRec; char empty[16] = {}; for (int i = 0; i < 16; i++) { empty[i] = 0; } bool result = bm->removeRecord(pageIndex, key); lm->writeWriteRecord(transID, pageNum, oldData, empty); return result; }
bool BANDB::write(int transID, int key, char* data) { int pageIndex = bm->findKey(key); if (pageIndex == -1) { pageIndex = bm->findKey(0); } if (pageIndex == -1) { return false; } int pageNum = bm->getNumAtIndex(pageIndex); Record* oldRecP = bm->locateRecord(pageIndex, key); Record oldRec = *oldRecP; char* oldData = (char*) &oldRec; Record newRec = Record(key, data); char* newData = (char*) &newRec; bool result = bm->insertRecord(pageIndex, key, data); lm->writeWriteRecord(transID, pageNum, oldData, newData); return result; }