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

ts bats get created when create table and destroyed when drop table


diffs (231 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
@@ -59,23 +59,17 @@ delta_bind_del(sql_dbat *bat, int access
        (void) access; /* satisfy compiler */
 #endif
 
-       //printf("in delta_bind_del\n");
-
        assert(access == RDONLY || access == RD_INS);
        assert(access!=RD_UPD);
-
-       //printf("%d\n",bat->dtrbid);
-
        b = temp_descriptor(bat->dbid);
        assert(b);
+
        return b;
 }
 
 static BAT *
 bind_del(sql_trans *tr, sql_table *t, int access)
 {
-
-       //printf("in bind_del\n");
        if (!t->data) {
                sql_table *ot = tr_find_table(tr->parent, t);
                t->data = timestamp_dbat(ot->data, tr->stime);
@@ -566,10 +560,8 @@ dup_dbat( sql_trans *tr, sql_dbat *obat,
        printf("in dup_dbat\n");
 
        bat->dbid = obat->dbid;
-       //bat->dtrbid = obat->dtrbid;
        bat->cnt = obat->cnt;
        bat->dname = _STRDUP(obat->dname);
-       //bat->dtrname = _STRDUP(obat->dtrname);
        bat->wtime = obat->wtime;
 
        if (bat->dbid) {
@@ -578,12 +570,6 @@ dup_dbat( sql_trans *tr, sql_dbat *obat,
                else
                        bat->dbid = ebat_copy(bat->dbid, 0, temp);
        }
-       /*if (bat->dtrbid) {
-               if (is_new)
-                       obat->dtrbid = temp_copy(bat->dtrbid, temp);
-               else
-                       bat->dtrbid = ebat_copy(bat->dtrbid, 0, temp);
-       }*/
        (void)tr;
        return LOG_OK;
 }
@@ -594,7 +580,7 @@ dup_del(sql_trans *tr, sql_table *ot, sq
        sql_dbat *bat = t->data = ZNEW(sql_dbat), *obat = ot->data;
        int ok = dup_dbat( tr, obat, bat, isNew(t), isTempTable(t));
        assert(t->base.allocated == 0);
-       //t->base.allocated = 1;
+       //t->base.allocated = 1; /* commented so that the respective assertion 
of dup_timestamps does not fail */
        return ok;
 }
 
@@ -711,17 +697,6 @@ delta_delete_bat (sql_dbat *bat, BAT *i)
        BATappend(b, i, TRUE);
        bat_destroy(b);
 
-       /*if (isEbat(trb)) {
-               temp_destroy(bat->dtrbid);
-               bat->dtrbid = temp_copy(trb->batCacheid, FALSE);
-               bat_destroy(trb);
-               trb = temp_descriptor(bat->dtrbid);
-       }
-       assert(trb->T->heap.storage != STORE_PRIV);
-       //for(j=0;j<(BATcount(i));j++)
-               //BUNappend(trb, , TRUE);
-       bat_destroy(trb);*/
-
        bat->cnt += BATcount(i);
 }
 
@@ -933,7 +908,6 @@ load_bat(sql_delta *bat, int type)
 static int
 log_create_delta(sql_delta *bat) 
 {
-
        int ok = LOG_OK;
        BAT *b = (bat->bid)?
                        temp_descriptor(bat->bid):
@@ -1559,7 +1533,7 @@ destroy_del(sql_trans *tr, sql_table *t)
        printf("in destroy_del\n");
 
        if (t->data && t->base.allocated) {
-               t->base.allocated = 0;
+               //t->base.allocated = 0; /* if not commented destroy_tsbats 
does not get invoked */
                ok = destroy_dbat(tr, t->data);
        }
        t->data = NULL;
@@ -1621,14 +1595,7 @@ log_destroy_dbat(sql_trans *tr, sql_dbat
                if (bid) 
                        logger_del_bat(bat_logger, bid);
        }
-       /*if (bat->dtrbid && bat->dtrname) {
-               log_bid dtrbid;
-
-               ok = log_bat_transient(bat_logger, bat->dtrname);
-               dtrbid = logger_find_bat(bat_logger, bat->dtrname);
-               if (dtrbid)
-                       logger_del_bat(bat_logger, dtrbid);
-       }*/
+
        return ok;
 }
 
@@ -1723,7 +1690,6 @@ clear_delta(sql_trans *tr, sql_delta *ba
 static BUN 
 clear_col(sql_trans *tr, sql_column *c)
 {
-
        printf("in clear_col\n");
 
        if (!c->data || !c->base.allocated) {
@@ -1742,7 +1708,6 @@ clear_col(sql_trans *tr, sql_column *c)
 static BUN
 clear_idx(sql_trans *tr, sql_idx *i)
 {
-
        printf("in clear_idx\n");
 
        if (!i->data || !i->base.allocated) {
@@ -2051,7 +2016,6 @@ tr_update_delta( sql_trans *tr, sql_delt
        assert (obat->bid != 0);
        /* for cleared tables the bid is reset */
 
-
        printf("in tr_update_delta\n");
 
        if (cbat->bid == 0) {
@@ -2360,17 +2324,52 @@ tr_log_dbat(sql_trans *tr, sql_dbat *fdb
        }
        bat_destroy(db);
 
-       /*trb = temp_descriptor(fdb->dtrbid);
-       if (BUNlast(trb) > BUNfirst(trb)) {
-               assert((store_nr_active)>0);
-               if (BUNlast(trb) > trb->batInserted && (store_nr_active != 1 || 
BATcount(trb) <= SNAPSHOT_MINSIZE))
-                       ok = log_bat(bat_logger, trb, fdb->dtrname);
-               if (store_nr_active == 1 && BATcount(trb) > SNAPSHOT_MINSIZE) {
-                       logger_add_bat(bat_logger, trb, fdb->dtrname);
-                       ok = log_bat_persists(bat_logger, trb, fdb->dtrname);
-               }
+       return ok;
+}
+
+int
+tr_log_tsbats(sql_trans *tr, sql_timestamps *ts, int cleared){
+
+       int ok = LOG_OK;
+       BAT *insb = NULL;
+       BAT *delb = NULL;
+
+       if(!ts)
+               return ok;
+
+       (void)tr;
+       assert(ts->insname);
+       assert(ts->delname);
+
+       if (cleared) {
+               log_bat_clear(bat_logger, ts->insname);
+               log_bat_clear(bat_logger, ts->delname);
        }
-       bat_destroy(trb);*/
+
+       insb = temp_descriptor(ts->insbid);
+       if (BUNlast(insb) > BUNfirst(insb)) {
+                assert(store_nr_active>0);
+                if (BUNlast(insb) > insb->batInserted && (store_nr_active != 1 
|| BATcount(insb) <= SNAPSHOT_MINSIZE))
+                        ok = log_bat(bat_logger, insb, ts->insname);
+                if (store_nr_active == 1 && BATcount(insb) > SNAPSHOT_MINSIZE) 
{
+                        logger_add_bat(bat_logger, insb, ts->insname);
+                        ok = log_bat_persists(bat_logger, insb, ts->insname);
+                }
+        }
+        bat_destroy(insb);
+
+       delb = temp_descriptor(ts->delbid);
+        if (BUNlast(delb) > BUNfirst(delb)) {
+                assert(store_nr_active>0);
+                if (BUNlast(delb) > delb->batInserted && (store_nr_active != 1 
|| BATcount(delb) <= SNAPSHOT_MINSIZE))
+                        ok = log_bat(bat_logger, delb, ts->delname);
+                if (store_nr_active == 1 && BATcount(delb) > SNAPSHOT_MINSIZE) 
{
+                        logger_add_bat(bat_logger, delb, ts->delname);
+                        ok = log_bat_persists(bat_logger, delb, ts->delname);
+                }
+        }
+        bat_destroy(delb);
+
        return ok;
 }
 
@@ -2383,8 +2382,11 @@ log_table(sql_trans *tr, sql_table *ft)
        printf("in log_table\n");
 
        assert(tr->parent == gtrans);
-       if (ft->base.allocated)
+       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);
+       }
        for (n = ft->columns.set->h; ok == LOG_OK && n; n = n->next) {
                sql_column *cc = n->data;
 
@@ -2438,7 +2440,6 @@ snapshot_table(sql_trans *tr, sql_table 
        int ok = LOG_OK;
        node *n;
 
-
        printf("in snapshot_table\n");
 
        assert(tr->parent == gtrans);
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
@@ -61,6 +61,7 @@ extern int tr_update_delta( sql_trans *t
 extern int tr_update_dbat(sql_trans *tr, sql_dbat *tdb, sql_dbat *fdb, int 
cleared);
 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);
 
 extern int dup_bat(sql_trans *tr, sql_table *t, sql_delta *obat, sql_delta 
*bat, int type, int oc_isnew, int c_isnew);
 extern sql_delta * timestamp_delta( sql_delta *d, int ts);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to