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

Modified Files:
      Tag: XQuery_0-24
        prop_req_node.c 
Log Message:
-- In the node property inference we cannot assume that update and
   document management queries can be optimized.
  
   (Updates fail with lightweight node constructors
    -- nodes of kind REFERENCE.)


U prop_req_node.c
Index: prop_req_node.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/prop/prop_req_node.c,v
retrieving revision 1.6.4.1
retrieving revision 1.6.4.2
diff -u -d -r1.6.4.1 -r1.6.4.2
--- prop_req_node.c     2 Jun 2008 12:58:32 -0000       1.6.4.1
+++ prop_req_node.c     9 Jun 2008 12:30:40 -0000       1.6.4.2
@@ -412,10 +412,22 @@
             break;
 
         case la_fun_1to1:
-            /* mark the input columns as access columns */
-            for (unsigned int i = 0; i < n->sem.fun_1to1.refs.count; i++)
-                if (type_of (n, n->sem.fun_1to1.refs.atts[i]) & aat_node)
-                    add_access_map (n, n->sem.fun_1to1.refs.atts[i]);
+            if (type_of (n, n->sem.fun_1to1.res) & (aat_update|aat_docmgmt)) {
+                /* mark that we are not allowed to assume anything about
+                   the input columns */
+                for (unsigned int i = 0; i < n->sem.fun_1to1.refs.count; i++)
+                    if (type_of (n, n->sem.fun_1to1.refs.atts[i]) & aat_node)
+                        add_map_ (n, n->sem.fun_1to1.refs.atts[i],
+                                  true, true, true,
+                                  true, true, true,
+                                  true, true, true);
+            }
+            else {
+                /* mark the input columns as access columns */
+                for (unsigned int i = 0; i < n->sem.fun_1to1.refs.count; i++)
+                    if (type_of (n, n->sem.fun_1to1.refs.atts[i]) & aat_node)
+                        add_access_map (n, n->sem.fun_1to1.refs.atts[i]);
+            }
             break;
 
         case la_num_eq:


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