Update of /cvsroot/monetdb/pathfinder/modules/pftijah
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv5845
Modified Files:
Tag: XQuery_0-16
pftijah.mx
Log Message:
PF/Tijah: fix or operator implementation so that it works correctly when
retrieval models only return matching elements
Index: pftijah.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/modules/pftijah/pftijah.mx,v
retrieving revision 1.92.2.10
retrieving revision 1.92.2.11
diff -u -d -r1.92.2.10 -r1.92.2.11
--- pftijah.mx 15 Feb 2007 10:00:05 -0000 1.92.2.10
+++ pftijah.mx 19 Feb 2007 11:52:42 -0000 1.92.2.11
@@ -2114,31 +2114,38 @@
# PROBABILISTIC SET OPERATORS
################################################################################
+# Compute symmetric difference between two sets: all element that are not in
the intersection
+PROC ksymmdiff(bat left, bat right) : bat :=
+{
+ var onlyleft := left.kdiff(right);
+ var onlyright := right.kdiff(left);
+ return onlyleft.kunion(onlyright);
+}
+
PROC or_sum(bat left, bat right) : bat :=
{
- return [+](left,right);
- #var inters := [+](left,right);
- #var onlyleft := left.kdiff(inters);
- #var onlyright := right.kdiff(inters);
- #var result := inters.kunion(onlyleft).kunion(onlyright).sort();
+ var inters := [+](left,right);
+
+ return inters.kunion(ksymmdiff(left,right)).sort();
- #var inters := nil; var onlyleft := nil; var onlyright := nil;
-
- #return result;
}
PROC or_max(bat left, bat right) : bat :=
{
- return [max](left,right);
+ var inters := [max](left,right);
+
+ return inters.kunion(ksymmdiff(left,right)).sort();
}
PROC or_prob(bat left, bat right) : bat :=
{
- return [-](dbl(1),[*]([-](dbl(1),left),[-](dbl(1),right)));
+ var inters := [-](dbl(1),[*]([-](dbl(1),left),[-](dbl(1),right)));
+
+ return inters.kunion(ksymmdiff(left,right)).sort();
}
@@ -2161,14 +2168,18 @@
PROC or_min(bat left, bat right) : bat :=
{
- return [min](left,right);
+ var inters := [min](left,right);
+
+ return inters.kunion(ksymmdiff(left,right)).sort();
}
PROC or_prod(bat left, bat right) : bat :=
{
- return [*](left,right);
+ var inters := [*](left,right);
+
+ return inters.kunion(ksymmdiff(left,right)).sort();
}
-------------------------------------------------------------------------
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