Now tested on 7.2->7.2 migration; still disabled. Need 7.1 testing now.
authorBruce Momjian <bruce@momjian.us>
Sun, 13 Jan 2002 04:55:44 +0000 (04:55 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 13 Jan 2002 04:55:44 +0000 (04:55 +0000)
src/bin/pg_dump/pg_upgrade

index dcf93a64360719b7998fe8fb551c53d1d3cab906..42696b06c355f51f2ca1e042e5049c5fdee0d84f 100755 (executable)
@@ -3,7 +3,7 @@
 # pg_upgrade: update a database without needing a full dump/reload cycle.
 # CAUTION: Read the manual page before trying to use this!
 
-# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/pg_upgrade,v 1.31 2002/01/13 01:22:27 momjian Exp $
+# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/pg_upgrade,v 1.32 2002/01/13 04:55:44 momjian Exp $
 #
 # NOTE: we must be sure to update the version-checking code a few dozen lines
 # below for each new PostgreSQL release.
 # Set this to "Y" to enable this program
 ENABLE="N"
 
+if [ "$ENABLE" != "Y" ]
+then
+   echo "Sorry, $0 cannot upgrade database
+version $SRC_VERSION to $DST_VERSION." 1>&2
+   echo "The on-disk structure of tables has changed." 1>&2
+   echo "You will need to dump and restore using pg_dumpall." 1>&2
+   exit 1
+fi
+
+
 # UPGRADE_VERSION is the expected old database version
 UPGRADE_VERSION="7.1"
 CUR_VERSION="7.2"
@@ -52,7 +62,7 @@ OLDDIR="$INFODIR/data"
 make_dbobjoidmap()
 {
    psql -d template1 -At -c "SELECT datname FROM pg_database" |
-   grep -v '^template0$' | # template1 OK
+   grep -v '^template0$' |
    while read DB
    do  
        QUERY="`echo \" SELECT  relname, oid
@@ -78,7 +88,8 @@ make_dbobjoidmap()
 make_dboidmap()
 {
    psql -d template1 -At -F'   ' -c \
-       'SELECT datname, oid FROM pg_database;'
+       'SELECT datname, oid FROM pg_database;' |
+   grep -v '^template0$'
 }
 
 
@@ -149,24 +160,10 @@ $0 aborted." 1>&2
        echo 
    "However, your database is version $SRC_VERSION;
 $0 aborted." 1>&2
-       exit 1
-   fi
-
-   # Check that input database is of a compatible version (anything with the same
-   # physical layout of user tables and indexes should be OK).  I did not write
-   # something like "$SRC_VERSION -ge $UPGRADE_VERSION" because test(1) isn't bright
-   # enough to compare dotted version strings properly.  Using a case statement
-   # looks uglier but is more flexible.
-   if [ "$ENABLE" != "Y" ]
-   then
-       echo "Sorry, $0 cannot upgrade database
-version $SRC_VERSION to $DST_VERSION." 1>&2
-       echo "The on-disk structure of tables has changed." 1>&2
        echo "You will need to dump and restore using pg_dumpall." 1>&2
        exit 1
    fi
 
-
    # Start server, if needed, so we can do some work.
    if ! pg_ctl status | head -1 | grep -q "is running"
    then    pg_ctl -w start
@@ -220,17 +217,18 @@ $0 aborted." 1>&2
    if [ "$SRC_VERSION" = "7.1" ]
    then
        psql -d template1 -At -c "SELECT datname FROM pg_database" |
-       grep -v '^template0$' | # template1 OK
+       grep -v '^template0$' |
        while read DB
-       do  
-           echo "\\connect $DB"
+       do
+           # We use awk as a portable way to output a backslash
+           awk 'BEGIN {print "\\connect '"$DB"'"}'
            psql -d "$DB" -At -c "
                SELECT  relname
                FROM    pg_class
                WHERE   relkind = 'S';" |
            while read SEQUENCE
            do
-               VALUE=`psql -d template1 -At -c "SELECT last_value 
+               VALUE=`psql -d "$DB" -At -c "SELECT last_value 
                                 FROM \"$SEQUENCE\";"`
                echo "SELECT setval ('$SEQUENCE', $VALUE, true);"
            done
@@ -263,7 +261,8 @@ $0 aborted." 1>&2
 $0 aborted." 1>&2
        exit 1
    fi
-   echo "Plase 1 completed.  Continue with the steps outlined in the $0 manual page."
+   echo "Plase 1 completed.
+Continue with the steps outlined in the $0 manual page."
    exit 0
 fi
 
@@ -520,6 +519,8 @@ $0 aborted." 1>&2
    fi
 fi
 
+echo
+echo
 echo "You may remove the old database files with 'rm -r pg_upgrade'."
 
 exit 0