1
0
mirror of https://github.com/cldellow/sqlite-parquet-vtable.git synced 2025-04-03 09:39:47 +00:00
Colin Dellow 5559a7b563 Fix when last rowgroup is not same size as first
...change test data to use 99 rows, so that when we have
rowgroup size 10 we exercise this code.
2018-03-11 15:15:27 -04:00

62 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
# For each files in tests/queries/*, mount that parquet file, run the query, and compare
# its output.
run_query() {
file=${1:?must provide testcase file}
query=${2:?must provide query to run}
basename=$(basename "$file")
cat <<EOF
.load parquet/libparquet
.testcase $basename
.bail on
CREATE VIRTUAL TABLE nulls USING parquet('$root/parquet-generator/99-rows-nulls.parquet');
CREATE VIRTUAL TABLE no_nulls1 USING parquet('$root/parquet-generator/99-rows-1.parquet');
CREATE VIRTUAL TABLE no_nulls2 USING parquet('$root/parquet-generator/99-rows-10.parquet');
$query;
.output
EOF
}
main() {
root=$(dirname "${BASH_SOURCE[0]}")/..
root=$(readlink -f "$root")
cd "$root"
find_cmd=(find tests/queries -type f -name '*.sql')
debug=0
if [ -n "${1:-""}" ]; then
find_cmd+=(-regex ".*$1.*")
debug=1
fi
"${find_cmd[@]}" | sort > testcases.txt
if [ ! -s testcases.txt ]; then
echo "no matching testcases found"
exit 1
fi
if [ "$(cat testcases.txt | wc -l)" == "1" ]; then
set -x
gdb -ex run --args "$root"/sqlite/sqlite3 -init testcase-cmds.txt
else
while read -r file; do
echo "Testing: $file"
query=$(head -n1 "$file" | tail -n1)
tail -n+2 "$file" > testcase-expected.txt
run_query "$file" "$query" > testcase-cmds.txt
if ! "$root"/sqlite/sqlite3 -init testcase-cmds.txt < /dev/null > testcase-stdout.txt 2> testcase-stderr.txt; then
echo "...FAILED; check testcase-{out,err}.txt" >&2
exit 1
fi
diff testcase-out.txt testcase-expected.txt
done < testcases.txt
fi
}
main "$@"