Update of /cvsroot/monetdb/pathfinder/compiler/core
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv29175/compiler/core

Modified Files:
      Tag: XQuery_0-16
        fs.brg 
Log Message:
- fn:collection() and pf:collection() are not considered information 
  functions anymore (less locking)
- pf:collection() had forgotten to pin the opened collection
- fn:collections() and pf:documents() do not return names of cached documents,
  only of explicitly shredded docuyments
- let updating functions be more lenient with target nodes 
  (embed exactly-one to do runtime checking) 



Index: fs.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/core/fs.brg,v
retrieving revision 1.52
retrieving revision 1.52.2.1
diff -u -d -r1.52 -r1.52.2.1
--- fs.brg      9 Jan 2007 14:40:52 -0000       1.52
+++ fs.brg      9 Feb 2007 15:21:38 -0000       1.52.2.1
@@ -3421,8 +3421,10 @@
             PFvar_t *v4     = new_var (NULL);
             PFvar_t *ins    = new_var (NULL);
 
+            PFfun_t *exactly_one
+                = function (PFqname (PFns_fn, "exactly-one"));
             PFfun_t *is2ns
-                = function (PFqname 
(PFns_pf,"item-sequence-to-node-sequence"));
+                = function (PFqname (PFns_pf, 
"item-sequence-to-node-sequence"));
             PFfun_t *matn
                 = function (PFqname (PFns_pf, "merge-adjacent-text-nodes"));
             PFfun_t *insert = NULL;
@@ -3484,7 +3486,7 @@
                      */
                     C(p)
                         = flwr (
-                            let (letbind (var (target), C(R(p))),
+                            let (letbind (var (target), APPLY(exactly_one, 
C(R(p)))),
                             let (letbind (var (v1), C(L(p))),
                             let (letbind (var (v2), APPLY (is2ns, var (v1))),
                             let (letbind (var (v3), APPLY (matn, var (v2))),
@@ -3596,6 +3598,8 @@
                 PFvar_t *pi       = new_var (NULL);
                 PFvar_t *c        = new_var (NULL);
 
+                PFfun_t *exactly_one
+                    = function (PFqname (PFns_fn, "exactly-one"));
                 PFfun_t *is2uA
                     = function (PFqname (PFns_pf,
                                          "item-sequence-to-untypedAtomic"));
@@ -3611,7 +3615,7 @@
                             let (letbind (var (string), fn_data (var (expr))),
                                 let (letbind (var (step1),
                                               APPLY (is2uA, var (string))),
-                                    let (letbind (var (target), C(L(p))),
+                                    let (letbind (var (target), 
APPLY(exactly_one, C(L(p)))),
                                          nil())))),
                         typeswitch (
                             var (target),
@@ -3757,6 +3761,8 @@
                 PFvar_t *repl   = new_var (NULL);
                 PFvar_t *parent = new_var (NULL);
 
+                PFfun_t *exactly_one
+                    = function (PFqname (PFns_fn, "exactly-one"));
                 PFfun_t *is2ns
                     = function (PFqname (PFns_pf,
                                          "item-sequence-to-node-sequence"));
@@ -3772,7 +3778,7 @@
 
                 C(p)
                   = flwr (
-                      let (letbind (var (target), C(L(p))),
+                      let (letbind (var (target), APPLY(exactly_one, C(L(p)))),
                       let (letbind (var (v1), C(R(p))),
                       let (letbind (var (v2), APPLY (is2ns, var (v1))),
                       let (letbind (var (v3), APPLY (matn, var (v2))),
@@ -3857,7 +3863,7 @@
         case 222:
         {
             /*
-             * [[ do rename <TargetExpr> as <NewNameExpr> ]]
+             * [[ do rename <TargetExpr> into <NewNameExpr> ]]
              *  ==
              * let $target := [[ <TargetExpr> ]] return
              *   let $newName := [[ <NewNameExpr ]] return
@@ -3866,8 +3872,9 @@
             PFvar_t *target  = new_var (NULL);
             PFvar_t *newName = new_var (NULL);
             PFfun_t *rename  = function (PFqname (PFns_upd, "rename"));
+            PFfun_t *exactly_one = function (PFqname (PFns_fn, "exactly-one"));
 
-            C(p) = flwr (let (letbind (var (target), C(L(p))),
+            C(p) = flwr (let (letbind (var (target), APPLY(exactly_one, 
C(L(p)))),
                               nil ()),
                          flwr (let (letbind (var (newName), C(R(p))),
                                     nil ()),


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to