Update of /cvsroot/monetdb/pathfinder/runtime
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv7167

Modified Files:
      Tag: xquery-decomposition
        xrpc_client.mx xrpc_server.mx 
Log Message:
xrpc_client.mx: corrected MIL code according to Stefan's comments
(thanks!)

xrpc_server.mx: enable APPENDing to frag_root



Index: xrpc_client.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_client.mx,v
retrieving revision 1.41.2.9
retrieving revision 1.41.2.10
diff -u -d -r1.41.2.9 -r1.41.2.10
--- xrpc_client.mx      10 Mar 2008 02:01:13 -0000      1.41.2.9
+++ xrpc_client.mx      10 Mar 2008 11:03:04 -0000      1.41.2.10
@@ -94,44 +94,34 @@
         BAT[void, dbl] dbl_values,
         BAT[void, dbl] dec_values,
         BAT[void, str] str_values) : oid {
-    var maxnconts := ws.fetch(0).count();
     # split used_<item|kind> into multiple BATs according to their container 
IDs
-    var uitems := bat(oid, bat, maxnconts); # container ID in head
-    var ukinds := bat(oid, bat, maxnconts);
     var conts := get_container([int](used_kind)); # [oid,int]: container IDs 
in tail
-    var unq_conts := tunique(conts).hmark([EMAIL PROTECTED]);
-    var nconts := count(unq_conts);
-    var rs := rangesplit(conts, nconts).tmark([EMAIL 
PROTECTED]).reverse().join(unq_conts).reverse();
-    uitems := rs.[mirror]().[leftfetchjoin](const used_item);
-    uitems := [tmark](uitems, const [EMAIL PROTECTED]);
-    ukinds := rs.[mirror]().[leftfetchjoin](const used_kind);
-    ukinds := [tmark](ukinds, const [EMAIL PROTECTED]);
+    var nconts := count(tunique(conts));
+    # contIDs are grouped in tail BATs per container, contIDs in head
+    var rs := rangesplit(conts, 
nconts).reverse().mirror().[fetch](0).reverse();
+    var uitems := rs.[hmark](oid(nil)).[leftfetchjoin](const 
used_item).[tmark](const [EMAIL PROTECTED]);
+    var ukinds := rs.[hmark](oid(nil)).[leftfetchjoin](const 
used_kind).[tmark](const [EMAIL PROTECTED]);
 
     # split returned_<item|kind> into multiple BATs according to their 
container IDs
-    var ritems := bat(oid, bat, maxnconts); # container ID in head
-    var rkinds := bat(oid, bat, maxnconts);
     conts := get_container([int](returned_kind)); # [oid,int]: container IDs 
in tail
-    unq_conts := tunique(conts).hmark([EMAIL PROTECTED]);
-    nconts := count(unq_conts);
-    rs := rangesplit(conts, nconts).tmark([EMAIL 
PROTECTED]).reverse().join(unq_conts).reverse();
-    ritems := rs.[mirror]().[leftfetchjoin](const returned_item);
-    ritems := [tmark](ritems, const [EMAIL PROTECTED]);
-    rkinds := rs.[mirror]().[leftfetchjoin](const returned_kind);
-    rkinds := [tmark](rkinds, const [EMAIL PROTECTED]);
+    nconts := count(tunique(conts));
+    rs := rangesplit(conts, nconts).reverse().mirror().[fetch](0).reverse(); # 
get contID in head
+    var ritems := rs.[hmark](oid(nil)).[leftfetchjoin](const 
returned_item).[tmark](const [EMAIL PROTECTED]);
+    var rkinds := rs.[hmark](oid(nil)).[leftfetchjoin](const 
returned_kind).[tmark](const [EMAIL PROTECTED]);
 
     # align uitems|kinds and ritems|kinds,
     # fill missing container with emtpybat
     var emptybat := bat(void,void,0);
     var usedonly := kdiff(uitems,ritems).project(emptybat);
-    ritems.access(BAT_WRITE).insert(usedonly);
-    rkinds.access(BAT_WRITE).insert(usedonly);
+    ritems := 
ritems.access(BAT_WRITE).insert(usedonly).sort().access(BAT_READ);
+    rkinds := 
rkinds.access(BAT_WRITE).insert(usedonly).sort().access(BAT_READ);
     var returnedonly := kdiff(ritems,uitems).project(emptybat);
-    uitems.access(BAT_WRITE).insert(returnedonly);
-    ukinds.access(BAT_WRITE).insert(returnedonly);
+    uitems := 
uitems.access(BAT_WRITE).insert(returnedonly).sort().access(BAT_READ);
+    ukinds := 
ukinds.access(BAT_WRITE).insert(returnedonly).sort().access(BAT_READ);
 
     var rpcres := http_post(options, dst, moduleNS, location, method,
                     updCall, arity, iterc, ws, 
-                    uitems.sort(), ukinds.sort(), ritems.sort(), rkinds.sort(),
+                    uitems, ukinds, ritems, rkinds,
                     upath_item, rpath_item,
                     fun_vid, fun_iter, fun_item, fun_kind,
                     int_values, dbl_values, dec_values, str_values);

Index: xrpc_server.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v
retrieving revision 1.58.2.6
retrieving revision 1.58.2.7
diff -u -d -r1.58.2.6 -r1.58.2.7
--- xrpc_server.mx      10 Mar 2008 02:04:19 -0000      1.58.2.6
+++ xrpc_server.mx      10 Mar 2008 11:03:09 -0000      1.58.2.7
@@ -1287,6 +1287,7 @@
 
         frag_node_pre = pre;
         start_invalidate = 0;
+        frag_root = BATsetaccess(frag_root, BAT_APPEND);
         while((frag_node_pre = get_elem_pre_by_name("xrpc", XRPC_NS, 
"fragment",
                     frag_node_pre+1, frag_node_pre+pre_sizeT[pre], ELEMENT, 
pre_propT,
                     pre_kindT, qn_prefix_uri_loc)) > 0) {
@@ -1307,6 +1308,7 @@
             }
             start_invalidate = frag_node_pre + 1;
         }
+        frag_root = BATsetaccess(frag_root, BAT_READ);
     }
 
     *_isSimpleParam = isSimpleParam;


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to