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