Changeset: 531d592a2f02 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/531d592a2f02
Modified Files:
        sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py
Branch: Jul2021
Log Message:

Testing transaction conflicts. Some have yet to be fixed


diffs (60 lines):

diff --git a/sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py 
b/sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py
--- a/sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py
+++ b/sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py
@@ -65,6 +65,56 @@ with SQLTestCase() as mdb1:
         mdb1.execute('commit;').assertSucceeded()
         mdb2.execute('rollback;').assertSucceeded()
 
+        mdb1.execute('create merge table parent(a int);').assertSucceeded()
+        mdb1.execute('create table child1(c int);').assertSucceeded()
+        mdb1.execute('create table child2(c int);').assertSucceeded()
+        mdb1.execute('start transaction;').assertSucceeded()
+        mdb2.execute('start transaction;').assertSucceeded()
+        mdb1.execute("ALTER TABLE parent ADD TABLE child1;").assertSucceeded()
+        mdb2.execute("ALTER TABLE parent ADD TABLE 
child2;").assertFailed(err_code="42000", err_message="ALTER TABLE: transaction 
conflict detected")
+        mdb1.execute('commit;').assertSucceeded()
+        mdb2.execute('rollback;').assertSucceeded()
+        mdb1.execute('ALTER TABLE parent DROP TABLE child1;').assertSucceeded()
+        mdb1.execute('DROP TABLE parent;').assertSucceeded()
+        mdb1.execute('DROP TABLE child1;').assertSucceeded()
+        mdb1.execute('DROP TABLE child2;').assertSucceeded()
+
+        mdb1.execute('create merge table parent(a int) PARTITION BY RANGE ON 
(a);').assertSucceeded()
+        mdb1.execute('create table child1(c int);').assertSucceeded()
+        mdb1.execute('create table child2(c int);').assertSucceeded()
+        mdb1.execute('start transaction;').assertSucceeded()
+        mdb2.execute('start transaction;').assertSucceeded()
+        mdb1.execute("ALTER TABLE parent ADD TABLE child1 AS PARTITION FROM 
'1' TO '2';").assertSucceeded()
+        mdb2.execute("ALTER TABLE parent ADD TABLE child2 AS PARTITION FROM 
'0' TO '4';").assertFailed(err_code="42000", err_message="ALTER TABLE: failed 
due to conflict with another transaction")
+        mdb1.execute('commit;').assertSucceeded()
+        mdb2.execute('rollback;').assertSucceeded()
+        mdb1.execute('ALTER TABLE parent DROP TABLE child1;').assertSucceeded()
+        mdb1.execute('DROP TABLE parent;').assertSucceeded()
+        mdb1.execute('DROP TABLE child1;').assertSucceeded()
+        mdb1.execute('DROP TABLE child2;').assertSucceeded()
+
+        mdb1.execute('create merge table parent1(a int) PARTITION BY RANGE ON 
(a);').assertSucceeded()
+        mdb1.execute('create merge table parent2(a int) PARTITION BY RANGE ON 
(a);').assertSucceeded()
+        mdb1.execute('create table child(c int);').assertSucceeded()
+        mdb1.execute('start transaction;').assertSucceeded()
+        mdb2.execute('start transaction;').assertSucceeded()
+        mdb1.execute("ALTER TABLE parent1 ADD TABLE child AS PARTITION FROM 
'1' TO '2';").assertSucceeded()
+        mdb2.execute("ALTER TABLE parent2 ADD TABLE child AS PARTITION FROM 
'0' TO '4';").assertFailed(err_code="42000", err_message="ALTER TABLE: failed 
due to conflict with another transaction")
+        mdb1.execute('commit;').assertSucceeded()
+        mdb2.execute('rollback;').assertSucceeded()
+        mdb1.execute('ALTER TABLE parent1 DROP TABLE child;').assertSucceeded()
+        mdb1.execute('DROP TABLE parent1;').assertSucceeded()
+        mdb1.execute('DROP TABLE parent2;').assertSucceeded()
+        mdb1.execute('DROP TABLE child;').assertSucceeded()
+
+        mdb1.execute('start transaction;').assertSucceeded()
+        mdb2.execute('start transaction;').assertSucceeded()
+        mdb1.execute('CREATE FUNCTION myfunc() RETURNS INT RETURN 
1;').assertSucceeded()
+        mdb2.execute('CREATE FUNCTION myfunc() RETURNS INT RETURN 
2;').assertFailed(err_code="42000", err_message="CREATE FUNCTION: transaction 
conflict detected")
+        mdb1.execute('commit;').assertSucceeded()
+        mdb2.execute('rollback;').assertSucceeded()
+        mdb1.execute('DROP FUNCTION myfunc;').assertSucceeded()
+
         mdb1.execute('start transaction;').assertSucceeded()
         mdb1.execute('DROP schema mysch;').assertSucceeded()
         mdb1.execute('DROP TYPE myurl;').assertSucceeded()
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to