#!/bin/bash
. ./pgenv.sh
out=results.csv; echo "script,clients,tps,lat_avg_ms,p50_ms,p95_ms,p99_ms,failed" > $out
for s in hot spread append; do
  for c in 1 8 32 64; do
    psql -q -c "UPDATE posts SET view_count = 0; TRUNCATE views; VACUUM ANALYZE posts;" >/dev/null
    rm -f pgbench_log.*
    pgbench -n -f $s.sql -c $c -j 2 -T 60 --log --sampling-rate 0.2 > run_${s}_${c}.txt 2>&1
    tps=$(grep -oP "tps = \K[0-9.]+" run_${s}_${c}.txt | head -1)
    avg=$(grep -oP "latency average = \K[0-9.]+" run_${s}_${c}.txt)
    failed=$(grep -oP "number of failed transactions: \K[0-9]+" run_${s}_${c}.txt)
    read p50 p95 p99 < <(cat pgbench_log.* | awk "{print \$3/1000}" | sort -n | awk "{a[NR]=\$1} END {print a[int(NR*0.5)], a[int(NR*0.95)], a[int(NR*0.99)]}")
    echo "$s,$c,$tps,$avg,$p50,$p95,$p99,${failed:-0}" >> $out
  done
done
psql -tA -c "select max(view_count), sum(view_count) from posts" > hotcheck.txt
echo DONE >> $out
