From a3ebdb020c83b86c36377d20d31e15db6168413d Mon Sep 17 00:00:00 2001 From: LinYushen Date: Fri, 10 Jan 2020 18:13:06 +0800 Subject: [PATCH] fix RowKVClient scan method can't rightly break loop (#43) * fix RowKVClient scan method can't rightly break loop Signed-off-by: Yushen Lin * fix rawkv Scan and ReverseScan Signed-off-by: Yushen Lin --- .gitignore | 1 + rawkv/rawkv.go | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 10e8d7ac..c3543d09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor go.sum +.idea \ No newline at end of file diff --git a/rawkv/rawkv.go b/rawkv/rawkv.go index 9d32b3b2..368b5783 100644 --- a/rawkv/rawkv.go +++ b/rawkv/rawkv.go @@ -263,7 +263,7 @@ func (c *Client) Scan(ctx context.Context, startKey, endKey []byte, limit int) ( return nil, nil, errors.WithStack(ErrMaxScanLimitExceeded) } - for len(keys) < limit { + for len(keys) < limit && (len(endKey) == 0 || bytes.Compare(startKey, endKey) < 0) { req := &rpc.Request{ Type: rpc.CmdRawScan, RawScan: &kvrpcpb.RawScanRequest{ @@ -307,7 +307,7 @@ func (c *Client) ReverseScan(ctx context.Context, startKey, endKey []byte, limit return nil, nil, errors.WithStack(ErrMaxScanLimitExceeded) } - for len(keys) < limit { + for len(keys) < limit && bytes.Compare(startKey, endKey) > 0 { req := &rpc.Request{ Type: rpc.CmdRawScan, RawScan: &kvrpcpb.RawScanRequest{