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

Modified Files:
      Tag: xquery-decomposition
        milgen.brg 
Log Message:
propagated changes of Saturday Feb 16 2008 - Monday Feb 18 2008
from the development trunk to the xquery-decomposition branch


Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.96.2.5
retrieving revision 1.96.2.6
diff -u -d -r1.96.2.5 -r1.96.2.6
--- milgen.brg  18 Feb 2008 16:21:34 -0000      1.96.2.5
+++ milgen.brg  19 Feb 2008 10:39:41 -0000      1.96.2.6
@@ -3739,20 +3739,33 @@
                         "multi-predicate joins are not supported yet");
             }
 
-            /* evaluate the join and create two map relations */
-            execute (
-                assgn (var (v->name),
-                       leftjoin (var (l->name), reverse (var (r->name)))),
-                assgn (var (v1->name),
-                       reverse (mark (var (v->name), lit_oid (0)))),
-                assgn (var (v2->name),
-                       reverse (
-                           mark (reverse (var (v->name)), lit_oid (0)))));
+            if (p->kind == pa_semijoin) {
+                /* evaluate the semijoin and create the map relation */
+                execute (
+                    assgn (var (v->name),
+                           kintersect (reverse (var (l->name)),
+                                       reverse (var (r->name)))),
+                    assgn (var (v1->name),
+                           tmark (var (v->name), lit_oid (0))));
 
-            /* map all columns from the left and the right argument */
-            env_map (p, L(p)->env, v1);
-            if (p->kind != pa_semijoin)
+                /* map all columns from the left argument */
+                env_map (p, L(p)->env, v1);
+            }
+            else {
+                /* evaluate the join and create two map relations */
+                execute (
+                    assgn (var (v->name),
+                           leftjoin (var (l->name), reverse (var (r->name)))),
+                    assgn (var (v1->name),
+                           reverse (mark (var (v->name), lit_oid (0)))),
+                    assgn (var (v2->name),
+                           reverse (
+                               mark (reverse (var (v->name)), lit_oid (0)))));
+
+                /* map all columns from the left and the right argument */
+                env_map (p, L(p)->env, v1);
                 env_map (p, R(p)->env, v2);
+            }
 
             unpin (v, 1);
             unpin (v1, 1);


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to