Changeset: 34589d226cb2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/34589d226cb2
Added Files:
sql/test/strimps/Tests/All
sql/test/strimps/Tests/persisted_strimp.SQL.py
sql/test/strimps/Tests/strimps_stable_counts.SQL.py
Branch: string_imprints
Log Message:
Add tests specific to strimps
diffs (129 lines):
diff --git a/sql/test/strimps/Tests/All b/sql/test/strimps/Tests/All
new file mode 100644
--- /dev/null
+++ b/sql/test/strimps/Tests/All
@@ -0,0 +1,2 @@
+strimps_stable_counts
+persisted_strimp
diff --git a/sql/test/strimps/Tests/persisted_strimp.SQL.py
b/sql/test/strimps/Tests/persisted_strimp.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/strimps/Tests/persisted_strimp.SQL.py
@@ -0,0 +1,57 @@
+import os
+import socket
+import tempfile
+
+try:
+ from MonetDBtesting import process
+except ImportError:
+ import process
+from MonetDBtesting.sqltest import SQLTestCase
+
+COUNT_QUERY = "SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';"
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.bind(('', 0))
+port = sock.getsockname()[1]
+sock.close()
+
+# Make sure that reading a persisted strimp from disk gives correct
+# results.
+
+with tempfile.TemporaryDirectory() as farm_dir:
+ fdir = os.path.join(farm_dir, 'db1')
+ os.mkdir(fdir)
+ with process.server(mapiport=port, dbname='db1',
+ args=["--set", "gdk_use_strimps=yes",],
+ dbfarm=fdir,
+ 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("""CREATE TABLE orders (
+ o_orderkey BIGINT NOT NULL,
+ o_custkey INTEGER NOT NULL,
+ o_orderstatus CHAR(1) NOT NULL,
+ o_totalprice DECIMAL(15,2) NOT NULL,
+ o_orderdate DATE NOT NULL,
+ o_orderpriority CHAR(15) NOT NULL,
+ o_clerk CHAR(15) NOT NULL,
+ o_shippriority INTEGER NOT NULL,
+ o_comment VARCHAR(79) NOT
NULL);""").assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+ s.communicate()
+
+ with process.server(mapiport=port, dbname='db1',
+ args=["--set", "gdk_use_strimps=yes",],
+ dbfarm=fdir,
+ 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 COUNT(*) FROM orders WHERE o_comment LIKE
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+ mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+ s.communicate()
diff --git a/sql/test/strimps/Tests/strimps_stable_counts.SQL.py
b/sql/test/strimps/Tests/strimps_stable_counts.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/strimps/Tests/strimps_stable_counts.SQL.py
@@ -0,0 +1,55 @@
+import os
+import socket
+import tempfile
+
+try:
+ from MonetDBtesting import process
+except ImportError:
+ import process
+from MonetDBtesting.sqltest import SQLTestCase
+
+COUNT_QUERY = "SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';"
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+sock.bind(('', 0))
+port = sock.getsockname()[1]
+sock.close()
+
+# Make sure that using a strimp returns the same number of rows as
+# not using it.
+
+with tempfile.TemporaryDirectory() as farm_dir:
+ fdir = os.path.join(farm_dir, 'db1')
+ os.mkdir(fdir)
+ with process.server(mapiport=port, dbname='db1',
+ dbfarm=fdir,
+ 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("""CREATE TABLE orders (
+ o_orderkey BIGINT NOT NULL,
+ o_custkey INTEGER NOT NULL,
+ o_orderstatus CHAR(1) NOT NULL,
+ o_totalprice DECIMAL(15,2) NOT NULL,
+ o_orderdate DATE NOT NULL,
+ o_orderpriority CHAR(15) NOT NULL,
+ o_clerk CHAR(15) NOT NULL,
+ o_shippriority INTEGER NOT NULL,
+ o_comment VARCHAR(79) NOT
NULL);""").assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("""COPY 15000 RECORDS INTO orders from
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+ mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+ s.communicate()
+
+ with process.server(mapiport=port, dbname='db1',
+ args=["--set", "gdk_use_strimps=yes",],
+ dbfarm=fdir,
+ 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 COUNT(*) FROM orders WHERE o_comment LIKE
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+ s.communicate()
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list