You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wi...@apache.org on 2017/10/05 14:27:04 UTC
[couchdb] branch master updated: Correct result count in Mango
execution stats (#867)
This is an automated email from the ASF dual-hosted git repository.
willholley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4963f66 Correct result count in Mango execution stats (#867)
4963f66 is described below
commit 4963f66653e29d913eba4811b1b88d931877193f
Author: Will Holley <wi...@gmail.com>
AuthorDate: Thu Oct 5 15:27:02 2017 +0100
Correct result count in Mango execution stats (#867)
Mango execution stats previously incremented the result count
at a point where the final result might be discarded. Instead,
increment the count when we know the result is being included
in the response.
---
src/mango/src/mango_cursor_view.erl | 10 ++++------
src/mango/test/15-execution-stats-test.py | 4 ++++
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index 31e198f..59dd522 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -202,10 +202,7 @@ handle_message({row, Props}, Cursor) ->
true ->
Cursor2 = update_bookmark_keys(Cursor1, Props),
FinalDoc = mango_fields:extract(Doc, Cursor2#cursor.fields),
- Cursor3 = Cursor2#cursor {
- execution_stats = mango_execution_stats:incr_results_returned(Cursor2#cursor.execution_stats)
- },
- handle_doc(Cursor3, FinalDoc);
+ handle_doc(Cursor2, FinalDoc);
false ->
{ok, Cursor1}
end;
@@ -230,13 +227,14 @@ handle_all_docs_message(Message, Cursor) ->
handle_doc(#cursor{skip = S} = C, _) when S > 0 ->
{ok, C#cursor{skip = S - 1}};
-handle_doc(#cursor{limit = L} = C, Doc) when L > 0 ->
+handle_doc(#cursor{limit = L, execution_stats = Stats} = C, Doc) when L > 0 ->
UserFun = C#cursor.user_fun,
UserAcc = C#cursor.user_acc,
{Go, NewAcc} = UserFun({row, Doc}, UserAcc),
{Go, C#cursor{
user_acc = NewAcc,
- limit = L - 1
+ limit = L - 1,
+ execution_stats = mango_execution_stats:incr_results_returned(Stats)
}};
handle_doc(C, _Doc) ->
{stop, C}.
diff --git a/src/mango/test/15-execution-stats-test.py b/src/mango/test/15-execution-stats-test.py
index 67c9e64..6b7408b 100644
--- a/src/mango/test/15-execution-stats-test.py
+++ b/src/mango/test/15-execution-stats-test.py
@@ -38,6 +38,10 @@ class ExecutionStatsTests(mango.UserDocsTests):
self.assertEqual(resp["execution_stats"]["results_returned"], 3)
self.assertGreater(resp["execution_stats"]["execution_time_ms"], 0)
+ def test_results_returned_limit(self):
+ resp = self.db.find({"age": {"$lt": 35}}, limit=2, return_raw=True, executionStats=True)
+ self.assertEqual(resp["execution_stats"]["results_returned"], len(resp["docs"]))
+
@unittest.skipUnless(mango.has_text_service(), "requires text service")
class ExecutionStatsTests_Text(mango.UserDocsTextTests):
--
To stop receiving notification emails like this one, please contact
['"commits@couchdb.apache.org" <co...@couchdb.apache.org>'].