setup.sh
application/x-sh
#! /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