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

Modified Files:
        milgen.brg 
Log Message:
-- Added error message for self step.

-- Fixed mposjoin usages in fn:name.


Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -d -r1.111 -r1.112
--- milgen.brg  16 Feb 2008 19:42:42 -0000      1.111
+++ milgen.brg  17 Feb 2008 11:52:08 -0000      1.112
@@ -1265,7 +1265,8 @@
         /* find all element nodes and extract their QName references */
         mvar_t  *kind      = new_var (1),
                 *elem      = new_var (1),
-                *elem_cont = new_var (1);
+                *elem_cont = new_var (1),
+                *map       = new_var (1);
         PFmil_t *pre       = VAR (p->env, att, aat_pre),
                 *pre_cont  = VAR (p->env, att, aat_frag);
 
@@ -1276,27 +1277,33 @@
                        pre_cont,
                        fetch (var (PF_MIL_VAR_WS),
                               var (PF_MIL_VAR_PRE_KIND)))),
-            assgn (var (kind->name),
-                   mirror (select_ (var (kind->name), 
-                                    var (PF_MIL_VAR_KIND_ELEM)))),
+            assgn (var (map->name),
+                   hmark (select_ (var (kind->name), 
+                                   var (PF_MIL_VAR_KIND_ELEM)),
+                          lit_oid (0))),
             assgn (var (elem->name),
-                   leftjoin (var (kind->name), pre)),
+                   leftfetchjoin (var (map->name), pre)),
             assgn (var (elem_cont->name),
-                   leftjoin (var (kind->name), pre_cont)),
+                   leftfetchjoin (var (map->name), pre_cont)),
             assgn (var (id->name),
-                   mposjoin (var (elem->name),
-                             var (elem_cont->name),
-                             fetch (var (PF_MIL_VAR_WS),
-                                    var (PF_MIL_VAR_PRE_PROP)))),
+                   leftfetchjoin (
+                       reverse (var (map->name)),
+                       mposjoin (var (elem->name),
+                                 var (elem_cont->name),
+                                 fetch (var (PF_MIL_VAR_WS),
+                                        var (PF_MIL_VAR_PRE_PROP))))),
             assgn (var (cont->name),
-                   mposjoin (var (elem->name),
-                             var (elem_cont->name),
-                             fetch (var (PF_MIL_VAR_WS),
-                                    var (PF_MIL_VAR_PRE_CONT)))));
+                   leftfetchjoin (
+                       reverse (var (map->name)),
+                       mposjoin (var (elem->name),
+                                 var (elem_cont->name),
+                                 fetch (var (PF_MIL_VAR_WS),
+                                        var (PF_MIL_VAR_PRE_CONT))))));
 
         unpin (kind, 1);
         unpin (elem, 1);
         unpin (elem_cont, 1);
+        unpin (map, 1);
     }
     else if (ty == aat_anode) {
         /* extract all QName references from the attributes */
@@ -1320,8 +1327,7 @@
         
         /* split up nodes and attributes,
            find all element nodes and extract their QName references */
-        mvar_t  *kind      = new_var (1),
-                *elem      = new_var (1),
+        mvar_t  *elem      = new_var (1),
                 *elem_cont = new_var (1),
                 *pre_sel   = new_var (1),
                 *attr_sel  = new_var (1),
@@ -1340,40 +1346,49 @@
         execute (
             /* get all attributes */
             assgn (var (attr_sel->name),
-                   mirror (
+                   hmark (
                        select2 (var (attr_col->name),
                                 cast (type (mty_oid), nil ()),
-                                cast (type (mty_oid), nil ())))),
+                                cast (type (mty_oid), nil ())),
+                       lit_oid (0))),
             /* get all attribute QNames */
             assgn (var (aid->name),
-                   mposjoin (leftjoin (var (attr_sel->name), attr),
-                             leftjoin (var (attr_sel->name), pre_cont),
+                   mposjoin (leftfetchjoin (var (attr_sel->name), attr),
+                             leftfetchjoin (var (attr_sel->name), pre_cont),
                              fetch (var (PF_MIL_VAR_WS),
                                     var (PF_MIL_VAR_ATTR_QN)))),
             assgn (var (acont->name),
-                   mposjoin (leftjoin (var (attr_sel->name), attr),
-                             leftjoin (var (attr_sel->name), pre_cont),
+                   mposjoin (leftfetchjoin (var (attr_sel->name), attr),
+                             leftfetchjoin (var (attr_sel->name), pre_cont),
                              fetch (var (PF_MIL_VAR_WS),
                                     var (PF_MIL_VAR_ATTR_CONT)))),
             /* get all other nodes */
             assgn (var (pre_sel->name),
-                   mirror (
+                   hmark (
                        select_ (
                            misnil (var (attr_col->name)),
-                           lit_bit (true)))),
+                           lit_bit (true)),
+                       lit_oid (0))),
             /* get all element nodes */
-            assgn (var (kind->name),
-                   mposjoin (leftjoin (var (pre_sel->name), pre),
-                             leftjoin (var (pre_sel->name), pre_cont),
-                             fetch (var (PF_MIL_VAR_WS),
-                                    var (PF_MIL_VAR_PRE_KIND)))),
-            assgn (var (kind->name),
-                   mirror (select_ (var (kind->name), 
-                                    var (PF_MIL_VAR_KIND_ELEM)))),
             assgn (var (elem->name),
-                   leftjoin (var (kind->name), pre)),
+                   leftfetchjoin (var (pre_sel->name), pre)),
             assgn (var (elem_cont->name),
-                   leftjoin (var (kind->name), pre_cont)),
+                   leftfetchjoin (var (pre_sel->name), pre_cont)),
+            assgn (var (pre_sel->name),
+                   leftfetchjoin (
+                       reverse (var (pre_sel->name)),
+                       mposjoin (var (elem->name),
+                                 var (elem_cont->name),
+                                 fetch (var (PF_MIL_VAR_WS),
+                                        var (PF_MIL_VAR_PRE_KIND))))),
+            assgn (var (pre_sel->name),
+                   hmark (select_ (var (pre_sel->name), 
+                                   var (PF_MIL_VAR_KIND_ELEM)),
+                          lit_oid (0))),
+            assgn (var (elem->name),
+                   leftfetchjoin (var (pre_sel->name), pre)),
+            assgn (var (elem_cont->name),
+                   leftfetchjoin (var (pre_sel->name), pre_cont)),
             /* get all element QNames */
             assgn (var (pid->name),
                    mposjoin (var (elem->name),
@@ -1388,16 +1403,12 @@
             /* combine the results */
             assgn (var (res->name),
                    merged_union (
-                       arg (hmark (var (aid->name), lit_oid (0)),
-                            arg (hmark (var (pid->name), lit_oid (0)),
-                                 arg (tmark (var (aid->name),
-                                             lit_oid (0)),
-                                      arg (tmark (var (pid->name),
-                                                  lit_oid (0)),
-                                           arg (tmark (var (acont->name),
-                                                       lit_oid (0)),
-                                                tmark (var (pcont->name),
-                                                       lit_oid (0))))))))),
+                       arg (var (attr_sel->name),
+                            arg (var (pre_sel->name),
+                                 arg (var (aid->name),
+                                      arg (var (pid->name),
+                                           arg (var (acont->name),
+                                                var (pcont->name)))))))),
             assgn (var (id->name),
                    leftfetchjoin (
                        reverse (fetch (var (res->name), lit_int (0))),
@@ -1407,7 +1418,6 @@
                        reverse (fetch (var (res->name), lit_int (0))),
                        fetch (var (res->name), lit_int (2)))));
 
-        unpin (kind, 1);
         unpin (elem, 1);
         unpin (elem_cont, 1);
         unpin (pre_sel, 1);
@@ -4852,8 +4862,8 @@
                     /* get all prefixes */
                     execute (
                         assgn (var (prefix->name),
-                               mposjoin (var (id->name),
-                                         var (cont->name),
+                               mposjoin (tmark (var (id->name), lit_oid (0)),
+                                         tmark (var (cont->name), lit_oid (0)),
                                          fetch (var (PF_MIL_VAR_WS),
                                                 var (PF_MIL_VAR_QN_PREFIX)))),
                         /* add ":" only to prefix that are not "" */
@@ -4884,8 +4894,10 @@
                                    fetch (var (mu->name), lit_int (1)))),
                         assgn (var (name->name),
                                madd (var (prefix->name),
-                                     mposjoin (var (id->name),
-                                               var (cont->name),
+                                     mposjoin (tmark (var (id->name),
+                                                      lit_oid (0)),
+                                               tmark (var (cont->name),
+                                                      lit_oid (0)),
                                                fetch (
                                                    var (PF_MIL_VAR_WS),
                                                    var (PF_MIL_VAR_QN_LOC))))),
@@ -4896,11 +4908,10 @@
                                         lit_str (""))),
                         assgn (var (mu->name),
                                merged_union (
-                                   arg (hmark (var (name->name), lit_oid (0)),
+                                   arg (hmark (var (id->name), lit_oid (0)),
                                         arg (hmark (var (empty_str->name),
                                                     lit_oid (0)),
-                                             arg (tmark (var (name->name),
-                                                         lit_oid (0)),
+                                             arg (var (name->name),
                                                   tmark (var (empty_str->name),
                                                          lit_oid (0))))))),
                         assgn (var (res->name),
@@ -4945,8 +4956,8 @@
                     /* get all prefixes */
                     execute (
                         assgn (var (name->name),
-                               mposjoin (var (id->name),
-                                         var (cont->name),
+                               mposjoin (tmark (var (id->name), lit_oid (0)),
+                                         tmark (var (cont->name), lit_oid (0)),
                                          fetch (var (PF_MIL_VAR_WS),
                                                 var (uri_loc)))),
                         /* empty names for nodes that have no QName */
@@ -4956,11 +4967,10 @@
                                         lit_str (""))),
                         assgn (var (mu->name),
                                merged_union (
-                                   arg (hmark (var (name->name), lit_oid (0)),
+                                   arg (hmark (var (id->name), lit_oid (0)),
                                         arg (hmark (var (empty_str->name),
                                                     lit_oid (0)),
-                                             arg (tmark (var (name->name),
-                                                         lit_oid (0)),
+                                             arg (var (name->name),
                                                   tmark (var (empty_str->name),
                                                          lit_oid (0))))))),
                         assgn (var (res->name),
@@ -6025,6 +6035,8 @@
         /* Rel:      llscjoin (Rel) */
         /* FIXME: This code needs to be cleaned up. */
         case 80: /* fold( */
+            if (p->sem.scjoin.spec.axis == alg_self)
+                PFoops (OOPS_FATAL, "self step not implemented yet.");
             if (p->sem.scjoin.spec.axis != alg_attr)
                 llscj (p);
             else


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