Changeset: 5f663ac4661f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5f663ac4661f
Modified Files:
sql/storage/bat/bat_storage.c
Branch: Jul2021
Log Message:
cleanup clear_storage a bit
diffs (74 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
@@ -639,6 +639,8 @@ count_deletes( segment *s, sql_trans *tr
return cnt;
}
+#define CNT_ACTIVE 10
+
static size_t
count_col(sql_trans *tr, sql_column *c, int access)
{
@@ -657,7 +659,7 @@ count_col(sql_trans *tr, sql_column *c,
return count_inserts(d->segs->h, tr);
if (access == QUICK || isTempTable(c->t))
return d->segs->t?d->segs->t->end:0;
- if (access == 10) {
+ if (access == CNT_ACTIVE) {
size_t cnt = segs_end(d->segs, tr, c->t);
lock_table(tr->store, c->t->base.id);
cnt -= count_deletes_in_range(d->segs->h, tr, 0, cnt);
@@ -2859,18 +2861,16 @@ clear_idx(sql_trans *tr, sql_idx *i, boo
return 0;
}
-static BUN
+static int
clear_storage(sql_trans *tr, storage *s)
{
- BUN sz = count_deletes(s->segs->h, tr);
-
clear_cs(tr, &s->cs, true);
s->cs.cleared = 1;
if (s->segs)
destroy_segments(s->segs);
if (!(s->segs = new_segments(tr, 0)))
- return BUN_NONE; /* BUN_NONE means error */
- return sz;
+ return LOG_ERR;
+ return LOG_OK;
}
@@ -2915,14 +2915,11 @@ clear_table(sql_trans *tr, sql_table *t)
node *n = ol_first_node(t->columns);
sql_column *c = n->data;
- BUN sz = count_col(tr, c, 0), clear_ok;
storage *d = tab_timestamp_storage(tr, t);
if (!d)
return BUN_NONE;
- lock_table(tr->store, t->base.id);
- sz -= count_deletes_in_range(d->segs->h, tr, 0, sz);
- unlock_table(tr->store, t->base.id);
+ BUN sz = count_col(tr, c, CNT_ACTIVE), clear_ok;
if ((clear_ok = clear_del(tr, t, in_transaction)) >= BUN_NONE - 1)
return clear_ok;
@@ -3410,12 +3407,12 @@ commit_update_del( sql_trans *tr, sql_ch
if (t->commit_action == CA_COMMIT || t->commit_action
== CA_PRESERVE)
commit_storage(tr, dbat);
else /* CA_DELETE as CA_DROP's are gone already */
- clear_storage(tr, dbat);
+ ok = clear_storage(tr, dbat);
} else { /* rollback */
if (t->commit_action == CA_COMMIT/* || t->commit_action
== CA_PRESERVE*/)
rollback_storage(tr, dbat);
else /* CA_DELETE as CA_DROP's are gone already */
- clear_storage(tr, dbat);
+ ok = clear_storage(tr, dbat);
}
t->base.new = 0;
return ok;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list