func (tf tFiles) getOverlaps(min, max []byte, r *tFiles, disjSorted bool, ucmp comparer.BasicComparer) { for i := 0; i < len(tf); { t := tf[i] i++ if t.isAfter(min, ucmp) || t.isBefore(max, ucmp) { continue } *r = append(*r, t) if !disjSorted { // Level-0 files may overlap each other. So check if the newly // added file has expanded the range. If so, restart search. if min != nil && ucmp.Compare(t.min.ukey(), min) < 0 { min = t.min.ukey() *r = nil i = 0 } else if max != nil && ucmp.Compare(t.max.ukey(), max) > 0 { max = t.max.ukey() *r = nil i = 0 } } } return }
// test if key is before t func (t *tFile) isBefore(key []byte, ucmp comparer.BasicComparer) bool { return key != nil && ucmp.Compare(key, t.min.ukey()) < 0 }
// test if key is after t func (t *tFile) isAfter(key []byte, ucmp comparer.BasicComparer) bool { return key != nil && ucmp.Compare(key, t.max.ukey()) > 0 }