You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by kx...@apache.org on 2013/07/24 16:12:43 UTC
git commit: updated refs/heads/master to 54fd258
Updated Branches:
refs/heads/master 635022b27 -> 54fd258ed
Apply _list functions for _all_docs view. COUCHDB-1139
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/54fd258e
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/54fd258e
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/54fd258e
Branch: refs/heads/master
Commit: 54fd258edd1623f2fa9288d9598debb887e30c35
Parents: 635022b
Author: Alexander Shorin <kx...@apache.org>
Authored: Wed Jul 24 18:12:03 2013 +0400
Committer: Alexander Shorin <kx...@apache.org>
Committed: Wed Jul 24 18:12:03 2013 +0400
----------------------------------------------------------------------
share/doc/src/changelog.rst | 2 ++
share/www/script/test/list_views.js | 21 +++++++++++++++++++++
src/couch_mrview/src/couch_mrview_show.erl | 7 ++++++-
3 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/54fd258e/share/doc/src/changelog.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/changelog.rst b/share/doc/src/changelog.rst
index de61621..2af83f9 100644
--- a/share/doc/src/changelog.rst
+++ b/share/doc/src/changelog.rst
@@ -35,6 +35,8 @@ Version 1.4.0
* Bumped Mochiweb dependency to 2.4.2.
* Disabled link to the Futon test suite.
* Split up replicator_db tests into multiple independent tests.
+* :issue:`1139`: it's possible to apply :ref:`list <listfun>`
+ functions to ``_all_docs`` view.
1.3.x Branch
============
http://git-wip-us.apache.org/repos/asf/couchdb/blob/54fd258e/share/www/script/test/list_views.js
----------------------------------------------------------------------
diff --git a/share/www/script/test/list_views.js b/share/www/script/test/list_views.js
index 633afb4..3a6e045 100644
--- a/share/www/script/test/list_views.js
+++ b/share/www/script/test/list_views.js
@@ -170,6 +170,16 @@ couchTests.list_views = function(debug) {
});
send("bad request");
}),
+ allDocs: stringFun(function(head, req){
+ start({'headers': {'Content-Type': 'application/json'}});
+ var resp = head;
+ var rows = [];
+ while(row=getRow()){
+ rows.push(row);
+ }
+ resp.rows = rows;
+ return toJSON(resp);
+ })
}
};
var viewOnlyDesignDoc = {
@@ -492,4 +502,15 @@ couchTests.list_views = function(debug) {
T(xhr.status == 400);
T(xhr.getResponseHeader("X-My-Header") == "MyHeader");
T(xhr.responseText.match(/^bad request$/));
+
+ // test handling _all_docs by _list functions. the result should be equal
+ var xhr_lAllDocs = CouchDB.request("GET", "/test_suite_db/_design/lists/_list/allDocs/_all_docs");
+ T(xhr_lAllDocs.status == 200, "standard get should be 200");
+ var xhr_allDocs = CouchDB.request("GET", "/test_suite_db/_all_docs");
+ var allDocs = JSON.parse(xhr_allDocs.responseText);
+ var lAllDocs = JSON.parse(xhr_lAllDocs.responseText);
+ TEquals(allDocs.total_rows, lAllDocs.total_rows, "total_rows mismatch");
+ TEquals(allDocs.offset, lAllDocs.offset, "offset mismatch");
+ TEquals(allDocs.rows.length, lAllDocs.rows.length, "amount of rows mismatch");
+ TEquals(allDocs.rows, lAllDocs.rows, "rows mismatch");
};
http://git-wip-us.apache.org/repos/asf/couchdb/blob/54fd258e/src/couch_mrview/src/couch_mrview_show.erl
----------------------------------------------------------------------
diff --git a/src/couch_mrview/src/couch_mrview_show.erl b/src/couch_mrview/src/couch_mrview_show.erl
index 98b2d63..f8fa837 100644
--- a/src/couch_mrview/src/couch_mrview_show.erl
+++ b/src/couch_mrview/src/couch_mrview_show.erl
@@ -210,7 +210,12 @@ handle_view_list(Req, Db, DDoc, LName, VDDoc, VName, Keys) ->
couch_httpd:etag_maybe(Req, fun() ->
couch_query_servers:with_ddoc_proc(DDoc, fun(QServer) ->
Acc = #lacc{db=Db, req=Req, qserver=QServer, lname=LName},
- couch_mrview:query_view(Db, VDDoc, VName, Args, fun list_cb/2, Acc)
+ case VName of
+ <<"_all_docs">> ->
+ couch_mrview:query_all_docs(Db, Args, fun list_cb/2, Acc);
+ _ ->
+ couch_mrview:query_view(Db, VDDoc, VName, Args, fun list_cb/2, Acc)
+ end
end)
end).