TBR syncbase: s/end/limit/
Change-Id: I58ddab25a705e00787d71f2dda6c267f5884f770
diff --git a/services/syncbase/server/nosql/table.go b/services/syncbase/server/nosql/table.go
index 07198d2..edfd195 100644
--- a/services/syncbase/server/nosql/table.go
+++ b/services/syncbase/server/nosql/table.go
@@ -68,20 +68,20 @@
})
}
-func (t *table) DeleteRowRange(ctx *context.T, call rpc.ServerCall, start, end string) error {
+func (t *table) DeleteRowRange(ctx *context.T, call rpc.ServerCall, start, limit string) error {
return verror.NewErrNotImplemented(ctx)
}
-func (t *table) Scan(ctx *context.T, call wire.TableScanServerCall, start, end string) error {
+func (t *table) Scan(ctx *context.T, call wire.TableScanServerCall, start, limit string) error {
sn := t.d.st.NewSnapshot()
defer sn.Close()
- it := sn.Scan(util.ScanRangeArgs(util.JoinKeyParts(util.RowPrefix, t.name), start, end))
+ it := sn.Scan(util.ScanRangeArgs(util.JoinKeyParts(util.RowPrefix, t.name), start, limit))
sender := call.SendStream()
key, value := []byte{}, []byte{}
for it.Advance() {
- key = it.Key(key)
+ key, value = it.Key(key), it.Value(value)
parts := util.SplitKeyParts(string(key))
- sender.Send(wire.KeyValue{Key: parts[len(parts)-1], Value: it.Value(value)})
+ sender.Send(wire.KeyValue{Key: parts[len(parts)-1], Value: value})
}
if err := it.Err(); err != nil {
return verror.New(verror.ErrInternal, ctx, err)
diff --git a/services/syncbase/server/util/key_util.go b/services/syncbase/server/util/key_util.go
index d5b6e36..5c729e6 100644
--- a/services/syncbase/server/util/key_util.go
+++ b/services/syncbase/server/util/key_util.go
@@ -23,15 +23,15 @@
// ScanPrefixArgs returns args for sn.Scan() for the specified prefix.
func ScanPrefixArgs(stKeyPrefix, prefix string) ([]byte, []byte) {
- return ScanRangeArgs(stKeyPrefix, util.PrefixRangeStart(prefix), util.PrefixRangeEnd(prefix))
+ return ScanRangeArgs(stKeyPrefix, util.PrefixRangeStart(prefix), util.PrefixRangeLimit(prefix))
}
// ScanRangeArgs returns args for sn.Scan() for the specified range.
-// If end is "", all rows with keys >= start are included.
-func ScanRangeArgs(stKeyPrefix, start, end string) ([]byte, []byte) {
- fullStart, fullEnd := JoinKeyParts(stKeyPrefix, start), JoinKeyParts(stKeyPrefix, end)
- if end == "" {
- fullEnd = util.PrefixRangeEnd(fullEnd)
+// If limit is "", all rows with keys >= start are included.
+func ScanRangeArgs(stKeyPrefix, start, limit string) ([]byte, []byte) {
+ fullStart, fullLimit := JoinKeyParts(stKeyPrefix, start), JoinKeyParts(stKeyPrefix, limit)
+ if limit == "" {
+ fullLimit = util.PrefixRangeLimit(fullLimit)
}
- return []byte(fullStart), []byte(fullEnd)
+ return []byte(fullStart), []byte(fullLimit)
}
diff --git a/services/syncbase/server/util/key_util_test.go b/services/syncbase/server/util/key_util_test.go
index 1bc1148..2240531 100644
--- a/services/syncbase/server/util/key_util_test.go
+++ b/services/syncbase/server/util/key_util_test.go
@@ -42,42 +42,42 @@
func TestScanPrefixArgs(t *testing.T) {
tests := []struct {
- stKeyPrefix, prefix, wantStart, wantEnd string
+ stKeyPrefix, prefix, wantStart, wantLimit string
}{
{"x", "", "x:", "x;"},
{"x", "a", "x:a", "x:b"},
{"x", "a\xff", "x:a\xff", "x:b"},
}
for _, test := range tests {
- start, end := util.ScanPrefixArgs(test.stKeyPrefix, test.prefix)
- gotStart, gotEnd := string(start), string(end)
+ start, limit := util.ScanPrefixArgs(test.stKeyPrefix, test.prefix)
+ gotStart, gotLimit := string(start), string(limit)
if gotStart != test.wantStart {
t.Errorf("{%q, %q} start: got %q, want %q", test.stKeyPrefix, test.prefix, gotStart, test.wantStart)
}
- if gotEnd != test.wantEnd {
- t.Errorf("{%q, %q} end: got %q, want %q", test.stKeyPrefix, test.prefix, gotEnd, test.wantEnd)
+ if gotLimit != test.wantLimit {
+ t.Errorf("{%q, %q} limit: got %q, want %q", test.stKeyPrefix, test.prefix, gotLimit, test.wantLimit)
}
}
}
func TestScanRangeArgs(t *testing.T) {
tests := []struct {
- stKeyPrefix, start, end, wantStart, wantEnd string
+ stKeyPrefix, start, limit, wantStart, wantLimit string
}{
- {"x", "", "", "x:", "x;"}, // end "" means "no limit"
- {"x", "a", "", "x:a", "x;"}, // end "" means "no limit"
+ {"x", "", "", "x:", "x;"}, // limit "" means "no limit"
+ {"x", "a", "", "x:a", "x;"}, // limit "" means "no limit"
{"x", "a", "b", "x:a", "x:b"},
{"x", "a", "a", "x:a", "x:a"}, // empty range
{"x", "b", "a", "x:b", "x:a"}, // empty range
}
for _, test := range tests {
- start, end := util.ScanRangeArgs(test.stKeyPrefix, test.start, test.end)
- gotStart, gotEnd := string(start), string(end)
+ start, limit := util.ScanRangeArgs(test.stKeyPrefix, test.start, test.limit)
+ gotStart, gotLimit := string(start), string(limit)
if gotStart != test.wantStart {
- t.Errorf("{%q, %q, %q} start: got %q, want %q", test.stKeyPrefix, test.start, test.end, gotStart, test.wantStart)
+ t.Errorf("{%q, %q, %q} start: got %q, want %q", test.stKeyPrefix, test.start, test.limit, gotStart, test.wantStart)
}
- if gotEnd != test.wantEnd {
- t.Errorf("{%q, %q, %q} end: got %q, want %q", test.stKeyPrefix, test.start, test.end, gotEnd, test.wantEnd)
+ if gotLimit != test.wantLimit {
+ t.Errorf("{%q, %q, %q} limit: got %q, want %q", test.stKeyPrefix, test.start, test.limit, gotLimit, test.wantLimit)
}
}
}
diff --git a/services/syncbase/store/leveldb/db.go b/services/syncbase/store/leveldb/db.go
index 6f89ac8..ee49b1c 100644
--- a/services/syncbase/store/leveldb/db.go
+++ b/services/syncbase/store/leveldb/db.go
@@ -97,13 +97,13 @@
}
// Scan implements the store.StoreReader interface.
-func (d *db) Scan(start, end []byte) store.Stream {
+func (d *db) Scan(start, limit []byte) store.Stream {
d.mu.RLock()
defer d.mu.RUnlock()
if d.err != nil {
return &store.InvalidStream{d.err}
}
- return newStream(d, start, end, d.readOptions)
+ return newStream(d, start, limit, d.readOptions)
}
// Put implements the store.StoreWriter interface.
diff --git a/services/syncbase/store/leveldb/snapshot.go b/services/syncbase/store/leveldb/snapshot.go
index 7b82c7c..1e920fd 100644
--- a/services/syncbase/store/leveldb/snapshot.go
+++ b/services/syncbase/store/leveldb/snapshot.go
@@ -64,11 +64,11 @@
}
// Scan implements the store.StoreReader interface.
-func (s *snapshot) Scan(start, end []byte) store.Stream {
+func (s *snapshot) Scan(start, limit []byte) store.Stream {
s.mu.RLock()
defer s.mu.RUnlock()
if s.err != nil {
return &store.InvalidStream{s.err}
}
- return newStream(s.d, start, end, s.cOpts)
+ return newStream(s.d, start, limit, s.cOpts)
}
diff --git a/services/syncbase/store/leveldb/stream.go b/services/syncbase/store/leveldb/stream.go
index 4705e59..bc146e8 100644
--- a/services/syncbase/store/leveldb/stream.go
+++ b/services/syncbase/store/leveldb/stream.go
@@ -21,7 +21,7 @@
// mu protects the state of the stream.
mu sync.Mutex
cIter *C.syncbase_leveldb_iterator_t
- end []byte
+ limit []byte
hasAdvanced bool
err error
@@ -37,12 +37,12 @@
var _ store.Stream = (*stream)(nil)
-func newStream(d *db, start, end []byte, cOpts *C.leveldb_readoptions_t) *stream {
+func newStream(d *db, start, limit []byte, cOpts *C.leveldb_readoptions_t) *stream {
cStr, size := cSlice(start)
cIter := C.syncbase_leveldb_create_iterator(d.cDb, cOpts, cStr, size)
return &stream{
cIter: cIter,
- end: end,
+ limit: limit,
}
}
@@ -66,7 +66,7 @@
} else {
C.syncbase_leveldb_iter_next(s.cIter)
}
- if s.cIter.is_valid != 0 && (len(s.end) == 0 || bytes.Compare(s.cKey(), s.end) < 0) {
+ if s.cIter.is_valid != 0 && (len(s.limit) == 0 || bytes.Compare(s.cKey(), s.limit) < 0) {
s.hasValue = true
s.key = s.cKey()
s.value = s.cVal()
diff --git a/services/syncbase/store/leveldb/transaction.go b/services/syncbase/store/leveldb/transaction.go
index 12c3a65..2137978 100644
--- a/services/syncbase/store/leveldb/transaction.go
+++ b/services/syncbase/store/leveldb/transaction.go
@@ -70,13 +70,13 @@
}
// Scan implements the store.StoreReader interface.
-func (tx *transaction) Scan(start, end []byte) store.Stream {
+func (tx *transaction) Scan(start, limit []byte) store.Stream {
tx.mu.Lock()
defer tx.mu.Unlock()
if tx.err != nil {
return &store.InvalidStream{tx.err}
}
- return tx.snapshot.Scan(start, end)
+ return tx.snapshot.Scan(start, limit)
}
// Put implements the store.StoreWriter interface.
diff --git a/services/syncbase/store/memstore/stream.go b/services/syncbase/store/memstore/stream.go
index 221d33c..f60e27e 100644
--- a/services/syncbase/store/memstore/stream.go
+++ b/services/syncbase/store/memstore/stream.go
@@ -23,10 +23,10 @@
var _ store.Stream = (*stream)(nil)
-func newStream(sn *snapshot, start, end []byte) *stream {
+func newStream(sn *snapshot, start, limit []byte) *stream {
keys := []string{}
for k := range sn.data {
- if k >= string(start) && (len(end) == 0 || k < string(end)) {
+ if k >= string(start) && (len(limit) == 0 || k < string(limit)) {
keys = append(keys, k)
}
}
diff --git a/services/syncbase/store/model.go b/services/syncbase/store/model.go
index 22a5c99..8d85b2a 100644
--- a/services/syncbase/store/model.go
+++ b/services/syncbase/store/model.go
@@ -16,8 +16,8 @@
// fails with ErrUnknownKey.
Get(key, valbuf []byte) ([]byte, error)
- // Scan returns all rows with keys in range [start, end).
- Scan(start, end []byte) Stream
+ // Scan returns all rows with keys in range [start, limit).
+ Scan(start, limit []byte) Stream
}
// StoreWriter writes data to a CRUD-capable storage engine.
diff --git a/services/syncbase/store/test/store.go b/services/syncbase/store/test/store.go
index a0b150f..08b39b5 100644
--- a/services/syncbase/store/test/store.go
+++ b/services/syncbase/store/test/store.go
@@ -88,13 +88,13 @@
}
// Verify 10 random Scan() calls.
for i := 0; i < 10; i++ {
- start, end := s.rnd.Intn(s.size), s.rnd.Intn(s.size)
- if start > end {
- start, end = end, start
+ start, limit := s.rnd.Intn(s.size), s.rnd.Intn(s.size)
+ if start > limit {
+ start, limit = limit, start
}
- end++
- stream := st.Scan([]byte(fmt.Sprintf("%05d", start)), []byte(fmt.Sprintf("%05d", end)))
- for start = s.lowerBound(start); start < end; start = s.lowerBound(start + 1) {
+ limit++
+ stream := st.Scan([]byte(fmt.Sprintf("%05d", start)), []byte(fmt.Sprintf("%05d", limit)))
+ for start = s.lowerBound(start); start < limit; start = s.lowerBound(start + 1) {
keystr := fmt.Sprintf("%05d", start)
verifyAdvance(t, stream, []byte(keystr), s.memtable[keystr])
}