This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/couchdb.git
The following commit(s) were added to refs/heads/main by this push: new d16fc1ff9 Minor couch_btree refactoring d16fc1ff9 is described below commit d16fc1ff9f6d6da36a27f76c600f48ede7a00722 Author: Nick Vatamaniuc <vatam...@gmail.com> AuthorDate: Thu Aug 7 17:17:11 2025 -0400 Minor couch_btree refactoring Make the #btree{} record private. There is no reason for the record to be in the public include file. --- src/couch/include/couch_db.hrl | 10 ---------- src/couch/src/couch_btree.erl | 24 +++++++++++++++++++++++- src/couch/test/eunit/couch_btree_tests.erl | 11 +++++------ src/couch_mrview/src/couch_mrview_util.erl | 3 ++- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/couch/include/couch_db.hrl b/src/couch/include/couch_db.hrl index 9c1df21b6..138c202d5 100644 --- a/src/couch/include/couch_db.hrl +++ b/src/couch/include/couch_db.hrl @@ -182,16 +182,6 @@ db_open_options = [] }). --record(btree, { - fd, - root, - extract_kv, - assemble_kv, - less, - reduce = nil, - compression = ?DEFAULT_COMPRESSION -}). - -record(proc, { pid, lang, diff --git a/src/couch/src/couch_btree.erl b/src/couch/src/couch_btree.erl index b974a22ee..788b5f120 100644 --- a/src/couch/src/couch_btree.erl +++ b/src/couch/src/couch_btree.erl @@ -14,11 +14,22 @@ -export([open/2, open/3, query_modify/4, add/2, add_remove/3]). -export([fold/4, full_reduce/1, final_reduce/2, size/1, foldl/3, foldl/4]). --export([fold_reduce/4, lookup/2, get_state/1, set_options/2]). +-export([fold_reduce/4, lookup/2, set_options/2]). +-export([is_btree/1, get_state/1, get_fd/1, get_reduce_fun/1]). -export([extract/2, assemble/3, less/3]). -include_lib("couch/include/couch_db.hrl"). +-record(btree, { + fd, + root, + extract_kv, + assemble_kv, + less, + reduce = nil, + compression = ?DEFAULT_COMPRESSION +}). + -define(FILL_RATIO, 0.5). extract(#btree{extract_kv = undefined}, Value) -> @@ -56,9 +67,20 @@ set_options(Bt, [{compression, Comp} | Rest]) -> open(State, Fd, Options) -> {ok, set_options(#btree{root = State, fd = Fd}, Options)}. +is_btree(#btree{}) -> + true; +is_btree(_) -> + false. + get_state(#btree{root = Root}) -> Root. +get_fd(#btree{fd = Fd}) -> + Fd. + +get_reduce_fun(#btree{reduce = Reduce}) -> + Reduce. + final_reduce(#btree{reduce = Reduce}, Val) -> final_reduce(Reduce, Val); final_reduce(Reduce, {[], []}) -> diff --git a/src/couch/test/eunit/couch_btree_tests.erl b/src/couch/test/eunit/couch_btree_tests.erl index 1ec92818b..740196518 100644 --- a/src/couch/test/eunit/couch_btree_tests.erl +++ b/src/couch/test/eunit/couch_btree_tests.erl @@ -13,7 +13,6 @@ -module(couch_btree_tests). -include_lib("couch/include/couch_eunit.hrl"). --include_lib("couch/include/couch_db.hrl"). -define(ROWS, 1000). % seconds @@ -81,7 +80,7 @@ btree_open_test_() -> {ok, Btree} = couch_btree:open(nil, Fd, [{compression, none}]), { "Ensure that created btree is really a btree record", - ?_assert(is_record(Btree, btree)) + ?_assert(couch_btree:is_btree(Btree)) }. sorted_kvs_test_() -> @@ -189,10 +188,10 @@ reductions_test_() -> }. should_set_fd_correctly(_, {Fd, Btree}) -> - ?_assertMatch(Fd, Btree#btree.fd). + ?_assertMatch(Fd, couch_btree:get_fd(Btree)). should_set_root_correctly(_, {_, Btree}) -> - ?_assertMatch(nil, Btree#btree.root). + ?_assertMatch(nil, couch_btree:get_state(Btree)). should_create_zero_sized_btree(_, {_, Btree}) -> ?_assertMatch(0, couch_btree:size(Btree)). @@ -200,7 +199,7 @@ should_create_zero_sized_btree(_, {_, Btree}) -> should_set_reduce_option(_, {_, Btree}) -> ReduceFun = fun reduce_fun/2, Btree1 = couch_btree:set_options(Btree, [{reduce, ReduceFun}]), - ?_assertMatch(ReduceFun, Btree1#btree.reduce). + ?_assertMatch(ReduceFun, couch_btree:get_reduce_fun(Btree1)). should_fold_over_empty_btree(_, {_, Btree}) -> {ok, _, EmptyRes} = couch_btree:foldl(Btree, fun(_, X) -> {ok, X + 1} end, 0), @@ -228,7 +227,7 @@ should_have_lesser_size_than_file(Fd, Btree) -> should_keep_root_pointer_to_kp_node(Fd, Btree) -> ?_assertMatch( {ok, {kp_node, _}}, - couch_file:pread_term(Fd, element(1, Btree#btree.root)) + couch_file:pread_term(Fd, element(1, couch_btree:get_state(Btree))) ). should_remove_all_keys(KeyValues, Btree) -> diff --git a/src/couch_mrview/src/couch_mrview_util.erl b/src/couch_mrview/src/couch_mrview_util.erl index 03e35687e..eb176d365 100644 --- a/src/couch_mrview/src/couch_mrview_util.erl +++ b/src/couch_mrview/src/couch_mrview_util.erl @@ -1317,7 +1317,8 @@ make_user_reds_reduce_fun(Lang, ReduceFuns, NthRed) -> get_btree_state(nil) -> nil; -get_btree_state(#btree{} = Btree) -> +get_btree_state(Btree) -> + true = couch_btree:is_btree(Btree), couch_btree:get_state(Btree). extract_view_reduce({red, {N, _Lang, #mrview{reduce_funs = Reds}}, _Ref}) ->