You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2020/08/05 20:08:53 UTC

[couchdb] branch prototype/fdb-layer updated (282e858 -> 29d6498)

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a change to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git.


    from 282e858  add local_seq option to views (#3043)
     new f925919  Export reduce/5
     new a32bc83  Handle empty reduce batches
     new 29d6498  Fix range scans over an empty tree

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/ebtree/src/ebtree.erl | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)


[couchdb] 01/03: Export reduce/5

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit f9259195529a144def25e3d3ba86ac26a76d4b51
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Aug 5 13:19:30 2020 -0500

    Export reduce/5
---
 src/ebtree/src/ebtree.erl | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index c28693d..566cf2a 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -25,6 +25,7 @@
      fold/4,
      fold/5,
      reduce/4,
+     reduce/5,
      full_reduce/2,
      group_reduce/7,
      group_reduce/8,


[couchdb] 03/03: Fix range scans over an empty tree

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 29d649850874735de919ad39a9e04bef29c96267
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Aug 5 13:20:36 2020 -0500

    Fix range scans over an empty tree
---
 src/ebtree/src/ebtree.erl | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index cd08e75..15a21a6 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -415,6 +415,9 @@ range(Db, #tree{} = Tree, StartKey, EndKey, AccFun, Acc0) ->
     end).
 
 
+range(_Tx, #tree{}, #node{id = ?NODE_ROOT_ID, members = []}, _StartKey, _EndKey, _AccFun, Acc0) ->
+    Acc0;
+
 range(Tx, #tree{} = Tree, #node{level = 0} = Node, StartKey, EndKey, AccFun, Acc0) ->
     InRange = [{K, V} || {K, V} <- Node#node.members,
         collate(Tree, StartKey, K, [lt, eq]), collate(Tree, K, EndKey, [lt, eq])],
@@ -448,6 +451,9 @@ reverse_range(Db, #tree{} = Tree, StartKey, EndKey, AccFun, Acc0) ->
     end).
 
 
+reverse_range(_Tx, #tree{}, #node{id = ?NODE_ROOT_ID, members = []}, _StartKey, _EndKey, _AccFun, Acc0) ->
+    Acc0;
+
 reverse_range(Tx, #tree{} = Tree, #node{level = 0} = Node, StartKey, EndKey, AccFun, Acc0) ->
     InRange = [{K, V} || {K, V} <- Node#node.members,
         collate(Tree, StartKey, K, [lt, eq]), collate(Tree, K, EndKey, [lt, eq])],
@@ -1301,6 +1307,15 @@ lookup_test_fun(Max, Order) ->
         [Order, Max, 1000 * (Max / msec(T1 - T0)), 1000 * (Max / msec(T2 - T1))]).
 
 
+empty_range_test() ->
+    Db = erlfdb_util:get_test_db([empty]),
+    Tree = open(Db, <<1, 2, 3>>, 10),
+    ?assertEqual(
+        blah,
+        range(Db, Tree, min(), max(), fun(_, A) -> A end, blah)
+    ).
+
+
 range_test_() ->
     {timeout, 1000, fun() ->
         Db = erlfdb_util:get_test_db([empty]),
@@ -1317,6 +1332,15 @@ range_test_() ->
     end}.
 
 
+empty_reverse_range_test() ->
+    Db = erlfdb_util:get_test_db([empty]),
+    Tree = open(Db, <<1, 2, 3>>, 10),
+    ?assertEqual(
+        blah,
+        reverse_range(Db, Tree, min(), max(), fun(_, A) -> A end, blah)
+    ).
+
+
 reverse_range_test_() ->
     {timeout, 1000, fun() ->
         Db = erlfdb_util:get_test_db([empty]),


[couchdb] 02/03: Handle empty reduce batches

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit a32bc83084e8b927931fe23fb234f5c9fa3f8dbd
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Aug 5 13:19:52 2020 -0500

    Handle empty reduce batches
---
 src/ebtree/src/ebtree.erl | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index 566cf2a..cd08e75 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -283,6 +283,9 @@ reduce(Db, #tree{} = Tree, StartKey, EndKey, Options) ->
     do_reduce(Tree, MapValues, ReduceValues).
 
 
+do_reduce(#tree{} = Tree, [], []) ->
+    reduce_values(Tree, [], false);
+
 do_reduce(#tree{} = Tree, [], ReduceValues) when is_list(ReduceValues) ->
     reduce_values(Tree, ReduceValues, true);
 
@@ -1131,6 +1134,12 @@ range_after_delete_test() ->
     ?assertEqual(50, reverse_range(Db, Tree, 1, 100, fun(E, A) -> length(E) + A end, 0)).
 
 
+full_reduce_empty_test() ->
+    Db = erlfdb_util:get_test_db([empty]),
+    Tree = open(Db, <<1,2,3>>, 4, [{reduce_fun, fun reduce_sum/2}]),
+    ?assertEqual(0, full_reduce(Db, Tree)).
+
+
 full_reduce_test_() ->
     Db = erlfdb_util:get_test_db([empty]),
     Tree = open(Db, <<1,2,3>>, 4, [{reduce_fun, fun reduce_sum/2}]),