Changeset: e51271824555 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e51271824555 Added Files: sql/test/BugTracker-2023/Tests/add-drop-column-crash-7381.test Modified Files: sql/storage/sql_catalog.c sql/storage/sql_storage.h sql/storage/store.c sql/test/BugTracker-2023/Tests/All Branch: Sep2022 Log Message:
add test adn fix for bug #7381, when a column is created and drop in one transaction, we remove it from the change list. diffs (76 lines): diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c --- a/sql/storage/sql_catalog.c +++ b/sql/storage/sql_catalog.c @@ -70,6 +70,21 @@ trans_add(sql_trans *tr, sql_base *b, vo MT_lock_unset(&tr->lock); } +void +trans_del(sql_trans *tr, sql_base *b) +{ + MT_lock_set(&tr->lock); + for(node *n= tr->changes->h; n; n = n->next) { + sql_change *c = n->data; + if (c->obj == b) { + if (c->log) + tr->logchanges--; + n = list_remove_node(tr->changes, NULL, n); + } + } + MT_lock_unset(&tr->lock); +} + int tr_version_of_parent(sql_trans *tr, ulng ts) { diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h --- a/sql/storage/sql_storage.h +++ b/sql/storage/sql_storage.h @@ -535,6 +535,7 @@ typedef struct sql_change { } sql_change; extern void trans_add(sql_trans *tr, sql_base *b, void *data, tc_cleanup_fptr cleanup, tc_commit_fptr commit, tc_log_fptr log); +extern void trans_del(sql_trans *tr, sql_base *b); extern int tr_version_of_parent(sql_trans *tr, ulng ts); extern int sql_trans_add_predicate(sql_trans* tr, sql_column *c, unsigned int cmp, atom *r, atom *f, bool anti, bool semantics); diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -6236,6 +6236,8 @@ sql_trans_drop_column(sql_trans *tr, sql 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); ol_del(t->columns, store, n); if (drop_action == DROP_CASCADE_START && tr->dropped) { diff --git a/sql/test/BugTracker-2023/Tests/All b/sql/test/BugTracker-2023/Tests/All --- a/sql/test/BugTracker-2023/Tests/All +++ b/sql/test/BugTracker-2023/Tests/All @@ -1,4 +1,5 @@ ambiguous-identifiers-7372 temp-table-foreign-key-crash-7378 +add-drop-column-crash-7381 view-on-alias-crash-7386 alter-inc-seq-crash-7387 diff --git a/sql/test/BugTracker-2023/Tests/add-drop-column-crash-7381.test b/sql/test/BugTracker-2023/Tests/add-drop-column-crash-7381.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2023/Tests/add-drop-column-crash-7381.test @@ -0,0 +1,14 @@ +statement ok +CREATE TABLE t1(unique_constraint INT PRIMARY KEY); + +statement ok +START TRANSACTION; + +statement ok +ALTER TABLE t1 ADD COLUMN uniq_c1_c2_c3 INT; + +statement ok +ALTER TABLE t1 DROP COLUMN uniq_c1_c2_c3; + +statement ok +COMMIT; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org