Changeset: 305ac22cb726 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/305ac22cb726 Modified Files: sql/storage/store.c Branch: Jan2022 Log Message:
Merged with Jul2021 diffs (91 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3864,7 +3864,8 @@ transaction_check_dependencies_and_remov for (; he && ok == LOG_OK; he = he->chain) { sql_dependency_change *schange = (sql_dependency_change*) he->value; - if (lchange->objid == schange->objid && lchange->type == schange->type) + /* conflict only if transactions overlap */ + if (schange->ts >= tr->ts && lchange->objid == schange->objid && lchange->type == schange->type) ok = LOG_CONFLICT; } } @@ -3878,7 +3879,8 @@ transaction_check_dependencies_and_remov for (; he && ok == LOG_OK; he = he->chain) { sql_dependency_change *schange = (sql_dependency_change*) he->value; - if (lchange->objid == schange->objid && lchange->type == schange->type) + /* conflict only if transactions overlap */ + if (schange->ts >= tr->ts && lchange->objid == schange->objid && lchange->type == schange->type) ok = LOG_CONFLICT; } } diff --git a/sql/test/BugTracker-2022/Tests/All b/sql/test/BugTracker-2022/Tests/All new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2022/Tests/All @@ -0,0 +1,1 @@ +transaction-conflict.Bug-7228 diff --git a/sql/test/BugTracker-2022/Tests/SingleServer b/sql/test/BugTracker-2022/Tests/SingleServer new file mode 100644 diff --git a/sql/test/BugTracker-2022/Tests/transaction-conflict.Bug-7228.test b/sql/test/BugTracker-2022/Tests/transaction-conflict.Bug-7228.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2022/Tests/transaction-conflict.Bug-7228.test @@ -0,0 +1,55 @@ +@connection(id=1, username=monetdb, password=monetdb) +statement ok +START TRANSACTION + +@connection(id=2, username=monetdb, password=monetdb) +statement ok +START TRANSACTION + +@connection(id=2) +statement ok +CREATE TABLE a(s string, i int, b1 bigint) + +@connection(id=2) +statement ok +COMMIT + +@connection(id=2) +statement ok +START TRANSACTION + +@connection(id=2) +statement ok +ALTER TABLE a ADD UNIQUE (s, b1) + +@connection(id=2) +statement ok +COMMIT + +@connection(id=2) +statement ok +START TRANSACTION + +@connection(id=2) +statement ok +CREATE TABLE b(i int) + +@connection(id=2) +statement ok +UPDATE a SET i = 1 + +@connection(id=2) +statement ok +DROP TABLE b + +@connection(id=2) +statement ok +COMMIT + +@connection(id=2) +statement ok +DROP TABLE a + +@connection(id=1) +statement ok +ROLLBACK _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list