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}]),