Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Unified Diff: impl/memory/gkvlite_iter.go

Issue 1302813003: impl/memory: Implement Queries (Closed) Base URL: https://github.com/luci/gae.git@add_multi_iterator
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: impl/memory/gkvlite_iter.go
diff --git a/impl/memory/gkvlite_iter.go b/impl/memory/gkvlite_iter.go
index cf407970920d016aafbf7b75367f6dd9e83d7c95..e3620267cdb33c834edd93d3f34c4a0723ab0bb8 100644
--- a/impl/memory/gkvlite_iter.go
+++ b/impl/memory/gkvlite_iter.go
@@ -66,18 +66,21 @@ func multiIterate(defs []*iterDefinition, cb func(suffix []byte) bool) {
panic("got nil prefix")
}
- end := []byte(nil)
- if def.end != nil {
- end = bjoin(def.prefix, def.end)
- } else {
- end = []byte(increment(string(def.prefix), true))
- }
-
+ // start at the prefix, plus any defined start suffix
start := def.prefix
if def.start != nil {
start = bjoin(def.prefix, def.start)
}
+ // end at the prefix+1 (if there was a defined prefix), plus any defined
+ // start suffix.
+ end := []byte(nil)
+ if def.end != nil {
+ end = bjoin(def.prefix, def.end)
+ } else if def.prefix != nil {
+ end = increment(def.prefix)
+ }
+
ts[i] = newIterator(def.c, start, end)
prefixLens[i] = len(def.prefix)
defer ts[i].stop()

Powered by Google App Engine
This is Rietveld 408576698