THSS-DB / TDB

Educational Database Management System for Software School of Tsinghua University
Mulan Permissive Software License, Version 2
13 stars 17 forks source link

page_num may be -1 when creating index #21

Closed ycycse closed 3 months ago

ycycse commented 3 months ago

当涉及数据过多,索引创建涉及页的驱逐时,我们发现,存在页的page_num为-1。这会导致驱逐时的刷盘错误,或是该页永远无法被驱逐,会一直占用LRU的一个frame。

对日志进行打印,发现page_num被异常设置为-1. image

对于新分配的Page_num,我们会将其设置为page_count数,理论上这是一个递增的过程,不应该出现page_num突然为-1的情况,因此推断为一个Bug。

file_header_->allocated_pages++;
file_header_->page_count++;
PageNum num = file_header_->page_count - 1;
hotwords123 commented 3 months ago

这个 bug 可能和 #17 有关,之前我也是在 Lab2 中测试大批量加入数据时发现的这个 bug。

具体原因是:

由于 #19 已经修复了这个问题,把相关的 fix code 合并到 Lab2 的实现中应该能修复这个 bug。

ycycse commented 3 months ago

明白了,Lab2 测试codebase是在这个pr之前的,那看来最新的commit里不会有这个问题