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