Changeset: ded559802900 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ded559802900 Modified Files: sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h Branch: newstorage Log Message:
convert negative ts to positive and update ts bats diffs (97 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 @@ -2416,50 +2416,36 @@ 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 *insb = NULL; - //BAT *delb = NULL; - (void)cleared; + BAT *insb, *delb = NULL; + BUN p, q; + int curIns, curDel; + if (!fts) return ok; - assert(store_nr_active==1); - - //insb = temp_descriptor(fts->insbid); - //if (cleared) { - // BAT *otsb = temp_descriptor(tts->insbid); - - /*if (BATcount(insb) > SNAPSHOT_MINSIZE) { - temp_destroy(tts->insbid); - tts->insbid = fts->insbid; - } else { - append_inserted(otsb, insb); - temp_destroy(fts->insbid); - }*/ + insb = temp_descriptor(fts->insbid); + delb = temp_descriptor(fts->delbid); + + fts->insbid = 0; - tts->cnt = fts->cnt; - //bat_destroy(otsb); - //} - //bat_destroy(insb); - - //delb = temp_descriptor(fts->delbid); - //if (cleared) { - // BAT *otsb = temp_descriptor(tts->delbid); - - /* if (BATcount(delb) > SNAPSHOT_MINSIZE) { - temp_destroy(tts->delbid); - tts->delbid = fts->delbid; - } else { - append_inserted(otsb, delb); - temp_destroy(fts->delbid); - }*/ fts->delbid = 0; tts->cnt = fts->cnt; - //bat_destroy(otsb); - //} - //bat_destroy(delb); + + /* convert timestamps to positive */ + BATloop(insb, p, q) { + curIns = *Tloc(insb,p) * (-1); + if (curIns == tr->wtime) + BUNinplace(insb, p, insb->H, (ptr)&curIns, TRUE); + curDel = *Tloc(delb,p) * (-1); + if (curDel == tr->wtime) + BUNinplace(delb, p, delb->H, (ptr)&curDel, TRUE); + } + + bat_destroy(insb); + bat_destroy(delb); if (tts->next) { ok = destroy_tsbats(tr, tts->next); @@ -2515,7 +2501,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) { 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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list