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 -- [email protected]
To unsubscribe send an email to [email protected]