#!/bin/bash

if [ -z "$1" ]
then
    size="8kB"
else
    size=$1
fi

echo 'Clean up'

pg_ctl stop -D data

rm -rf data* logfile

echo 'Set up'

initdb -D data -U postgres

cat << EOF >> data/postgresql.conf
wal_level = logical
autovacuum = false
checkpoint_timeout = 1h
shared_buffers = '20GB'
work_mem = '20GB'
logical_decoding_work_mem = '40GB'
max_wal_size = 20GB
min_wal_size = 10GB
rb_mem_block_size = $size
EOF

pg_ctl -D data start -w -l logfile

(
    echo -E "SELECT * FROM pg_create_logical_replication_slot('test', 'test_decoding');"
    echo -E "CREATE TABLE foo (id int);"
    echo -E "INSERT INTO foo VALUES (generate_series(1, 10000000));"
) | psql -U postgres

for i in `seq 1 5`
do
(
    echo -E "\timing"
    echo -E "SELECT count(*) FROM pg_logical_slot_peek_changes('test', NULL, NULL);"
) | psql -U postgres
done
