summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Christopher Anderson <jchris@apache.org>2010-06-05 21:59:53 +0000
committerJohn Christopher Anderson <jchris@apache.org>2010-06-05 21:59:53 +0000
commitcec0ef2ac1d2ecb5e2153f2415cb947fadeb42e0 (patch)
treeb54a4c9a581e6e9afc986d71c09a826e559ad0e3
parente9970e71045eb9ea34976e24c287c729708f773d (diff)
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
-rw-r--r--share/www/script/test/view_update_seq.js26
-rw-r--r--src/couchdb/couch_httpd_view.erl22
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}]})),