]> granicus.if.org Git - postgresql/commitdiff
Preserver pg_log and pg_variable in upgrade. Cleanups.
authorBruce Momjian <bruce@momjian.us>
Mon, 31 Aug 1998 04:32:18 +0000 (04:32 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 31 Aug 1998 04:32:18 +0000 (04:32 +0000)
src/bin/pg_dump/pg_upgrade
src/man/pg_upgrade.1

index 06cf8e3411b7a9d298bb887fa8bcc9762ec18f69..f9f062520a60b8c74f1a099efa8ca3644fd85071 100755 (executable)
@@ -2,7 +2,7 @@
 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
 
@@ -16,13 +16,12 @@ then        INPUT="$2"
 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
 
@@ -36,8 +35,8 @@ then  echo "You must rename your old /data directory to /$OLDDIR and run initdb."
        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
 
@@ -53,17 +52,12 @@ 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;
@@ -71,16 +65,14 @@ cat $INPUT | awk '  {
  
 #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 \
@@ -91,4 +83,7 @@ do
        fi
 done
 
+mv $OLDDIR/pg_log data
+mv $OLDDIR/pg_variable data
+
 echo "You may removed the $OLDDIR directory with 'rm -r $OLDDIR'."
index e249e11747459cc51671caaf87584d6643c2e190..75c48d096defb8cb4253e69415a31b3e433040db 100644 (file)
@@ -1,12 +1,12 @@
 .\" 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
@@ -15,27 +15,28 @@ First, to be safe, back up your data directory.
 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
@@ -45,13 +46,9 @@ script to create all the databases and tables you had, but with no data.
 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).