diff --git a/db/topology.go b/db/topology.go index e5916d5ea..fa5f235ac 100644 --- a/db/topology.go +++ b/db/topology.go @@ -183,6 +183,15 @@ func (d *Database) NumSlices() (int, error) { return len(d.slices), nil } +// return the slice_ids that are in a database +func (d *Database) SliceIds() ([]int, error) { + var rtn []int + for _, slice := range d.slices { + rtn = append(rtn, slice.id) + } + return rtn, nil +} + ///////// FRAMES //////////////////////////////////////////////////////////////////// // A frame is a collection of slices in a given category diff --git a/query/planner.go b/query/planner.go index 35d7d9674..580af9a8c 100644 --- a/query/planner.go +++ b/query/planner.go @@ -459,17 +459,15 @@ func (self *QueryPlanner) buildTree(query *Query, slice int) (QueryTree, error) tree = &CatQueryTree{N: n} } p = tree.(Appendable) - numSlices, err := self.Database.NumSlices() + slice_ids, err := self.Database.SliceIds() if err != nil { return nil, err } - for slice := 0; slice < numSlices; slice++ { - //for slice := 0; slice < 3; slice++ { - subtree, err := self.buildTree(query, slice) + for i := range slice_ids { + subtree, err := self.buildTree(query, slice_ids[i]) if err != nil { return nil, err } - p.Append(subtree) } } else {