#! /bin/bash

COMMAND=$1

DBNAME="test"
TABLE="test_table"
OUTPUT="${1}_patched"
N=100
QUERY=""

setup() {
    rm -f ${OUTPUT}
    psql -c "CREATE EXTENSION IF NOT EXISTS pg_visibility;" ${DBNAME}
    psql -c "DROP TABLE IF EXISTS ${TABLE}; CREATE TABLE ${TABLE} as select repeat('a', 100) || i || repeat('b', 500) as filler from generate_series(1, 9000000) as i;" ${DBNAME}
}

corrupt() {
    QUERY="SELECT pg_check_visible('${TABLE}'::regclass);"
    psql -c "VACUUM ${TABLE};" ${DBNAME}
}

visibility() {
    QUERY="SELECT * FROM pg_visibility('${TABLE}'::regclass) where blkno = -1;"
}

run () {
    for i in $( seq 1 ${N} )
    do
        # drop_OS_cache;
        psql -c "${QUERY}" ${DBNAME} | grep 'Time' | awk -F ' ' '{print $2}' >> ${OUTPUT};
    done
}

case $COMMAND in

    corrupt)
        setup
        corrupt
        run
    ;;

    visibility)
        setup
        visibility
        run
    ;;

    *)
        echo "wrong command"
        exit 1
    ;;
esac
