Update of /cvsroot/monetdb/pathfinder/runtime
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv32133
Modified Files:
pathfinder.mx
Log Message:
issue 2664405: give an error in fn:collection() if the document does not exist
U pathfinder.mx
Index: pathfinder.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/pathfinder.mx,v
retrieving revision 1.453
retrieving revision 1.454
diff -u -d -r1.453 -r1.454
--- pathfinder.mx 19 Mar 2009 17:30:08 -0000 1.453
+++ pathfinder.mx 7 Apr 2009 10:02:10 -0000 1.454
@@ -3346,17 +3346,23 @@
return ret;
}
+PROC ws_collection_check(BAT[any::1,str] nms) : BAT[any::1,oid] {
+ var coll := nms.leftjoin(reverse(collection_name));
+ var miss := nms.kdiff(coll);
+ if (count(miss) > 0)
+ ERROR("err:FODC0004: collection '%s' unknown (%d missing in total)",
miss.fetch(0), count(tunique(miss)));
+ return coll;
+}
+
# pf:collection(), get 'collection root' as a single startpoint to query an
entire collection
PROC ws_collection_root(BAT[void,BAT] ws, BAT[void,str] colnames) :
BAT[oid,oid]
{
var colnames_unq :=
colnames.tdiff(ws.fetch(CONT_NAME)).tunique().mirror(); # [str,str]
lock_set(pf_short);
- var colnames_coll, err := CATCH({ colnames_coll :=
colnames_unq.leftjoin(reverse(collection_name));
+ var colnames_coll, err := CATCH({ colnames_coll :=
ws_collection_check(colnames_unq);
colname_pins.insert(colnames_coll.project(ws_id(ws))); });
lock_unset(pf_short);
- var notfound := reverse(colnames_coll).tdiff(colnames);
- if (count(notfound) > 0) ERROR("pf:collection() %s not found (%d such
errors).\n", notfound.fetch(0), count(notfound));
-
+ if (not(isnil(err))) ERROR(err);
colnames_c...@batloop() {
var docBAT := [bat]([+](str(int($t)), ws_dsk).reverse().mirror()); #
get master bats
ws_opencoll(ws, docBAT, $h, $t); # collections are loaded one-by-one
@@ -3372,7 +3378,7 @@
nms := nms.fetch(nms.tmark(0...@0).[startsWith]("::").ord_uselect(false));
lock_set(pf_short);
- err := CATCH({ var doc :=
nms.leftjoin(reverse(collection_name)).leftjoin(reverse(doc_collection)).tsort();
+ err := CATCH({ var doc :=
ws_collection_check(nms).leftjoin(reverse(doc_collection)).tsort();
var doch := doc.mark(0...@0), doct := doc.tmark(0...@0); #
doc == doch.leftjoin(doct);
var docs :=
doct.leftjoin(doc_name).select(str_nil,str_nil); # selected existing docs
doc := doch.leftjoin(docs.mirror().leftjoin(doct)); #
reduced doc to existing docs
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins