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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list