Make zero results work properly

pull/9967/head
Edd Robinson 2018-06-12 23:49:04 +01:00
parent 28b6df7afb
commit 8a78e64868
4 changed files with 12 additions and 9 deletions

View File

@ -1012,12 +1012,6 @@ func (h *Handler) servePromRead(w http.ResponseWriter, r *http.Request, user met
h.httpError(w, err.Error(), http.StatusBadRequest)
return
}
if rs == nil {
err = errors.New("no store to read")
h.httpError(w, err.Error(), http.StatusBadRequest)
return
}
defer rs.Close()
resp := &remote.ReadResponse{

View File

@ -581,7 +581,7 @@ func TestHandler_PromWrite(t *testing.T) {
if err != nil {
t.Fatal(err.Error())
}
expFields := models.Fields{"f64": 1.2}
expFields := models.Fields{"value": 1.2}
if !reflect.DeepEqual(fields, expFields) {
t.Fatalf("fields don't match\n\texp: %v\n\tgot: %v", expFields, fields)
}

View File

@ -22,12 +22,21 @@ type ResultSet struct {
mb *multiShardBatchCursors
}
// Close closes the result set. Close is idempotent.
func (r *ResultSet) Close() {
if r == nil {
return // Nothing to do.
}
r.row.query = nil
r.cur.Close()
}
// Next returns true if there are more results available.
func (r *ResultSet) Next() bool {
if r == nil {
return false
}
row := r.cur.Next()
if row == nil {
return false

View File

@ -104,14 +104,14 @@ func (s *Store) Read(ctx context.Context, req *ReadRequest) (Results, error) {
return nil, err
}
if len(shardIDs) == 0 {
return nil, nil
return (*ResultSet)(nil), nil
}
var cur seriesCursor
if ic, err := newIndexSeriesCursor(ctx, req.Predicate, s.TSDBStore.Shards(shardIDs)); err != nil {
return nil, err
} else if ic == nil {
return nil, nil
return (*ResultSet)(nil), nil
} else {
cur = ic
}