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