#!/bin/bash

QUERYFILE=$1
OUTDIR=$2
ARGS=("${@:3}") # everything but the first 2 arguments
if [[ "$#" -le 1 || ! -r "$QUERYFILE" ]] ; then
    echo "Usage: $0 /path/to/query.sql /path/to/existing/outdir [mysql arguments]"
    exit 1
fi
OUTFILEPREFIX=$OUTDIR/$(basename "${QUERYFILE}")_$(date +%Y%m%d_%H%M%S)

echo "Query:"
cat "$QUERYFILE"
echo "Results: $OUTFILEPREFIX*"
echo "Mysql: ${ARGS[*]}"

# Redirect all output to the log file.
# https://serverfault.com/a/103569/234378
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>"$OUTFILEPREFIX.log" 2>&1

set -x # be verbose
cp "$QUERYFILE" "$OUTFILEPREFIX.sql" # copy input file
date
time mysql "${ARGS[@]}" < "${QUERYFILE}" > "${OUTFILEPREFIX}.tsv" # run the query
date
