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