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

pushing changes from my laptop: removed dtrbat from sql_dbat, creating 
sql_timestamps (not done yet)


diffs (truncated from 434 to 300 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -473,6 +473,7 @@ typedef struct sql_table {
        void *data;
        struct sql_schema *s;
        struct sql_table *p;
+       void *timestamps;
 } sql_table;
 
 typedef struct res_col {
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
@@ -556,10 +556,10 @@ dup_dbat( sql_trans *tr, sql_dbat *obat,
        printf("in dup_dbat\n");
 
        bat->dbid = obat->dbid;
-       bat->dtrbid = obat->dtrbid;
+       //bat->dtrbid = obat->dtrbid;
        bat->cnt = obat->cnt;
        bat->dname = _STRDUP(obat->dname);
-       bat->dtrname = _STRDUP(obat->dtrname);
+       //bat->dtrname = _STRDUP(obat->dtrname);
        bat->wtime = obat->wtime;
 
        if (bat->dbid) {
@@ -568,12 +568,12 @@ dup_dbat( sql_trans *tr, sql_dbat *obat,
                else
                        bat->dbid = ebat_copy(bat->dbid, 0, temp);
        }
-       if (bat->dtrbid) {
+       /*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;
 }
@@ -646,7 +646,7 @@ append_idx(sql_trans *tr, sql_idx * i, v
 }
 
 static void
-delta_delete_bat( sql_dbat *bat, BAT *i ) 
+delta_delete_bat (sql_dbat *bat, BAT *i)
 {
        BAT *b = temp_descriptor(bat->dbid);
 
@@ -662,11 +662,22 @@ 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);
 }
 
 static void
-delta_delete_val( sql_dbat *bat, oid rid ) 
+delta_delete_val(sql_dbat *bat, oid rid)
 {
        BAT *b = temp_descriptor(bat->dbid);
 
@@ -1156,39 +1167,73 @@ snapshot_create_idx(sql_trans *tr, sql_i
        assert(tr->parent == gtrans && !isTempTable(ni->t));
        return snapshot_new_persistent_bat( tr, ni->data);
 }
+/**
+static int
+load_timestamps(sql_timestamps *ts, int insbid, int delbid)
+{
+       BAT *insb = quick_descriptor(insbid);
+       BAT *delb = quick_descriptor(delbid);
 
+       ts->insbid = temp_create(insb);
+       ts->delbid = temp_create(delb);
+       ts->cnt = BATcount(insb);
+       return LOG_OK;
+}
+*/
 static int
-load_dbat(sql_dbat *bat, int bid, int dtrbid)
-{
+load_dbat(sql_dbat *bat, int bid) {
+
        BAT *b = quick_descriptor(bid);
-       BAT *dtrb = quick_descriptor(dtrbid);
-
-       printf("in load_dbat\n");
 
        bat->dbid = temp_create(b);
-       bat->dtrbid = temp_create(dtrb);
        bat->cnt = BATcount(b);
        return LOG_OK;
 }
 
 /**
 static int
-create_del(sql_trans *tr, sql_table *t) {
+create_timestamps(sql_trans *tr, sql_table *t) {
 
        int ok = LOG_OK;
-       BAT b;
-       sql_dbat *bat = t->data;
+       BAT *b;
+       sql_timestamps *ts = t->data;
 
-       if (!bat) {
-               t->data = bat = ZNEW(sql_dbat);
-               bat->wtime = t->base.wtime = t->s->base.wtime = tr->wstime;
+       if (!ts) {
+               t->timestamps = ts = ZNEW(sql_timestamps);
+               ts->wtime = t->base.wtime = t->s->base.wtime = tr->wstime;
                t->base.allocated = 1;
        }
-       if (!bat->dname)
-               bat->dname = sql_message("D_%s_%s", t->s->base.name, 
t->base.name);
+       if (!ts->insname)
+               ts->insname = sql_message("INS_%s_%s", t->s->base.name, 
t->base.name);
+       if (!ts->delname)
+               ts->delname = sql_message("DEL_%s_%s", t->s->base.name, 
t->base.name);
+       (void)tr;
+       if (t->base.flag == TR_OLD && !isTempTable(t)) {
+               log_bid insbid = logger_find_bat(bat_logger, ts->insname);
+               log_bid delbid = logger_find_bat(bat_logger, ts->delname);
+
+               if (insbid && delbid)
+                       return load_timestamps(ts, insbid, delbid);
+               ok = LOG_ERR;
+       } else if (ts->insbid && ts->delbid && !isTempTable(t)) {
+               return ok;
+       } else {
+                       if (!ts->insbid) {
+                               b = bat_new(TYPE_void, TYPE_int, t->sz);
+                               bat_set_access(b, BAT_READ);
+                               ts->insbid = temp_create(b);
+                               bat_destroy(b);
+                       }
+                       if (!ts->delbid) {
+                               b = bat_new(TYPE_void, TYPE_int, t->sz);
+                               bat_set_access(b, BAT_READ);
+                               ts->delbid = temp_create(b);
+                               bat_destroy(b);
+                       }
+       }
+       return ok;
 }
 */
-
 static int
 create_del(sql_trans *tr, sql_table *t)
 {
@@ -1205,17 +1250,14 @@ create_del(sql_trans *tr, sql_table *t)
        }
        if (!bat->dname)
                bat->dname = sql_message("D_%s_%s", t->s->base.name, 
t->base.name);
-       if (!bat->dtrname)
-               bat->dtrname = sql_message("DTR_%s_%s", t->s->base.name, 
t->base.name);
        (void)tr;
        if (t->base.flag == TR_OLD && !isTempTable(t)) {
                log_bid bid = logger_find_bat(bat_logger, bat->dname);
-               log_bid dtrbid = logger_find_bat(bat_logger, bat->dtrname);
 
-               if (bid && dtrbid)
-                       return load_dbat(bat, bid, dtrbid);
+               if (bid)
+                       return load_dbat(bat, bid);
                ok = LOG_ERR;
-       } else if (bat->dbid && bat->dtrbid && !isTempTable(t)) {
+       } else if (bat->dbid && !isTempTable(t)) {
                return ok;
        } else {
                        if (!bat->dbid) {
@@ -1224,12 +1266,6 @@ create_del(sql_trans *tr, sql_table *t)
                                bat->dbid = temp_create(b);
                                bat_destroy(b);
                        }
-                       if (!bat->dtrbid) {
-                               b = bat_new(TYPE_void, TYPE_int, t->sz);
-                               bat_set_access(b,BAT_READ);
-                               bat->dtrbid = temp_create(b);
-                               bat_destroy(b);
-                       }
        }
        return ok;
 }
@@ -1239,8 +1275,6 @@ log_create_dbat( sql_dbat *bat )
 {
        BAT *b = temp_descriptor(bat->dbid);
 
-       BAT *trdb = temp_descriptor(bat->dtrbid);
-
        int ok = LOG_OK;
 
        printf("in log_create_dbat\n");
@@ -1249,16 +1283,38 @@ log_create_dbat( sql_dbat *bat )
        ok = log_bat_persists(bat_logger, b, bat->dname);
        bat_destroy(b);
 
+       return ok;
+}
+/**
+static int
+log_create_tsbats (sql_timestamps *ts)
+{
+       BAT *insb = temp_descriptor(ts->insbid);
+       BAT *delb = temp_descriptor(ts->delbid);
+       int ok = LOG_OK;
+
+       (void) logger_add_bat(bat_logger, insb, ts->insname);
+       ok = log_bat_persists(bat_logger, insb, ts->insname);
+       bat_destroy(insb);
+
        if (ok!=LOG_ERR) {
-               (void) logger_add_bat(bat_logger, trdb, bat->dtrname);
-               ok = log_bat_persists(bat_logger, trdb, bat->dtrname);
-               bat_destroy(trdb);
+               (void) logger_add_bat(bat_logger, delb, ts->delname);
+               ok = log_bat_persists(bat_logger, delb, ts->delname);
+               bat_destroy(delb);
        }
 
        return ok;
 }
 
 static int
+log_create_timestamps(sql_trans *tr, sql_table *t)
+{
+       (void)tr;
+       assert(tr->parent == gtrans && !isTempTable(t));
+       return log_create_tsbats(t->timestamps);
+}
+*/
+static int
 log_create_del(sql_trans *tr, sql_table *t)
 {
        (void)tr;
@@ -1274,7 +1330,7 @@ snapshot_create_del(sql_trans *tr, sql_t
 {
        sql_dbat *bat = t->data;
        BAT *b = temp_descriptor(bat->dbid);
-       BAT *trdb = temp_descriptor(bat->dtrbid);
+       //BAT *trdb = temp_descriptor(bat->dtrbid);
 
        printf("in snapshot_create_del\n");
 
@@ -1287,16 +1343,28 @@ snapshot_create_del(sql_trans *tr, sql_t
                        BATmmap(b, STORE_MMAP, STORE_MMAP, STORE_MMAP, 
STORE_MMAP, 0);
        bat_destroy(b);
 
-       bat_set_access(trdb, BAT_READ);
+       /*bat_set_access(trdb, BAT_READ);
        if (BATcount(trdb) > SNAPSHOT_MINSIZE)
                BATmode(trdb, PERSISTENT);
        if (BATcount(trdb) > (BUN) REMAP_PAGE_MAXSIZE)
                BATmmap(trdb, STORE_MMAP, STORE_MMAP, STORE_MMAP, STORE_MMAP, 
0);
-       bat_destroy(trdb);
+       bat_destroy(trdb);*/
 
        return LOG_OK;
 }
 
+/**static int
+snapshot_create_timestamps(sql_trans *tr, sql_table *t)
+{
+       sql_timestamps *ts = t->timestamps;
+       BAT *insb = temp_descriptor(ts->insbid);
+       BAT *delb = temp_descriptor(ts->delbid);
+
+       (void)tr;
+
+       if (BATcount())
+}*/
+
 static int
 log_destroy_delta(sql_trans *tr, sql_delta *b)
 {
@@ -1417,16 +1485,16 @@ destroy_dbat(sql_trans *tr, sql_dbat *ba
 
        if (bat->dname)
                _DELETE(bat->dname);
-       if (bat->dtrname)
-               _DELETE(bat->dtrname);
+       //if (bat->dtrname)
+               //_DELETE(bat->dtrname);
        if (bat->dbid)
                temp_destroy(bat->dbid);
-       if (bat->dtrbid)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to