Changeset: 31fd49dd4145 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/31fd49dd4145
Added Files:
sql/test/transactions/Tests/truncate-insert-restart.py
Modified Files:
sql/test/transactions/Tests/All
Branch: Jan2022
Log Message:
Add truncate-insert-restart test.
diffs (70 lines):
diff --git a/sql/test/transactions/Tests/All b/sql/test/transactions/Tests/All
--- a/sql/test/transactions/Tests/All
+++ b/sql/test/transactions/Tests/All
@@ -6,3 +6,4 @@ transaction_isolation5
mergetable-deps-crash
view-deps
chaining
+truncate-insert-restart
diff --git a/sql/test/transactions/Tests/truncate-insert-restart.py
b/sql/test/transactions/Tests/truncate-insert-restart.py
new file mode 100644
--- /dev/null
+++ b/sql/test/transactions/Tests/truncate-insert-restart.py
@@ -0,0 +1,57 @@
+import os, sys, tempfile, pymonetdb
+try:
+ from MonetDBtesting import process
+except ImportError:
+ import process
+
+with tempfile.TemporaryDirectory() as farm_dir:
+ os.mkdir(os.path.join(farm_dir, 'db1'))
+ with process.server(mapiport='0', dbname='db1',
+ dbfarm=os.path.join(farm_dir, 'db1'),
+ stdin=process.PIPE,
+ stdout=process.PIPE, stderr=process.PIPE) as s:
+ cli = pymonetdb.connect(port=s.dbport,database='db1',autocommit=True)
+ cur = cli.cursor()
+ cur.execute("CREATE TABLE foo(i) AS VALUES (10), (20), (30);")
+ cur.close()
+ cli.close()
+ s.communicate()
+ with process.server(mapiport='0', dbname='db1',
+ dbfarm=os.path.join(farm_dir, 'db1'),
+ stdin=process.PIPE,
+ stdout=process.PIPE, stderr=process.PIPE) as s:
+ # client 1 is the first to connect and initializes a long running
transaction
+ cli_1 = pymonetdb.connect(port=s.dbport,database='db1',autocommit=True)
+ cur = cli_1.cursor()
+ cur.execute('START TRANSACTION;')
+
+
+ # client 2 starts in autocommit mode after client 1 and truncates and
repopulates table foo
+ cli_2 = pymonetdb.connect(port=s.dbport,database='db1',autocommit=True)
+ cur = cli_2.cursor()
+ cur.execute('TRUNCATE foo;')
+ cur.execute('INSERT INTO foo VALUES (40);')
+ cur.close()
+ cli_1.close()
+ cli_2.close()
+ s.communicate()
+ with process.server(mapiport='0', dbname='db1',
+ dbfarm=os.path.join(farm_dir, 'db1'),
+ stdin=process.PIPE,
+ stdout=process.PIPE, stderr=process.PIPE) as s:
+ cli = pymonetdb.connect(port=s.dbport,database='db1',autocommit=True)
+ cur = cli.cursor()
+ """
+ cur.execute('''
+ select * from sys.storage('sys', 'foo');
+ select count(*) from foo;
+ select count(i) from foo;
+ select max(i) from foo;
+ ''')
+ """
+ cur.execute("select count(*) = count(i) from foo;")
+ if cur.fetchall()[0][0] != True:
+ sys.stderr.write('Expected table size and column size to be equal')
+ cur.close()
+ cli.close()
+ s.communicate()
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]