#!/bin/bash

SOCKET_DIR=`pwd`
PG_CTL=/usr/lib/postgresql/9.5/bin/pg_ctl

mkdir data

$PG_CTL initdb -D data

cat << EOF > data/postgresql.conf 
listen_addresses = ''
unix_socket_directories = '$SOCKET_DIR'
EOF

$PG_CTL start -D data

sleep 1

psql -h $SOCKET_DIR -d template1 -c 'CREATE TABLE foo (pk serial primary key, val text);'

TABLE_FILE=`psql -h $SOCKET_DIR -t -d template1 -c "SELECT pg_relation_filepath('foo');"`

echo $TABLE_FILE


psql -h $SOCKET_DIR -d template1 -c "INSERT INTO foo VALUES (1, 'first');"
psql -h $SOCKET_DIR -d template1 -c "INSERT INTO foo VALUES (2, 'second');"
psql -h $SOCKET_DIR -d template1 -c "CHECKPOINT;"

echo 'Starting point: two rows.'
(cd data && xxd $TABLE_FILE) | tail -n 10

psql -h $SOCKET_DIR -d template1 -c "UPDATE foo SET val = 'second' where pk = 2;"
psql -h $SOCKET_DIR -d template1 -c "CHECKPOINT;"

echo 'Updated row with same value.'
(cd data && xxd $TABLE_FILE) | tail -n 10

psql -h $SOCKET_DIR -d template1 -c "INSERT INTO foo VALUES (2, 'second') ON CONFLICT (pk) DO UPDATE SET val = 'second';"
psql -h $SOCKET_DIR -d template1 -c "CHECKPOINT;"

echo '"Upsert" is the same.'
(cd data && xxd $TABLE_FILE) | tail -n 10

$PG_CTL stop -D data



