bug-ext.bash
application/octet-stream
Filename: bug-ext.bash
Type: application/octet-stream
Part: 0
#!/bin/bash
shopt -s -o errexit nounset
PGBIN="/tmp/bug_ext/bin/"
PGDATA="/tmp/bug_ext/data"
PGLOG="/tmp/bug_ext/postgresql.log"
PGEXTDIR="$("$PGBIN"/pg_config --sharedir)/extension"
export PGPORT=5439
rm -rf "$PGDATA"
"$PGBIN"/initdb -U postgres "$PGDATA"
touch "$PGEXTDIR"/buggingext.control
cat <<'EOS' > "$PGEXTDIR"/buggingext--1.0.0.sql
CREATE TABLE t ( id TEXT );
CREATE FUNCTION evt_ddl_fnct()
RETURNS EVENT_TRIGGER
LANGUAGE plpgsql
AS 'BEGIN END;';
CREATE EVENT TRIGGER evt_ddl_trg ON table_rewrite
EXECUTE PROCEDURE evt_ddl_fnct();
EOS
cat <<'EOF' > "$PGEXTDIR"/buggingext--1.0.0--2.0.0.sql
ALTER EVENT TRIGGER evt_ddl_trg DISABLE;
ALTER TABLE t DROP COLUMN id;
EOF
"$PGBIN"/postgres -D "$PGDATA" --port="$PGPORT" --log_error_verbosity=verbose --restart_after_crash=off &> "$PGLOG" &
until "${PGBIN}"/pg_isready --port="$PGPORT" -q; do sleep .5; done
"${PGBIN}"/psql --port="$PGPORT" -XAta <<EOS
SELECT version();
CREATE EXTENSION buggingext VERSION '1.0.0';
ALTER EXTENSION buggingext UPDATE TO '2.0.0';
EOS
pkill -F "$PGDATA"/postmaster.pid || true
rm -rf "$PGDATA"
rm "$PGEXTDIR"/buggingext*