Changeset: ac4644fda9f7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ac4644fda9f7
Added Files:
        sql/test/dict/Tests/dict03.py
Modified Files:
        sql/test/dict/Tests/All
Branch: Jan2022
Log Message:

Truncating a compressed varsized column gives issues after the server restarts


diffs (57 lines):

diff --git a/sql/test/dict/Tests/All b/sql/test/dict/Tests/All
--- a/sql/test/dict/Tests/All
+++ b/sql/test/dict/Tests/All
@@ -1,2 +1,3 @@
 dict01
 dict02
+dict03
diff --git a/sql/test/dict/Tests/dict03.py b/sql/test/dict/Tests/dict03.py
new file mode 100644
--- /dev/null
+++ b/sql/test/dict/Tests/dict03.py
@@ -0,0 +1,45 @@
+import os, socket, tempfile
+
+try:
+    from MonetDBtesting import process
+except ImportError:
+    import process
+from MonetDBtesting.sqltest import SQLTestCase
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.bind(('', 0))
+port = sock.getsockname()[1]
+sock.close()
+
+with tempfile.TemporaryDirectory() as farm_dir:
+    os.mkdir(os.path.join(farm_dir, 'db1'))
+
+    with process.server(mapiport=port, dbname='db1', 
dbfarm=os.path.join(farm_dir, 'db1'), stdin = process.PIPE, stdout = 
process.PIPE, stderr = process.PIPE) as s:
+        with SQLTestCase() as mdb:
+            mdb.connect(database='db1', port=port, username="monetdb", 
password="monetdb")
+            mdb.execute("""
+            START TRANSACTION;
+            create procedure "sys"."dict_compress"(sname string, tname string, 
cname string) external name "dict"."compress";
+            CREATE TABLE "t1" ("c0" CLOB);
+            INSERT INTO "t1" VALUES ('85'),('ieyE7bk'),('#2MP'),('v汉字'),('2');
+            COMMIT""").assertSucceeded()
+            mdb.execute("SELECT c0 FROM 
t1").assertSucceeded().assertDataResultMatch([('85',),('ieyE7bk',),('#2MP',),('v汉字',),('2',)])
+            mdb.execute("CALL 
\"sys\".\"dict_compress\"('sys','t1','c0');").assertSucceeded()
+            mdb.execute("SELECT c0 FROM 
t1").assertSucceeded().assertDataResultMatch([('85',),('ieyE7bk',),('#2MP',),('v汉字',),('2',)])
+            mdb.execute("TRUNCATE TABLE 
t1;").assertSucceeded().assertRowCount(5)
+            mdb.execute("SELECT c0 FROM 
t1").assertSucceeded().assertDataResultMatch([])
+            mdb.execute("INSERT INTO t1(c0) VALUES(''), ('3be汉字0'), 
('aa8877');").assertSucceeded().assertRowCount(3)
+            mdb.execute("SELECT c0 FROM 
t1").assertSucceeded().assertDataResultMatch([('',),('3be汉字0',),('aa8877',)])
+        s.communicate()
+
+    with process.server(mapiport=port, dbname='db1', 
dbfarm=os.path.join(farm_dir, 'db1'), stdin = process.PIPE, stdout = 
process.PIPE, stderr = process.PIPE) as s:
+        with SQLTestCase() as mdb:
+            mdb.connect(database='db1', port=port, username="monetdb", 
password="monetdb")
+            mdb.execute("SELECT c0 FROM 
t1").assertSucceeded().assertDataResultMatch([('',),('3be汉字0',),('aa8877',)])
+            mdb.execute("""
+            START TRANSACTION;
+            DROP TABLE t1;
+            DROP ALL PROCEDURE "sys"."dict_compress";
+            COMMIT;
+            """).assertSucceeded()
+        s.communicate()
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to