Changeset: 708ba6eb0b4b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/708ba6eb0b4b
Modified Files:
sql/storage/store.c
sql/test/miscellaneous/Tests/simple_selects.test
Branch: Jan2022
Log Message:
Drop key and index details for temp tables. Also don't leak into object storage
while copying them
diffs (128 lines):
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3017,9 +3017,8 @@ part_dup(sql_trans *tr, sql_part *op, sq
list_append(p->part.values, nextv);
}
}
- if ((res = os_add(mt->s->parts, tr, p->base.name, dup_base(&p->base))))
{
- return res;
- }
+ if (isGlobal(mt) && (res = os_add(mt->s->parts, tr, p->base.name,
dup_base(&p->base))))
+ return res;
*pres = p;
return res;
}
@@ -3052,9 +3051,8 @@ trigger_dup(sql_trans *tr, sql_trigger *
list_append(nt->columns, kc_dup(tr, okc, t));
}
- if (isGlobal(t) && (res = os_add(t->s->triggers, tr, nt->base.name,
dup_base(&nt->base)))) {
- return res;
- }
+ if (isGlobal(t) && (res = os_add(t->s->triggers, tr, nt->base.name,
dup_base(&nt->base))))
+ return res;
*tres = nt;
return res;
}
@@ -3387,7 +3385,7 @@ sql_trans_copy_idx( sql_trans *tr, sql_t
if ((res = ol_add(t->idxs, &ni->base)))
return res;
- if ((res = os_add(t->s->idxs, tr, ni->base.name, dup_base(&ni->base))))
+ if (isGlobal(t) && (res = os_add(t->s->idxs, tr, ni->base.name,
dup_base(&ni->base))))
return res;
if ((res = store_reset_sql_functions(tr, t->base.id))) /* reset sql
functions depending on the table */
return res;
@@ -3458,7 +3456,7 @@ sql_trans_copy_trigger( sql_trans *tr, s
if ((res = ol_add(t->triggers, &nt->base)))
return res;
- if ((res = os_add(t->s->triggers, tr, nt->base.name,
dup_base(&nt->base))))
+ if (isGlobal(t) && (res = os_add(t->s->triggers, tr, nt->base.name,
dup_base(&nt->base))))
return res;
if ((res = store_reset_sql_functions(tr, t->base.id))) /* reset sql
functions depending on the table */
return res;
@@ -4235,7 +4233,7 @@ sys_drop_idx(sql_trans *tr, sql_idx * i,
return res;
}
- /* remove idx from schema and table*/
+ /* remove idx from schema and table */
if (isGlobal(i->t))
if ((res = os_del(i->t->s->idxs, tr, i->base.name,
dup_base(&i->base))))
return res;
@@ -6530,9 +6528,8 @@ sql_trans_drop_key(sql_trans *tr, sql_sc
if (drop_action == DROP_CASCADE_START || drop_action == DROP_CASCADE) {
sqlid *local_id = MNEW(sqlid);
- if (!local_id) {
+ if (!local_id)
return -1;
- }
if (!tr->dropped) {
tr->dropped = list_create((fdestroy) &id_destroy);
@@ -6550,7 +6547,7 @@ sql_trans_drop_key(sql_trans *tr, sql_sc
if ((res = store_reset_sql_functions(tr, t->base.id))) /* reset sql
functions depending on the table */
return res;
- if (!isTempTable(k->t) && (res = sys_drop_key(tr, k, drop_action)))
+ if ((res = sys_drop_key(tr, k, drop_action)))
return res;
/*Clean the key from the keys*/
@@ -6640,9 +6637,8 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc
if (drop_action == DROP_CASCADE_START || drop_action == DROP_CASCADE) {
sqlid *local_id = MNEW(sqlid);
- if (!local_id) {
+ if (!local_id)
return -1;
- }
if (!tr->dropped) {
tr->dropped = list_create((fdestroy) &id_destroy);
@@ -6655,7 +6651,7 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc
list_append(tr->dropped, local_id);
}
- if (!isTempTable(i->t) && (res = sys_drop_idx(tr, i, drop_action)))
+ if ((res = sys_drop_idx(tr, i, drop_action)))
return res;
if ((res = store_reset_sql_functions(tr, i->t->base.id))) /* reset sql
functions depending on the table */
return res;
diff --git a/sql/test/miscellaneous/Tests/simple_selects.test
b/sql/test/miscellaneous/Tests/simple_selects.test
--- a/sql/test/miscellaneous/Tests/simple_selects.test
+++ b/sql/test/miscellaneous/Tests/simple_selects.test
@@ -906,3 +906,30 @@ CREATE INDEX ups ON tmp.x (x)
statement ok
drop table x
+
+statement ok
+create global temp table x(x int, y int)
+
+statement ok
+CREATE INDEX ups ON tmp.x (x)
+
+statement ok
+drop table x
+
+statement ok
+create local temp table x(x int, y int)
+
+statement ok
+CREATE INDEX ups ON tmp.x (x)
+
+statement ok
+drop table x
+
+statement ok
+create local temp table x(x int, y int)
+
+statement ok
+CREATE INDEX ups ON tmp.x (x)
+
+statement ok
+drop table x
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]