func (db *DB) newIterator(seq uint64, slice *util.Range, ro *opt.ReadOptions) *dbIter { var islice *util.Range if slice != nil { islice = &util.Range{} if slice.Start != nil { islice.Start = newIKey(slice.Start, kMaxSeq, tSeek) } if slice.Limit != nil { islice.Limit = newIKey(slice.Limit, kMaxSeq, tSeek) } } rawIter := db.newRawIterator(islice, ro) iter := &dbIter{ db: db, icmp: db.s.icmp, iter: rawIter, seq: seq, strict: db.s.o.GetStrict(opt.StrictIterator) || ro.GetStrict(opt.StrictIterator), key: make([]byte, 0), value: make([]byte, 0), } atomic.AddInt32(&db.aliveIters, 1) runtime.SetFinalizer(iter, (*dbIter).Release) return iter }
func (h *dbHarness) compactRange(min, max string) { t := h.t db := h.db var r util.Range if min != "" { r.Start = []byte(min) } if max != "" { r.Limit = []byte(max) } if err := db.CompactRange(r); err != nil { t.Error("CompactRange: got error: ", err) } }