From cec0ef2ac1d2ecb5e2153f2415cb947fadeb42e0 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Sat, 5 Jun 2010 21:59:53 +0000 Subject: update_seq is only in view response when update_seq=true is in query params git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@951776 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/view_update_seq.js | 26 +++++++++++++++++--------- src/couchdb/couch_httpd_view.erl | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/share/www/script/test/view_update_seq.js b/share/www/script/test/view_update_seq.js index 3935e153..cfda1a87 100644 --- a/share/www/script/test/view_update_seq.js +++ b/share/www/script/test/view_update_seq.js @@ -11,7 +11,7 @@ // the License. couchTests.view_update_seq = function(debug) { - var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"false"}); + var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"true"}); db.deleteDb(); db.createDb(); if (debug) debugger; @@ -35,7 +35,7 @@ couchTests.view_update_seq = function(debug) { T(db.info().update_seq == 1); - var resp = db.allDocs({}); + var resp = db.allDocs({update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 1); @@ -45,32 +45,40 @@ couchTests.view_update_seq = function(debug) { resp = db.allDocs({limit: 1}); T(resp.rows.length == 1); + T(!resp.update_seq, "all docs"); + + resp = db.allDocs({limit: 1, update_seq:true}); + T(resp.rows.length == 1); T(resp.update_seq == 101); - resp = db.view('test/all_docs', {limit: 1}); + resp = db.view('test/all_docs', {limit: 1, update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 101); - resp = db.view('test/summate', {}); + resp = db.view('test/all_docs', {limit: 1, update_seq:false}); + T(resp.rows.length == 1); + T(!resp.update_seq, "view"); + + resp = db.view('test/summate', {update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 101); db.save({"id":"0"}); - resp = db.view('test/all_docs', {limit: 1,stale: "ok"}); + resp = db.view('test/all_docs', {limit: 1,stale: "ok", update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 101); - resp = db.view('test/all_docs', {limit: 1}); + resp = db.view('test/all_docs', {limit: 1, update_seq:true}); T(resp.rows.length == 1); T(resp.update_seq == 102); - resp = db.view('test/all_docs',{},["0","1"]); + resp = db.view('test/all_docs',{update_seq:true},["0","1"]); T(resp.update_seq == 102); - resp = db.view('test/all_docs',{},["0","1"]); + resp = db.view('test/all_docs',{update_seq:true},["0","1"]); T(resp.update_seq == 102); - resp = db.view('test/summate',{group:true},["0","1"]); + resp = db.view('test/summate',{group:true, update_seq:true},["0","1"]); T(resp.update_seq == 102); }; diff --git a/src/couchdb/couch_httpd_view.erl b/src/couchdb/couch_httpd_view.erl index 0675ef43..704136ca 100644 --- a/src/couchdb/couch_httpd_view.erl +++ b/src/couchdb/couch_httpd_view.erl @@ -553,10 +553,17 @@ make_end_key_option( json_view_start_resp(Req, Etag, TotalViewCount, Offset, _Acc, UpdateSeq) -> {ok, Resp} = start_json_response(Req, 200, [{"Etag", Etag}]), - BeginBody = io_lib:format( - "{\"total_rows\":~w,\"update_seq\":~w," - "\"offset\":~w,\"rows\":[\r\n", - [TotalViewCount, UpdateSeq, Offset]), + BeginBody = case couch_httpd:qs_value(Req, "update_seq") of + "true" -> + io_lib:format( + "{\"total_rows\":~w,\"update_seq\":~w," + "\"offset\":~w,\"rows\":[\r\n", + [TotalViewCount, UpdateSeq, Offset]); + _Else -> + io_lib:format( + "{\"total_rows\":~w,\"offset\":~w,\"rows\":[\r\n", + [TotalViewCount, Offset]) + end, {ok, Resp, BeginBody}. send_json_view_row(Resp, Db, {{Key, DocId}, Value}, IncludeDocs, RowFront) -> @@ -566,7 +573,12 @@ send_json_view_row(Resp, Db, {{Key, DocId}, Value}, IncludeDocs, RowFront) -> json_reduce_start_resp(Req, Etag, _Acc0, UpdateSeq) -> {ok, Resp} = start_json_response(Req, 200, [{"Etag", Etag}]), - {ok, Resp, io_lib:format("{\"update_seq\":~w,\"rows\":[\r\n",[UpdateSeq])}. + case couch_httpd:qs_value(Req, "update_seq") of + "true" -> + {ok, Resp, io_lib:format("{\"update_seq\":~w,\"rows\":[\r\n",[UpdateSeq])}; + _Else -> + {ok, Resp, "{\"rows\":[\r\n"} + end. send_json_reduce_row(Resp, {Key, Value}, RowFront) -> send_chunk(Resp, RowFront ++ ?JSON_ENCODE({[{key, Key}, {value, Value}]})), -- cgit v1.2.3