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/09/16 19:45:33 UTC

[couchdb] branch fix-ebtree-umerge-members created (now 356085f)

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

davisp pushed a change to branch fix-ebtree-umerge-members
in repository https://gitbox.apache.org/repos/asf/couchdb.git.


      at 356085f  Fix bug in ebtree:umerge_members/4

This branch includes the following new commits:

     new 356085f  Fix bug in ebtree:umerge_members/4

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: Fix bug in ebtree:umerge_members/4

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

davisp pushed a commit to branch fix-ebtree-umerge-members
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 356085fece8353df85953ec19f6e65a8822ce3cf
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Sep 16 14:23:51 2020 -0500

    Fix bug in ebtree:umerge_members/4
    
    Caught during Elixir tests. I've added a unit test to `ebtree.erl` to
    ensure we don't regress in the future.
---
 src/ebtree/src/ebtree.erl | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index 3cfb820..97a8203 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -1187,7 +1187,7 @@ umerge_members_int(_Collate, List1, [], Acc) ->
 umerge_members_int(Collate, [H1 | T1], [H2 | T2], Acc) ->
     case Collate(H1, H2) of
         lt -> umerge_members_int(Collate, T1, [H2 | T2], [H1 | Acc]);
-        eq -> umerge_members_int(Collate, T1, [H2 | T2], [H1 | Acc]);
+        eq -> umerge_members_int(Collate, T1, T2, [H1 | Acc]);
         gt -> umerge_members_int(Collate, [H1 | T1], T2, [H2 | Acc])
     end.
 
@@ -1800,4 +1800,20 @@ cache_test_() ->
         ?assertEqual(3, length(NodeCache))
     end]}.
 
+
+umerge_members_test() ->
+    Tree = #tree{collate_fun = fun collate_raw/2},
+    NewList = fun() ->
+        Raw = [{rand:uniform(100), rand:uniform()} || _ <- lists:seq(1, 100)],
+        lists:ukeysort(1, Raw)
+    end,
+    lists:foreach(fun(_) ->
+        A = NewList(),
+        B = NewList(),
+        Stdlib = lists:ukeymerge(1, A, B),
+        Custom = umerge_members(Tree, 0, A, B),
+        ?assertEqual(Stdlib, Custom)
+    end, lists:seq(1, 100)).
+
+
 -endif.