Update of /cvsroot/monetdb/sql/src/storage/bpm
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv22851/src/storage/bpm

Modified Files:
        bpm_storage.mx 
Log Message:
improved handeling of updates in partititions, ie now we keep an update
bat per partition (not just one per column).


U bpm_storage.mx
Index: bpm_storage.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bpm/bpm_storage.mx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- bpm_storage.mx      19 Jan 2008 23:41:28 -0000      1.9
+++ bpm_storage.mx      24 Apr 2008 20:44:57 -0000      1.10
@@ -930,15 +930,13 @@
                        }
                        b = temp_descriptor(p->parts[i].bid);
                        p->parts[i].ubid = 0;
-                       if (p->ins == 0) {
-                               if (op->parts[i].ubid) {
-                                       p->parts[i].ubid = 
temp_copy(op->parts[i].ubid, 0);
-                               } else {
-                                       BAT *U = bat_new(TYPE_oid, b->ttype, 0);
-                                       p->parts[i].ubid = temp_create(U);
-                                       op->parts[i].ubid = 
temp_copy(p->parts[i].ubid, 0);
-                                       bat_destroy(U);
-                               }
+                       if (op->parts[i].ubid) {
+                               p->parts[i].ubid = temp_copy(op->parts[i].ubid, 
0);
+                       } else {
+                               BAT *U = bat_new(TYPE_oid, b->ttype, 0);
+                               p->parts[i].ubid = temp_create(U);
+                               op->parts[i].ubid = temp_copy(p->parts[i].ubid, 
0);
+                               bat_destroy(U);
                        }
                        BATseqbase(b, p->parts[i].hlow);
                        bat_destroy(b);
@@ -1299,13 +1297,17 @@
                                o = b->hseqbase + BATcount(b);
                                logger_add_bat(bpm_logger, b, p->name);
                                log_bat_persists(bpm_logger, b, p->name);
-                               bat_destroy(b);
-                               if (p->ubid) {
-                                       b = temp_descriptor(p->ubid);
-                                       logger_add_bat(bpm_logger, b, p->uname);
-                                       log_bat_persists(bpm_logger, b, 
p->uname);
-                                       bat_destroy(b);
+                               if (!p->ubid) {
+                                       BAT *U = bat_new(TYPE_oid, b->ttype, 0);
+                                       p->ubid = temp_create(U);
+                                       bat_destroy(U);
                                }
+                               bat_destroy(b);
+
+                               b = temp_descriptor(p->ubid);
+                               logger_add_bat(bpm_logger, b, p->uname);
+                               log_bat_persists(bpm_logger, b, p->uname);
+                               bat_destroy(b);
                        }
                }
                /* merge 2 partions  
@@ -1344,13 +1346,17 @@
                                b = temp_descriptor(p->bid);
                                logger_add_bat(bpm_logger, b, p->name);
                                log_bat_persists(bpm_logger, b, p->name);
-                               bat_destroy(b);
-                               if (p->ubid) {
-                                       b = temp_descriptor(p->ubid);
-                                       logger_add_bat(bpm_logger, b, p->uname);
-                                       log_bat_persists(bpm_logger, b, 
p->uname);
-                                       bat_destroy(b);
+                               if (!p->ubid) {
+                                       BAT *U = bat_new(TYPE_oid, b->ttype, 0);
+                                       p->ubid = temp_create(U);
+                                       bat_destroy(U);
                                }
+                               bat_destroy(b);
+
+                               b = temp_descriptor(p->ubid);
+                               logger_add_bat(bpm_logger, b, p->uname);
+                               log_bat_persists(bpm_logger, b, p->uname);
+                               bat_destroy(b);
                        }
                }
                /* create new insert bats */


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to