Update of /cvsroot/monetdb/pathfinder/compiler/mil
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv16427/compiler/mil
Modified Files:
Tag: XQuery_0-16
milprint_summer.c
Log Message:
- fix problems in information functions (pf:documents/collections)
when documents have been deleted from multi-document collections
Index: milprint_summer.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint_summer.c,v
retrieving revision 1.318.2.14
retrieving revision 1.318.2.15
diff -u -d -r1.318.2.14 -r1.318.2.15
--- milprint_summer.c 21 Feb 2007 13:30:02 -0000 1.318.2.14
+++ milprint_summer.c 21 Feb 2007 23:43:42 -0000 1.318.2.15
@@ -6519,23 +6519,24 @@
" pos := [EMAIL PROTECTED];\n"
"} # end of translate pf:collection (string) as node*\n",
(rc)?item_ext:val_join(STR));
return NORMAL;
- } else if (!PFqname_eq(fnQname,PFqname (PFns_lib,"documents")))
+ } else if (PFqname_eq(fnQname,PFqname (PFns_lib,"documents")) == 0 ||
+ (PFqname_eq(fnQname,PFqname (PFns_lib,"documents-unsafe")) == 0
&& (rc=1)))
{
+ char *consistent = rc?"false":"true";
if (fun->arity) {
rc = translate2MIL (f, VALUES, cur_level, counter, L(args));
item_ext = kind_str(rc);
-
milprintf(f,
"{ # translate pf:documents (string*) as string*\n"
- " var ret := ws_documents(ws, item%s.materialize(ipik));\n"
+ " var ret := ws_documents(ws, item%s.materialize(ipik),%s);\n"
" item := ret.tmark([EMAIL PROTECTED]);\n"
- " iter := ret.hmark([EMAIL
PROTECTED]).leftfetchjoin(iter);\n", (rc)?item_ext:val_join(STR));
+ " iter := ret.hmark([EMAIL
PROTECTED]).leftfetchjoin(iter);\n", (rc)?item_ext:val_join(STR), consistent);
} else {
milprintf(f,
"{ # translate pf:documents () as string*\n"
- " var ret := reverse(loop%03u).cross(ws_documents(ws));\n"
+ " var ret := reverse(loop%03u).cross(ws_documents(ws,%s));\n"
" iter := ret.hmark([EMAIL PROTECTED]);\n"
- " item := ret.tmark([EMAIL PROTECTED]);\n", cur_level);
+ " item := ret.tmark([EMAIL PROTECTED]);\n", cur_level,
consistent);
}
milprintf(f,
" ipik := item;\n"
@@ -6543,17 +6544,19 @@
" pos := tmark_grp_unique(iter,ipik);\n"
"} # end of translate fn:documents (string?) as string*\n");
return NORMAL;
- } else if (!PFqname_eq(fnQname,PFqname (PFns_lib,"collections")))
+ } else if (PFqname_eq(fnQname,PFqname (PFns_lib,"collections")) == 0 ||
+ (PFqname_eq(fnQname,PFqname (PFns_lib,"collections-unsafe")) ==
0 && (rc=1)))
{
+ char *consistent = rc?"false":"true";
milprintf(f,
"{ # translate pf:collections () as string*\n"
- " var ret := reverse(loop%03u).cross(ws_collections(ws));\n"
+ " var ret := reverse(loop%03u).cross(ws_collections(ws,
%s));\n"
" iter := ret.hmark([EMAIL PROTECTED]);\n"
" item := ret.tmark([EMAIL PROTECTED]);\n"
" ipik := item;\n"
" kind := set_kind(WS,ELEM);\n"
" pos := tmark_grp_unique(iter,ipik);\n"
- "} # end of translate fn:collections () as string*\n",
cur_level);
+ "} # end of translate fn:collections () as string*\n",
cur_level, consistent);
return NORMAL;
} else if (!PFqname_eq(fnQname,PFqname (PFns_lib,"mil")))
{
@@ -6561,7 +6564,7 @@
item_ext = kind_str(rc);
milprintf(f,
"{ # translate pf:mil (string) as item*\n"
- " if (count(loop%03u) != 1) ERROR(\"pf:mil can only be called
in a single iteration\");\n"
+ " if (count(loop%03u) != 1) ERROR(\"pf:mil cannot be called
from within a for-loop\");\n"
" kind := ELEM;\n"
" item := ws_mil(ws, item%s.fetch(0));\n"
" if (type(item) = str) {\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