Changeset: 4dab225498a2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4dab225498a2
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_storage.h
Branch: newstorage
Log Message:
debugging + refactoring
diffs (228 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
@@ -624,8 +624,9 @@ timestamps_insert(sql_trans *tr, sql_tim
BAT *delb = temp_descriptor(ts->delbid);
int i;
-
- if (isEbat(insb)) {
+ long nts;
+
+ /** if (isEbat(insb)) {
temp_destroy(ts->insbid);
ts->insbid = temp_copy(insb->batCacheid, FALSE);
bat_destroy(insb);
@@ -637,18 +638,21 @@ timestamps_insert(sql_trans *tr, sql_tim
ts->delbid = temp_copy(delb->batCacheid, FALSE);
bat_destroy(delb);
delb = temp_descriptor(ts->delbid);
- }
+ } */
assert(insb->T->heap.storage != STORE_PRIV);
assert(delb->T->heap.storage != STORE_PRIV);
+ nts = ((long)(tr->wtime)) * (-1);
+
for(i=0; i<cnt; i++) {
- BUNinplace(insb, BATcount(insb) , insb->H, (ptr)&(tr->wtime),
TRUE); /* tr->wtime should be negative */
- //BUNinplace(delb, BATcount(delb), delb->H, (ptr)&(tr->wtime),
TRUE); /* should be nil */
+ /* insert negative timestamps until commit */
+ BUNinplace(insb, BATcount(insb), insb->H, (ptr)&(nts), TRUE);
+ BUNinplace(delb, BATcount(delb), delb->H, (ptr)&(nts), TRUE);
}
-
bat_destroy(insb);
bat_destroy(delb);
+
ts->cnt += cnt;
}
@@ -658,8 +662,8 @@ claim_tab(sql_trans *tr, sql_table *t, w
sql_timestamps *ts;
sql_dbat *bat;
- node *n;
- int extFlag=0;
+ node *n, *in;
+ int growF=0;
store_lock();
@@ -680,18 +684,20 @@ claim_tab(sql_trans *tr, sql_table *t, w
}
ts = t->timestamps;
+ in = t->columns.set->h;
+
/* claim # of column buns */
for (n = t->columns.set->h; n; n = n->next) {
sql_column *c = n->data;
- sql_delta *bat;
+ sql_delta *cbat;
BAT *cmbat;
if (!c->data) {
sql_column *oc = tr_find_column(tr->parent, c);
c->data = timestamp_delta(oc->data, tr->stime);
}
- bat = c->data;
- cmbat = temp_descriptor(bat->bid);
+ cbat = c->data;
+ cmbat = temp_descriptor(cbat->bid);
/* grow column if needed*/
if(cmbat) {
@@ -699,7 +705,8 @@ claim_tab(sql_trans *tr, sql_table *t, w
BUN newCap = BUNlast(cmbat) + (BUN)cnt;
BUN grows = BATgrows(cmbat);
- extFlag=1;
+ if(n==in) /* only once */
+ growF=1;
if(newCap > grows)
grows = newCap;
@@ -707,24 +714,24 @@ claim_tab(sql_trans *tr, sql_table *t, w
return;
}
BATsetcount(cmbat, (BATcount(cmbat) + (BUN)cnt));
- bat->ibase+=(BUN)cnt;
+ cbat->ibase+=(BUN)cnt;
}
- temp_destroy(bat->bid);
+ bat_destroy(cmbat);
}
/* claim # of idx buns */
if (t->idxs.set) {
for (n = t->idxs.set->h; n; n = n->next) {
sql_idx *i = n->data;
- sql_delta *bat;
+ sql_delta *ibat;
BAT *idxb;
if (!i->data) {
sql_idx *oi = tr_find_idx(tr->parent, i);
i->data = timestamp_delta(oi->data, tr->stime);
}
- bat = i->data;
- idxb = temp_descriptor(bat->bid);
+ ibat = i->data;
+ idxb = temp_descriptor(ibat->bid);
/* grow index if needed */
if((BUN)cnt > (BATcapacity(idxb) - BUNlast(idxb))) {
@@ -737,13 +744,13 @@ claim_tab(sql_trans *tr, sql_table *t, w
return;
}
BATsetcount(idxb, (BATcount(idxb) + (BUN)cnt));
- bat->ibase+=(BUN)cnt;
- temp_destroy(bat->bid);
+ ibat->ibase+=(BUN)cnt;
+ bat_destroy(idxb);
}
}
/* grow timestamp-bats if columns have grown */
- if (extFlag==1) {
+ if (growF==1) {
BAT *insb = temp_descriptor(ts->insbid);
BAT *delb = temp_descriptor(ts->delbid);
@@ -2321,11 +2328,13 @@ 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 *delb = NULL;
BAT *insb = NULL;
+ BAT *itsb = temp_descriptor(tts->insbid);
+ BAT *dtsb = temp_descriptor(tts->delbid);
if (!fts)
return ok;
@@ -2333,37 +2342,36 @@ tr_update_tsbats(sql_trans *tr, sql_time
assert(store_nr_active==1);
insb = temp_descriptor(fts->insbid);
- if (BUNlast(insb) > insb->batInserted || cleared) {
- BAT *tsb = temp_descriptor(tts->insbid);
-
+ //if (BUNlast(insb) > insb->batInserted || cleared) {
+ //BAT *itsb = temp_descriptor(tts->insbid);
if (BATcount(insb) > SNAPSHOT_MINSIZE) {
temp_destroy(tts->insbid);
tts->insbid = fts->insbid;
} else {
- append_inserted(tsb, insb);
+ append_inserted(itsb, insb);
temp_destroy(fts->insbid);
}
fts->insbid = 0;
tts->cnt = fts->cnt;
- bat_destroy(tsb);
- }
+ bat_destroy(itsb);
+ //}
bat_destroy(insb);
delb = temp_descriptor(fts->delbid);
- if (BUNlast(delb) > delb->batInserted || cleared) {
- BAT *tsb = temp_descriptor(tts->delbid);
+ //if (BUNlast(delb) > delb->batInserted || cleared) {
+ //BAT *dtsb = temp_descriptor(tts->delbid);
if (BATcount(delb) > SNAPSHOT_MINSIZE) {
temp_destroy(tts->delbid);
tts->delbid = fts->delbid;
} else {
- append_inserted(tsb, delb);
+ append_inserted(dtsb, delb);
temp_destroy(fts->delbid);
}
fts->delbid = 0;
tts->cnt = fts->cnt;
- bat_destroy(tsb);
- }
+ bat_destroy(dtsb);
+ //}
bat_destroy(delb);
if (tts->next) {
@@ -2419,7 +2427,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) {
@@ -2639,8 +2647,8 @@ log_table(sql_trans *tr, sql_table *ft)
assert(tr->parent == gtrans);
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);
+ //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;
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