Changeset: 5bf0cccb943e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5bf0cccb943e
Modified Files:
        sql/storage/store.c
Branch: Dec2023
Log Message:

move drop bats code into the sys_drop_* functions, should solve bat leaks on 
disk
(grafted from 3f2d29873c785ab7a63bad9160b9d055a5f62416)


diffs (74 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4345,6 +4345,11 @@ sys_drop_idx(sql_trans *tr, sql_idx * i,
                        return res;
        }
 
+       i->base.deleted = 1;
+       if (!isNew(i) && !isTempTable(i->t))
+               if ((res = store->storage_api.drop_idx(tr, 
(sql_idx*)dup_base(&i->base))))
+                       return res;
+
        /* remove idx from schema and table */
        if (isGlobal(i->t) && (res = os_del(i->t->s->idxs, tr, i->base.name, 
dup_base(&i->base))))
                return res;
@@ -4561,6 +4566,11 @@ sys_drop_column(sql_trans *tr, sql_colum
        if ((res = sys_drop_default_object(tr, col, drop_action)))
                return res;
 
+       col->base.deleted = 1;
+       if (!isNew(col) && !isTempTable(col->t))
+               if ((res = store->storage_api.drop_col(tr, 
(sql_column*)dup_base(&col->base))))
+                       return res;
+
        if (drop_action && (res = sql_trans_drop_all_dependencies(tr, 
col->base.id, COLUMN_DEPENDENCY)))
                return res;
        if (col->type.type->s && (res = sql_trans_drop_dependency(tr, 
col->type.type->base.id, col->base.id, TYPE_DEPENDENCY)))
@@ -4771,6 +4781,10 @@ sys_drop_table(sql_trans *tr, sql_table 
        if ((res = sys_drop_columns(tr, t, drop_action)))
                return res;
 
+       if (isTable(t) && !isNew(t))
+               if ((res = store->storage_api.drop_del(tr, t)))
+                       return res;
+
        if (drop_action && (res = sql_trans_drop_all_dependencies(tr, 
t->base.id, !isView(t) ? TABLE_DEPENDENCY : VIEW_DEPENDENCY)))
                return res;
        return res;
@@ -6036,11 +6050,6 @@ sql_trans_drop_table(sql_trans *tr, sql_
        if (t != gt && (res = os_del(tr->localtmps, tr, t->base.name, 
dup_base(&t->base))))
                return res;
 
-       sqlstore *store = tr->store;
-       if (isTable(t) && !isNew(t))
-               if ((res = store->storage_api.drop_del(tr, t)))
-                       return res;
-
        if (drop_action == DROP_CASCADE_START && tr->dropped) {
                list_destroy(tr->dropped);
                tr->dropped = NULL;
@@ -6243,11 +6252,6 @@ sql_trans_drop_column(sql_trans *tr, sql
        if ((res = sys_drop_column(tr, col, drop_action)))
                return res;
 
-       col->base.deleted = 1;
-       if (!isNew(col) && !isTempTable(col->t))
-               if ((res = store->storage_api.drop_col(tr, 
(sql_column*)dup_base(&col->base))))
-                       return res;
-
        if (isNew(col)) { /* remove create from changes */
                trans_del(tr, &col->base);
                if (!isNew(col->t))
@@ -6858,11 +6862,6 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc
        if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql 
functions depending on the table */
                return res;
 
-       i->base.deleted = 1;
-       if (!isNew(i) && !isTempTable(i->t))
-               if ((res = store->storage_api.drop_idx(tr, 
(sql_idx*)dup_base(&i->base))))
-                       return res;
-
        node *n = ol_find_name(i->t->idxs, i->base.name);
        if (n)
                ol_del(i->t->idxs, store, n);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to