0
0
Fork 0

refactor where we do some work so we can return error

This commit is contained in:
Marty Schoch 2017-12-11 15:59:36 -05:00
parent f13b786609
commit 74b2eeb14d
2 changed files with 24 additions and 22 deletions

View File

@ -60,8 +60,21 @@ func (d *Dictionary) postingsList(term string, except *roaring.Bitmap) (*Posting
n += uint64(read)
rv.locOffset, read = binary.Uvarint(d.segment.mm[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64])
n += uint64(read)
rv.locBitmapOffset, read = binary.Uvarint(d.segment.mm[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64])
var locBitmapOffset uint64
locBitmapOffset, read = binary.Uvarint(d.segment.mm[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64])
n += uint64(read)
// go ahead and load loc bitmap
var locBitmapLen uint64
locBitmapLen, read = binary.Uvarint(d.segment.mm[locBitmapOffset : locBitmapOffset+binary.MaxVarintLen64])
locRoaringBytes := d.segment.mm[locBitmapOffset+uint64(read) : locBitmapOffset+uint64(read)+locBitmapLen]
rv.locBitmap = roaring.NewBitmap()
_, err := rv.locBitmap.FromBuffer(locRoaringBytes)
if err != nil {
return nil, fmt.Errorf("error loading roaring bitmap of locations with hits: %v", err)
}
var postingsLen uint64
postingsLen, read = binary.Uvarint(d.segment.mm[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64])
n += uint64(read)

View File

@ -27,15 +27,15 @@ import (
// PostingsList is an in-memory represenation of a postings list
type PostingsList struct {
dictionary *Dictionary
term string
postingsOffset uint64
freqOffset uint64
locOffset uint64
locBitmapOffset uint64
postings *roaring.Bitmap
except *roaring.Bitmap
postingKey []byte
dictionary *Dictionary
term string
postingsOffset uint64
freqOffset uint64
locOffset uint64
locBitmap *roaring.Bitmap
postings *roaring.Bitmap
except *roaring.Bitmap
postingKey []byte
}
// Iterator returns an iterator for this postings list
@ -68,18 +68,7 @@ func (p *PostingsList) Iterator() segment.PostingsIterator {
n += uint64(read)
}
rv.locChunkStart = p.locOffset + n
var locBitmapLen uint64
locBitmapLen, read = binary.Uvarint(p.dictionary.segment.mm[p.locBitmapOffset : p.locBitmapOffset+binary.MaxVarintLen64])
roaringBytes := p.dictionary.segment.mm[p.locBitmapOffset+uint64(read) : p.locBitmapOffset+uint64(read)+locBitmapLen]
bitmap := roaring.NewBitmap()
_, err := bitmap.FromBuffer(roaringBytes)
if err != nil {
// return nil, fmt.Errorf("error loading roaring bitmap: %v", err)
// FIXME dont break api yet
panic("i died")
}
rv.locBitmap = bitmap
rv.locBitmap = p.locBitmap
rv.all = p.postings.Iterator()
if p.except != nil {