test.sh
text/x-sh
Filename: test.sh
Type: text/x-sh
Part: 0
#!/bin/bash
if [ -z "$1" ]
then
size="8kB"
else
size=$1
fi
echo 'Clean up'
echo $size
./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 = '10GB'
work_mem = '1GB'
logical_decoding_work_mem = '2097151 kB'
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