助教不好意思我有兩個 可能是有點基本的問題
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
謝謝助教