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

Modified Files:
      Tag: xquery-decomposition
        algebra.c algebra_cse.c builtins.c core2alg.brg logical.c 
        physical.c planner.c 
Log Message:
propagated changes of Friday 15 Feb 2008 - Monday Feb 18 2008
from the development trunk to the xquery-decomposition branch


Index: core2alg.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/core2alg.brg,v
retrieving revision 1.60.2.2
retrieving revision 1.60.2.3
diff -u -d -r1.60.2.2 -r1.60.2.3
--- core2alg.brg        16 Feb 2008 01:02:07 -0000      1.60.2.2
+++ core2alg.brg        18 Feb 2008 16:21:07 -0000      1.60.2.3
@@ -383,7 +383,11 @@
 /* worker to implement type tests */
 static PFla_op_t *type_test (PFty_t ty, PFla_pair_t e, PFla_op_t *loop);
 
+/* Extract all possible algebra types from the XQuery type.  */
+static PFalg_simple_type_t PFalg_type (PFty_t ty);
 
+/* Extract occurrence indicator from the XQuery type.  */
+static PFalg_occ_ind_t PFalg_type_occ (PFty_t ty);
 
 /**
  * Reducer function. This is the heart of this source file. It
@@ -2833,9 +2837,54 @@
  */
 static struct PFla_pair_t
 locstep (core2alg_ctx_t *ctx,
-         PFalg_axis_t axis, PFty_t seqty,
+         PFalg_axis_t axis, PFty_t ty,
          struct PFla_pair_t p)
 {
+    PFalg_step_spec_t spec;
+
+    spec.axis = axis;
+    /* missing QName */
+    spec.qname = PFqname (PFns_wild, NULL);
+    
+    if (PFty_subtype (ty, PFty_xs_anyAttribute ())) {
+        /* This is a test for attribute nodes */
+        spec.kind = node_kind_attr;
+        spec.qname = PFty_name (ty);
+    }
+    else if (PFty_subtype (ty, PFty_xs_anyElement ())) {
+        /* This is a test for element nodes */
+        spec.kind = node_kind_elem;
+        spec.qname = PFty_name (ty);
+    }
+    else if (PFty_subtype (ty, PFty_doc (PFty_xs_anyType ()))) {
+        /* This is a test for document nodes */
+        spec.kind = node_kind_doc;
+    }
+    else if (PFty_subtype (ty, PFty_text ())) {
+        /* This is a test for text nodes */
+        spec.kind = node_kind_text;
+    }
+    else if (PFty_subtype (ty, PFty_comm ())) {
+        /* This is a test for comment nodes */
+        spec.kind = node_kind_comm;
+    }
+    else if (PFty_subtype (ty, PFty_pi (NULL))) {
+        /* This is a test for processing-instruction nodes */
+        spec.kind = node_kind_pi;
+        spec.qname = PFty_name (ty);
+    }
+    else if (PFty_subtype (PFty_xs_anyNode (), ty)) {
+        /* If all these cases did not apply, it is probably a node() test. */
+        spec.kind = node_kind_node;
+    }
+    /* If we still couldn't find out, we probably need to give up. */
+    else {
+        PFoops (OOPS_FATAL,
+                "Problem with an XPath step: cannot evaluate "
+                "node test `%s'", PFty_str (ty));
+        spec.kind = node_kind_node;
+    }
+
     /*
      *                  env, loop: e => (q(e), delta)
      * ------------------------------------------------------------
@@ -2850,7 +2899,7 @@
                           project (p.rel,
                                    proj (att_iter, att_iter),
                                    proj (att_item, att_item)),
-                          axis, seqty, att_iter, att_item, att_item);
+                          spec, att_iter, att_item, att_item);
 
     if (ORDERING)
         return (struct  PFla_pair_t) {
@@ -3091,6 +3140,70 @@
     return NULL; /* pacify picky compilers */
 }
 
+/**
+ * Extract all possible algebra types from the XQuery type.
+ */
+static PFalg_simple_type_t
+PFalg_type (PFty_t ty)
+{
+    PFalg_simple_type_t alg_ty = 0;
+
+    ty = PFty_prime (PFty_defn (ty));
+
+    if (!PFty_disjoint (ty, PFty_xs_integer ()))
+        alg_ty |= aat_int;
+    if (!PFty_disjoint (ty, PFty_xs_string ()))
+        alg_ty |= aat_str;
+    if (!PFty_disjoint (ty, PFty_xs_double ()))
+        alg_ty |= aat_dbl;
+    if (!PFty_disjoint (ty, PFty_xs_decimal ()))
+        alg_ty |= aat_dec;
+    if (!PFty_disjoint (ty, PFty_xs_boolean ()))
+        alg_ty |= aat_bln;
+    if (!PFty_disjoint (ty, PFty_xs_QName ()))
+        alg_ty |= aat_qname;
+    if (!PFty_disjoint (ty, PFty_untypedAtomic ()))
+        alg_ty |= aat_uA;
+    if (!PFty_disjoint (ty, PFty_xs_anyAttribute ()))
+        alg_ty |= aat_anode;
+    if (!PFty_disjoint (ty, PFty_xs_anyElement ()) ||
+        !PFty_disjoint (ty, PFty_doc (PFty_xs_anyNode ())) ||
+        !PFty_disjoint (ty, PFty_pi (NULL)) ||
+        !PFty_disjoint (ty, PFty_comm ()) ||
+        !PFty_disjoint (ty, PFty_text ()))
+        alg_ty |= aat_pnode;
+    if (!PFty_disjoint (ty, PFty_stmt ())) {
+        alg_ty |= aat_update;
+        alg_ty |= aat_node;
+        alg_ty |= aat_node1;
+        alg_ty |= aat_uA;
+        alg_ty |= aat_qname;
+    }
+    if (!PFty_disjoint (ty, PFty_docmgmt ())) {
+        alg_ty |= aat_docmgmt;
+        alg_ty |= aat_path;
+        alg_ty |= aat_docnm;
+        alg_ty |= aat_colnm;
+    }
+    return alg_ty;
+}
+
+/**
+ * Extract occurrence indicator from the XQuery type.
+ */
+static PFalg_occ_ind_t
+PFalg_type_occ (PFty_t ty)
+{
+    if (PFty_subtype (ty, PFty_item ()))
+        return alg_occ_exactly_one;
+    else if (PFty_subtype (ty, PFty_plus (PFty_item ())))
+        return alg_occ_one_or_more;
+    else if (PFty_subtype (ty, PFty_opt(PFty_item ())))
+        return alg_occ_zero_or_one;
+    else
+        return alg_occ_unknown;
+}
+
 
 /**
  * Compile XQuery Core tree into relational algebra tree.

Index: algebra.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/algebra.c,v
retrieving revision 1.66.2.3
retrieving revision 1.66.2.4
diff -u -d -r1.66.2.3 -r1.66.2.4
--- algebra.c   16 Feb 2008 01:02:06 -0000      1.66.2.3
+++ algebra.c   18 Feb 2008 16:21:05 -0000      1.66.2.4
@@ -428,7 +428,6 @@
 #include "oops.h"
 #include "mem.h"
 #include "array.h"
-#include "subtyping.h"
 
 #include "algebra.h"
 
@@ -956,82 +955,59 @@
 }
 
 /**
- * Print function call kind
+ * Print XPath axis
  */
 char *
-PFalg_fun_call_kind_str (PFalg_fun_call_t kind)
+PFalg_axis_str (PFalg_axis_t axis)
 {
-    switch (kind) {
-        case alg_fun_call_dft:          return "";
-        case alg_fun_call_xrpc:         return "XRPC";
-        case alg_fun_call_xrpc_helpers: return "XRPC helper";
-        case alg_fun_call_tijah:        return "Tijah";
+    switch (axis) {
+        case alg_anc:    return "ancestor";
+        case alg_anc_s:  return "ancestor-or-self";
+        case alg_attr:   return "attribute";
+        case alg_chld:   return "child";
+        case alg_desc:   return "descendant";
+        case alg_desc_s: return "descendant-or-self";
+        case alg_fol:    return "following";
+        case alg_fol_s:  return "following-sibling";
+        case alg_par:    return "parent";
+        case alg_prec:   return "preceding";
+        case alg_prec_s: return "preceding-sibling";
+        case alg_self:   return "self";
     }
     return NULL;
 }
 
 /**
- * Extract all possible algebra types from the XQuery type.
+ * Print node kind
  */
-PFalg_simple_type_t
-PFalg_type (PFty_t ty)
+char *
+PFalg_node_kind_str (PFalg_node_kind_t kind)
 {
-    PFalg_simple_type_t alg_ty = 0;
-
-    ty = PFty_prime (PFty_defn (ty));
-
-    if (!PFty_disjoint (ty, PFty_xs_integer ()))
-        alg_ty |= aat_int;
-    if (!PFty_disjoint (ty, PFty_xs_string ()))
-        alg_ty |= aat_str;
-    if (!PFty_disjoint (ty, PFty_xs_double ()))
-        alg_ty |= aat_dbl;
-    if (!PFty_disjoint (ty, PFty_xs_decimal ()))
-        alg_ty |= aat_dec;
-    if (!PFty_disjoint (ty, PFty_xs_boolean ()))
-        alg_ty |= aat_bln;
-    if (!PFty_disjoint (ty, PFty_xs_QName ()))
-        alg_ty |= aat_qname;
-    if (!PFty_disjoint (ty, PFty_untypedAtomic ()))
-        alg_ty |= aat_uA;
-    if (!PFty_disjoint (ty, PFty_xs_anyAttribute ()))
-        alg_ty |= aat_anode;
-    if (!PFty_disjoint (ty, PFty_xs_anyElement ()) ||
-        !PFty_disjoint (ty, PFty_doc (PFty_xs_anyNode ())) ||
-        !PFty_disjoint (ty, PFty_pi (NULL)) ||
-        !PFty_disjoint (ty, PFty_comm ()) ||
-        !PFty_disjoint (ty, PFty_text ()))
-        alg_ty |= aat_pnode;
-    if (!PFty_disjoint (ty, PFty_stmt ())) {
-        alg_ty |= aat_update;
-        alg_ty |= aat_node;
-        alg_ty |= aat_node1;
-        alg_ty |= aat_uA;
-        alg_ty |= aat_qname;
-    }
-    if (!PFty_disjoint (ty, PFty_docmgmt ())) {
-        alg_ty |= aat_docmgmt;
-        alg_ty |= aat_path;
-        alg_ty |= aat_docnm;
-        alg_ty |= aat_colnm;
+    switch (kind) {
+        case node_kind_elem: return "element";
+        case node_kind_attr: return "attribute";
+        case node_kind_text: return "text";
+        case node_kind_pi:   return "processing-instruction";
+        case node_kind_comm: return "comment";
+        case node_kind_doc:  return "document-node";
+        case node_kind_node: return "node";
     }
-    return alg_ty;
+    return NULL;
 }
 
 /**
- * Extract occurrence indicator from the XQuery type.
+ * Print function call kind
  */
-PFalg_occ_ind_t
-PFalg_type_occ (PFty_t ty)
+char *
+PFalg_fun_call_kind_str (PFalg_fun_call_t kind)
 {
-    if (PFty_subtype (ty, PFty_item ()))
-        return alg_occ_exactly_one;
-    else if (PFty_subtype (ty, PFty_plus (PFty_item ())))
-        return alg_occ_one_or_more;
-    else if (PFty_subtype (ty, PFty_opt(PFty_item ())))
-        return alg_occ_zero_or_one;
-    else
-        return alg_occ_unknown;
+    switch (kind) {
+        case alg_fun_call_dft:          return "";
+        case alg_fun_call_xrpc:         return "XRPC";
+        case alg_fun_call_xrpc_helpers: return "XRPC helper";
+        case alg_fun_call_tijah:        return "Tijah";
+    }
+    return NULL;
 }
 
 /**

Index: physical.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/physical.c,v
retrieving revision 1.50.2.4
retrieving revision 1.50.2.5
diff -u -d -r1.50.2.4 -r1.50.2.5
--- physical.c  16 Feb 2008 01:02:08 -0000      1.50.2.4
+++ physical.c  18 Feb 2008 16:21:09 -0000      1.50.2.5
@@ -57,7 +57,6 @@
 #define JOIN_COST 100
 #define SORT_COST 700
 
-#ifndef NDEBUG
 /**
  * check for a column @a a in op @a p.
  */
@@ -72,7 +71,6 @@
 
     return false;
 }
-#endif
 
 /**
  * check for the type of column @a a in op @a p.
@@ -2458,8 +2456,7 @@
  */
 PFpa_op_t *
 PFpa_llscjoin (const PFpa_op_t *ctx,
-               PFalg_axis_t axis,
-               const PFty_t test,
+               PFalg_step_spec_t spec,
                const PFord_ordering_t in,
                const PFord_ordering_t out,
                PFalg_att_t iter, PFalg_att_t item)
@@ -2477,8 +2474,7 @@
 #endif
 
     /* store semantic content in node */
-    ret->sem.scjoin.axis = axis;
-    ret->sem.scjoin.ty   = test;
+    ret->sem.scjoin.spec = spec;
     ret->sem.scjoin.iter = iter;
     ret->sem.scjoin.item = item;
 
@@ -2490,7 +2486,7 @@
     ret->schema.items[0]
         = (PFalg_schm_item_t) { .name = iter, .type = aat_nat };
     /* the result of an attribute axis is also of type attribute */
-    if (axis == alg_attr)
+    if (spec.axis == alg_attr)
         ret->schema.items[1]
             = (PFalg_schm_item_t) { .name = item, .type = aat_anode };
     else

Index: planner.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/planner.c,v
retrieving revision 1.46.2.3
retrieving revision 1.46.2.4
diff -u -d -r1.46.2.3 -r1.46.2.4
--- planner.c   16 Feb 2008 01:02:08 -0000      1.46.2.3
+++ planner.c   18 Feb 2008 16:21:10 -0000      1.46.2.4
@@ -1449,13 +1449,12 @@
 
         for (unsigned int k = 0; k < PFarray_last (ordered); k++)
             /* the evaluation of the attribute axis keeps the input order */
-            if (n->sem.step.axis == alg_attr)
+            if (n->sem.step.spec.axis == alg_attr)
                 add_plan (
                     ret,
                     llscjoin (
                         *(plan_t **) PFarray_at (ordered, k),
-                        n->sem.step.axis,
-                        n->sem.step.ty,
+                        n->sem.step.spec,
                         in[i],
                         out[i],
                         n->sem.step.iter,
@@ -1466,8 +1465,7 @@
                         ret,
                         llscjoin (
                             *(plan_t **) PFarray_at (ordered, k),
-                            n->sem.step.axis,
-                            n->sem.step.ty,
+                            n->sem.step.spec,
                             in[i],
                             out[o],
                             n->sem.step.iter,

Index: algebra_cse.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/algebra_cse.c,v
retrieving revision 1.65.2.1
retrieving revision 1.65.2.2
diff -u -d -r1.65.2.1 -r1.65.2.2
--- algebra_cse.c       8 Feb 2008 22:59:12 -0000       1.65.2.1
+++ algebra_cse.c       18 Feb 2008 16:21:05 -0000      1.65.2.2
@@ -38,9 +38,6 @@
 #include "array.h"
 #include "alg_dag.h"
 
-/* compare types in path step operator nodes */
-#include "subtyping.h"
-
 #include <assert.h>
 #include <string.h> /* strcmp */
 
@@ -348,9 +345,9 @@
         case la_step_join:
         case la_guide_step:
         case la_guide_step_join:
-            if (a->sem.step.axis        != b->sem.step.axis
-             || !PFty_subtype (a->sem.step.ty, b->sem.step.ty)
-             || !PFty_subtype (b->sem.step.ty, a->sem.step.ty)
+            if (a->sem.step.spec.axis   != b->sem.step.spec.axis
+             || a->sem.step.spec.kind   != b->sem.step.spec.kind
+             || !PFqname_eq (a->sem.step.spec.qname, b->sem.step.spec.qname)
              || a->sem.step.guide_count != b->sem.step.guide_count
              || a->sem.step.level       != b->sem.step.level
              || a->sem.step.iter        != b->sem.step.iter

Index: logical.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/logical.c,v
retrieving revision 1.75.2.3
retrieving revision 1.75.2.4
diff -u -d -r1.75.2.3 -r1.75.2.4
--- logical.c   8 Feb 2008 22:59:13 -0000       1.75.2.3
+++ logical.c   18 Feb 2008 16:21:09 -0000      1.75.2.4
@@ -2537,7 +2537,7 @@
  */
 PFla_op_t *
 PFla_step (const PFla_op_t *doc, const PFla_op_t *n,
-           PFalg_axis_t axis, PFty_t seqty, int level,
+           PFalg_step_spec_t spec, int level,
            PFalg_att_t iter, PFalg_att_t item,
            PFalg_att_t item_res)
 {
@@ -2552,8 +2552,7 @@
     ret = la_op_wire2 (la_step, doc, n);
 
     /* insert semantic value (axis/kind test, col names) into the result */
-    ret->sem.step.axis        = axis;
-    ret->sem.step.ty          = seqty;
+    ret->sem.step.spec        = spec;
     ret->sem.step.guide_count = 0;
     ret->sem.step.guides      = NULL;
     ret->sem.step.level       = level;
@@ -2588,7 +2587,7 @@
         = (struct PFalg_schm_item_t) { .name = iter,
                                        .type = PFprop_type_of (n, iter) };
     /* the result of an attribute axis is also of type attribute */
-    if (ret->sem.step.axis == alg_attr)
+    if (ret->sem.step.spec.axis == alg_attr)
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
@@ -2602,11 +2601,11 @@
 
 PFla_op_t *
 PFla_step_simple (const PFla_op_t *doc, const PFla_op_t *n,
-                  PFalg_axis_t axis, PFty_t seqty,
+                  PFalg_step_spec_t spec,
                   PFalg_att_t iter, PFalg_att_t item,
                   PFalg_att_t item_res)
 {
-    return PFla_step (doc, n, axis, seqty, -1, iter, item, item_res);
+    return PFla_step (doc, n, spec, -1, iter, item, item_res);
 }
 
 
@@ -2621,7 +2620,7 @@
  */
 PFla_op_t *
 PFla_step_join (const PFla_op_t *doc, const PFla_op_t *n,
-                PFalg_axis_t axis, PFty_t seqty, int level,
+                PFalg_step_spec_t spec, int level,
                 PFalg_att_t item,
                 PFalg_att_t item_res)
 {
@@ -2634,8 +2633,7 @@
     ret = la_op_wire2 (la_step_join, doc, n);
 
     /* insert semantic value (axis/kind test, col names) into the result */
-    ret->sem.step.axis        = axis;
-    ret->sem.step.ty          = seqty;
+    ret->sem.step.spec        = spec;
     ret->sem.step.guide_count = 0;
     ret->sem.step.guides      = NULL;
     ret->sem.step.level       = level;
@@ -2668,7 +2666,7 @@
         ret->schema.items[i] = n->schema.items[i];
 
     /* the result of an attribute axis is also of type attribute */
-    if (ret->sem.step.axis == alg_attr)
+    if (ret->sem.step.spec.axis == alg_attr)
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
@@ -2682,10 +2680,10 @@
 
 PFla_op_t *
 PFla_step_join_simple (const PFla_op_t *doc, const PFla_op_t *n,
-                       PFalg_axis_t axis, PFty_t seqty,
+                       PFalg_step_spec_t spec,
                        PFalg_att_t item, PFalg_att_t item_res)
 {
-    return PFla_step_join (doc, n, axis, seqty, -1, item, item_res);
+    return PFla_step_join (doc, n, spec, -1, item, item_res);
 }
 
 
@@ -2700,7 +2698,7 @@
  */
 PFla_op_t *
 PFla_guide_step (const PFla_op_t *doc, const PFla_op_t *n,
-                 PFalg_axis_t axis, PFty_t seqty,
+                 PFalg_step_spec_t spec,
                  unsigned int guide_count, PFguide_tree_t **guides,
                  int level,
                  PFalg_att_t iter, PFalg_att_t item,
@@ -2717,8 +2715,7 @@
     ret = la_op_wire2 (la_guide_step, doc, n);
 
     /* insert semantic value (axis/kind test, col names) into the result */
-    ret->sem.step.axis        = axis;
-    ret->sem.step.ty          = seqty;
+    ret->sem.step.spec        = spec;
     ret->sem.step.guide_count = guide_count;
     ret->sem.step.guides      = memcpy (PFmalloc (guide_count *
                                                   sizeof (PFguide_tree_t *)),
@@ -2756,7 +2753,7 @@
         = (struct PFalg_schm_item_t) { .name = iter,
                                        .type = PFprop_type_of (n, iter) };
     /* the result of an attribute axis is also of type attribute */
-    if (ret->sem.step.axis == alg_attr)
+    if (ret->sem.step.spec.axis == alg_attr)
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
@@ -2770,14 +2767,14 @@
 
 PFla_op_t *
 PFla_guide_step_simple (const PFla_op_t *doc, const PFla_op_t *n,
-                        PFalg_axis_t axis, PFty_t seqty,
+                        PFalg_step_spec_t spec,
                         unsigned int guide_count, PFguide_tree_t **guides,
                         PFalg_att_t iter, PFalg_att_t item,
                         PFalg_att_t item_res)
 {
     return PFla_guide_step (
                doc, n,
-               axis, seqty,
+               spec,
                guide_count, guides,
                -1,
                iter, item, item_res);
@@ -2796,7 +2793,7 @@
  */
 PFla_op_t *
 PFla_guide_step_join (const PFla_op_t *doc, const PFla_op_t *n,
-                      PFalg_axis_t axis, PFty_t seqty,
+                      PFalg_step_spec_t spec,
                       unsigned int guide_count, PFguide_tree_t **guides,
                       int level, PFalg_att_t item, PFalg_att_t item_res)
 {
@@ -2809,8 +2806,7 @@
     ret = la_op_wire2 (la_guide_step_join, doc, n);
 
     /* insert semantic value (axis/kind test, col names) into the result */
-    ret->sem.step.axis        = axis;
-    ret->sem.step.ty          = seqty;
+    ret->sem.step.spec        = spec;
     ret->sem.step.guide_count = guide_count;
     ret->sem.step.guides      = memcpy (PFmalloc (guide_count *
                                                   sizeof (PFguide_tree_t *)),
@@ -2847,7 +2843,7 @@
         ret->schema.items[i] = n->schema.items[i];
 
     /* the result of an attribute axis is also of type attribute */
-    if (ret->sem.step.axis == alg_attr)
+    if (ret->sem.step.spec.axis == alg_attr)
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
@@ -2861,13 +2857,13 @@
 
 PFla_op_t *
 PFla_guide_step_join_simple (const PFla_op_t *doc, const PFla_op_t *n,
-                             PFalg_axis_t axis, PFty_t seqty,
+                             PFalg_step_spec_t spec,
                              unsigned int guide_count, PFguide_tree_t **guides,
                              PFalg_att_t item, PFalg_att_t item_res)
 {
     return PFla_guide_step_join (
                doc, n,
-               axis, seqty,
+               spec,
                guide_count, guides,
                -1, item, item_res);
 }
@@ -4298,8 +4294,7 @@
 
         case la_step:
             return PFla_step (left, right,
-                              n->sem.step.axis,
-                              n->sem.step.ty,
+                              n->sem.step.spec,
                               n->sem.step.level,
                               n->sem.step.iter,
                               n->sem.step.item,
@@ -4307,16 +4302,14 @@
 
         case la_step_join:
             return PFla_step_join (left, right,
-                                   n->sem.step.axis,
-                                   n->sem.step.ty,
+                                   n->sem.step.spec,
                                    n->sem.step.level,
                                    n->sem.step.item,
                                    n->sem.step.item_res);
 
         case la_guide_step:
             return PFla_guide_step (left, right,
-                                    n->sem.step.axis,
-                                    n->sem.step.ty,
+                                    n->sem.step.spec,
                                     n->sem.step.guide_count,
                                     n->sem.step.guides,
                                     n->sem.step.level,
@@ -4326,8 +4319,7 @@
 
         case la_guide_step_join:
             return PFla_guide_step_join (left, right,
-                                         n->sem.step.axis,
-                                         n->sem.step.ty,
+                                         n->sem.step.spec,
                                          n->sem.step.guide_count,
                                          n->sem.step.guides,
                                          n->sem.step.level,

Index: builtins.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/builtins.c,v
retrieving revision 1.71.2.3
retrieving revision 1.71.2.4
diff -u -d -r1.71.2.3 -r1.71.2.4
--- builtins.c  16 Feb 2008 01:02:06 -0000      1.71.2.3
+++ builtins.c  18 Feb 2008 16:21:06 -0000      1.71.2.4
@@ -4342,6 +4342,11 @@
                             struct PFla_pair_t *args)
 {
     PFla_op_t *node_scj, *nodes;
+    PFalg_step_spec_t desc_text_spec;
+    desc_text_spec.axis = alg_desc_s;
+    desc_text_spec.kind = node_kind_text;
+    /* missing QName */
+    desc_text_spec.qname = PFqname (PFns_wild, NULL);
 
     (void) ordering;
 
@@ -4352,7 +4357,7 @@
                        project (args[0].rel,
                                 proj (att_iter, att_iter),
                                 proj (att_item, att_item)),
-                       alg_desc_s, PFty_text (),
+                       desc_text_spec,
                        att_iter, att_item, att_item),
                    att_pos, sortby (att_item));
 
@@ -4391,6 +4396,11 @@
 {
     PFla_op_t *sel_attr, *sel_node, *attributes,
               *node_scj, *nodes;
+    PFalg_step_spec_t desc_text_spec;
+    desc_text_spec.axis = alg_desc_s;
+    desc_text_spec.kind = node_kind_text;
+    /* missing QName */
+    desc_text_spec.qname = PFqname (PFns_wild, NULL);
 
     /* we know that we have no empty sequences and
        thus can skip the treating for empty sequences */
@@ -4434,7 +4444,7 @@
                        project (sel_node,
                                 proj (att_iter, att_iter),
                                 proj (att_item, att_item)),
-                       alg_desc_s, PFty_text (),
+                       desc_text_spec,
                        att_iter, att_item, att_item),
                    att_pos, sortby (att_item));
 


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