Changeset: 1f2250fc559d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f2250fc559d Modified Files: sql/storage/objectset.c sql/storage/store.c Branch: nospare Log Message:
unlock outside branch diffs (54 lines): diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -422,8 +422,8 @@ os_add(objectset *os, struct sql_trans * if (oo) oo->newer = ov; n->data = ov; + MT_lock_unset(&os->ht_lock); if (!os->temporary) - MT_lock_unset(&os->ht_lock); trans_add(tr, b, ov, &tc_gc_objectversion, &tc_commit_objectversion); return 0; } else { /* new */ @@ -464,9 +464,7 @@ os_del(objectset *os, struct sql_trans * if (oo) oo->newer = ov; n->data = ov; - if (!os->temporary) MT_lock_unset(&os->ht_lock); - if (!os->temporary) trans_add(tr, b, ov, &tc_gc_objectversion, &tc_commit_objectversion); return 0; diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -5139,6 +5139,13 @@ sql_trans_drop_key(sql_trans *tr, sql_sc { sql_base *b = os_find_id(s->keys, tr, id); sql_key *k = (sql_key*)b; + sql_table *t = k->t; + + if (!inTransaction(tr, t)) { + t = new_table(tr, t); + os_add(t->s->tables, tr, t->base.name, &t->base); + } + k = (sql_key*)os_find_id(s->keys, tr, id); /* fetch updated key */ if (drop_action == DROP_CASCADE_START || drop_action == DROP_CASCADE) { sqlid *local_id = MNEW(sqlid); @@ -5252,6 +5259,13 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc return 0; sql_idx *i = (sql_idx*)b; + sql_table *t = i->t; + if (!inTransaction(tr, t)) { + t = new_table(tr, t); + os_add(t->s->tables, tr, t->base.name, &t->base); + } + i = (sql_idx*)os_find_id(s->idxs, tr, id); /* fetch updated idx */ + if (drop_action == DROP_CASCADE_START || drop_action == DROP_CASCADE) { sqlid *local_id = MNEW(sqlid); if (!local_id) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list