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