Rewrite SQL oracle harness

This commit is contained in:
Colin Dellow 2018-03-07 20:20:34 -05:00
parent caefc23b1e
commit 35fcde926c
10 changed files with 20 additions and 31 deletions

View File

@ -10,7 +10,7 @@ createdb parquet
here=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")") here=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")
psql parquet << EOF psql parquet << EOF
CREATE TABLE no_nulls( CREATE TABLE no_nulls1(
rowid INT2, rowid INT2,
bool_0 INT2, bool_0 INT2,
int8_1 INT2, int8_1 INT2,
@ -25,9 +25,11 @@ CREATE TABLE no_nulls(
binary_10 TEXT binary_10 TEXT
); );
CREATE TABLE nulls (LIKE no_nulls); CREATE TABLE no_nulls2 (LIKE no_nulls1);
CREATE TABLE nulls (LIKE no_nulls1);
COPY no_nulls FROM '$here/no-nulls.csv'; COPY no_nulls1 FROM '$here/no-nulls.csv';
COPY no_nulls2 FROM '$here/no-nulls.csv';
COPY nulls FROM '$here/nulls.csv'; COPY nulls FROM '$here/nulls.csv';
CREATE OR REPLACE FUNCTION quote(TEXT) RETURNS TEXT AS \$\$ CREATE OR REPLACE FUNCTION quote(TEXT) RETURNS TEXT AS \$\$
@ -47,9 +49,4 @@ CREATE OR REPLACE FUNCTION printf(TEXT, DOUBLE PRECISION) RETURNS TEXT AS \$\$
RETURN CAST(\$2 AS DECIMAL(10, 4))::TEXT; RETURN CAST(\$2 AS DECIMAL(10, 4))::TEXT;
END; END;
\$\$ LANGUAGE 'plpgsql' IMMUTABLE; \$\$ LANGUAGE 'plpgsql' IMMUTABLE;
--COPY (SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM nulls LIMIT 3) TO STDOUT WITH (DELIMITER '|', NULL '');
COPY (SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), printf('%.4f', double_6) AS double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM no_nulls) TO STDOUT WITH (DELIMITER '|', NULL '');
EOF EOF

View File

@ -1,5 +1,4 @@
100-rows-1.parquet SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), printf("%.4f", double_6) AS double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM no_nulls1;
SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), printf("%.4f", double_6) AS double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM test;
0|1|50|5000|50000000|50000000000|1985-07-20 00:00:00|100.0000|0|000|X'00'|X'00' 0|1|50|5000|50000000|50000000000|1985-07-20 00:00:00|100.0000|0|000|X'00'|X'00'
1|0|49|4900|49000000|49000000000|1985-07-21 00:00:00|50.0000|1|001|X'0101'|X'01' 1|0|49|4900|49000000|49000000000|1985-07-21 00:00:00|50.0000|1|001|X'0101'|X'01'
2|1|48|4800|48000000|48000000000|1985-07-22 00:00:00|33.3333|2|002|X'020202'|X'02' 2|1|48|4800|48000000|48000000000|1985-07-22 00:00:00|33.3333|2|002|X'020202'|X'02'

View File

@ -1,5 +1,4 @@
100-rows-10.parquet SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), printf("%.4f", double_6) AS double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM no_nulls2;
SELECT rowid, bool_0, int8_1, int16_2, int32_3, int64_4, datetime(ts_5 / 1000, 'unixepoch'), printf("%.4f", double_6) AS double_6, string_7, string_8, quote(binary_9), quote(binary_10) FROM test;
0|1|50|5000|50000000|50000000000|1985-07-20 00:00:00|100.0000|0|000|X'00'|X'00' 0|1|50|5000|50000000|50000000000|1985-07-20 00:00:00|100.0000|0|000|X'00'|X'00'
1|0|49|4900|49000000|49000000000|1985-07-21 00:00:00|50.0000|1|001|X'0101'|X'01' 1|0|49|4900|49000000|49000000000|1985-07-21 00:00:00|50.0000|1|001|X'0101'|X'01'
2|1|48|4800|48000000|48000000000|1985-07-22 00:00:00|33.3333|2|002|X'020202'|X'02' 2|1|48|4800|48000000|48000000000|1985-07-22 00:00:00|33.3333|2|002|X'020202'|X'02'

View File

@ -1,3 +1,2 @@
100-rows-1.parquet select count(*) from (select * from no_nulls1 t1, no_nulls1 t2);
select count(*) from (select * from test t1, test t2);
10000 10000

View File

@ -1,3 +1,2 @@
100-rows-10.parquet select count(*) from (select * from no_nulls2 t1, no_nulls2 t2);
select count(*) from (select * from test t1, test t2);
10000 10000

View File

@ -1,3 +1,2 @@
100-rows-1.parquet select int8_1 from no_nulls1 where rowid = 50;
select int8_1 from test where rowid = 50;
0 0

View File

@ -1,3 +1,2 @@
100-rows-10.parquet select int8_1 from no_nulls2 where rowid = 50;
select int8_1 from test where rowid = 50;
0 0

View File

@ -1,3 +1,2 @@
100-rows-10.parquet select int8_1 from no_nulls2 where rowid = 55;
select int8_1 from test where rowid = 55;
-5 -5

View File

@ -1,3 +1,2 @@
100-rows-nulls.parquet SELECT SUM(CASE WHEN bool_0 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int8_1 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int16_2 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int32_3 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int64_4 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN ts_5 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN double_6 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN string_7 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN string_8 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN binary_9 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN binary_10 IS NULL THEN 1 ELSE 0 END) from nulls;
SELECT SUM(CASE WHEN bool_0 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int8_1 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int16_2 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int32_3 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN int64_4 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN ts_5 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN double_6 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN string_7 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN string_8 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN binary_9 IS NULL THEN 1 ELSE 0 END), SUM(CASE WHEN binary_10 IS NULL THEN 1 ELSE 0 END) from test;
50|50|50|50|50|50|50|50|50|50|50 50|50|50|50|50|50|50|50|50|50|50

View File

@ -6,14 +6,15 @@ set -euo pipefail
run_query() { run_query() {
file=${1:?must provide testcase file} file=${1:?must provide testcase file}
parquet_file=${2:?must provide parquet file to load} query=${2:?must provide query to run}
query=${3:?must provide query to run}
basename=$(basename "$file") basename=$(basename "$file")
cat <<EOF cat <<EOF
.load parquet/libparquet .load parquet/libparquet
.testcase $basename .testcase $basename
.bail on .bail on
CREATE VIRTUAL TABLE test USING parquet('parquet-generator/$parquet_file'); CREATE VIRTUAL TABLE nulls USING parquet('$root/parquet-generator/100-rows-nulls.parquet');
CREATE VIRTUAL TABLE no_nulls1 USING parquet('$root/parquet-generator/100-rows-1.parquet');
CREATE VIRTUAL TABLE no_nulls2 USING parquet('$root/parquet-generator/100-rows-10.parquet');
$query $query
EOF EOF
} }
@ -26,10 +27,9 @@ main() {
queries=$(find tests/queries -type f -name '*.sql' | sort) queries=$(find tests/queries -type f -name '*.sql' | sort)
while read -r file; do while read -r file; do
echo "Testing: $file" echo "Testing: $file"
parquet_file=$(head -n1 "$file") query=$(head -n1 "$file" | tail -n1)
query=$(head -n2 "$file" | tail -n1) results=$(tail -n+2 "$file")
results=$(tail -n+3 "$file") if ! "$root"/sqlite/sqlite3 -init <(run_query "$file" "$query") < /dev/null > testcase-stdout.txt 2> testcase-stderr.txt; then
if ! "$root"/sqlite/sqlite3 -init <(run_query "$file" "$parquet_file" "$query") < /dev/null > testcase-stdout.txt 2> testcase-stderr.txt; then
echo "...FAILED; check testcase-{out,err}.txt" >&2 echo "...FAILED; check testcase-{out,err}.txt" >&2
exit 1 exit 1
fi fi