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])
 		}