Update of /cvsroot/monetdb/pathfinder/compiler/algebra/opt
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv25736

Modified Files:
      Tag: XQuery_0-24
        opt_algebra_cse.c 
Log Message:
Bugfix:
    Do not rely on the alignment of the schema of the original plan nodes
    and those in the CSE plan.


U opt_algebra_cse.c
Index: opt_algebra_cse.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_algebra_cse.c,v
retrieving revision 1.30
retrieving revision 1.30.2.1
diff -u -d -r1.30 -r1.30.2.1
--- opt_algebra_cse.c   3 Apr 2008 11:03:20 -0000       1.30
+++ opt_algebra_cse.c   28 May 2008 12:48:32 -0000      1.30.2.1
@@ -1527,11 +1527,17 @@
              * a projection if this is the case */
             for (i = 0; i < CSE(L(n))->schema.count; i++) {
                 for (j = 0; j < CSE(R(n))->schema.count; j++) {
-                    if (REVACTATT(L(n), CSE(L(n))->schema.items[i].name) ==
-                        REVACTATT(R(n), CSE(R(n))->schema.items[j].name)) {
-                        if (ACTATT(L(n), L(n)->schema.items[i].name) !=
-                            ACTATT(R(n), R(n)->schema.items[j].name))
-                            projection = true;
+                                       PFalg_att_t rev_l = att_NULL,
+                                                               rev_r = 
att_NULL;
+                    if ((rev_l = REVACTATT(
+                                                                       L(n), 
CSE(L(n))->schema.items[i].name)) ==
+                        (rev_r = REVACTATT(
+                                                                       R(n), 
CSE(R(n))->schema.items[j].name))) {
+                                               
+                        if (ACTATT(L(n), rev_l) !=
+                            ACTATT(R(n), rev_r))
+                                       projection = true;
+           
                         break;
                     }
                 }
@@ -1546,41 +1552,39 @@
             if (projection) {
                 p = (PFalg_proj_t *)
                     PFmalloc (R(n)->schema.count * sizeof (PFalg_proj_t));
-
                 for (i = 0; i < CSE(L(n))->schema.count; i++) {
                     for (j = 0; j < CSE(R(n))->schema.count; j++) {
-                        if (REVACTATT(L(n), CSE(L(n))->schema.items[i].name) ==
-                            REVACTATT(R(n), CSE(R(n))->schema.items[j].name)) {
+                                               PFalg_att_t rev_l = att_NULL,
+                                                                       rev_r = 
att_NULL;
+                                                                       
+                        if ((rev_l = REVACTATT(L(n),
+                                                                               
CSE(L(n))->schema.items[i].name)) ==
+                            (rev_r = REVACTATT(R(n),
+                                                                               
CSE(R(n))->schema.items[j].name))) {
                             /* the names are conflicting */
                             if (ACTATT(L(n), L(n)->schema.items[i].name) !=
                                 ACTATT(R(n), R(n)->schema.items[j].name)) {
                                 p[i] = PFalg_proj (
                                       ACTATT(L(n),
-                                             L(n)->schema.items[i].name),
+                                             rev_l),
                                       ACTATT(R(n),
-                                             R(n)->schema.items[j].name));
+                                             rev_r));
 
                                 INACTATT (actmap,
                                     actatt (ACTATT(L(n),
-                                               L(n)->schema.items[i].name),
+                                               rev_l),
                                             REVACTATT (R(n),
                                                CSE(R(n))->schema.items[j]
                                                    .name)));
                             }
                             else {
-                                p[i] = PFalg_proj (
-                                         ACTATT(R(n),
-                                            R(n)->schema.items[j].name),
-                                         ACTATT(R(n),
-                                            R(n)->schema.items[j].name));
+                                                               PFalg_att_t t = 
ACTATT(R(n), rev_r);
+                                                               
+                                                               p[i] = 
PFalg_proj (t,t);
 
                                 INACTATT (
-                                   actmap,
-                                   actatt (
-                                      ACTATT(R(n),
-                                             R(n)->schema.items[j].name),
-                                      ACTATT(R(n),
-                                             R(n)->schema.items[j].name)));
+                                    actmap,
+                                                                       actatt 
(t,t));
                             }
                         }
                     }


-------------------------------------------------------------------------
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