| Index: impl/memory/datastore_query_execution.go | 
| diff --git a/impl/memory/datastore_query_execution.go b/impl/memory/datastore_query_execution.go | 
| index eb42c780c76f2ec9ec5e5afea09ca7f7a01f2948..6fdd28bbf68fc7bcfee0c77429739309b7a770e5 100644 | 
| --- a/impl/memory/datastore_query_execution.go | 
| +++ b/impl/memory/datastore_query_execution.go | 
| @@ -22,7 +22,7 @@ type queryStrategy interface { | 
| //   - key is the decoded Key from the index row (the last item in rawData and | 
| //     decodedProps) | 
| //   - gc is the getCursor function to be passed to the user's callback | 
| -	handle(rawData [][]byte, decodedProps []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) bool | 
| +	handle(rawData [][]byte, decodedProps []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) error | 
| } | 
|  | 
| type projectionLookup struct { | 
| @@ -60,7 +60,7 @@ func newProjectionStrategy(fq *ds.FinalizedQuery, rq *reducedQuery, cb ds.RawRun | 
| return ret | 
| } | 
|  | 
| -func (s *projectionStrategy) handle(rawData [][]byte, decodedProps []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) bool { | 
| +func (s *projectionStrategy) handle(rawData [][]byte, decodedProps []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) error { | 
| projectedRaw := [][]byte(nil) | 
| if s.distinct != nil { | 
| projectedRaw = make([][]byte, len(decodedProps)) | 
| @@ -74,7 +74,7 @@ func (s *projectionStrategy) handle(rawData [][]byte, decodedProps []ds.Property | 
| } | 
| if s.distinct != nil { | 
| if !s.distinct.Add(string(serialize.Join(projectedRaw...))) { | 
| -			return true | 
| +			return nil | 
| } | 
| } | 
| return s.cb(key, pmap, gc) | 
| @@ -86,9 +86,9 @@ type keysOnlyStrategy struct { | 
| dedup stringset.Set | 
| } | 
|  | 
| -func (s *keysOnlyStrategy) handle(rawData [][]byte, _ []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) bool { | 
| +func (s *keysOnlyStrategy) handle(rawData [][]byte, _ []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) error { | 
| if !s.dedup.Add(string(rawData[len(rawData)-1])) { | 
| -		return true | 
| +		return nil | 
| } | 
| return s.cb(key, nil, gc) | 
| } | 
| @@ -110,16 +110,16 @@ func newNormalStrategy(aid, ns string, cb ds.RawRunCB, head *memStore) queryStra | 
| return &normalStrategy{cb, aid, ns, coll, stringset.New(0)} | 
| } | 
|  | 
| -func (s *normalStrategy) handle(rawData [][]byte, _ []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) bool { | 
| +func (s *normalStrategy) handle(rawData [][]byte, _ []ds.Property, key *ds.Key, gc func() (ds.Cursor, error)) error { | 
| rawKey := rawData[len(rawData)-1] | 
| if !s.dedup.Add(string(rawKey)) { | 
| -		return true | 
| +		return nil | 
| } | 
|  | 
| rawEnt := s.head.Get(rawKey) | 
| if rawEnt == nil { | 
| // entity doesn't exist at head | 
| -		return true | 
| +		return nil | 
| } | 
| pm, err := serialize.ReadPropertyMap(bytes.NewBuffer(rawEnt), serialize.WithoutContext, s.aid, s.ns) | 
| memoryCorruption(err) | 
| @@ -171,9 +171,9 @@ func countQuery(fq *ds.FinalizedQuery, aid, ns string, isTxn bool, idx, head *me | 
| return | 
| } | 
| } | 
| -	err = executeQuery(fq, aid, ns, isTxn, idx, head, func(_ *ds.Key, _ ds.PropertyMap, _ ds.CursorCB) bool { | 
| +	err = executeQuery(fq, aid, ns, isTxn, idx, head, func(_ *ds.Key, _ ds.PropertyMap, _ ds.CursorCB) error { | 
| ret++ | 
| -		return true | 
| +		return nil | 
| }) | 
| return | 
| } | 
| @@ -225,14 +225,14 @@ func executeQuery(fq *ds.FinalizedQuery, aid, ns string, isTxn bool, idx, head * | 
| } | 
| } | 
|  | 
| -	multiIterate(idxs, func(suffix []byte) bool { | 
| +	return multiIterate(idxs, func(suffix []byte) error { | 
| if offset > 0 { | 
| offset-- | 
| -			return true | 
| +			return nil | 
| } | 
| if hasLimit { | 
| if limit <= 0 { | 
| -				return false | 
| +				return ds.Stop | 
| } | 
| limit-- | 
| } | 
| @@ -248,6 +248,4 @@ func executeQuery(fq *ds.FinalizedQuery, aid, ns string, isTxn bool, idx, head * | 
| rawData, decodedProps, keyProp.Value().(*ds.Key), | 
| getCursorFn(suffix)) | 
| }) | 
| - | 
| -	return nil | 
| } | 
|  |