From dcd71abb9ac84ac62a6382dcaec0cb3c89007f10 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Sun, 8 Aug 2010 02:25:40 +0000 Subject: provide the update_seq in all_docs view even when it is zero git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.0.x@983337 13f79535-47bb-0310-9956-ffa450edef68 --- THANKS | 1 + share/www/script/test/view_update_seq.js | 7 ++++++- src/couchdb/couch_httpd_db.erl | 12 +++++++++--- src/couchdb/couch_httpd_view.erl | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/THANKS b/THANKS index 4ce85ff0..ebee4845 100644 --- a/THANKS +++ b/THANKS @@ -64,5 +64,6 @@ suggesting improvements or submitting changes. Some of these people are: * Caleb Land * Juhani Ränkimies * Lim Yue Chuan + * David Davis For a list of authors see the `AUTHORS` file. diff --git a/share/www/script/test/view_update_seq.js b/share/www/script/test/view_update_seq.js index cfda1a87..e6be3f70 100644 --- a/share/www/script/test/view_update_seq.js +++ b/share/www/script/test/view_update_seq.js @@ -18,6 +18,11 @@ couchTests.view_update_seq = function(debug) { T(db.info().update_seq == 0); + resp = db.allDocs({update_seq:true}); + + T(resp.rows.length == 0); + T(resp.update_seq == 0); + var designDoc = { _id:"_design/test", language: "javascript", @@ -35,7 +40,7 @@ couchTests.view_update_seq = function(debug) { T(db.info().update_seq == 1); - var resp = db.allDocs({update_seq:true}); + resp = db.allDocs({update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 1); diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index f6c646ed..cf4e2120 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -486,7 +486,13 @@ all_docs_view(Req, Db, Keys) -> true -> EndDocId end, FoldAccInit = {Limit, SkipCount, undefined, []}, - UpdateSeq = couch_db:get_update_seq(Db), + UpdateSeq = couch_db:get_update_seq(Db), + JsonParams = case couch_httpd:qs_value(Req, "update_seq") of + "true" -> + [{update_seq, UpdateSeq}]; + _Else -> + [] + end, case Keys of nil -> FoldlFun = couch_httpd_view:make_view_fold_fun(Req, QueryArgs, CurrentEtag, Db, UpdateSeq, @@ -504,7 +510,7 @@ all_docs_view(Req, Db, Keys) -> {ok, LastOffset, FoldResult} = couch_db:enum_docs(Db, AdapterFun, FoldAccInit, [{start_key, StartId}, {dir, Dir}, {if Inclusive -> end_key; true -> end_key_gt end, EndId}]), - couch_httpd_view:finish_view_fold(Req, TotalRowCount, LastOffset, FoldResult); + couch_httpd_view:finish_view_fold(Req, TotalRowCount, LastOffset, FoldResult, JsonParams); _ -> FoldlFun = couch_httpd_view:make_view_fold_fun(Req, QueryArgs, CurrentEtag, Db, UpdateSeq, TotalRowCount, #view_fold_helper_funs{ @@ -533,7 +539,7 @@ all_docs_view(Req, Db, Keys) -> {_, FoldAcc2} = FoldlFun(Doc, 0, FoldAcc), FoldAcc2 end, FoldAccInit, Keys), - couch_httpd_view:finish_view_fold(Req, TotalRowCount, 0, FoldResult) + couch_httpd_view:finish_view_fold(Req, TotalRowCount, 0, FoldResult, JsonParams) end end). diff --git a/src/couchdb/couch_httpd_view.erl b/src/couchdb/couch_httpd_view.erl index fc0c24a8..e1a0dfad 100644 --- a/src/couchdb/couch_httpd_view.erl +++ b/src/couchdb/couch_httpd_view.erl @@ -16,7 +16,7 @@ -export([handle_view_req/3,handle_temp_view_req/2]). -export([get_stale_type/1, get_reduce_type/1, parse_view_params/3]). --export([make_view_fold_fun/7, finish_view_fold/4, view_row_obj/3]). +-export([make_view_fold_fun/7, finish_view_fold/4, finish_view_fold/5, view_row_obj/3]). -export([view_group_etag/2, view_group_etag/3, make_reduce_fold_funs/6]). -export([design_doc_view/5, parse_bool_param/1, doc_member/2]). -export([make_key_options/1, load_view/4]). -- cgit v1.2.3