Skip to content

Instantly share code, notes, and snippets.

@brianpursley
Last active December 20, 2024 17:21
Show Gist options
  • Save brianpursley/b64db23c62b043e4b52929c1c3b4ae43 to your computer and use it in GitHub Desktop.
Save brianpursley/b64db23c62b043e4b52929c1c3b4ae43 to your computer and use it in GitHub Desktop.
Script to test pgmq migrations
#!/bin/sh
set -e
# Cleanup
cleanup() {
docker stop migration_test_db > /dev/null 2>&1
}
trap cleanup EXIT INT
# Setup
docker run -d --name migration_test_db -p 5432:5432 --rm quay.io/tembo/tembo-local
docker exec migration_test_db /bin/sh -c "psql -U postgres -c \"SELECT version();\""
docker exec migration_test_db /bin/sh -c "psql -U postgres -c \"CREATE DATABASE migration_test;\""
install_pgmq() {
echo "Installing pgmq version ${1}..."
docker exec migration_test_db /bin/sh -c "$(cat << EOF
set -e
trunk install pgmq --version=${1}
psql -U postgres -d migration_test -c "CREATE EXTENSION pgmq CASCADE;"
EOF
)"
test_pgmq
}
upgrade_pgmq() {
echo "Upgrading pgmq to version ${1}..."
docker exec migration_test_db /bin/sh -c "$(cat << EOF
set -e
trunk install pgmq --version=${1}
psql -U postgres -d migration_test -c "ALTER EXTENSION pgmq UPDATE;"
EOF
)"
test_pgmq
}
test_pgmq() {
docker exec migration_test_db /bin/sh -c "psql -U postgres -d migration_test -c \"$(cat << EOF
SELECT extversion FROM pg_extension WHERE extname = 'pgmq';
SELECT pgmq.create('my_queue');
SELECT * FROM pgmq.send('my_queue', '{\"foo\": \"bar1\"}');
SELECT * FROM pgmq.read('my_queue', 1, 1);
SELECT * FROM pgmq.delete('my_queue', 1);
SELECT pgmq.drop_queue('my_queue');
EOF
)\""
}
# WORKS -->
install_pgmq 0.25.0
upgrade_pgmq 0.26.0
upgrade_pgmq 0.27.0
upgrade_pgmq 0.28.0
upgrade_pgmq 0.31.0
upgrade_pgmq 0.32.0
upgrade_pgmq 0.33.0
upgrade_pgmq 1.0.0
upgrade_pgmq 1.1.0
upgrade_pgmq 1.2.0
upgrade_pgmq 1.3.3
upgrade_pgmq 1.4.0
upgrade_pgmq 1.4.1
upgrade_pgmq 1.4.2
upgrade_pgmq 1.4.3
upgrade_pgmq 1.4.4
upgrade_pgmq 1.4.5
upgrade_pgmq 1.5.0
# FAILS --> ERROR: could not find function "pgmq_detach_archive_wrapper" in file "/var/lib/postgresql/data/tembo/15/lib/pgmq.so"
# install_pgmq 0.28.0
# upgrade_pgmq 1.3.3
# WORKS -->
# install_pgmq 0.28.0
# upgrade_pgmq 1.2.0
# upgrade_pgmq 1.3.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment