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 12:51:14 +0200 |
commit | 8f949815f926c783ee59e0c16dd935c95fc804b5 (patch) | |
tree | 3894136a616faa045a060867e3bb26818b632191 | |
parent | 132cf7a9ba797a1cf228c39ccf6448a683a934d0 (diff) | |
download | couchdb-fix-reverse-fold-options.tar.gz |
Fix bug in reverse folding with startkey_docidarchive/fix-reverse-fold-optionsfix-reverse-fold-options
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) |