blob: 4277bafebbc22617f62004b10ec6230960a735d3 [file] [log] [blame]
#!/bin/bash
set -e
html=0
output=""
prefix=""
time=""
local=0
verbose=0
filter="cat"
pager="${QDB_PAGER:-${PAGER:-cat}}"
# Table output mode by default
sep="〠"
output="-list -separator $sep"
filter="column -t -s $sep"
while getopts "lcheqtv" opt; do
case "$opt" in
l)
local=1
;;
h)
html=1
output="-html"
filter="cat"
pager="${HTML_VIEWER:-$pager}"
;;
e)
prefix="EXPLAIN "
;;
q)
prefix="EXPLAIN QUERY PLAN "
;;
t) # Run with the time command.
time="time"
;;
v)
verbose=1
;;
*)
exit 1
esac
done
shift $(($OPTIND - 1))
db="$1"
shift
if ! [[ -t 1 ]] ; then
pager="cat"
fi
if (( $verbose )) ; then
echo "DB: $db" 1>&2
fi
query="$*"
run_query() {
if (( $local )) ; then
test -f "$db" && $time sqlite3 $output -nullvalue "[NULL]" -header "$db" "$prefix$query"
else
query=$(sed -e "s!'!\'\\\'\'!g" <<<"$query") # Escape for shell
adb shell -T "(" test -f "$db" "&&" $time sqlite3 $output -nullvalue "[NULL]" -header "$db" \'"$prefix$query"\' ")" "2>&1"
fi
}
{
if (( $html )) ; then
cat <<EOF
<head>
<style>
body {
font:8pt monospace;
}
table {
border: 1px solid black;
border-collapse: collapse;
}
</style>
</head>
<body>
<table border="1">
EOF
run_query
cat <<EOF
</table>
<body>
EOF
else
run_query
fi
} | $filter | $pager