Changeset: 381933040a0b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=381933040a0b
Added Files:
sql/test/Tests/bincopy_broken_strings_on_client.SQL.py
sql/test/Tests/bincopy_broken_strings_on_client.stable.err
sql/test/Tests/bincopy_broken_strings_on_client.stable.out
sql/test/Tests/bincopy_broken_strings_on_server.SQL.py
sql/test/Tests/bincopy_broken_strings_on_server.stable.err
sql/test/Tests/bincopy_broken_strings_on_server.stable.out
Modified Files:
sql/test/Tests/All
sql/test/Tests/bincopy_support.py
Branch: copybinary
Log Message:
Attempt to add test for broken utf-8
diffs (161 lines):
diff --git a/sql/test/Tests/All b/sql/test/Tests/All
--- a/sql/test/Tests/All
+++ b/sql/test/Tests/All
@@ -139,3 +139,5 @@ bincopy_null_ints_on_client
bincopy_null_ints_on_server
bincopy_large_strings_on_client
bincopy_large_strings_on_server
+bincopy_broken_strings_on_client
+bincopy_broken_strings_on_server
diff --git a/sql/test/Tests/bincopy_broken_strings_on_client.SQL.py
b/sql/test/Tests/bincopy_broken_strings_on_client.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_client.SQL.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+from bincopy_support import run_test
+from bincopy_support import BROKEN_STRINGS as testcode
+
+run_test('client', testcode)
diff --git a/sql/test/Tests/bincopy_broken_strings_on_client.stable.err
b/sql/test/Tests/bincopy_broken_strings_on_client.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_client.stable.err
@@ -0,0 +1,21 @@
+stderr of test 'bincopy_broken_strings_on_client` in directory 'sql/test`
itself:
+
+
+# 16:41:40 >
+# 16:41:40 > "/usr/bin/python3.7" "bincopy_broken_strings_on_client.SQL.py"
"bincopy_broken_strings_on_client"
+# 16:41:40 >
+
+
+# 16:41:40 >
+# 16:41:40 > mclient -lsql -ftest -tnone -Eutf-8 -i -e
--host=/var/tmp/mtest-554 --port=38574 --database=mTests_sql_test
+# 16:41:40 >
+
+MAPI = (monetdb) /var/tmp/mtest-554/.s.monetdb.38574
+QUERY = COPY BINARY INTO foo(id, s) FROM
R'/home/jvr/monets/copybinary/inst/mTests/sql/test/bincopy_ints.bin',
R'/home/jvr/monets/copybinary/inst/mTests/sql/test/bincopy_broken_strings.bin'
ON CLIENT;
+
+CODE = BADENCODING ??????? what should be here?
+
+# 16:41:40 >
+# 16:41:40 > "Done."
+# 16:41:40 >
+
diff --git a/sql/test/Tests/bincopy_broken_strings_on_client.stable.out
b/sql/test/Tests/bincopy_broken_strings_on_client.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_client.stable.out
@@ -0,0 +1,19 @@
+stdout of test 'bincopy_broken_strings_on_client` in directory 'sql/test`
itself:
+
+
+# 16:41:59 >
+# 16:41:59 > "/usr/bin/python3.7" "bincopy_broken_strings_on_client.SQL.py"
"bincopy_broken_strings_on_client"
+# 16:41:59 >
+
+
+# 16:41:59 >
+# 16:41:59 > mclient -lsql -ftest -tnone -Eutf-8 -i -e
--host=/var/tmp/mtest-1088 --port=33707 --database=mTests_sql_test
+# 16:41:59 >
+
+#START TRANSACTION;
+#CREATE TABLE foo(id INT NOT NULL, s TEXT);
+
+# 16:41:59 >
+# 16:41:59 > "Done."
+# 16:41:59 >
+
diff --git a/sql/test/Tests/bincopy_broken_strings_on_server.SQL.py
b/sql/test/Tests/bincopy_broken_strings_on_server.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_server.SQL.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+from bincopy_support import run_test
+from bincopy_support import BROKEN_STRINGS as testcode
+
+run_test('server', testcode)
diff --git a/sql/test/Tests/bincopy_broken_strings_on_server.stable.err
b/sql/test/Tests/bincopy_broken_strings_on_server.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_server.stable.err
@@ -0,0 +1,21 @@
+stderr of test 'bincopy_broken_strings_on_server` in directory 'sql/test`
itself:
+
+
+# 16:41:40 >
+# 16:41:40 > "/usr/bin/python3.7" "bincopy_broken_strings_on_server.SQL.py"
"bincopy_broken_strings_on_server"
+# 16:41:40 >
+
+
+# 16:41:40 >
+# 16:41:40 > mclient -lsql -ftest -tnone -Eutf-8 -i -e
--host=/var/tmp/mtest-554 --port=38574 --database=mTests_sql_test
+# 16:41:40 >
+
+MAPI = (monetdb) /var/tmp/mtest-554/.s.monetdb.38574
+QUERY = COPY BINARY INTO foo(id, s) FROM
R'/home/jvr/monets/copybinary/inst/mTests/sql/test/bincopy_ints.bin',
R'/home/jvr/monets/copybinary/inst/mTests/sql/test/bincopy_broken_strings.bin'
ON SERVER;
+
+CODE = BADENCODING ??????? what should be here?
+
+# 16:41:40 >
+# 16:41:40 > "Done."
+# 16:41:40 >
+
diff --git a/sql/test/Tests/bincopy_broken_strings_on_server.stable.out
b/sql/test/Tests/bincopy_broken_strings_on_server.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/bincopy_broken_strings_on_server.stable.out
@@ -0,0 +1,20 @@
+stdout of test 'bincopy_broken_strings_on_server` in directory 'sql/test`
itself:
+
+
+# 16:41:40 >
+# 16:41:40 > "/usr/bin/python3.7" "bincopy_broken_strings_on_server.SQL.py"
"bincopy_broken_strings_on_server"
+# 16:41:40 >
+
+
+# 16:41:40 >
+# 16:41:40 > mclient -lsql -ftest -tnone -Eutf-8 -i -e
--host=/var/tmp/mtest-554 --port=38574 --database=mTests_sql_test
+# 16:41:40 >
+
+#START TRANSACTION;
+#CREATE TABLE foo(id INT NOT NULL, s TEXT);
+#ROLLBACK;
+
+# 16:41:40 >
+# 16:41:40 > "Done."
+# 16:41:40 >
+
diff --git a/sql/test/Tests/bincopy_support.py
b/sql/test/Tests/bincopy_support.py
--- a/sql/test/Tests/bincopy_support.py
+++ b/sql/test/Tests/bincopy_support.py
@@ -77,6 +77,15 @@ def gen_large_strings(outfile):
f.write("a" * n)
f.write("\n")
+def gen_broken_strings(outfile):
+ good = bytes('bröken\n', 'utf-8')
+ bad = bytes('bröken\n', 'latin1')
+ for i in range(1_000_000):
+ if i == 123_456:
+ outfile.write(bad)
+ else:
+ outfile.write(good)
+
INTS = """
CREATE TABLE foo(id INT NOT NULL);
COPY BINARY INTO foo(id) FROM @ints@ @ON@;
@@ -110,3 +119,9 @@ SELECT COUNT(id) FROM foo
WHERE (id % 10000 <> 0 AND LENGTH(s) = 9)
OR (id % 10000 = 0 AND LENGTH(s) = 280000 + 9);
"""
+
+BROKEN_STRINGS = """
+CREATE TABLE foo(id INT NOT NULL, s TEXT);
+COPY BINARY INTO foo(id, s) FROM @ints@, @broken_strings@ @ON@;
+-- should fail!
+"""
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list