couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dam...@apache.org
Subject svn commit: r658405 - in /incubator/couchdb/trunk: share/server/main.js share/www/script/couch_tests.js src/couchdb/couch_btree.erl src/couchdb/couch_view.erl
Date Tue, 20 May 2008 19:57:37 GMT
Author: damien
Date: Tue May 20 12:57:37 2008
New Revision: 658405

URL: http://svn.apache.org/viewvc?rev=658405&view=rev
Log:
Fixed design document view definitions to be consistent with temp views. Changed the name
of the map(K,V) call in the javascript views to emit(K,V)

Modified:
    incubator/couchdb/trunk/share/server/main.js
    incubator/couchdb/trunk/share/www/script/couch_tests.js
    incubator/couchdb/trunk/src/couchdb/couch_btree.erl
    incubator/couchdb/trunk/src/couchdb/couch_view.erl

Modified: incubator/couchdb/trunk/share/server/main.js
URL: http://svn.apache.org/viewvc/incubator/couchdb/trunk/share/server/main.js?rev=658405&r1=658404&r2=658405&view=diff
==============================================================================
--- incubator/couchdb/trunk/share/server/main.js [utf-8] (original)
+++ incubator/couchdb/trunk/share/server/main.js [utf-8] Tue May 20 12:57:37 2008
@@ -16,7 +16,7 @@
 
 var sandbox = null;
 
-map = function(key, value) {
+emit = function(key, value) {
     map_results.push([key, value]);
   }
   
@@ -32,7 +32,7 @@
 try {
   // if possible, use evalcx (not always available)
   sandbox = evalcx('');
-  sandbox.map = map;
+  sandbox.emit = emit;
   sandbox.sum = sum;
 } catch (e) {}
 

Modified: incubator/couchdb/trunk/share/www/script/couch_tests.js
URL: http://svn.apache.org/viewvc/incubator/couchdb/trunk/share/www/script/couch_tests.js?rev=658405&r1=658404&r2=658405&view=diff
==============================================================================
--- incubator/couchdb/trunk/share/www/script/couch_tests.js [utf-8] (original)
+++ incubator/couchdb/trunk/share/www/script/couch_tests.js [utf-8] Tue May 20 12:57:37 2008
@@ -59,7 +59,7 @@
     // has a value of 4, and then returns the document's b value.
     var mapFunction = function(doc){
       if(doc.a==4)
-        map(null, doc.b);
+        emit(null, doc.b);
     };
 
     results = db.query(mapFunction);
@@ -208,7 +208,7 @@
     }
 
     // query all documents, and return the doc.integer member as a key.
-    results = db.query(function(doc){ map(doc.integer, null) });
+    results = db.query(function(doc){ emit(doc.integer, null) });
 
     T(results.total_rows == numDocsToCreate);
 
@@ -218,7 +218,7 @@
     }
 
     // do the query again, but with descending output
-    results = db.query(function(doc){ map(doc.integer, null) }, {descending:true});
+    results = db.query(function(doc){ emit(doc.integer, null) }, {descending:true});
 
     T(results.total_rows == numDocsToCreate);
 
@@ -238,7 +238,7 @@
     T(db.bulkSave(docs).ok);
     var summate = function(N) {return (N+1)*N/2;};
     
-    var map = function (doc) {map(doc.integer, doc.integer)};
+    var map = function (doc) {emit(doc.integer, doc.integer)};
     var reduce = function (keys, values) { return sum(values); }; 
     var result = db.reduce_query(map, reduce).result;
     T(result == summate(numDocs));
@@ -277,7 +277,7 @@
 
     var generateListOfCitiesAndState = "function(doc) {" +
     " for (var i = 0; i < doc.cities.length; i++)" +
-    "  map(doc.cities[i] + \", \" + doc._id, null);" +
+    "  emit(doc.cities[i] + \", \" + doc._id, null);" +
     "}";
 
     var results = db.query(generateListOfCitiesAndState);
@@ -348,7 +348,7 @@
 
     // query all documents, and return the doc.foo member as a key.
     results = db.query(function(doc){
-        map(null, doc.longtest);
+        emit(null, doc.longtest);
     });
   },
 
@@ -376,7 +376,7 @@
     }
 
     // check that views and key collation don't blow up
-    var rows = db.query(function(doc) { map(null, doc.text) }).rows;
+    var rows = db.query(function(doc) { emit(null, doc.text) }).rows;
     for (var i=0; i<texts.length; i++) {
       T(rows[i].value == texts[i]);
     }
@@ -438,10 +438,10 @@
       _id:"_design/test",
       language: "javascript",
       views: {
-        all_docs: "function(doc) { map(doc.integer, null) }",
-        no_docs: "function(doc) {}",
-        single_doc: "function(doc) { if (doc._id == \"1\") { map(1, null) }}",
-        summate: {map:"function (doc) {map(doc.integer, doc.integer)};",
+        all_docs: {map: "function(doc) { emit(doc.integer, null) }"},
+        no_docs: {map: "function(doc) {}"},
+        single_doc: {map: "function(doc) { if (doc._id == \"1\") { emit(1, null) }}"},
+        summate: {map:"function (doc) {emit(doc.integer, doc.integer)};",
                         reduce:"function (keys, values) { return sum(values); };"}
       }
     }
@@ -548,7 +548,7 @@
       db.save({_id:(i).toString(), foo:values[i]});
     }
 
-    var queryFun = function(doc) { map(doc.foo, null); }
+    var queryFun = function(doc) { emit(doc.foo, null); }
     var rows = db.query(queryFun).rows;
     for (i=0; i<values.length; i++) {
       T(equals(rows[i].key, values[i]))
@@ -600,7 +600,7 @@
 
     var results = dbB.query(function(doc) {
       if (doc._conflicts) {
-        map(doc._id, doc._conflicts);
+        emit(doc._id, doc._conflicts);
       }
     });
     T(results.rows[0].value[0] == conflictRev);
@@ -615,7 +615,7 @@
     var docs = makeDocs(0, 100);
     T(db.bulkSave(docs).ok);
 
-    var queryFun = function(doc) { map(doc.integer, null) };
+    var queryFun = function(doc) { emit(doc.integer, null) };
     var i;
 
     // page through the view ascending and going forward
@@ -695,7 +695,7 @@
     // make sure that attempting to change the document throws an error
     var results = db.query(function(doc) {
       doc._id = "foo";
-      map(null, doc);
+      emit(null, doc);
     });
     T(results.total_rows == 0);
 
@@ -703,18 +703,18 @@
     // garbage collector
     var results = db.query(function(doc) {
       gc();
-      map(null, doc);
+      emit(null, doc);
     });
     T(results.total_rows == 0);
 
     // make sure that a view cannot access the map_funs array defined used by
     // the view server
-    var results = db.query(function(doc) { map_funs.push(1); map(null, doc) });
+    var results = db.query(function(doc) { map_funs.push(1); emit(null, doc) });
     T(results.total_rows == 0);
 
     // make sure that a view cannot access the map_results array defined used by
     // the view server
-    var results = db.query(function(doc) { map_results.push(1); map(null, doc) });
+    var results = db.query(function(doc) { map_results.push(1); emit(null, doc) });
     T(results.total_rows == 0);
   },
 
@@ -730,7 +730,7 @@
     var results = db.query(
       "function(doc) {\n" +
       "  var xml = new XML(doc.content);\n" +
-      "  map(xml.title.text(), null);\n" +
+      "  emit(xml.title.text(), null);\n" +
       "}");
     T(results.total_rows == 2);
     T(results.rows[0].key == "Testing E4X");
@@ -739,7 +739,7 @@
     var results = db.query(
       "function(doc) {\n" +
       "  var xml = new XML(doc.content);\n" +
-      "  map(xml.title.@id, null);\n" +
+      "  emit(xml.title.@id, null);\n" +
       "}");
     T(results.total_rows == 2);
     T(results.rows[0].key == "e4x");

Modified: incubator/couchdb/trunk/src/couchdb/couch_btree.erl
URL: http://svn.apache.org/viewvc/incubator/couchdb/trunk/src/couchdb/couch_btree.erl?rev=658405&r1=658404&r2=658405&view=diff
==============================================================================
--- incubator/couchdb/trunk/src/couchdb/couch_btree.erl (original)
+++ incubator/couchdb/trunk/src/couchdb/couch_btree.erl Tue May 20 12:57:37 2008
@@ -419,7 +419,7 @@
         true -> % got full node, return the already calculated reduction
             {[], [{nil, {P, R}}]};
         false -> % otherwise return the keyvalues for later reduction
-            {KVs2, []}
+            {[assemble(Bt,K,V) || {K,V} <- KVs2], []}
         end
     end.
 
@@ -568,9 +568,10 @@
 stream_kv_node2(_Bt, _Reds, _PrevKVs, [], _Dir, _Fun, Acc) ->
     {ok, Acc};
 stream_kv_node2(Bt, Reds, PrevKVs, [{K,V} | RestKVs], Dir, Fun, Acc) ->
-    case Fun(assemble(Bt, K, V), {PrevKVs, Reds}, Acc) of
+    AssembledKV = assemble(Bt, K, V),
+    case Fun(AssembledKV, {PrevKVs, Reds}, Acc) of
     {ok, Acc2} ->
-        stream_kv_node2(Bt, Reds, [{K,V} | PrevKVs], RestKVs, Dir, Fun, Acc2);
+        stream_kv_node2(Bt, Reds, [AssembledKV | PrevKVs], RestKVs, Dir, Fun, Acc2);
     {stop, Acc2} ->
         {stop, Acc2}
     end.

Modified: incubator/couchdb/trunk/src/couchdb/couch_view.erl
URL: http://svn.apache.org/viewvc/incubator/couchdb/trunk/src/couchdb/couch_view.erl?rev=658405&r1=658404&r2=658405&view=diff
==============================================================================
--- incubator/couchdb/trunk/src/couchdb/couch_view.erl (original)
+++ incubator/couchdb/trunk/src/couchdb/couch_view.erl Tue May 20 12:57:37 2008
@@ -155,32 +155,26 @@
 design_doc_to_view_group(#doc{id=Id,body={obj, Fields}}) ->
     Language = proplists:get_value("language", Fields, "javascript"),
     {obj, RawViews} = proplists:get_value("views", Fields, {obj, []}),
-    
-    % extract the map/reduce views from the json fields and into lists
-    MapViewsRaw = [{Name, Src, nil} || {Name, Src} <- RawViews, is_list(Src)],
-    MapReduceViewsRaw =
-        [{Name,
-            proplists:get_value("map", MRFuns),
-            proplists:get_value("reduce", MRFuns)}
-            || {Name, {obj, MRFuns}} <- RawViews],
             
     % add the views to a dictionary object, with the map source as the key
     DictBySrc =
     lists:foldl(
-        fun({Name, MapSrc, RedSrc}, DictBySrcAcc) ->
+        fun({Name, {obj, MRFuns}}, DictBySrcAcc) ->
+            MapSrc = proplists:get_value("map", MRFuns),
+            RedSrc = proplists:get_value("reduce", MRFuns, null),
             View =
             case dict:find(MapSrc, DictBySrcAcc) of
                 {ok, View0} -> View0;
                 error -> #view{def=MapSrc} % create new view object
             end,
             View2 =
-            if RedSrc == nil ->
+            if RedSrc == null ->
                 View#view{map_names=[Name|View#view.map_names]};
             true ->
                 View#view{reduce_funs=[{Name,RedSrc}|View#view.reduce_funs]}
             end,
             dict:store(MapSrc, View2, DictBySrcAcc)
-        end, dict:new(), MapViewsRaw ++ MapReduceViewsRaw),
+        end, dict:new(), RawViews),
     % number the views
     {Views, _N} = lists:mapfoldl(
         fun({_Src, View}, N) ->



Mime
View raw message