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

Modified Files:
      Tag: PF_ROX
        milgen.brg 
Log Message:
propagated changes of Tuesday Jun 17 2008 - Thursday Jun 19 2008
from the development trunk to the PF_ROX branch



U milgen.brg
Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.103.2.22
retrieving revision 1.103.2.23
diff -u -d -r1.103.2.22 -r1.103.2.23
--- milgen.brg  17 Jun 2008 00:24:57 -0000      1.103.2.22
+++ milgen.brg  19 Jun 2008 15:54:27 -0000      1.103.2.23
@@ -3362,22 +3362,22 @@
                         sorted = true;
                     }
                     else {
+                        mvar_t *v = new_var (1);
                         execute (
+                            assgn (
+                                var (v->name),
+                                select2 (VAR (L(p)->env, pa_item, aat_bln),
+                                         cast (type (mty_bit), nil ()),
+                                         cast (type (mty_bit), nil ()))),
                             binsert (
                                 var (item->name),
-                                mcast (type (mty_oid),
-                                       VAR (L(p)->env, pa_item, aat_bln))),
+                                mcast (type (mty_oid), var (v->name))),
                             binsert (
                                 var (kind->name),
-                                project (select2 (VAR (L(p)->env,
-                                                       pa_item,
-                                                       aat_bln),
-                                                  cast (type (mty_bit),
-                                                        nil ()),
-                                                  cast (type (mty_bit),
-                                                        nil ())),
+                                project (var (v->name),
                                          var (PF_MIL_VAR_BOOL)))
                         );
+                        unpin (v, 1);
                     }
                 }
 
@@ -8302,23 +8302,28 @@
         /* Rel:      merge_adjacent (Rel) */
         case 117: /* fold( */
         {
-            PFalg_att_t         iter_att   = p->sem.ii.iter,
-                                item_att   = p->sem.ii.item;
+            PFalg_att_t         iter_att   = p->sem.iter_pos_item.iter,
+                                pos_att    = p->sem.iter_pos_item.pos,
+                                item_att   = p->sem.iter_pos_item.item;
             PFalg_simple_type_t item_ty    = type_of (L(p), item_att);
             mvar_t             *iter       = new_var (p->refctr),
+                               *pos        = new_var (p->refctr),
                                *pre        = new_var (p->refctr),
                                *frag       = new_var (p->refctr),
                                *a_iter     = NULL,
+                               *a_pos      = NULL,
                                *a_pre      = NULL,
                                *a_attr     = NULL,
                                *a_cont     = NULL,
                                *p_iter     = NULL,
+                               *p_pos      = NULL,
                                *p_pre      = NULL,
                                *p_cont     = NULL,
                                *ma;
             bool                treat_attr = false;
 
             env_add (p->env, iter_att, aat_nat, iter);
+            env_add (p->env, pos_att,  aat_nat, pos);
             env_add (p->env, item_att, aat_pre, pre);
             env_add (p->env, item_att, aat_frag, frag);
 
@@ -8328,6 +8333,7 @@
                 mvar_t *attr    = new_var (1),
                        *sel     = new_var (1),
                        *in_iter = env_mvar (L(p)->env, iter_att, aat_nat),
+                       *in_pos  = env_mvar (L(p)->env, pos_att,  aat_nat),
                        *in_frag = env_mvar (L(p)->env, item_att, aat_frag),
                        *in_pre  = env_mvar (L(p)->env, item_att, aat_pre),
                        *in_attr = env_mvar (L(p)->env, item_att, aat_attr);
@@ -8335,9 +8341,11 @@
                 treat_attr = true;
 
                 p_iter = new_var (1);
+                p_pos  = new_var (1);
                 p_pre  = new_var (1);
                 p_cont = new_var (1);
                 a_iter = new_var (1);
+                a_pos  = new_var (1);
                 a_pre  = new_var (1);
                 a_attr = new_var (1);
                 a_cont = new_var (1);
@@ -8356,6 +8364,7 @@
                 /* sel    := attr.uselect(true).hmark([EMAIL PROTECTED]);
                    p_pre  := leftfetchjoin (sel, pre);
                    p_iter := leftfetchjoin (sel, iter);
+                   p_pos  := leftfetchjoin (sel, pos);
                    p_cont := leftfetchjoin (sel, frag); */
                 execute (
                     assgn (var (sel->name),
@@ -8367,6 +8376,9 @@
                     assgn (var (p_iter->name),
                            leftfetchjoin (var (sel->name),
                                           var (in_iter->name))),
+                    assgn (var (p_pos->name),
+                           leftfetchjoin (var (sel->name),
+                                          var (in_pos->name))),
                     assgn (var (p_cont->name),
                            leftfetchjoin (var (sel->name),
                                           var (in_frag->name))));
@@ -8377,6 +8389,7 @@
                    a_pre  := leftfetchjoin (sel, pre);
                    a_attr := leftfetchjoin (sel, attr);
                    a_iter := leftfetchjoin (sel, iter);
+                   a_pos  := leftfetchjoin (sel, pos);
                    a_cont := leftfetchjoin (sel, frag); */
                 execute (
                     assgn (var (sel->name),
@@ -8391,6 +8404,9 @@
                     assgn (var (a_iter->name),
                            leftfetchjoin (var (sel->name),
                                           var (in_iter->name))),
+                    assgn (var (a_pos->name),
+                           leftfetchjoin (var (sel->name),
+                                          var (in_pos->name))),
                     assgn (var (a_cont->name),
                            leftfetchjoin (var (sel->name),
                                           var (in_frag->name))));
@@ -8400,6 +8416,7 @@
             }
             else {
                 p_iter = env_mvar (L(p)->env, iter_att, aat_nat);
+                p_pos  = env_mvar (L(p)->env, pos_att, aat_nat);
                 p_pre  = env_mvar (L(p)->env, item_att, aat_pre);
                 p_cont = env_mvar (L(p)->env, item_att, aat_frag);
             }
@@ -8418,6 +8435,11 @@
                            hmark (fetch (var (ma->name), lit_int (1)),
                                   lit_oid (0)),
                            VAR (L(p)->env, iter_att, aat_nat))),
+                assgn (var (pos->name),
+                       leftfetchjoin (
+                           hmark (fetch (var (ma->name), lit_int (1)),
+                                  lit_oid (0)),
+                           VAR (L(p)->env, pos_att, aat_nat))),
                 assgn (var (pre->name),
                        tmark (fetch (var (ma->name), lit_int (1)),
                               lit_oid (0))),
@@ -8446,28 +8468,34 @@
                            merged_union (
                                arg (var (a_iter->name),
                                arg (var (iter->name),
+                               arg (var (a_pos->name),
+                               arg (var (pos->name),
                                arg (var (a_pre->name),
                                arg (var (pre->name),
                                arg (var (a_attr->name),
                                arg (project (var (iter->name),
                                              cast (type (mty_oid), nil ())),
                                arg (var (a_cont->name),
-                                    var (frag->name)))))))))),
+                                    var (frag->name)))))))))))),
                     assgn (var (iter->name),
                            fetch (var (mu->name), lit_int (0))),
-                    assgn (var (pre->name),
+                    assgn (var (pos->name),
                            fetch (var (mu->name), lit_int (1))),
-                    assgn (var (attr->name),
+                    assgn (var (pre->name),
                            fetch (var (mu->name), lit_int (2))),
+                    assgn (var (attr->name),
+                           fetch (var (mu->name), lit_int (3))),
                     assgn (var (frag->name),
-                           fetch (var (mu->name), lit_int (3))));
+                           fetch (var (mu->name), lit_int (4))));
 
                 unpin (mu, 1);
 
                 unpin (p_iter, 1);
+                unpin (p_pos, 1);
                 unpin (p_pre, 1);
                 unpin (p_cont, 1);
                 unpin (a_iter, 1);
+                unpin (a_pos, 1);
                 unpin (a_pre, 1);
                 unpin (a_attr, 1);
                 unpin (a_cont, 1);


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to