You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2020/08/04 20:29:40 UTC
[couchdb] branch prototype/fdb-layer-ebtree-collate-validate
created (now 44564eb)
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a change to branch prototype/fdb-layer-ebtree-collate-validate
in repository https://gitbox.apache.org/repos/asf/couchdb.git.
at 44564eb Validate the result from collate_fun
This branch includes the following new commits:
new 44564eb Validate the result from collate_fun
The 1 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.
[couchdb] 01/01: Validate the result from collate_fun
Posted by rn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch prototype/fdb-layer-ebtree-collate-validate
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 44564eb7ef9ba2051c96520d8180d39fb35f2e1d
Author: Robert Newson <rn...@apache.org>
AuthorDate: Tue Aug 4 21:28:58 2020 +0100
Validate the result from collate_fun
---
src/ebtree/src/ebtree.erl | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index bae0ff3..36d3c47 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -918,7 +918,13 @@ collate(#tree{} = _Tree, _A, ?MAX) ->
collate(#tree{} = Tree, A, B) ->
#tree{collate_fun = CollateFun} = Tree,
- CollateFun(A, B).
+ Result = CollateFun(A, B),
+ case lists:member(Result, [lt, eq, gt]) of
+ true ->
+ Result;
+ false ->
+ throw(invalid_collation_result)
+ end.
collate(#tree{} = Tree, A, B, Allowed) ->
@@ -1090,6 +1096,11 @@ collation_fun_test_() ->
].
+collate_validation_test() ->
+ Tree = #tree{collate_fun = fun(_A, _B) -> foo end},
+ ?assertThrow(invalid_collation_result, collate(Tree, 1, 2)).
+
+
lookup_test() ->
Db = erlfdb_util:get_test_db([empty]),
Tree = open(Db, <<1,2,3>>, 4),