DeletePage deletes a page from the buffer pool.
(pageID PageID)
| 126 | |
| 127 | // DeletePage deletes a page from the buffer pool. |
| 128 | func (b *BufferPoolManager) DeletePage(pageID PageID) error { |
| 129 | var frameID FrameID |
| 130 | var ok bool |
| 131 | if frameID, ok = b.pageTable[pageID]; !ok { |
| 132 | return nil |
| 133 | } |
| 134 | |
| 135 | page := b.pages[frameID] |
| 136 | |
| 137 | if page.pinCount > 0 { |
| 138 | return errors.New("Pin count greater than 0") |
| 139 | } |
| 140 | delete(b.pageTable, page.id) |
| 141 | (*b.replacer).Pin(frameID) |
| 142 | b.diskManager.DeallocatePage(pageID) |
| 143 | |
| 144 | b.freeList = append(b.freeList, frameID) |
| 145 | |
| 146 | return nil |
| 147 | |
| 148 | } |
| 149 | |
| 150 | // FlushAllpages flushes all the pages in the buffer pool to disk. |
| 151 | func (b *BufferPoolManager) FlushAllpages() { |
no test coverage detected