You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2014/08/28 13:59:41 UTC

[18/50] chttpd commit: updated refs/heads/master to 58020ab

Support "seq_interval" qs param on _changes

Supplying seq_interval=N will cause the changes feed to include a
sequence on every Nth row but set seq: null otherwise.  It's a
performance hack until we can deploy a more efficient format.

BugzID: 23637


Project: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/commit/34c14756
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/tree/34c14756
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/diff/34c14756

Branch: refs/heads/master
Commit: 34c147567dc1f94d2bdace0e456834fc4ddcd56a
Parents: 1fc39d2
Author: Adam Kocoloski <ad...@cloudant.com>
Authored: Tue Oct 1 21:47:50 2013 -0400
Committer: Robert Newson <rn...@apache.org>
Committed: Tue Jul 29 18:17:33 2014 +0100

----------------------------------------------------------------------
 src/chttpd_db.erl | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/blob/34c14756/src/chttpd_db.erl
----------------------------------------------------------------------
diff --git a/src/chttpd_db.erl b/src/chttpd_db.erl
index 7d27bd9..a6c6594 100644
--- a/src/chttpd_db.erl
+++ b/src/chttpd_db.erl
@@ -1224,6 +1224,7 @@ parse_doc_query(Req) ->
     end, #doc_query_args{}, chttpd:qs(Req)).
 
 parse_changes_query(Req) ->
+    erlang:erase(changes_seq_interval),
     ChangesArgs = lists:foldl(fun({Key, Value}, Args) ->
         case {string:to_lower(Key), Value} of
         {"feed", _} ->
@@ -1250,6 +1251,16 @@ parse_changes_query(Req) ->
             Args#changes_args{conflicts=true};
         {"filter", _} ->
             Args#changes_args{filter=Value};
+        {"seq_interval", _} ->
+            try list_to_integer(Value) of
+                V when V > 0 ->
+                    erlang:put(changes_seq_interval, V),
+                    Args;
+                _ ->
+                    throw({bad_request, invalid_seq_interval})
+            catch error:badarg ->
+                throw({bad_request, invalid_seq_interval})
+            end;
         _Else -> % unknown key value pair, ignore.
             Args
         end