trap "rm -f /tmp/$$" 0 1 2 3 15
if [ "$#" -eq 0 ]
-then echo "Usage: $0 [-f inputfile] old_data_dir database" 1>&2
+then echo "Usage: $0 [-f inputfile] old_data_dir" 1>&2
exit 1
fi
else INPUT=""
fi
-if [ "$#" -ne 2 ]
-then echo "Usage: $0 [-f input_file] old_data_dir database" 1>&2
+if [ "$#" -ne 1 ]
+then echo "Usage: $0 [-f inputfile] old_data_dir" 1>&2
exit 1
fi
OLDDIR="$1"
-DATABASE="$2"
# check things
exit 1
fi
-if [ ! -d "./$OLDDIR/data/base/$DATABASE" ]
-then echo "There is not database $DATABASE in ./$OLDDIR/data/base." 1>&2
+if [ ! -d "./$OLDDIR/base/template1" ]
+then echo "There is not database template1 in ./$OLDDIR/base." 1>&2
exit 1
fi
# do I need to create a database?
-if [ "$DATABASE" != "template1" ]
-then echo "Dropping and recreating database $DATABASE." 1>&2
- destroydb "$DATABASE" >/dev/null 2>&1
- createdb "$DATABASE"
-fi
-
-# remove any COPY statements, preserve pgdump_oid setting from pg_dumpall
+# remove any COPY statements
+# we don't even need pgdump_oid because we are moving pg_variable
+# then shouldn't be in there anyway
cat $INPUT | awk ' {
- if (toupper($0) ~ /^COPY / &&
- toupper($0) !~ /^COPY[ ]*PGDUMP_OID/ )
+ if (toupper($0) ~ /^COPY /)
while (getline $0 > 0 && $0 != "\\.")
;
else print $0;
#create empty tables/indexes
-psql "$DATABASE" <"/tmp/$$"
-set -x
+psql "template1" <"/tmp/$$"
for DIR in data/base/*
do
BASEDIR="`basename $DIR`"
if [ -d "$DIR" -a \
- -d "$OLDDIR/$DIR" -a \
- \( "$DATABASE" = "$BASEDIR" -o "$DATABASE" = "template1" \) ]
- then for FILE in $OLDDIR/$DIR/*
+ -d "$OLDDIR/base/$BASEDIR" -a \( "$BASEDIR" != "template1" \) ]
+ then for FILE in $OLDDIR/base/$BASEDIR/*
do
BASEFILE="`basename $FILE`"
if [ `expr "$BASEFILE" : "pg_"` -ne 3 -a \
fi
done
+mv $OLDDIR/pg_log data
+mv $OLDDIR/pg_variable data
+
echo "You may removed the $OLDDIR directory with 'rm -r $OLDDIR'."
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/pg_upgrade.1,v 1.3 1998/08/30 13:14:00 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/pg_upgrade.1,v 1.4 1998/08/31 04:32:18 momjian Exp $
.TH pg_upgrade UNIX 1/20/96 PostgreSQL PostgreSQL
.SH NAME
pg_upgrade - allows upgrade from a previous release without reloading data
.SH SYNOPSIS
.BR pg_upgrade
-[-f input_file] old_data_dir database
+[-f input_file] old_data_dir
.SH DESCRIPTION
.IR "pg_upgrade"
is a utility for upgrading from a previous PostgreSQL release
Then, use:
.nf
- pg_dumpall -s -o >db.out
+ pg_dumpall -s >db.out
.fi
-to dump out your old database definitions without data,
-while perserving the max system oid.
+to dump out your old database definitions without any data.
+Stop the postmaster and all backends.
.PP
Then rename (using
.IR mv )
your old pgsql /data directory to /data.old and do a
.IR "make install"
to install the new binaries.
-Then run
+Run
.IR initdb
to create a new
.IR template1
database containing the system tables for the new release.
+Start the new postmaster,
.IR cd
to the pgsql main directory, and type:
.nf
- pg_upgrade -f db.out data.old template1
+ pg_upgrade -f db.out data.old
.fi
The system will do some checking to make sure everything is properly
It will then move the data files from /data.old into the proper
.IR /data
directory.
-You can then start the
-.IR postmaster
-and check out the data.
+You can then check out the data.
You can delete the
.IR /data.old
directory when you are finished.
-.PP
-It can also be used for individual databases.
.SH "SEE ALSO"
pg_dumpall(1).