summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Avdey <eiri@eiri.ca>2018-11-16 14:53:48 -0400
committerEric Avdey <eiri@eiri.ca>2018-11-21 17:18:15 -0400
commita2fd9eb8a0f7fba39248ab84764f5d735bcb83aa (patch)
tree82a5f63254700aca2eaa4efde614f4940c478761
parent854f3d9fcbd8db91ab208e27038c252d91841fcf (diff)
downloadcouchdb-a2fd9eb8a0f7fba39248ab84764f5d735bcb83aa.tar.gz
Fix total_rows for _design_docs handler
-rw-r--r--src/couch/src/couch_db.erl5
-rw-r--r--src/couch_mrview/src/couch_mrview.erl3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl
index 9d6a5dc45..60a395fd7 100644
--- a/src/couch/src/couch_db.erl
+++ b/src/couch/src/couch_db.erl
@@ -78,6 +78,7 @@
get_full_doc_infos/2,
get_missing_revs/2,
get_design_docs/1,
+ get_design_doc_count/1,
get_purge_infos/2,
get_minimum_purge_seq/1,
@@ -618,6 +619,10 @@ get_design_docs(#db{} = Db) ->
{ok, Docs} = fold_design_docs(Db, FoldFun, [], []),
{ok, lists:reverse(Docs)}.
+get_design_doc_count(#db{} = Db) ->
+ FoldFun = fun(_, Acc) -> {ok, Acc + 1} end,
+ fold_design_docs(Db, FoldFun, 0, []).
+
check_is_admin(#db{user_ctx=UserCtx}=Db) ->
case is_admin(Db) of
true -> ok;
diff --git a/src/couch_mrview/src/couch_mrview.erl b/src/couch_mrview/src/couch_mrview.erl
index 533dd2de9..f6462e156 100644
--- a/src/couch_mrview/src/couch_mrview.erl
+++ b/src/couch_mrview/src/couch_mrview.erl
@@ -712,6 +712,9 @@ get_total_rows(Db, #mrargs{extra = Extra}) ->
case couch_util:get_value(namespace, Extra) of
<<"_local">> ->
null;
+ <<"_design">> ->
+ {ok, N} = couch_db:get_design_doc_count(Db),
+ N;
_ ->
{ok, Info} = couch_db:get_db_info(Db),
couch_util:get_value(doc_count, Info)