diff options
author | Garren Smith <garren.smith@gmail.com> | 2020-03-09 16:10:24 +0200 |
---|---|---|
committer | garren smith <garren.smith@gmail.com> | 2020-03-10 17:48:43 +0200 |
commit | 6b5985fa4e0abc787698cb458050203c01250adc (patch) | |
tree | 3894136a616faa045a060867e3bb26818b632191 | |
parent | 132cf7a9ba797a1cf228c39ccf6448a683a934d0 (diff) | |
download | couchdb-6b5985fa4e0abc787698cb458050203c01250adc.tar.gz |
Fix bug in reverse folding with startkey_docid
Fixes an issue where the first k/v was skipped if the startkey_docid
was included.
-rw-r--r-- | src/fabric/src/fabric2_fdb.erl | 3 | ||||
-rw-r--r-- | test/elixir/test/map_test.exs | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl index c34b33cbc..b4a4fd6a2 100644 --- a/src/fabric/src/fabric2_fdb.erl +++ b/src/fabric/src/fabric2_fdb.erl @@ -1470,6 +1470,9 @@ get_fold_acc(Db, RangePrefix, UserCallback, UserAcc, Options) EndKey2 = case EndKey1 of undefined -> <<RangePrefix/binary, 16#FF>>; + EK2 when Reverse -> + PackedEK = erlfdb_tuple:pack({EK2}, RangePrefix), + <<PackedEK/binary, 16#FF>>; EK2 -> erlfdb_tuple:pack({EK2}, RangePrefix) end, diff --git a/test/elixir/test/map_test.exs b/test/elixir/test/map_test.exs index bccd4173b..d2a79449f 100644 --- a/test/elixir/test/map_test.exs +++ b/test/elixir/test/map_test.exs @@ -535,6 +535,22 @@ defmodule ViewMapTest do assert error == "foundationdb_error" end + test "descending=true query with startkey_docid", context do + db_name = context[:db_name] + + url = "/#{db_name}/_design/map/_view/some" + + resp = + Couch.get(url, + query: %{descending: true, startkey: 8, startkey_docid: "doc-id-8", limit: 3} + ) + + ids = get_ids(resp) + + assert resp.status_code == 200 + assert ids == ["doc-id-8", "doc-id-7", "doc-id-6"] + end + def update_doc_value(db_name, id, value) do resp = Couch.get("/#{db_name}/#{id}") doc = convert(resp.body) |