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