From d6510791ca3a8796dcba50727d23833015dc865e Mon Sep 17 00:00:00 2001 From: travisturner Date: Mon, 15 Sep 2014 14:58:54 -0500 Subject: [PATCH] only run cat step on slices that exist (as opposed to 0-n slices) --- db/topology.go | 9 +++++++++ query/planner.go | 8 +++----- 2 files changed, 12 insertions(+), 5 deletions(-) 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 {