Changeset: 99957028678c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/99957028678c
Modified Files:
        sql/storage/bat/bat_storage.c
        sql/storage/objectset.c
        sql/storage/store.c
Branch: Jul2021
Log Message:

cleanup

small fix for bat leak for tables created and drop within one transaction


diffs (48 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
@@ -2062,6 +2062,8 @@ log_create_del(sql_trans *tr, sql_change
        int ok = LOG_OK;
        sql_table *t = (sql_table*)change->obj;
 
+       if (t->base.deleted)
+               return ok;
        assert(!isTempTable(t));
        ok = log_create_storage(tr, ATOMIC_PTR_GET(&t->data), t->base.id);
        if (ok == LOG_OK) {
@@ -2359,7 +2361,6 @@ clear_table(sql_trans *tr, sql_table *t)
        sql_column *c = n->data;
        BUN sz = count_col(tr, c, 0), clear_ok;
 
-       //sz -= count_del(tr, t, 0);
        storage *d = tab_timestamp_storage(tr, t);
        sz -= count_deletes_in_range(d->segs->h, tr, 0, sz);
        if ((clear_ok = clear_del(tr, t)) >= BUN_NONE - 1)
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -518,10 +518,9 @@ static void
 objectversion_destroy_recursive(sqlstore* store, objectversion *ov)
 {
        if (ov->id_based_older && ov->id_based_older == ov->name_based_older) {
-                       objectversion_destroy_recursive(store, 
ov->id_based_older);
-               }
-
-               objectversion_destroy(store, ov->os, ov);
+               objectversion_destroy_recursive(store, ov->id_based_older);
+       }
+       objectversion_destroy(store, ov->os, ov);
 }
 
 static int
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4989,6 +4989,7 @@ sql_trans_drop_table(sql_trans *tr, sql_
                if (sys_drop_table(tr, t, drop_action))
                        return -1;
 
+       t->base.deleted = 1;
        if (is_global) {
                if (os_del(s->tables, tr, t->base.name, dup_base(&t->base)))
                        return -2;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to