Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 33303 invoked from network); 28 Sep 2010 07:22:57 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 28 Sep 2010 07:22:57 -0000 Received: (qmail 19507 invoked by uid 500); 28 Sep 2010 07:22:57 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 19238 invoked by uid 500); 28 Sep 2010 07:22:54 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 19228 invoked by uid 99); 28 Sep 2010 07:22:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Sep 2010 07:22:54 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of bchesneau@gmail.com designates 209.85.214.180 as permitted sender) Received: from [209.85.214.180] (HELO mail-iw0-f180.google.com) (209.85.214.180) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Sep 2010 07:22:45 +0000 Received: by iwn8 with SMTP id 8so7526452iwn.11 for ; Tue, 28 Sep 2010 00:22:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type:content-transfer-encoding; bh=VsMxLqqIsOONZc93OtRfPLk78nQqj2CTqLVVxeMHITw=; b=DfCi00+1ZWUD7de8JntAm+8o4OMYp8GetM/GqMFRH11jyx/jRILbONXiup1CD3SACb MYsOiHpdEbsA8QYpX2OFBQWzM4vmFYIorBd2BdXbZEeW8Wj5c0O8ocln6W3x+Nvqp8C1 WepKZzKsuXxstYVSb9yLWqBiJsRvgMmEcJOZ8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=flXj9EXvNUkQ95B1b/Q+V9KcwMJJ+AQOQCUgCEypbR9b0SA0+GYrOe7arMRb+jwCrz 3B8aSUCHlNPqo//G6XYSKmteU+f6EGwCxLKSsx1GWIa//DdT/Vu6/iuWpWAvupuhAPyT W7zgzlfX9dJWex+tmuxad37ULwyQUMMtQ1RCo= MIME-Version: 1.0 Received: by 10.231.147.131 with SMTP id l3mr10435160ibv.74.1285658544320; Tue, 28 Sep 2010 00:22:24 -0700 (PDT) Received: by 10.231.169.148 with HTTP; Tue, 28 Sep 2010 00:22:24 -0700 (PDT) Date: Tue, 28 Sep 2010 09:22:24 +0200 Message-ID: Subject: Re: svn commit: r1001895 - in /couchdb/trunk: share/server/loop.js share/server/state.js share/www/script/test/design_docs.js src/couchdb/couch_db.hrl src/couchdb/couch_query_servers.erl src/couchdb/couch_view_group.erl src/couchdb/couch_view_updater From: Benoit Chesneau To: dev@couchdb.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org that's nice! - benoit On Mon, Sep 27, 2010 at 10:06 PM, wrote: > Author: jchris > Date: Mon Sep 27 20:06:22 2010 > New Revision: 1001895 > > URL: http://svn.apache.org/viewvc?rev=3D1001895&view=3Drev > Log: > CommonJS support in map functions > > Modified: > =A0 =A0couchdb/trunk/share/server/loop.js > =A0 =A0couchdb/trunk/share/server/state.js > =A0 =A0couchdb/trunk/share/www/script/test/design_docs.js > =A0 =A0couchdb/trunk/src/couchdb/couch_db.hrl > =A0 =A0couchdb/trunk/src/couchdb/couch_query_servers.erl > =A0 =A0couchdb/trunk/src/couchdb/couch_view_group.erl > =A0 =A0couchdb/trunk/src/couchdb/couch_view_updater.erl > > Modified: couchdb/trunk/share/server/loop.js > URL: http://svn.apache.org/viewvc/couchdb/trunk/share/server/loop.js?rev= =3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/share/server/loop.js (original) > +++ couchdb/trunk/share/server/loop.js Mon Sep 27 20:06:22 2010 > @@ -100,6 +100,7 @@ var Loop =3D function() { > =A0 =A0 // "view" =A0 =A0: Views.handler, > =A0 =A0 "reset" =A0 =A0: State.reset, > =A0 =A0 "add_fun" =A0: State.addFun, > + =A0 =A0"add_lib" =A0: State.addLib, > =A0 =A0 "map_doc" =A0: Views.mapDoc, > =A0 =A0 "reduce" =A0 : Views.reduce, > =A0 =A0 "rereduce" : Views.rereduce > > Modified: couchdb/trunk/share/server/state.js > URL: http://svn.apache.org/viewvc/couchdb/trunk/share/server/state.js?rev= =3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/share/server/state.js (original) > +++ couchdb/trunk/share/server/state.js Mon Sep 27 20:06:22 2010 > @@ -14,6 +14,7 @@ var State =3D { > =A0 reset : function(config) { > =A0 =A0 // clear the globals and run gc > =A0 =A0 State.funs =3D []; > + =A0 =A0State.lib =3D null; > =A0 =A0 State.query_config =3D config || {}; > =A0 =A0 init_sandbox(); > =A0 =A0 gc(); > @@ -21,7 +22,11 @@ var State =3D { > =A0 }, > =A0 addFun : function(newFun) { > =A0 =A0 // Compile to a function and add it to funs array > - =A0 =A0State.funs.push(Couch.compileFunction(newFun)); > + =A0 =A0State.funs.push(Couch.compileFunction(newFun, {views : {lib : St= ate.lib}})); > + =A0 =A0print("true"); > + =A0}, > + =A0addLib : function(lib) { > + =A0 =A0State.lib =3D lib; > =A0 =A0 print("true"); > =A0 } > =A0} > > Modified: couchdb/trunk/share/www/script/test/design_docs.js > URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/des= ign_docs.js?rev=3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/share/www/script/test/design_docs.js (original) > +++ couchdb/trunk/share/www/script/test/design_docs.js Mon Sep 27 20:06:2= 2 2010 > @@ -54,7 +54,18 @@ function() { > =A0 =A0 =A0 summate2: {map:"function (doc) {emit(doc.integer, doc.integer= )};", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reduce:"function (keys, values) { return = sum(values); };"}, > =A0 =A0 =A0 huge_src_and_results: {map: "function(doc) { if (doc._id =3D= =3D \"1\") { emit(\"" + makebigstring(16) + "\", null) }}", > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reduce:"function (keys, values) { return= \"" + makebigstring(16) + "\"; };"} > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reduce:"function (keys, values) { return= \"" + makebigstring(16) + "\"; };"}, > + =A0 =A0 =A0lib : { > + =A0 =A0 =A0 =A0baz : "exports.baz =3D 'bam';", > + =A0 =A0 =A0 =A0foo : { > + =A0 =A0 =A0 =A0 =A0foo : "exports.foo =3D 'bar';", > + =A0 =A0 =A0 =A0 =A0boom : "exports.boom =3D 'ok';", > + =A0 =A0 =A0 =A0 =A0zoom : "exports.zoom =3D 'yeah';" > + =A0 =A0 =A0 =A0} > + =A0 =A0 =A0}, > + =A0 =A0 =A0commonjs : { > + =A0 =A0 =A0 =A0map : "function(doc) { emit(null, require('views/lib/foo= /boom').boom)}" > + =A0 =A0 =A0} > =A0 =A0 }, > =A0 =A0 shows: { > =A0 =A0 =A0 simple: "function() {return 'ok'};", > @@ -99,10 +110,14 @@ function() { > =A0 var vinfo =3D dinfo.view_index; > =A0 TEquals(51, vinfo.disk_size); > =A0 TEquals(false, vinfo.compact_running); > - =A0TEquals("3f88e53b303e2342e49a66c538c30679", vinfo.signature); > + =A0TEquals("dc3264b45b74cc6d94666e3043e07154", vinfo.signature, 'ddoc s= ig'); > > =A0 db.bulkSave(makeDocs(1, numDocs + 1)); > > + =A0// test commonjs in map functions > + =A0resp =3D db.view("test/commonjs", {limit:1}); > + =A0T(resp.rows[0].value =3D=3D 'ok'); > + > =A0 // test that the _all_docs view returns correctly with keys > =A0 var results =3D db.allDocs({startkey:"_design", endkey:"_design0"}); > =A0 T(results.rows.length =3D=3D 1); > > Modified: couchdb/trunk/src/couchdb/couch_db.hrl > URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_db.hrl?= rev=3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/src/couchdb/couch_db.hrl (original) > +++ couchdb/trunk/src/couchdb/couch_db.hrl Mon Sep 27 20:06:22 2010 > @@ -231,6 +231,7 @@ > =A0 =A0 def_lang, > =A0 =A0 design_options=3D[], > =A0 =A0 views, > + =A0 =A0lib, > =A0 =A0 id_btree=3Dnil, > =A0 =A0 current_seq=3D0, > =A0 =A0 purge_seq=3D0, > > Modified: couchdb/trunk/src/couchdb/couch_query_servers.erl > URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_query_s= ervers.erl?rev=3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/src/couchdb/couch_query_servers.erl (original) > +++ couchdb/trunk/src/couchdb/couch_query_servers.erl Mon Sep 27 20:06:22= 2010 > @@ -16,7 +16,7 @@ > =A0-export([start_link/0]). > > =A0-export([init/1, terminate/2, handle_call/3, handle_cast/2, handle_inf= o/2,code_change/3]). > --export([start_doc_map/2, map_docs/2, stop_doc_map/1]). > +-export([start_doc_map/3, map_docs/2, stop_doc_map/1]). > =A0-export([reduce/3, rereduce/3,validate_doc_update/5]). > =A0-export([filter_docs/5]). > > @@ -47,8 +47,13 @@ > =A0start_link() -> > =A0 =A0 gen_server:start_link({local, couch_query_servers}, couch_query_s= ervers, [], []). > > -start_doc_map(Lang, Functions) -> > +start_doc_map(Lang, Functions, Lib) -> > =A0 =A0 Proc =3D get_os_process(Lang), > + =A0 =A0case Lib of > + =A0 =A0{[]} -> ok; > + =A0 =A0Lib -> > + =A0 =A0 =A0 =A0true =3D proc_prompt(Proc, [<<"add_lib">>, Lib]) > + =A0 =A0end, > =A0 =A0 lists:foreach(fun(FunctionSource) -> > =A0 =A0 =A0 =A0 true =3D proc_prompt(Proc, [<<"add_fun">>, FunctionSource= ]) > =A0 =A0 end, Functions), > > Modified: couchdb/trunk/src/couchdb/couch_view_group.erl > URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_view_gr= oup.erl?rev=3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/src/couchdb/couch_view_group.erl (original) > +++ couchdb/trunk/src/couchdb/couch_view_group.erl Mon Sep 27 20:06:22 20= 10 > @@ -446,7 +446,7 @@ open_temp_group(DbName, Language, Design > =A0 =A0 =A0 =A0 =A0 =A0 reduce_funs=3D if RedSrc=3D=3D[] -> []; true -> [= {<<"_temp">>, RedSrc}] end, > =A0 =A0 =A0 =A0 =A0 =A0 options=3DDesignOptions}, > > - =A0 =A0 =A0 =A0{ok, Db, set_view_sig(#group{name =3D <<"_temp">>, db=3D= Db, views=3D[View], > + =A0 =A0 =A0 =A0{ok, Db, set_view_sig(#group{name =3D <<"_temp">>,lib=3D= {[]}, db=3DDb, views=3D[View], > =A0 =A0 =A0 =A0 =A0 =A0 def_lang=3DLanguage, design_options=3DDesignOptio= ns})}; > =A0 =A0 Error -> > =A0 =A0 =A0 =A0 Error > @@ -454,9 +454,26 @@ open_temp_group(DbName, Language, Design > > =A0set_view_sig(#group{ > =A0 =A0 =A0 =A0 =A0 =A0 views=3DViews, > + =A0 =A0 =A0 =A0 =A0 =A0lib=3D{[]}, > =A0 =A0 =A0 =A0 =A0 =A0 def_lang=3DLanguage, > =A0 =A0 =A0 =A0 =A0 =A0 design_options=3DDesignOptions}=3DG) -> > - =A0 =A0G#group{sig=3Dcouch_util:md5(term_to_binary({Views, Language, De= signOptions}))}. > + =A0 =A0G#group{sig=3Dcouch_util:md5(term_to_binary({Views, Language, De= signOptions}))}; > +set_view_sig(#group{ > + =A0 =A0 =A0 =A0 =A0 =A0views=3DViews, > + =A0 =A0 =A0 =A0 =A0 =A0lib=3DLib, > + =A0 =A0 =A0 =A0 =A0 =A0def_lang=3DLanguage, > + =A0 =A0 =A0 =A0 =A0 =A0design_options=3DDesignOptions}=3DG) -> > + =A0 =A0G#group{sig=3Dcouch_util:md5(term_to_binary({Views, Language, De= signOptions, sort_lib(Lib)}))}. > + > +sort_lib({Lib}) -> > + =A0 =A0sort_lib(Lib, []). > +sort_lib([], LAcc) -> > + =A0 =A0lists:keysort(1, LAcc); > +sort_lib([{LName, {LObj}}|Rest], LAcc) -> > + =A0 =A0LSorted =3D sort_lib(LObj, []), % descend into nested object > + =A0 =A0sort_lib(Rest, [{LName, LSorted}|LAcc]); > +sort_lib([{LName, LCode}|Rest], LAcc) -> > + =A0 =A0sort_lib(Rest, [{LName, LCode}|LAcc]). > > =A0open_db_group(DbName, GroupId) -> > =A0 =A0 case couch_db:open_int(DbName, []) of > @@ -505,33 +522,36 @@ design_doc_to_view_group(#doc{id=3DId,body > =A0 =A0 Language =3D ?getv(<<"language">>, Fields, <<"javascript">>), > =A0 =A0 {DesignOptions} =3D ?getv(<<"options">>, Fields, {[]}), > =A0 =A0 {RawViews} =3D ?getv(<<"views">>, Fields, {[]}), > + =A0 =A0Lib =3D ?getv(<<"lib">>, RawViews, {[]}), > =A0 =A0 % add the views to a dictionary object, with the map source as th= e key > =A0 =A0 DictBySrc =3D > =A0 =A0 lists:foldl( > =A0 =A0 =A0 =A0 fun({Name, {MRFuns}}, DictBySrcAcc) -> > - =A0 =A0 =A0 =A0 =A0 =A0MapSrc =3D ?getv(<<"map">>, MRFuns), > - =A0 =A0 =A0 =A0 =A0 =A0RedSrc =3D ?getv(<<"reduce">>, MRFuns, null), > - =A0 =A0 =A0 =A0 =A0 =A0{ViewOptions} =3D ?getv(<<"options">>, MRFuns, {= []}), > - =A0 =A0 =A0 =A0 =A0 =A0View =3D > - =A0 =A0 =A0 =A0 =A0 =A0case dict:find({MapSrc, ViewOptions}, DictBySrcA= cc) of > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0{ok, View0} -> View0; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0error -> #view{def=3DMapSrc, options=3DV= iewOptions} % create new view object > - =A0 =A0 =A0 =A0 =A0 =A0end, > - =A0 =A0 =A0 =A0 =A0 =A0View2 =3D > - =A0 =A0 =A0 =A0 =A0 =A0if RedSrc =3D=3D null -> > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View#view{map_names=3D[Name|View#view.ma= p_names]}; > - =A0 =A0 =A0 =A0 =A0 =A0true -> > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View#view{reduce_funs=3D[{Name,RedSrc}|V= iew#view.reduce_funs]} > - =A0 =A0 =A0 =A0 =A0 =A0end, > - =A0 =A0 =A0 =A0 =A0 =A0dict:store({MapSrc, ViewOptions}, View2, DictByS= rcAcc) > + =A0 =A0 =A0 =A0 =A0 =A0case ?getv(<<"map">>, MRFuns) of > + =A0 =A0 =A0 =A0 =A0 =A0undefined -> DictBySrcAcc; > + =A0 =A0 =A0 =A0 =A0 =A0MapSrc -> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0RedSrc =3D ?getv(<<"reduce">>, MRFuns, n= ull), > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0{ViewOptions} =3D ?getv(<<"options">>, M= RFuns, {[]}), > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View =3D > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case dict:find({MapSrc, ViewOptions}, Di= ctBySrcAcc) of > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0{ok, View0} -> View0; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0error -> #view{def=3DMapSrc, opt= ions=3DViewOptions} % create new view object > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0end, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View2 =3D > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if RedSrc =3D=3D null -> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View#view{map_names=3D[Name|View= #view.map_names]}; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0true -> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0View#view{reduce_funs=3D[{Name,R= edSrc}|View#view.reduce_funs]} > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0end, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0dict:store({MapSrc, ViewOptions}, View2,= DictBySrcAcc) > + =A0 =A0 =A0 =A0 =A0 =A0end > =A0 =A0 =A0 =A0 end, dict:new(), RawViews), > =A0 =A0 % number the views > =A0 =A0 {Views, _N} =3D lists:mapfoldl( > =A0 =A0 =A0 =A0 fun({_Src, View}, N) -> > =A0 =A0 =A0 =A0 =A0 =A0 {View#view{id_num=3DN},N+1} > =A0 =A0 =A0 =A0 end, 0, lists:sort(dict:to_list(DictBySrc))), > - > - =A0 =A0set_view_sig(#group{name=3DId, views=3DViews, def_lang=3DLanguag= e, design_options=3DDesignOptions}). > + =A0 =A0set_view_sig(#group{name=3DId, lib=3DLib, views=3DViews, def_lan= g=3DLanguage, design_options=3DDesignOptions}). > > =A0reset_group(#group{views=3DViews}=3DGroup) -> > =A0 =A0 Views2 =3D [View#view{btree=3Dnil} || View <- Views], > > Modified: couchdb/trunk/src/couchdb/couch_view_updater.erl > URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_view_up= dater.erl?rev=3D1001895&r1=3D1001894&r2=3D1001895&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- couchdb/trunk/src/couchdb/couch_view_updater.erl (original) > +++ couchdb/trunk/src/couchdb/couch_view_updater.erl Mon Sep 27 20:06:22 = 2010 > @@ -203,12 +203,12 @@ view_insert_doc_query_results(#doc{id=3DDo > > =A0view_compute(Group, []) -> > =A0 =A0 {Group, []}; > -view_compute(#group{def_lang=3DDefLang, query_server=3DQueryServerIn}=3D= Group, Docs) -> > +view_compute(#group{def_lang=3DDefLang, lib=3DLib, query_server=3DQueryS= erverIn}=3DGroup, Docs) -> > =A0 =A0 {ok, QueryServer} =3D > =A0 =A0 case QueryServerIn of > =A0 =A0 nil -> % doc map not started > =A0 =A0 =A0 =A0 Definitions =3D [View#view.def || View <- Group#group.vie= ws], > - =A0 =A0 =A0 =A0couch_query_servers:start_doc_map(DefLang, Definitions); > + =A0 =A0 =A0 =A0couch_query_servers:start_doc_map(DefLang, Definitions, = Lib); > =A0 =A0 _ -> > =A0 =A0 =A0 =A0 {ok, QueryServerIn} > =A0 =A0 end, > > >