Changeset: bc3cf1f6de8b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bc3cf1f6de8b
Modified Files:
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_utils.c
        sql/storage/bat/bat_utils.h
Branch: Oct2012
Log Message:

set ibase properly when flushing logs (should solve inconsistent db problems)
cleanup/removed some dead code


diffs (132 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -247,32 +247,20 @@ delta_append_bat( sql_delta *bat, BAT *i
                bat_destroy(bat->cached);
                bat->cached = NULL;
        }
-       bat->cnt += BATcount(i);
-       /* We simply use the to be inserted bat directly.
-        * Disabled this optimization: sometimes the bat is used later in the
-        * mal plan. 
-        * This should be solved by changing the input into a view (somehow).
-        * Alternatively, COPY INTO ... LOCKED can/should be used.
-       if (BATcount(b) == 0 && !isVIEW(i) && BBP_lrefs(i->batCacheid) <= 1 && 
i->htype == TYPE_void && i->ttype != TYPE_void && bat->ibase == i->H->seq){
-               temp_destroy(bat->ibid);
-               bat->ibid = temp_create(i);
-               BATseqbase(i, bat->ibase);
-       } else 
-        */
        if (!isEbat(b)){
                /* try to use mmap() */
                if (BATcount(b)+BATcount(i) > (BUN) REMAP_PAGE_MAXSIZE) { 
                                BATmmap(b, STORE_MMAP, STORE_MMAP, STORE_MMAP, 
STORE_MMAP, 1);
                }
                assert(b->T->heap.storage != STORE_PRIV);
-               BATappend(b, i, TRUE);
        } else {
                temp_destroy(bat->ibid);
                bat->ibid = ebat2real(b->batCacheid, bat->ibase);
                bat_destroy(b);
                b = temp_descriptor(bat->ibid);
-               BATappend(b, i, TRUE);
        }
+       BATappend(b, i, TRUE);
+       bat->cnt += BATcount(i);
        bat_destroy(b);
 }
 
@@ -327,21 +315,17 @@ delta_delete_bat( sql_dbat *bat, BAT *i 
 {
        BAT *b = temp_descriptor(bat->dbid);
 
+       if (isEbat(b)) {
+               temp_destroy(bat->dbid);
+               bat->dbid = temp_copy(b->batCacheid, FALSE);
+               bat_destroy(b);
+               b = temp_descriptor(bat->dbid);
+       }
+       assert(b->T->heap.storage != STORE_PRIV);
+       BATappend(b, i, TRUE);
+       bat_destroy(b);
+
        bat->cnt += BATcount(i);
-       if (BATcount(b) == 0 && !isVIEW(i) && i->htype == TYPE_void && i->ttype 
!= TYPE_void){
-               temp_destroy(bat->dbid);
-               bat->dbid = temp_create(i);
-       } else {
-               if (isEbat(b)) {
-                       temp_destroy(bat->dbid);
-                       bat->dbid = temp_copy(b->batCacheid, FALSE);
-                       bat_destroy(b);
-                       b = temp_descriptor(bat->dbid);
-               }
-               assert(b->T->heap.storage != STORE_PRIV);
-               BATappend(b, i, TRUE);
-       }
-       bat_destroy(b);
 }
 
 void
@@ -349,7 +333,6 @@ delta_delete_val( sql_dbat *bat, oid rid
 {
        BAT *b = temp_descriptor(bat->dbid);
 
-       bat->cnt ++;
        if (isEbat(b)) {
                temp_destroy(bat->dbid);
                bat->dbid = temp_copy(b->batCacheid, FALSE);
@@ -358,6 +341,8 @@ delta_delete_val( sql_dbat *bat, oid rid
        }
        BUNappend(b, (ptr)&rid, TRUE);
        bat_destroy(b);
+
+       bat->cnt ++;
 }
 
 static void
@@ -1159,6 +1144,7 @@ gtr_update_delta( sql_trans *tr, sql_del
                }
                assert(cur->T->heap.storage != STORE_PRIV);
                BATappend(cur,ins,TRUE);
+               cbat->cnt = cbat->ibase = BATcount(cur);
                BATcleanProps(cur);
                temp_destroy(cbat->ibid);
                cbat->ibid = e_bat(cur->ttype);
diff --git a/sql/storage/bat/bat_utils.c b/sql/storage/bat/bat_utils.c
--- a/sql/storage/bat/bat_utils.c
+++ b/sql/storage/bat/bat_utils.c
@@ -89,21 +89,10 @@ temp_copy(log_bid b, int temp)
        return r;
 }
 
-void
-update_table_bat(BAT *b, BAT *ub)
-{
-       if (ub && BATcount(ub)) {
-               void_replace_bat(b, ub, TRUE);
-               BATclear(ub, TRUE);
-               BATcommit(ub);
-       }
-}
-
 BUN
 append_inserted(BAT *b, BAT *i )
 {
-       BUN nr = 0;
-       BUN r;
+       BUN nr = 0, r;
                BATiter ii = bat_iterator(i);
 
                for (r = i->batInserted; r < BUNlast(i); r++) {
diff --git a/sql/storage/bat/bat_utils.h b/sql/storage/bat/bat_utils.h
--- a/sql/storage/bat/bat_utils.h
+++ b/sql/storage/bat/bat_utils.h
@@ -36,7 +36,6 @@ extern log_bid temp_copy(log_bid b, int 
 extern void bat_destroy(BAT *b);
 extern BAT *bat_new(int ht, int tt, BUN size);
 
-extern void update_table_bat(BAT *b, BAT *ub);
 extern BUN append_inserted(BAT *b, BAT *i );
 extern BUN copy_inserted(BAT *b, BAT *i );
 
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to