fix
This commit is contained in:
@@ -850,6 +850,11 @@ subcommand_restore() {
|
|||||||
RESTORE_BACKUP_PATH="$DEFAULT_BACKUP_PATH"
|
RESTORE_BACKUP_PATH="$DEFAULT_BACKUP_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local restore_database="${PG_DATABASE:-}"
|
||||||
|
if [ -f "${RESTORE_BACKUP_PATH:?}/database_name" ]; then
|
||||||
|
restore_database=$(tr -d '\n' < "${RESTORE_BACKUP_PATH:?}/database_name")
|
||||||
|
fi
|
||||||
|
|
||||||
postgres-cleanup
|
postgres-cleanup
|
||||||
|
|
||||||
local data="${PG_WORKING_DIR:?}/data"
|
local data="${PG_WORKING_DIR:?}/data"
|
||||||
@@ -862,7 +867,7 @@ subcommand_restore() {
|
|||||||
tar -xzf "${RESTORE_BACKUP_PATH:?}/pg_wal.tar.gz" -C "${data}/pg_wal"
|
tar -xzf "${RESTORE_BACKUP_PATH:?}/pg_wal.tar.gz" -C "${data}/pg_wal"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
env PG_REUSE= postgres-init
|
env PG_REUSE= PG_DATABASE="$restore_database" postgres-init
|
||||||
|
|
||||||
rm -f "${data}/standby.signal" "${data}/recovery.signal"
|
rm -f "${data}/standby.signal" "${data}/recovery.signal"
|
||||||
restore_namespace
|
restore_namespace
|
||||||
@@ -915,6 +920,7 @@ subcommand_normalize_backup() {
|
|||||||
NORMALIZE_ADMIN_ROLE="postgres"
|
NORMALIZE_ADMIN_ROLE="postgres"
|
||||||
NORMALIZE_PORT="${PG_PORT:-5432}"
|
NORMALIZE_PORT="${PG_PORT:-5432}"
|
||||||
NORMALIZE_PRELOAD_LIBRARIES="${PG_SHARED_PRELOAD_LIBRARIES:-pg_cron}"
|
NORMALIZE_PRELOAD_LIBRARIES="${PG_SHARED_PRELOAD_LIBRARIES:-pg_cron}"
|
||||||
|
NORMALIZE_DATABASE_EXPLICIT=0
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@@ -944,6 +950,7 @@ subcommand_normalize_backup() {
|
|||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
NORMALIZE_DATABASE="$2"
|
NORMALIZE_DATABASE="$2"
|
||||||
|
NORMALIZE_DATABASE_EXPLICIT=1
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--admin-role)
|
--admin-role)
|
||||||
@@ -1061,6 +1068,14 @@ EOF
|
|||||||
___normalize_backup_refresh_collation "$NORMALIZE_SOCKDIR" "$NORMALIZE_PORT" "$NORMALIZE_ADMIN_ROLE" template1
|
___normalize_backup_refresh_collation "$NORMALIZE_SOCKDIR" "$NORMALIZE_PORT" "$NORMALIZE_ADMIN_ROLE" template1
|
||||||
___normalize_backup_refresh_collation "$NORMALIZE_SOCKDIR" "$NORMALIZE_PORT" "$NORMALIZE_ADMIN_ROLE" template0
|
___normalize_backup_refresh_collation "$NORMALIZE_SOCKDIR" "$NORMALIZE_PORT" "$NORMALIZE_ADMIN_ROLE" template0
|
||||||
|
|
||||||
|
if [ "$NORMALIZE_DATABASE_EXPLICIT" -eq 0 ]; then
|
||||||
|
detected_database=$(psql -h "$NORMALIZE_SOCKDIR" -p "$NORMALIZE_PORT" -U "$NORMALIZE_ADMIN_ROLE" -d postgres \
|
||||||
|
-tAc "SELECT datname FROM pg_database WHERE datallowconn AND NOT datistemplate AND datname <> 'postgres' ORDER BY oid LIMIT 1" 2>/dev/null | sed '/^$/d' | head -n 1)
|
||||||
|
if [ -n "$detected_database" ]; then
|
||||||
|
NORMALIZE_DATABASE="$detected_database"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
NORMALIZE_ROLE_SQL=$(___sql_literal "$NORMALIZE_ROLE")
|
NORMALIZE_ROLE_SQL=$(___sql_literal "$NORMALIZE_ROLE")
|
||||||
psql -h "$NORMALIZE_SOCKDIR" -p "$NORMALIZE_PORT" -U "$NORMALIZE_ADMIN_ROLE" -d postgres \
|
psql -h "$NORMALIZE_SOCKDIR" -p "$NORMALIZE_PORT" -U "$NORMALIZE_ADMIN_ROLE" -d postgres \
|
||||||
-v ON_ERROR_STOP=1 -c "DO \$\$ DECLARE v_role text := $NORMALIZE_ROLE_SQL; BEGIN IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = v_role) THEN EXECUTE format('CREATE ROLE %I LOGIN SUPERUSER', v_role); ELSE EXECUTE format('ALTER ROLE %I LOGIN SUPERUSER', v_role); END IF; END \$\$;"
|
-v ON_ERROR_STOP=1 -c "DO \$\$ DECLARE v_role text := $NORMALIZE_ROLE_SQL; BEGIN IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = v_role) THEN EXECUTE format('CREATE ROLE %I LOGIN SUPERUSER', v_role); ELSE EXECUTE format('ALTER ROLE %I LOGIN SUPERUSER', v_role); END IF; END \$\$;"
|
||||||
@@ -1082,6 +1097,7 @@ EOF
|
|||||||
rm -rf "$NORMALIZE_OUTPUT_ABS"
|
rm -rf "$NORMALIZE_OUTPUT_ABS"
|
||||||
mkdir -p "$NORMALIZE_OUTPUT_ABS"
|
mkdir -p "$NORMALIZE_OUTPUT_ABS"
|
||||||
tar -czf "$NORMALIZE_OUTPUT_ABS/base.tar.gz" -C "$NORMALIZE_PGDATA" .
|
tar -czf "$NORMALIZE_OUTPUT_ABS/base.tar.gz" -C "$NORMALIZE_PGDATA" .
|
||||||
|
printf '%s\n' "$NORMALIZE_DATABASE" > "$NORMALIZE_OUTPUT_ABS/database_name"
|
||||||
|
|
||||||
___normalize_backup_cleanup "$NORMALIZE_TMPDIR" ""
|
___normalize_backup_cleanup "$NORMALIZE_TMPDIR" ""
|
||||||
trap - EXIT INT HUP
|
trap - EXIT INT HUP
|
||||||
@@ -1721,6 +1737,9 @@ subcommand_diff() {
|
|||||||
if [ -z "$DIFF_BACKUP_PATH" ]; then
|
if [ -z "$DIFF_BACKUP_PATH" ]; then
|
||||||
DIFF_BACKUP_PATH="$DEFAULT_BACKUP_PATH"
|
DIFF_BACKUP_PATH="$DEFAULT_BACKUP_PATH"
|
||||||
fi
|
fi
|
||||||
|
if [ -f "$DIFF_BACKUP_PATH/database_name" ]; then
|
||||||
|
DIFF_DATABASE=$(tr -d '\n' < "$DIFF_BACKUP_PATH/database_name")
|
||||||
|
fi
|
||||||
|
|
||||||
DIFF_TMPDIR="${LOCAL_DIR}/focus/database-diff-operation"
|
DIFF_TMPDIR="${LOCAL_DIR}/focus/database-diff-operation"
|
||||||
DIFF_PGDATA1="$DIFF_TMPDIR/pgdata1"
|
DIFF_PGDATA1="$DIFF_TMPDIR/pgdata1"
|
||||||
|
|||||||
Reference in New Issue
Block a user