Changeset: 271221289019 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/271221289019 Modified Files: sql/test/miscellaneous/Tests/transaction_isolation2.SQL.py Branch: Jul2021 Log Message:
More transaction conflicts to fix diffs (97 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 @@ -12,6 +12,7 @@ with SQLTestCase() as mdb1: mdb1.execute("insert into longs values (1),(2),(3);").assertSucceeded() mdb1.execute("insert into integers values (1),(2),(3);").assertSucceeded() mdb1.execute("alter table longs add primary key (i);").assertSucceeded() + mdb1.execute("CREATE TABLE sys.myvar (c BIGINT);") mdb1.execute('commit;').assertSucceeded() mdb1.execute('start transaction;').assertSucceeded() @@ -53,17 +54,69 @@ with SQLTestCase() as mdb1: mdb1.execute('start transaction;').assertSucceeded() mdb2.execute('start transaction;').assertSucceeded() - mdb1.execute('CREATE schema mysch;').assertSucceeded() - mdb2.execute('CREATE schema mysch;').assertFailed(err_code="42000", err_message="CREATE SCHEMA: transaction conflict detected") + mdb1.execute('CREATE TYPE myurl EXTERNAL NAME url;').assertSucceeded() + mdb2.execute('CREATE TYPE myurl EXTERNAL NAME url;').assertFailed(err_code="42000", err_message="CREATE TYPE: transaction conflict detected") + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('rollback;').assertSucceeded() + + mdb1.execute("INSERT INTO sys.myvar VALUES ((SELECT COUNT(*) FROM sys.roles));").assertRowCount(1) + mdb1.execute('start transaction;').assertSucceeded() + mdb2.execute('start transaction;').assertSucceeded() + mdb1.execute('CREATE ROLE myrole;').assertSucceeded() + mdb2.execute('CREATE ROLE myrole;').assertFailed(err_code="42000", err_message="CREATE ROLE: transaction conflict detected") # I am not sure what do here + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('commit;').assertFailed() # Not sure here + + mdb1.execute('start transaction;').assertSucceeded() + mdb2.execute('start transaction;').assertSucceeded() + mdb1.execute('CREATE schema mysch AUTHORIZATION myrole;').assertSucceeded() + mdb2.execute('CREATE schema mysch AUTHORIZATION myrole;').assertFailed(err_code="42000", err_message="CREATE SCHEMA: transaction conflict detected") + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('rollback;').assertSucceeded() + + mdb1.execute('start transaction;').assertSucceeded() + mdb2.execute('start transaction;').assertSucceeded() + mdb1.execute("CREATE USER dummyuser WITH PASSWORD 'ups' NAME 'ups' SCHEMA mysch;").assertSucceeded() + mdb2.execute("CREATE USER dummyuser WITH PASSWORD 'ups' NAME 'ups' SCHEMA mysch;").assertFailed(err_code="42M31", err_message="CREATE USER: user 'dummyuser' already exists") mdb1.execute('commit;').assertSucceeded() mdb2.execute('rollback;').assertSucceeded() mdb1.execute('start transaction;').assertSucceeded() mdb2.execute('start transaction;').assertSucceeded() - mdb1.execute('CREATE TYPE myurl EXTERNAL NAME url;').assertSucceeded() - mdb2.execute('CREATE TYPE myurl EXTERNAL NAME url;').assertFailed(err_code="42000", err_message="CREATE TYPE: transaction conflict detected") + mdb1.execute("GRANT myrole TO dummyuser;").assertSucceeded() + mdb2.execute("GRANT myrole TO dummyuser;").assertFailed(err_code="42000", err_message="GRANT: transaction conflict detected") # I am not sure what do here + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('commit;').assertFailed() # Not sure here + # The current setup gives a duplicate entry in the 'roles' table, so that cannot happen + mdb1.execute('SELECT CAST(COUNT(*) - (SELECT c FROM sys.myvar) AS BIGINT) FROM sys.roles;').assertDataResultMatch([(1,)]) + + mdb1.execute('start transaction;').assertSucceeded() + mdb1.execute('DROP USER dummyuser;').assertSucceeded() + mdb1.execute('DROP SCHEMA mysch;').assertSucceeded() + mdb1.execute('DROP ROLE myrole;').assertSucceeded() mdb1.execute('commit;').assertSucceeded() - mdb2.execute('rollback;').assertSucceeded() + + mdb1.execute("TRUNCATE sys.myvar;") + mdb1.execute("INSERT INTO sys.myvar VALUES ((SELECT COUNT(*) FROM sys.comments));").assertRowCount(1) + mdb1.execute('start transaction;').assertSucceeded() + mdb2.execute('start transaction;').assertSucceeded() + mdb1.execute('COMMENT ON TABLE "sys"."integers" IS \'something\';').assertSucceeded() + mdb2.execute('COMMENT ON TABLE "sys"."integers" IS \'somethingelse\';').assertFailed(err_code="42000", err_message="COMMENT: transaction conflict detected") # I am not sure what do here + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('commit;').assertFailed() # Not sure here + # The current setup gives a duplicate entry in the 'comments' table, so that cannot happen + mdb1.execute('SELECT CAST(COUNT(*) - (SELECT c FROM sys.myvar) AS BIGINT) FROM sys.comments;').assertDataResultMatch([(1,)]) + + mdb1.execute("TRUNCATE sys.myvar;") + mdb1.execute("INSERT INTO sys.myvar VALUES ((SELECT COUNT(*) FROM sys.statistics));").assertRowCount(1) + mdb1.execute('start transaction;').assertSucceeded() + mdb2.execute('start transaction;').assertSucceeded() + mdb1.execute('ANALYZE "sys"."integers";').assertSucceeded() + mdb2.execute('ANALYZE "sys"."integers";').assertFailed(err_code="42000", err_message="ANALYZE: transaction conflict detected") # I am not sure what do here + mdb1.execute('commit;').assertSucceeded() + mdb2.execute('commit;').assertFailed() # Not sure here + # The current setup gives a duplicate entry in the 'statistics' table, so that cannot happen + mdb1.execute('SELECT CAST(COUNT(*) - (SELECT c FROM sys.myvar) AS BIGINT) FROM sys.statistics;').assertDataResultMatch([(1,)]) mdb1.execute('create merge table parent(a int);').assertSucceeded() mdb1.execute('create table child1(c int);').assertSucceeded() @@ -152,9 +205,9 @@ with SQLTestCase() as mdb1: mdb1.execute('SELECT i FROM longs order by i;').assertDataResultMatch([(1,),(2,),(3,)]) mdb1.execute('start transaction;').assertSucceeded() - mdb1.execute('DROP schema mysch;').assertSucceeded() mdb1.execute('DROP TYPE myurl;').assertSucceeded() mdb1.execute("drop table integers;").assertSucceeded() mdb1.execute("drop table longs;").assertSucceeded() mdb1.execute("drop table doubles;").assertSucceeded() + mdb1.execute('DROP TABLE sys.myvar;').assertSucceeded() mdb1.execute('commit;').assertSucceeded() _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list