Changeset: 697ae64b5a1c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=697ae64b5a1c Modified Files: sql/backends/monet5/sql_optimizer.c sql/storage/bat/bat_storage.c Branch: Jun2020 Log Message:
add lock's around early (sql_optimizer) access to table information diffs (67 lines): diff --git a/sql/backends/monet5/sql_optimizer.c b/sql/backends/monet5/sql_optimizer.c --- a/sql/backends/monet5/sql_optimizer.c +++ b/sql/backends/monet5/sql_optimizer.c @@ -30,6 +30,7 @@ SQLgetColumnSize(sql_trans *tr, sql_colu { lng size = 0; BAT *b; + store_lock(); switch(access){ case 0: b= store_funcs.bind_col(tr, c, RDONLY); @@ -57,6 +58,7 @@ SQLgetColumnSize(sql_trans *tr, sql_colu BBPunfix(b->batCacheid); } } + store_unlock(); return size; } 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 @@ -1891,8 +1891,11 @@ delayed_destroy_dbat(sql_dbat *b) if (!n) return LOG_OK; MT_lock_set(&destroy_lock); - while(n->next) + assert(n->r.refcnt == 1); + while(n->next) { + assert(n->r.refcnt == 1); n = n->next; + } n->next = tobe_destroyed_dbat; tobe_destroyed_dbat = b; MT_lock_unset(&destroy_lock); @@ -2677,6 +2680,7 @@ update_table(sql_trans *tr, sql_table *f if (!tt->data) tt->base.allocated = ft->base.allocated; ft->data = NULL; + assert(!b->next); b->next = tt->data; tt->data = b; @@ -2730,6 +2734,7 @@ update_table(sql_trans *tr, sql_table *f if (!oc->data) oc->base.allocated = cc->base.allocated; cc->data = NULL; + assert(!b->next); b->next = oc->data; oc->data = b; tr_handle_snapshot(tr, b); @@ -2818,6 +2823,7 @@ update_table(sql_trans *tr, sql_table *f if (!oi->data) oi->base.allocated = ci->base.allocated; ci->data = NULL; + assert(!b->next); b->next = oi->data; oi->data = b; tr_handle_snapshot(tr, b); @@ -2872,6 +2878,7 @@ update_table(sql_trans *tr, sql_table *f if (ft->data) destroy_del(tr, ft); ft->base.allocated = 0; + ft->data = NULL; return ok; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list