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

debugging + refactoring


diffs (228 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
@@ -624,8 +624,9 @@ timestamps_insert(sql_trans *tr, sql_tim
        BAT *delb = temp_descriptor(ts->delbid);
 
        int i;
-
-       if (isEbat(insb)) {
+       long nts;
+
+       /** if (isEbat(insb)) {
                 temp_destroy(ts->insbid);
                 ts->insbid = temp_copy(insb->batCacheid, FALSE);
                 bat_destroy(insb);
@@ -637,18 +638,21 @@ timestamps_insert(sql_trans *tr, sql_tim
                ts->delbid = temp_copy(delb->batCacheid, FALSE);
                bat_destroy(delb);
                delb = temp_descriptor(ts->delbid);
-       }
+       } */
 
        assert(insb->T->heap.storage != STORE_PRIV);
        assert(delb->T->heap.storage != STORE_PRIV);
 
+       nts = ((long)(tr->wtime)) * (-1);
+
        for(i=0; i<cnt; i++) {
-               BUNinplace(insb, BATcount(insb) , insb->H, (ptr)&(tr->wtime), 
TRUE); /* tr->wtime should be negative */
-               //BUNinplace(delb, BATcount(delb), delb->H, (ptr)&(tr->wtime), 
TRUE); /* should be nil */
+               /* insert negative timestamps until commit */
+               BUNinplace(insb, BATcount(insb), insb->H, (ptr)&(nts), TRUE);
+               BUNinplace(delb, BATcount(delb), delb->H, (ptr)&(nts), TRUE);
        }
-
        bat_destroy(insb);
        bat_destroy(delb);
+
        ts->cnt += cnt;
 }
 
@@ -658,8 +662,8 @@ claim_tab(sql_trans *tr, sql_table *t, w
        sql_timestamps *ts;
        sql_dbat *bat;
 
-       node *n;
-       int extFlag=0;
+       node *n, *in;
+       int growF=0;
 
        store_lock();
 
@@ -680,18 +684,20 @@ claim_tab(sql_trans *tr, sql_table *t, w
         }
        ts = t->timestamps;
 
+       in = t->columns.set->h;
+
        /* claim # of column buns */
        for (n = t->columns.set->h; n; n = n->next) {
                sql_column *c = n->data;
-               sql_delta *bat;
+               sql_delta *cbat;
                BAT *cmbat;
 
                 if (!c->data) {
                         sql_column *oc = tr_find_column(tr->parent, c);
                         c->data = timestamp_delta(oc->data, tr->stime);
                 }
-               bat = c->data;
-               cmbat = temp_descriptor(bat->bid);
+               cbat = c->data;
+               cmbat = temp_descriptor(cbat->bid);
 
                /* grow column if needed*/
                if(cmbat) {
@@ -699,7 +705,8 @@ claim_tab(sql_trans *tr, sql_table *t, w
                                BUN newCap = BUNlast(cmbat) + (BUN)cnt;
                                BUN grows = BATgrows(cmbat);
 
-                               extFlag=1;
+                               if(n==in) /* only once */
+                                       growF=1;
 
                                if(newCap > grows)
                                        grows = newCap;
@@ -707,24 +714,24 @@ claim_tab(sql_trans *tr, sql_table *t, w
                                        return;
                        }
                        BATsetcount(cmbat, (BATcount(cmbat) + (BUN)cnt));
-                       bat->ibase+=(BUN)cnt;
+                       cbat->ibase+=(BUN)cnt;
                }
-               temp_destroy(bat->bid);
+               bat_destroy(cmbat);
        }
 
        /* claim # of idx buns */
        if (t->idxs.set) {
                 for (n = t->idxs.set->h; n; n = n->next) {
                         sql_idx *i = n->data;
-                        sql_delta *bat;
+                        sql_delta *ibat;
                        BAT *idxb;
 
                         if (!i->data) {
                                 sql_idx *oi = tr_find_idx(tr->parent, i);
                                 i->data = timestamp_delta(oi->data, tr->stime);
                         }
-                        bat = i->data;
-                       idxb = temp_descriptor(bat->bid);
+                        ibat = i->data;
+                       idxb = temp_descriptor(ibat->bid);
 
                        /* grow index if needed */
                        if((BUN)cnt > (BATcapacity(idxb) - BUNlast(idxb))) {
@@ -737,13 +744,13 @@ claim_tab(sql_trans *tr, sql_table *t, w
                                        return;
                        }
                        BATsetcount(idxb, (BATcount(idxb) + (BUN)cnt));
-                       bat->ibase+=(BUN)cnt;
-                       temp_destroy(bat->bid);
+                       ibat->ibase+=(BUN)cnt;
+                       bat_destroy(idxb);
                 }
         }
 
        /* grow timestamp-bats if columns have grown */
-       if (extFlag==1) {
+       if (growF==1) {
                BAT *insb = temp_descriptor(ts->insbid);
                BAT *delb = temp_descriptor(ts->delbid);
 
@@ -2321,11 +2328,13 @@ tr_update_dbat(sql_trans *tr, sql_dbat *
 }
 
 int
-tr_update_tsbats(sql_trans *tr, sql_timestamps *tts, sql_timestamps *fts, int 
cleared) {
+tr_update_tsbats(sql_trans *tr, sql_timestamps *tts, sql_timestamps *fts) {
 
        int ok = LOG_OK;
        BAT *delb = NULL;
        BAT *insb = NULL;
+       BAT *itsb = temp_descriptor(tts->insbid);
+       BAT *dtsb = temp_descriptor(tts->delbid);
 
        if (!fts)
                return ok;
@@ -2333,37 +2342,36 @@ tr_update_tsbats(sql_trans *tr, sql_time
        assert(store_nr_active==1);
 
        insb = temp_descriptor(fts->insbid);
-       if (BUNlast(insb) > insb->batInserted || cleared) {
-               BAT *tsb = temp_descriptor(tts->insbid);
-
+       //if (BUNlast(insb) > insb->batInserted || cleared) {
+               //BAT *itsb = temp_descriptor(tts->insbid);
                 if (BATcount(insb) > SNAPSHOT_MINSIZE) {
                        temp_destroy(tts->insbid);
                        tts->insbid = fts->insbid;
                } else {
-                       append_inserted(tsb, insb);
+                       append_inserted(itsb, insb);
                        temp_destroy(fts->insbid);
                }
                fts->insbid = 0;
                tts->cnt = fts->cnt;
-               bat_destroy(tsb);
-       }
+               bat_destroy(itsb);
+       //}
        bat_destroy(insb);
 
        delb = temp_descriptor(fts->delbid);
-       if (BUNlast(delb) > delb->batInserted || cleared) {
-                BAT *tsb = temp_descriptor(tts->delbid);
+       //if (BUNlast(delb) > delb->batInserted || cleared) {
+                //BAT *dtsb = temp_descriptor(tts->delbid);
 
                 if (BATcount(delb) > SNAPSHOT_MINSIZE) {
                         temp_destroy(tts->delbid);
                         tts->delbid = fts->delbid;
                 } else {
-                        append_inserted(tsb, delb);
+                        append_inserted(dtsb, delb);
                         temp_destroy(fts->delbid);
                 }
                 fts->delbid = 0;
                 tts->cnt = fts->cnt;
-                bat_destroy(tsb);
-        }
+                bat_destroy(dtsb);
+       //}
         bat_destroy(delb);
 
         if (tts->next) {
@@ -2419,7 +2427,7 @@ update_table(sql_trans *tr, sql_table *f
                } else {
                        assert(tt->base.allocated);
                        tr_update_dbat(tr, tt->data, ft->data, ft->cleared);
-                       tr_update_tsbats(tr, tt->timestamps, ft->timestamps, 
ft->cleared);
+                       tr_update_tsbats(tr, tt->timestamps, ft->timestamps);
                }
        }
        for (n = ft->columns.set->h, m = tt->columns.set->h; ok == LOG_OK && n 
&& m; n = n->next, m = m->next) {
@@ -2639,8 +2647,8 @@ log_table(sql_trans *tr, sql_table *ft)
        assert(tr->parent == gtrans);
        if (ft->base.allocated) {
                ok = tr_log_dbat(tr, ft->data, ft->cleared);
-               if (ok!=LOG_ERR)
-                       ok = tr_log_tsbats(tr, ft->timestamps, ft->cleared);
+               //if (ok!=LOG_ERR)
+               ok = tr_log_tsbats(tr, ft->timestamps, ft->cleared);
        }
        for (n = ft->columns.set->h; ok == LOG_OK && n; n = n->next) {
                sql_column *cc = n->data;
diff --git a/sql/storage/bat/bat_storage.h b/sql/storage/bat/bat_storage.h
--- a/sql/storage/bat/bat_storage.h
+++ b/sql/storage/bat/bat_storage.h
@@ -59,7 +59,7 @@ extern int bat_storage_init( store_funct
 
 extern int tr_update_delta( sql_trans *tr, sql_delta *obat, sql_delta *cbat );
 extern int tr_update_dbat(sql_trans *tr, sql_dbat *tdb, sql_dbat *fdb, int 
cleared);
-extern int tr_update_tsbats(sql_trans *tr, sql_timestamps *tts, sql_timestamps 
*fts, int cleared);
+extern int tr_update_tsbats(sql_trans *tr, sql_timestamps *tts, sql_timestamps 
*fts);
 extern int tr_log_delta( sql_trans *tr, sql_delta *cbat, int cleared);
 extern int tr_log_dbat(sql_trans *tr, sql_dbat *fdb, int cleared);
 extern int tr_log_tsbats(sql_trans *tr, sql_timestamps *ts, int cleared);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to