fix binarySearchCompactSection

This commit is contained in:
Chris Lu 2018-12-22 11:52:58 -08:00
parent d3839fe279
commit 141d302492

View file

@ -165,19 +165,29 @@ func (cm *CompactMap) Get(key NeedleId) (*NeedleValue, bool) {
return cm.list[x].Get(key) return cm.list[x].Get(key)
} }
func (cm *CompactMap) binarySearchCompactSection(key NeedleId) int { func (cm *CompactMap) binarySearchCompactSection(key NeedleId) int {
if len(cm.list) == 0 { l, h := 0, len(cm.list)-1
return -1 if h < 0 {
return -5
} }
x := sort.Search(len(cm.list), func(i int) bool { if cm.list[h].start <= key {
return cm.list[i].start >= key if cm.list[h].counter < batch || key <= cm.list[h].end {
}) return h
if len(cm.list) == x { }
return -1 return -4
} }
if cm.list[x].start == key { for l <= h {
return x m := (l + h) / 2
if key < cm.list[m].start {
h = m - 1
} else { // cm.list[m].start <= key
if cm.list[m+1].start <= key {
l = m + 1
} else {
return m
}
}
} }
return x - 1 return -3
} }
// Visit visits all entries or stop if any error when visiting // Visit visits all entries or stop if any error when visiting