You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2008/08/29 02:21:02 UTC

svn commit: r690055 - in /incubator/couchdb/branches/json_term_changes: share/www/script/couch_tests.js src/couchdb/couch_query_servers.erl src/couchdb/couch_view.erl

Author: damien
Date: Thu Aug 28 17:21:02 2008
New Revision: 690055

URL: http://svn.apache.org/viewvc?rev=690055&view=rev
Log:
Fix for error when javascript is not explicitly specified in the design doc.

Modified:
    incubator/couchdb/branches/json_term_changes/share/www/script/couch_tests.js
    incubator/couchdb/branches/json_term_changes/src/couchdb/couch_query_servers.erl
    incubator/couchdb/branches/json_term_changes/src/couchdb/couch_view.erl

Modified: incubator/couchdb/branches/json_term_changes/share/www/script/couch_tests.js
URL: http://svn.apache.org/viewvc/incubator/couchdb/branches/json_term_changes/share/www/script/couch_tests.js?rev=690055&r1=690054&r2=690055&view=diff
==============================================================================
--- incubator/couchdb/branches/json_term_changes/share/www/script/couch_tests.js [utf-8] (original)
+++ incubator/couchdb/branches/json_term_changes/share/www/script/couch_tests.js [utf-8] Thu Aug 28 17:21:02 2008
@@ -828,7 +828,6 @@
     T(db.bulkSave(makeDocs(1, numDocs + 1)).ok);
 
     for (var loop = 0; loop < 2; loop++) {
-      if (db.view("test/all_docs") == null) throw "fuck";
       var rows = db.view("test/all_docs").rows;
       for (var i = 0; i < numDocs; i++) {
         T(rows[2*i].key == i+1);
@@ -837,8 +836,19 @@
       T(db.view("test/no_docs").total_rows == 0)
       T(db.view("test/single_doc").total_rows == 1)
       restartServer();
-    }
-
+    };
+    
+    // test when language not specified, Javascript is implied
+    var designDoc2 = {
+      _id:"_design/test2",
+      // language: "javascript", 
+      views: {
+        single_doc: {map: "function(doc) { if (doc._id == \"1\") { emit(1, null) }}"}
+      }
+    };
+    
+    T(db.save(designDoc2).ok);
+    T(db.view("test2/single_doc").total_rows == 1);
 
     var summate = function(N) {return (N+1)*N/2;};
     var result = db.view("test/summate");

Modified: incubator/couchdb/branches/json_term_changes/src/couchdb/couch_query_servers.erl
URL: http://svn.apache.org/viewvc/incubator/couchdb/branches/json_term_changes/src/couchdb/couch_query_servers.erl?rev=690055&r1=690054&r2=690055&view=diff
==============================================================================
--- incubator/couchdb/branches/json_term_changes/src/couchdb/couch_query_servers.erl (original)
+++ incubator/couchdb/branches/json_term_changes/src/couchdb/couch_query_servers.erl Thu Aug 28 17:21:02 2008
@@ -187,18 +187,27 @@
             ?MODULE:stop()
         end),
         
-    QueryServerList = couch_config:lookup_match(
+    QueryServers = couch_config:lookup_match(
             {{"CouchDB Query Servers", '$1'}, '$2'}, []),
+    QueryServers2 = 
+        [{list_to_binary(Lang), Path} || {Lang, Path} <- QueryServers],
         
-    {ok, {QueryServerList, []}}.
+    {ok, {QueryServers2, []}}.
 
 terminate(_Reason, _Server) ->
     ok.
 
 
 handle_call({get_port, Lang}, {FromPid, _}, {QueryServerList, LangPorts}) ->
-    case lists:keysearch(Lang, 1, LangPorts) of
-    {value, {_, Port}=LangPort} ->
+    case proplists:get_value(Lang, LangPorts) of
+    undefined ->
+        case proplists:get_value(Lang, QueryServerList) of
+        undefined -> % not a supported language
+            {reply, {query_language_unknown, Lang}, {QueryServerList, LangPorts}};
+        ServerCmd ->
+            {reply, {empty, ServerCmd}, {QueryServerList, LangPorts}}
+        end;
+    Port ->
         Result =
         case catch port_connect(Port, FromPid) of
         true ->
@@ -208,14 +217,7 @@
             catch port_close(Port),
             Error
         end,
-        {reply, Result, {QueryServerList, LangPorts -- [LangPort]}};
-    false ->
-        case lists:keysearch(binary_to_list(Lang), 1, QueryServerList) of
-        {value, {_, ServerCmd}} ->
-            {reply, {empty, ServerCmd}, {QueryServerList, LangPorts}};
-        false -> % not a supported language
-            {reply, {query_language_unknown, Lang}, {QueryServerList, LangPorts}}
-        end
+        {reply, Result, {QueryServerList, LangPorts -- [{Lang,Port}]}}
     end;
 handle_call({return_port, {Lang, Port}}, _From, {QueryServerList, LangPorts}) ->
     case catch port_connect(Port, self()) of

Modified: incubator/couchdb/branches/json_term_changes/src/couchdb/couch_view.erl
URL: http://svn.apache.org/viewvc/incubator/couchdb/branches/json_term_changes/src/couchdb/couch_view.erl?rev=690055&r1=690054&r2=690055&view=diff
==============================================================================
--- incubator/couchdb/branches/json_term_changes/src/couchdb/couch_view.erl (original)
+++ incubator/couchdb/branches/json_term_changes/src/couchdb/couch_view.erl Thu Aug 28 17:21:02 2008
@@ -175,7 +175,7 @@
                 
 
 design_doc_to_view_group(#doc{id=Id,body={Fields}}) ->
-    Language = proplists:get_value(<<"language">>, Fields, "javascript"),
+    Language = proplists:get_value(<<"language">>, Fields, <<"javascript">>),
     {RawViews} = proplists:get_value(<<"views">>, Fields, {[]}),
             
     % add the views to a dictionary object, with the map source as the key