#!/usr/bin/env bash # Control limpio del warning "could not resolve dependency loop": # la MISMA extension trivial, dos veces, y lo unico que cambia entre las dos # es owned_schema = true|false en el control file. set -u B=$HOME/pg5018/i-fix EXT=$B/share/postgresql/extension D=$HOME/pg5018/data_ctl P=55422 for n in loopdemo_owned loopdemo_plain; do cat > "$EXT/$n--1.0.sql" < "$EXT/loopdemo_owned.control" <<'EOF' comment = 'demo con schema propio' default_version = '1.0' relocatable = false owned_schema = true schema = 'loopdemo_owned' EOF cat > "$EXT/loopdemo_plain.control" <<'EOF' comment = 'demo sin schema propio' default_version = '1.0' relocatable = false schema = 'loopdemo_plain' EOF rm -rf "$D"; "$B/bin/initdb" -D "$D" -U postgres --no-sync -A trust > /dev/null 2>&1 "$B/bin/pg_ctl" -D "$D" -o "-p $P" -l "$HOME/pg5018/ctl.log" -w start > /dev/null 2>&1 for n in loopdemo_owned loopdemo_plain; do "$B/bin/psql" -p $P -U postgres -qc "CREATE DATABASE d_$n" 2>/dev/null # la extension "plain" necesita su schema creado a mano [ "$n" = loopdemo_plain ] && "$B/bin/psql" -p $P -U postgres -d "d_$n" -qc "CREATE SCHEMA $n" 2>/dev/null if ! "$B/bin/psql" -p $P -U postgres -d "d_$n" -qc "CREATE EXTENSION $n" 2>"/tmp/ce_$n.err"; then echo " $n: no se pudo crear -> $(head -1 "/tmp/ce_$n.err")"; continue fi "$B/bin/pg_dump" -p $P -U postgres -d "d_$n" > "/tmp/dump_$n.sql" 2> "/tmp/dump_$n.err" printf " %-16s owned_schema=%-5s -> " "$n" "$([ "$n" = loopdemo_owned ] && echo true || echo false)" if [ -s "/tmp/dump_$n.err" ]; then echo "WARNING"; sed 's/^/ /' "/tmp/dump_$n.err" | head -4 else echo "sin warnings" fi done "$B/bin/pg_ctl" -D "$D" -w stop > /dev/null 2>&1 rm -f "$EXT"/loopdemo_* echo "== FIN"