summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2020-03-09 16:10:24 +0200
committerGarren Smith <garren.smith@gmail.com>2020-03-10 12:51:14 +0200
commit8f949815f926c783ee59e0c16dd935c95fc804b5 (patch)
tree3894136a616faa045a060867e3bb26818b632191
parent132cf7a9ba797a1cf228c39ccf6448a683a934d0 (diff)
downloadcouchdb-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.erl3
-rw-r--r--test/elixir/test/map_test.exs16
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)