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]

Reply via email to