#!/bin/bash
set -e

PGDB=/tmp/pgtest/db
PGPREFIX=/tmp/pgtest

[ -f $PGPREFIX/bin/pg_ctl ] && [ -d "$PGDB" ] && $PGPREFIX/bin/pg_ctl -w  -D "$PGDB" stop >/dev/null || true

[ -d /tmp/pgtest ] && rm -rf /tmp/pgtest

#git checkout REL_14_STABLE
git reset --hard HEAD >/dev/null; git clean -dfx >/dev/null
CPPFLAGS="-O0" ./configure --prefix=$PGPREFIX --enable-cassert --enable-debug >/dev/null && make -j8 >/dev/null && make -j8 -C contrib/btree_gist && make install >/dev/null && make install -C contrib/btree_gist >/dev/null && make install -C contrib/pageinspect >/dev/null

export PATH="$PGPREFIX/bin:$PATH"
export LD_LIBRARY_PATH="$PGPREFIX/lib"
export ON_ERROR_STOP=1

initdb -D "$PGDB"

pg_ctl -w -t 5 -D "$PGDB" -l server.log start

make installcheck -C contrib/btree_gist
# or
#LANG=cs_CZ.iso88592 make check -C contrib/btree_gist

pg_ctl -w -t 5 -D "$PGDB" stop

wget https://www.postgresql.org/message-id/attachment/129615/fix-btree_gist-bpchar-trimming.patch -O - | git apply
make -C contrib/btree_gist
make install -C contrib/btree_gist
pg_ctl -w -t 5 -D "$PGDB" -l server.log start

perl -0pe 's/.*CREATE INDEX[^;]+;\s+//gms' contrib/btree_gist/sql/char.sql > $PGPREFIX/char.sql
perl -0pe 's/.*CREATE INDEX[^;]+;\s+//gms' contrib/btree_gist/expected/char.out > $PGPREFIX/char.expected
# for LANG=cs_CZ.iso88592
# perl -0pe 's/.*CREATE INDEX[^;]+;\s+//gms' contrib/btree_gist/expected/char_1.out > $PGPREFIX/char.expected

psql -aqX contrib_regression -f $PGPREFIX/char.sql > $PGPREFIX/char.out
echo "Differences after upgrade but before REINDEX:"
LANG=C diff -us $PGPREFIX/char.out $PGPREFIX/char.expected || true

psql -aq contrib_regression -c "REINDEX INDEX charidx"

psql -aqX contrib_regression -f $PGPREFIX/char.sql > $PGPREFIX/char.out
echo "Differences after upgrade and REINDEX:"
LANG=C diff -us $PGPREFIX/char.out $PGPREFIX/char.expected || true

pg_ctl -w  -D "$PGDB" stop >/dev/null
