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