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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list