Update of /cvsroot/monetdb/pathfinder/compiler/mil
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv13876/compiler/mil

Modified Files:
        milprint_summer.c 
Log Message:
propagated changes of Sunday Feb 11 2007 - Tuesday Feb 20 2007
from the XQuery_0-16 branch to the development trunk


Index: milprint_summer.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint_summer.c,v
retrieving revision 1.324
retrieving revision 1.325
diff -u -d -r1.324 -r1.325
--- milprint_summer.c   11 Feb 2007 22:04:35 -0000      1.324
+++ milprint_summer.c   20 Feb 2007 12:06:51 -0000      1.325
@@ -6488,7 +6488,7 @@
                 "  var r := ws_opendoc(ws, item%s.materialize(ipik));\n"
                 "  kind  := r.tmark([EMAIL PROTECTED]).set_kind(ELEM);\n"
                 "  item  := r.hmark([EMAIL PROTECTED]);\n"
-                "  time_shred :+= usec() - t;\n"
+                "  time_shred := time_shred + usec() - t;\n"
                 "} # end of translate fn:doc (string?) as document?\n", 
(rc)?item_ext:val_join(STR));
         return NORMAL;
     } else if (!PFqname_eq(fnQname,PFqname (PFns_fn,"collection")))
@@ -6597,7 +6597,7 @@
                 "  fn_put(ws, item_str_.materialize(ipik), 
item%03u.materialize(ipik%03u), kind%03u.materialize(ipik%03u), int_values, 
dbl_values, dec_values, str_values);\n"
                 "  item := bat(void,oid).seqbase([EMAIL PROTECTED]);\n"
                 "  kind := bat(void,int).seqbase([EMAIL PROTECTED]);\n"
-                "  iter := 1;\n"
+                "  iter := [EMAIL PROTECTED];\n"
                 "  pos := 1;\n"
                 "  ipik := item;\n"
                 "} # end of translate fn:put (node, string) as stmt\n", 
counter, counter, counter, counter);
@@ -7027,12 +7027,14 @@
         counter = prep_str_funs(f, cur_level, counter, args);
         milprintf(f,
                 "{ # fn:substring-before\n"
-                "var res := [stringleft](item%s%03u, "
-                                        "[locate](item%s, "
-                                                 "item%s%03u).[-](1));\n",
-                item_ext, counter,
+                "var search_result%s := [search](item%s%03u, item%s);\n"
+                "var res := [ifthenelse]([<](search_result%s, 0), \"\", "
+                                        "[stringleft](item%s%03u, 
search_result%s));\n"
+                "search_result%s := nil;\n",
+                item_ext, item_ext, counter, item_ext,
                 item_ext,
-                item_ext, counter);
+                item_ext, counter, item_ext,
+                item_ext);
 
         return_str_funs (f, code, cur_level, "fn:substring-before");
         deleteResult_ (f, counter, STR);
@@ -7045,17 +7047,17 @@
         milprintf(f,
                 "{ # fn:substring-after\n"
                 "var length_item%s := [length](item%s);\n"
-                "var res := [string](item%s%03u, "
-                                        "[+](length_item%s, "
-                                            "[locate](item%s, "
-                                                     "item%s%03u).[-](1)));\n"
-                "length_item%s := nil;\n",
-                item_ext, item_ext, 
-                item_ext, counter, 
-               item_ext,
-               item_ext,
-                item_ext, counter,
-               item_ext);
+                "var search_result%s := [search](item%s%03u, item%s);\n"
+                "var res := [ifthenelse]([<](search_result%s, 0), \"\", 
[string](item%s%03u, "
+                                        "[+](length_item%s, 
search_result%s)));\n"
+                "length_item%s := nil;\n"
+                "search_result%s := nil;\n",
+                item_ext, item_ext,
+                item_ext, item_ext, counter, item_ext,
+               item_ext, item_ext, counter,
+                item_ext, item_ext,
+                item_ext,
+                item_ext);
                 
         return_str_funs (f, code, cur_level, "fn:substring-after");
         deleteResult_ (f, counter, STR);
@@ -8051,6 +8053,10 @@
                 "    var optbat := new(str,str,32);\n");
 
          milprintf(f,
+               "    var coll := collName;\n"
+               "    if ( optbat.exist(\"collection\") ) { coll := 
optbat.find(\"collection\"); }\n"
+               "    tijah_lock := tj_get_collection_lock(coll);\n"
+               "    lock_set(tijah_lock);\n"
                "    var startNodes;\n"
                "    iter := iter%03u.materialize(ipik%03u);\n"
                "    if (iter.count() > 0) {\n"  
@@ -8062,8 +8068,6 @@
                "        iter := iter.tmark([EMAIL PROTECTED]);\n"
                "        item := item.tmark([EMAIL PROTECTED]);\n"
                "        kind := kind.tmark([EMAIL PROTECTED]);\n"
-               "        var coll := collName;\n"
-               "        if ( optbat.exist(\"collection\") ) { coll := 
optbat.find(\"collection\"); }\n"
                "        var xdoc_name := bat(\"tj_\" + coll + 
\"_doc_name\");\n"
                "        var xdoc_firstpre := bat(\"tj_\" + coll + 
\"_doc_firstpre\");\n"
                "        var xpfpre := bat(\"tj_\" + coll + \"_pfpre\");\n"
@@ -8086,6 +8090,7 @@
                 "    var frag := [find_lower](const 
docpre.reverse().mark([EMAIL PROTECTED]), item);\n"
                 "    item := item.join(pfpre).sort().tmark();\n"
                 "    var needed_docs := bat(\"tj_\" + collName + 
\"_doc_name\").semijoin(frag.tunique());\n"
+               "    lock_unset(tijah_lock); tijah_lock := lock_nil;\n"
                 "    var loaded_docs := ws.fetch(OPEN_NAME).reverse();\n"
                 "    var docs_to_load := 
kdiff(needed_docs.reverse(),loaded_docs).hmark([EMAIL PROTECTED]);\n"
                "    ws_opendoc(ws, docs_to_load);\n"
@@ -10873,7 +10878,7 @@
         /* ============================================== */
 
         /* finish name by printing start (hashed name), connecting and 
terminating it */
-        sprintf(c->sem.fun->sig, "%s%08X", (stmt==1)?"up":"fn", hash);
+        sprintf(c->sem.fun->sig, "%s%08X", (stmt==1)?"up":(stmt==2)?"dm":"fn", 
hash);
         c->sem.fun->sig[10] = '_';
         c->sem.fun->sig[j] = 0;
 
@@ -10925,10 +10930,11 @@
 #ifdef HAVE_PFTIJAH
        "\n"
        "var tID := [EMAIL PROTECTED]; # start counter at an arbitrary number\n"
-       "var tijah_tID := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
-       "var tijah_frag := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
-       "var tijah_pre := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
+       "var tijah_tID   := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
+       "var tijah_frag  := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
+       "var tijah_pre   := new(void,oid).seqbase([EMAIL PROTECTED]);\n"
        "var tijah_score := new(void,dbl).seqbase([EMAIL PROTECTED]);\n"
+       "var tijah_lock  := lock_nil; # pftijah collection lock\n"
 #endif
         "\n"
         "# value containers for literal values\n"
@@ -11061,6 +11067,12 @@
 "if (genType.search(\"debug\") >= 0) 
print(item.slice(0,10).col_name(\"tot_items_\"+str(item.count())));\n" 
 */
 
+#ifdef HAVE_PFTIJAH
+#define PF_STOP_PFTIJAH " if (not(isnil(tijah_lock))) 
lock_unset(tijah_lock);\n"
+#else
+#define PF_STOP_PFTIJAH " \n"
+#endif
+
 #define PF_STOPMIL_START \
            "  time_print := usec();\n"\
            "  time_exec := time_print - time_start;\n"
@@ -11079,6 +11091,7 @@
            " if (not(isnil(err))) ws_log(ws, err);\n"\
            " ws_destroy(ws);\n"\
            "}\n"\
+          PF_STOP_PFTIJAH\
            "if (not(isnil(err))) ERROR(err);\n"\
            "else if (genType.startsWith(\"timing\"))\n"\
            "  printf(\"\\nTrans  %% 10.3f msec\\nShred  %% 10.3f msec\\nQuery  
%% 10.3f msec\\n" LASTPHASE " %% 10.3f msec\\n\","\


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to