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

Modified Files:
        logical.c physical.c 
Log Message:
-- Prepare {ancestor-or-|descendant-or-|}self steps in the algebra
   for attribute context nodes.


U physical.c
Index: physical.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/physical.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- physical.c  1 Mar 2008 11:47:03 -0000       1.62
+++ physical.c  26 Mar 2008 11:28:25 -0000      1.63
@@ -2486,6 +2486,14 @@
     if (spec.axis == alg_attr)
         ret->schema.items[1]
             = (PFalg_schm_item_t) { .name = item, .type = aat_anode };
+    else if (spec.axis == alg_anc_s)
+        ret->schema.items[1]
+            = (PFalg_schm_item_t) { .name = item,
+                                    .type = type_of (ctx, item) | aat_pnode };
+    else if (spec.axis == alg_desc_s || spec.axis == alg_self)
+        ret->schema.items[1]
+            = (PFalg_schm_item_t) { .name = item,
+                                    .type = type_of (ctx, item) };
     else
         ret->schema.items[1]
             = (PFalg_schm_item_t) { .name = item, .type = aat_pnode };

U logical.c
Index: logical.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/logical.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- logical.c   17 Mar 2008 17:41:10 -0000      1.86
+++ logical.c   26 Mar 2008 11:28:25 -0000      1.87
@@ -95,6 +95,7 @@
     for (i = 0; i < PFLA_OP_MAXCHILD; i++)
         ret->child[i] = NULL;
 
+    ret->state_label   = 0;
     ret->plans         = NULL;
     ret->sql_ann       = NULL;
     ret->prop          = PFprop ();
@@ -2589,6 +2590,16 @@
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
+    else if (ret->sem.step.spec.axis == alg_anc_s)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item)
+                                                   | aat_pnode };
+    else if (ret->sem.step.spec.axis == alg_desc_s ||
+             ret->sem.step.spec.axis == alg_self)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item) };
     else
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
@@ -2668,6 +2679,16 @@
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
+    else if (ret->sem.step.spec.axis == alg_anc_s)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item)
+                                                   | aat_pnode };
+    else if (ret->sem.step.spec.axis == alg_desc_s ||
+             ret->sem.step.spec.axis == alg_self)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item) };
     else
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,
@@ -2755,6 +2776,16 @@
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
+    else if (ret->sem.step.spec.axis == alg_anc_s)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item)
+                                                   | aat_pnode };
+    else if (ret->sem.step.spec.axis == alg_desc_s ||
+             ret->sem.step.spec.axis == alg_self)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item) };
     else
         ret->schema.items[1]
             = (struct PFalg_schm_item_t) { .name = item_res,
@@ -2845,6 +2876,16 @@
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,
                                            .type = aat_anode };
+    else if (ret->sem.step.spec.axis == alg_anc_s)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item)
+                                                   | aat_pnode };
+    else if (ret->sem.step.spec.axis == alg_desc_s ||
+             ret->sem.step.spec.axis == alg_self)
+        ret->schema.items[1]
+            = (struct PFalg_schm_item_t) { .name = item_res,
+                                           .type = PFprop_type_of (n, item) };
     else
         ret->schema.items[i]
             = (struct PFalg_schm_item_t) { .name = item_res,


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to