]> granicus.if.org Git - postgresql/commitdiff
Work around NetBSD shell issue in pg_upgrade test script.
authorAndrew Dunstan <andrew@dunslane.net>
Mon, 28 Oct 2013 15:45:50 +0000 (11:45 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Mon, 28 Oct 2013 15:45:50 +0000 (11:45 -0400)
The NetBSD shell apparently returns non-zero from an unset command if
the variable is already unset. This matters when, as in pg_upgrade's
test.sh, we are working under 'set -e'. To protect against this, we
first set the PG variables to an empty string before unsetting them
completely.

Error found on buildfarm member coypu, solution from RĂ©mi Zara.

contrib/pg_upgrade/test.sh

index 30bc5274317c206805fe4d918c8939be923e74a0..a109b5b196349b984353b149f1115685980f7449 100644 (file)
@@ -76,14 +76,18 @@ mkdir "$logdir"
 
 # Clear out any environment vars that might cause libpq to connect to
 # the wrong postmaster (cf pg_regress.c)
-unset PGDATABASE
-unset PGUSER
-unset PGSERVICE
-unset PGSSLMODE
-unset PGREQUIRESSL
-unset PGCONNECT_TIMEOUT
-unset PGHOST
-unset PGHOSTADDR
+#
+# Some shells, such as NetBSD's, return non-zero from unset if the variable
+# is already unset. Since we are operating under 'set -e', this causes the
+# script to fail. To guard against this, set them all to an empty string first.
+PGDATABASE="";        unset PGDATABASE
+PGUSER="";            unset PGUSER
+PGSERVICE="";         unset PGSERVICE
+PGSSLMODE=""          unset PGSSLMODE
+PGREQUIRESSL="";      unset PGREQUIRESSL
+PGCONNECT_TIMEOUT=""; unset PGCONNECT_TIMEOUT
+PGHOST=""             unset PGHOST
+PGHOSTADDR="";        unset PGHOSTADDR
 
 # Select a non-conflicting port number, similarly to pg_regress.c
 PG_VERSION_NUM=`grep '#define PG_VERSION_NUM' $newsrc/src/include/pg_config.h | awk '{print $3}'`