From 1cd6fefd497a5684faeb6f8bb082aa1595e8e79d Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Tue, 18 Oct 2016 16:03:56 -0700 Subject: [PATCH] etcdserver: set sort ASCEND for empty sort order when target is not key --- etcdserver/apply.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/etcdserver/apply.go b/etcdserver/apply.go index 6162287b9..dbdc032df 100644 --- a/etcdserver/apply.go +++ b/etcdserver/apply.go @@ -304,7 +304,14 @@ func (a *applierV3backend) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResp pruneKVs(rr, f) } - if r.SortOrder != pb.RangeRequest_NONE { + sortOrder := r.SortOrder + if r.SortTarget != pb.RangeRequest_KEY && sortOrder == pb.RangeRequest_NONE { + // Since current mvcc.Range implementation returns results + // sorted by keys in lexiographically ascending order, + // sort ASCEND by default only when target is not 'KEY' + sortOrder = pb.RangeRequest_ASCEND + } + if sortOrder != pb.RangeRequest_NONE { var sorter sort.Interface switch { case r.SortTarget == pb.RangeRequest_KEY: @@ -319,9 +326,9 @@ func (a *applierV3backend) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResp sorter = &kvSortByValue{&kvSort{rr.KVs}} } switch { - case r.SortOrder == pb.RangeRequest_ASCEND: + case sortOrder == pb.RangeRequest_ASCEND: sort.Sort(sorter) - case r.SortOrder == pb.RangeRequest_DESCEND: + case sortOrder == pb.RangeRequest_DESCEND: sort.Sort(sort.Reverse(sorter)) } }