You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2020/02/03 11:19:38 UTC

[couchdb] branch fdb-mango-indexes updated: fix loading doc body in mango_idx:list

This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch fdb-mango-indexes
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/fdb-mango-indexes by this push:
     new b29c11e  fix loading doc body in mango_idx:list
b29c11e is described below

commit b29c11efb99852352913fb685b54ccffed617239
Author: Garren Smith <ga...@gmail.com>
AuthorDate: Mon Feb 3 13:19:22 2020 +0200

    fix loading doc body in mango_idx:list
---
 src/mango/src/mango_cursor_view.erl          |  4 ----
 src/mango/src/mango_httpd.erl                |  4 +++-
 src/mango/src/mango_idx.erl                  | 24 +++++++++++++++++++-----
 src/mango/src/mango_idx_view.hrl             |  1 +
 src/mango/src/mango_indexer.erl              |  1 -
 src/mango/test/11-ignore-design-docs-test.py |  4 +---
 src/mango/test/12-use-correct-index-test.py  |  2 +-
 7 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index 9669b5f..15eb55d 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -61,10 +61,6 @@ create(Db, Indexes, Selector, Opts) ->
 
 
 explain(Cursor) ->
-    #cursor{
-        opts = Opts
-    } = Cursor,
-
     #{
         start_key := StartKey,
         end_key := EndKey,
diff --git a/src/mango/src/mango_httpd.erl b/src/mango/src/mango_httpd.erl
index b046229..d5e9cfa 100644
--- a/src/mango/src/mango_httpd.erl
+++ b/src/mango/src/mango_httpd.erl
@@ -34,7 +34,9 @@
 
 handle_req(#httpd{} = Req, Db) ->
     try
-        handle_req_int(Req, Db)
+        fabric2_fdb:transactional(Db, fun (TxDb) ->
+            handle_req_int(Req, TxDb)
+        end)
     catch
         throw:{mango_error, Module, Reason} ->
             case mango_error:info(Module, Reason) of
diff --git a/src/mango/src/mango_idx.erl b/src/mango/src/mango_idx.erl
index 3a579dc..cf3f507 100644
--- a/src/mango/src/mango_idx.erl
+++ b/src/mango/src/mango_idx.erl
@@ -75,11 +75,9 @@ ddoc_fold_cb({row, Row}, Acc) ->
         db := Db,
         rows := Rows
     } = Acc,
-    {_, Id} = lists:keyfind(id, 1, Row),
-    io:format("VIEW ~p ~n", [Row]),
-    {ok, Doc} = fabric2_db:open_doc(Db, Id),
-    JSONDoc = couch_doc:to_json_obj(Doc, []),
-    {Props} = JSONDoc,
+
+    {Props} = JSONDoc = get_doc(Db, Row),
+
     case proplists:get_value(<<"language">>, Props) of
         <<"query">> ->
             Idx = from_ddoc(Db, JSONDoc),
@@ -89,6 +87,22 @@ ddoc_fold_cb({row, Row}, Acc) ->
     end.
 
 
+get_doc(Db, Row) ->
+    {_, Id} = lists:keyfind(id, 1, Row),
+    RevInfo = get_rev_info(Row),
+    Doc = fabric2_fdb:get_doc_body(Db, Id, RevInfo),
+    couch_doc:to_json_obj(Doc, []).
+
+
+get_rev_info(Row) ->
+    {value, {[{rev, RevBin}]}} = lists:keyfind(value, 1, Row),
+    Rev = couch_doc:parse_rev(RevBin),
+    #{
+        rev_id => Rev,
+        rev_path => []
+    }.
+
+
 get_usable_indexes(Db, Selector, Opts) ->
     ExistingIndexes = mango_idx:list(Db),
     GlobalIndexes = mango_cursor:remove_indexes_with_partial_filter_selector(
diff --git a/src/mango/src/mango_idx_view.hrl b/src/mango/src/mango_idx_view.hrl
index a6fc2b4..6ebe68e 100644
--- a/src/mango/src/mango_idx_view.hrl
+++ b/src/mango/src/mango_idx_view.hrl
@@ -12,3 +12,4 @@
 
 %%-define(MAX_JSON_OBJ, {<<255, 255, 255, 255>>}).
 -define(MAX_JSON_OBJ, <<255>>).
+%%-define(MAX_JSON_OBJ, {[{<<"ZZZ">>, <<"ZZZ">>}]}).
diff --git a/src/mango/src/mango_indexer.erl b/src/mango/src/mango_indexer.erl
index 66dae63..c22b9cf 100644
--- a/src/mango/src/mango_indexer.erl
+++ b/src/mango/src/mango_indexer.erl
@@ -68,7 +68,6 @@ doc_id(#doc{id = DocId}, _) ->
 % to build new index
 modify_int(_Db, _Change, #doc{id = <<?DESIGN_DOC_PREFIX, _/binary>>} = Doc,
         _PrevDoc) ->
-    io:format("DESIGN DOC SAVED ~p ~n", [Doc]),
     ok;
 
 modify_int(Db, delete, _, PrevDoc)  ->
diff --git a/src/mango/test/11-ignore-design-docs-test.py b/src/mango/test/11-ignore-design-docs-test.py
index bb8cf3a..fd9b688 100644
--- a/src/mango/test/11-ignore-design-docs-test.py
+++ b/src/mango/test/11-ignore-design-docs-test.py
@@ -16,11 +16,9 @@ import unittest
 DOCS = [
     {"_id": "_design/my-design-doc"},
     {"_id": "54af50626de419f5109c962f", "user_id": 0, "age": 10, "name": "Jimi"},
-    {"_id": "54af50622071121b25402dc3", "user_id": 1, "age": 11, "name": "Eddie"},
+    {"_id": "54af50622071121b25402dc3", "user_id": 1, "age": 11, "name": "Eddie"}
 ]
 
-# [{erlfdb_nif,erlfdb_future_get,[#Ref<0.1264327726.2786983941.139980>],[]},{erlfdb,fold_range_int,4,[{file,"src/erlfdb.erl"},{line,675}]},{fabric2_fdb,get_winning_revs_wait,2,[{file,"src/fabric2_fdb.erl"},{line,474}]},{fabric2_db,'-open_doc/3-fun-1-',5,[{file,"src/fabric2_db.erl"},{line,503}]},{mango_idx,ddoc_fold_cb,2,[{file,"src/mango_idx.erl"},{line,80}]},{fabric2_db,'-fold_docs/4-fun-0-',6,[{file,"src/fabric2_db.erl"},{line,795}]},{fabric2_fdb,fold_range_cb,2,[{file,"src/fabric2_fdb [...]
-
 
 class IgnoreDesignDocsForAllDocsIndexTests(mango.DbPerClass):
     def test_should_not_return_design_docs(self):
diff --git a/src/mango/test/12-use-correct-index-test.py b/src/mango/test/12-use-correct-index-test.py
index 2de88a2..987f507 100644
--- a/src/mango/test/12-use-correct-index-test.py
+++ b/src/mango/test/12-use-correct-index-test.py
@@ -117,7 +117,7 @@ class ChooseCorrectIndexForDocs(mango.DbPerClass):
         self.assertEqual(len(docs), 1)
         explain = self.db.find(selector, explain=True)
         self.assertEqual(explain["index"]["ddoc"], "_design/bbb")
-        self.assertEqual(explain["mrargs"]["end_key"], [10, "<MAX>"])
+        self.assertEqual(explain["args"]["end_key"], [10, "<MAX>"])
 
     # all documents contain an _id and _rev field they
     # should not be used to restrict indexes based on the