助教不好意思我有两个 可能是有点基本的问题
1.在第二个condition 下:
while (st == NOMORERECS) {
// If ppage you just found before has no records, you should find the next
// page until it has records
}
他要我们找下一个LeafPage 直到LeafPage 里面是有存record的,可是,
整个 BTLeafPage的class 里面,并没有任何一个变量是存,在B+ tree最底层
的下一个LeafPage的pointer耶!?
而且 BTLeafPage里的 get_next()函式,就我的理解是去拿LeafPage 里的下一个
record,并不是说去找下一个BTLeafPage,所以其实没有方法可以拿下一个LeafPage?
而我们在用while循环往下搜的时候,最后就会已经搜到Leaf type的page了,
如果说我们想要找到下一个LeafPage,感觉是要自己把IndexPage的指标存起来
然后用get_next去拿下一个是吗?? 这样的话,如果我现在这个IndexPage都
搜完了,每一个LeafPage都是没有任何records,我还要往下一个IndexPage找吗??
2.在第三个condition之下:
while (keyCompare(&curkey, lo_key, key_type) < 0) {
// find the RID of record matched lo_key, and store in metaRid
}
如果现在这个LeafPage的record我都搜过了,key value都比 lo_key小,
我还要往下一个LeafPage搜寻下去吗?? 或者是??
如果要的话,我想回归B+ Tree本质的问题,照理说,这棵B+ tree 要是有建好,
应该是用key value就可以从tree的结构去找到唯一个LeafPage吧??
为什么要这样linear 的scan下去? 如果要这样建tree的目的在哪里呢?
希望这个部分能够有更详细的spec,或者MINIBASE本身的documentation
谢谢助教