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

Reply via email to