mirror of
				https://github.com/cldellow/sqlite-parquet-vtable.git
				synced 2025-11-04 02:39:56 +00:00 
			
		
		
		
	...change test data to use 99 rows, so that when we have rowgroup size 10 we exercise this code.
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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 "$@"
 |