9 #include "exceptions/end_of_file_exception.h"
13 FileScan::FileScan(
const std::string &name, BufMgr *bufferMgr)
15 file =
new PageFile(name,
false);
19 filePageIter = file->
begin();
27 bufMgr->
unPinPage(file, (*filePageIter).page_number(), curDirtyFlag);
30 filePageIter = file->
begin();
36 void FileScan::scanNext(RecordId& outRid)
40 if (filePageIter == file->
end())
42 throw EndOfFileException();
49 filePageIter = file->
begin();
50 if(filePageIter == file->
end())
52 throw EndOfFileException();
56 bufMgr->
readPage(file, (*filePageIter).page_number(), curPage);
60 pageRecordIter = curPage->
begin();
62 if(pageRecordIter != curPage->
end())
65 rec = *pageRecordIter;
67 outRid = pageRecordIter.getCurrentRecord();
76 while (pageRecordIter == curPage->
end())
79 bufMgr->
unPinPage(file, (*filePageIter).page_number(), curDirtyFlag);
84 if (filePageIter == file->
end())
87 throw EndOfFileException();
91 bufMgr->
readPage(file, (*filePageIter).page_number(), curPage);
94 pageRecordIter = curPage->
begin();
100 rec = *pageRecordIter;
103 outRid = pageRecordIter.getCurrentRecord();
109 std::string FileScan::getRecord()
111 return *pageRecordIter;
115 void FileScan::markDirty()
void readPage(File *file, const PageId PageNo, Page *&page)
void unPinPage(File *file, const PageId PageNo, const bool dirty)
void flushFile(const File *file)