Index: service/datastore/query.go |
diff --git a/service/datastore/query.go b/service/datastore/query.go |
index a68bca28686611eac9cead0e1feecf324c656c05..fc30f5f686808fc6f697a000c6be3bdf94e0cf65 100644 |
--- a/service/datastore/query.go |
+++ b/service/datastore/query.go |
@@ -270,11 +270,13 @@ func (q *Query) Eq(field string, values ...interface{}) *Query { |
return |
} |
idx := sort.Search(len(s), func(i int) bool { |
- return s[i].Equal(&p) |
+ // s[i] >= p is the same as: |
+ return s[i].Equal(&p) || p.Less(&s[i]) |
}) |
- if idx == len(s) { |
- s = append(s, p) |
- sort.Sort(s) |
+ if idx == len(s) || !s[idx].Equal(&p) { |
+ s = append(s, Property{}) |
+ copy(s[idx+1:], s[idx:]) |
dnj
2015/10/15 02:23:46
nit: WDYT about making eqfilts a binheap?
|
+ s[idx] = p |
} |
} |
q.eqFilts[field] = s |