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

Modified Files:
      Tag: XQuery_0-24
        opt_algebra_cse.c 
Log Message:
Bugfix: the handling of serialize_rel was buggy. The items-field in the
        semantic content was not mapped to the actual attributes.


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.2.2
retrieving revision 1.30.2.3
diff -u -d -r1.30.2.2 -r1.30.2.3
--- opt_algebra_cse.c   28 May 2008 15:13:38 -0000      1.30.2.2
+++ opt_algebra_cse.c   29 May 2008 11:31:39 -0000      1.30.2.3
@@ -766,12 +766,25 @@
         case la_serialize_seq:
             if ((ACTATT (R(a), a->sem.ser_seq.pos) ==
                  ACTATT (R(b), b->sem.ser_seq.pos)) &&
-                (ACTATT (R(a), a->sem.ser_seq.item) &&
+                (ACTATT (R(a), a->sem.ser_seq.item) ==
                  ACTATT (R(b), b->sem.ser_seq.item)))
                 return true;
-            break;
 
         case la_serialize_rel:
+                       if ((ACTATT (L(a), a->sem.ser_rel.iter) != 
+                                ACTATT (L(b), b->sem.ser_rel.iter)) ||
+                               (ACTATT (L(a), a->sem.ser_rel.pos) !=
+                                ACTATT (L(b), a->sem.ser_rel.pos)))
+                               return false;
+
+                       for (unsigned int i = 0; i < a->sem.ser_rel.items.count;
+                                       i++) {
+                               if (ACTATT (L(a), a->sem.ser_rel.items.atts[i]) 
!=
+                                       ACTATT (L(b), 
b->sem.ser_rel.items.atts[i]))
+                                       return false;
+                       }
+
+                       return true;
         case la_lit_tbl:
             if (a->sem.lit_tbl.count !=
                 b->sem.lit_tbl.count)
@@ -1318,11 +1331,21 @@
                                 ACTATT(R(n), n->sem.ser_seq.item));
 
         case la_serialize_rel:
+               {
+                       PFalg_attlist_t items = (PFalg_attlist_t) {
+                                                                       .count 
= n->sem.ser_rel.items.count,
+                                                                       .atts = 
PFmalloc (sizeof(PFalg_att_t))
+                                                               };
+                                                       
+                       for (unsigned int i = 0; i < items.count; i++) {
+                               items.atts[i] = ACTATT (L(n), 
n->sem.ser_rel.items.atts[i]);
+                       }
+                       
             return PFla_serialize_rel (CSE(L(n)),
                                 ACTATT (L(n), n->sem.ser_rel.iter),
                                 ACTATT (L(n), n->sem.ser_rel.pos),
-                                n->sem.ser_rel.items);
-
+                                items);
+               }
         case la_lit_tbl:
             return PFla_lit_tbl_ (create_attlist (n->schema),
                                   n->sem.lit_tbl.count,


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