Update of /cvsroot/monetdb/pathfinder/runtime
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv32406/runtime

Modified Files:
        pf_support.mx 
Log Message:
propagated changes of Friday Feb 27 2009 - Saturday Feb 28 2009
from the Feb2009 branch to the development trunk

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009/02/27 - sjoerd: runtime/pf_support.mx,1.326.2.6
Fixed bug [ 2642003 ] XQUF replace insert cycle corrupts database.
Added test.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Index: pf_support.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/pf_support.mx,v
retrieving revision 1.329
retrieving revision 1.330
diff -u -d -r1.329 -r1.330
--- pf_support.mx       9 Feb 2009 08:30:59 -0000       1.329
+++ pf_support.mx       28 Feb 2009 13:00:29 -0000      1.330
@@ -4855,7 +4855,7 @@
           
ancestor_nid.insert(new_size.project(doccont).reverse().join(ancestors_nid));
         } else {
           # the inserted data fits on the current page but we may have to
-          # move data around to make a hole big ineough in the right place
+          # move data around to make a hole big enough in the right place
 
           # holesize is the size of the hole after the node where we have to 
insert
           var holesize := 0;
@@ -4937,8 +4937,8 @@
           var upd_ancestors := 
ancestors_end.join(ancestors_oldpre).join(pre_level).access(BAT_WRITE).myupdate(ancestors_end.join(ancestors_newrid).join(rid_level_update)).uselect(chr_nil,
 docinsertlevel, true, false);
           # now update the sizes of these ancestors (if any)
           if (upd_ancestors.count() > 0) {
-            # calculate new size
-            var new_size := [+](upd_ancestors.mirror().join(ancestors_size), 
insertsize);
+            # calculate new size (end of hole minus ancestor's PRE)
+            var new_size := 
[-](upd_ancestors.project(int(docinsertafter_newpre)+insertsize),[int](upd_ancestors.mirror().join(ancestors_newpre)));
             # figure out new and old pages since they need to be updated 
differently
             var upd_pages := 
[oid]([>>]([lng](upd_ancestors.mirror().join(ancestors_newrid)), 
REMAP_PAGE_BITS));
             var is_new_page := [isnil](upd_pages.outerjoin(map_pid));


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to