I propose a patch to make pg_regress.sh more modular. I'd like to do
ecpg regression tests for my soc project and don't want to duplicate
functionality. I put those parts of the code that parse the command line
and set up the environment variables and the database into sh-functions
and moved them to a separate file. pg_regress.sh then includes this
file and calls these functions as any other regression framework can
then do.

The patch adds a new file pg_regress.inc.sh.in.

Before there was:

pg_regress.sh -> (replacements) -> pg_regress

now I have:

pg_regress.inc.sh.in -> (replacements) -> pg_regress.inc.sh
There is nothing to replace in pg_regress.sh so I made that get called
for the regression tests instead of pg_regress.

The patch also adds a new option, --listen-on-tcp that makes the server
listen on the tcp port even when unix sockets can be used.


There were two issues I noticed with the old script:

DROP regressionuser[1-3], regressiongroup1 was done previously before
running the tests, that is, after creating the regression database and
before installing PLs into it.  The only effect of this that I can see
is that if a regression test aborts in privileges.sql and does use an
already running server then the next run could lead to a failed
privileges test. If privileges.sql gets executed completely then it will
clean up anyway in the end which makes lingering roles from this test
quite unprobable. I kept the behavior however but do the cleanup now
at the beginning of the very privileges.sql.

Next, this comment seems to be not true anymore:

  # ----------
  # Set backend timezone and datestyle explicitly
  #
  # To pass the horology test in its current form, the postmaster must be
  # started with PGDATESTYLE=ISO, while the frontend must be started with
  # PGDATESTYLE=Postgres.  We set the postmaster values here and change
  # to the frontend settings after the postmaster has been started.
  # ----------

  PGTZ='PST8PDT'; export PGTZ
  PGDATESTYLE='ISO, MDY'; export PGDATESTYLE

It seems that the affected regression tests set those values already in
the .sql files. Also note that if this was true, you couldn't use an
already running server without special adaptions.


Joachim

diff -cNr cvs/pgsql/src/test/regress/expected/privileges.out 
cvs.build/pgsql/src/test/regress/expected/privileges.out
*** cvs/pgsql/src/test/regress/expected/privileges.out  2006-01-23 
23:52:37.000000000 +0100
--- cvs.build/pgsql/src/test/regress/expected/privileges.out    2006-06-19 
10:40:42.000000000 +0200
***************
*** 1,6 ****
--- 1,15 ----
  --
  -- Test access privileges
  --
+ -- Prevent NOTICEs whether or not the role existed
+ SET client_min_messages TO 'warning';
+ DROP ROLE IF EXISTS regressgroup1;
+ DROP ROLE IF EXISTS regressgroup2;
+ DROP ROLE IF EXISTS regressuser1;
+ DROP ROLE IF EXISTS regressuser2;
+ DROP ROLE IF EXISTS regressuser3;
+ DROP ROLE IF EXISTS regressuser4;
+ SET client_min_messages TO 'notice';
  CREATE USER regressuser1;
  CREATE USER regressuser2;
  CREATE USER regressuser3;
diff -cNr cvs/pgsql/src/test/regress/GNUmakefile 
cvs.build/pgsql/src/test/regress/GNUmakefile
*** cvs/pgsql/src/test/regress/GNUmakefile      2006-03-24 08:11:21.000000000 
+0100
--- cvs.build/pgsql/src/test/regress/GNUmakefile        2006-06-19 
11:03:02.000000000 +0200
***************
*** 40,48 ****
  
  # Build regression test driver
  
! all: pg_regress
  
! pg_regress: pg_regress.sh GNUmakefile $(top_builddir)/src/Makefile.global
        sed -e 's,@bindir@,$(bindir),g' \
            -e 's,@libdir@,$(libdir),g' \
            -e 's,@pkglibdir@,$(pkglibdir),g' \
--- 40,48 ----
  
  # Build regression test driver
  
! all: pg_regress.sh
  
! pg_regress.inc.sh: pg_regress.inc.sh.in GNUmakefile 
$(top_builddir)/src/Makefile.global
        sed -e 's,@bindir@,$(bindir),g' \
            -e 's,@libdir@,$(libdir),g' \
            -e 's,@pkglibdir@,$(pkglibdir),g' \
***************
*** 53,65 ****
            -e 's/@enable_shared@/$(enable_shared)/g' \
            -e 's/@GCC@/$(GCC)/g' \
          $< >$@
-       chmod a+x $@
  
! install: pg_regress
!       $(INSTALL_SCRIPT) pg_regress '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress'
  
  uninstall:
!       rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress'
  
  
  # Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE C.
--- 53,66 ----
            -e 's/@enable_shared@/$(enable_shared)/g' \
            -e 's/@GCC@/$(GCC)/g' \
          $< >$@
  
! pg_regress.sh: pg_regress.inc.sh
! 
! install: pg_regress.sh
!       $(INSTALL_SCRIPT) pg_regress.sh 
'$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress.sh'
  
  uninstall:
!       rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress.sh'
  
  
  # Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE C.
***************
*** 143,159 ****
  check: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) 
--temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
  
  installcheck: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
  
  installcheck-parallel: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
  
  
  # old interfaces follow...
--- 144,160 ----
  check: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress.sh --temp-install --top-builddir=$(top_builddir) 
--temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
  
  installcheck: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress.sh --schedule=$(srcdir)/serial_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
  
  installcheck-parallel: all
        -rm -rf ./testtablespace
        mkdir ./testtablespace
!       $(SHELL) ./pg_regress.sh --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
  
  
  # old interfaces follow...
***************
*** 163,172 ****
  runtest-parallel: installcheck-parallel
  
  bigtest:
!       $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) numeric_big 
  
  bigcheck:
!       $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) 
--temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE) 
numeric_big
  
  
  ##
--- 164,173 ----
  runtest-parallel: installcheck-parallel
  
  bigtest:
!       $(SHELL) ./pg_regress.sh --schedule=$(srcdir)/serial_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) numeric_big 
  
  bigcheck:
!       $(SHELL) ./pg_regress.sh --temp-install --top-builddir=$(top_builddir) 
--temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule 
--multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE) 
numeric_big
  
  
  ##
***************
*** 177,183 ****
  # things built by `all' target
        rm -f $(NAME)$(DLSUFFIX) $(OBJS)
        $(MAKE) -C $(contribdir)/spi clean
!       rm -f $(output_files) $(input_files) pg_regress
  # things created by various check targets
        rm -rf testtablespace
        rm -rf results tmp_check log
--- 178,184 ----
  # things built by `all' target
        rm -f $(NAME)$(DLSUFFIX) $(OBJS)
        $(MAKE) -C $(contribdir)/spi clean
!       rm -f $(output_files) $(input_files) pg_regress.inc.sh
  # things created by various check targets
        rm -rf testtablespace
        rm -rf results tmp_check log
diff -cNr cvs/pgsql/src/test/regress/pg_regress.inc.sh.in 
cvs.build/pgsql/src/test/regress/pg_regress.inc.sh.in
*** cvs/pgsql/src/test/regress/pg_regress.inc.sh.in     1970-01-01 
01:00:00.000000000 +0100
--- cvs.build/pgsql/src/test/regress/pg_regress.inc.sh.in       2006-06-19 
10:45:47.000000000 +0200
***************
*** 0 ****
--- 1,587 ----
+ message(){
+     _dashes='==============' # 14
+     _spaces='                                      ' # 38
+     _msg=`echo "$1$_spaces" | cut -c 1-38`
+     echo "$_dashes $_msg $_dashes"
+ }
+ 
+ build_help(){
+ help="\
+ PostgreSQL regression test driver
+ 
+ Usage: $me [options...] [extra tests...]
+ 
+ Options:
+   --dbname=DB               use database DB (default \`regression')
+   --debug                   turn on debug mode in programs that are run
+   --inputdir=DIR            take input files from DIR (default \`.')
+   --load-language=lang      load the named language before running the
+                             tests; can appear multiple times
+   --max-connections=N       maximum number of concurrent connections
+                             (default is 0 meaning unlimited)
+   --multibyte=ENCODING      use ENCODING as the multibyte encoding, and
+                             also run a test by the same name
+   --outputdir=DIR           place output files in DIR (default \`.')
+   --temp-install[=DIR]      create a temporary installation (in DIR)
+   --no-locale               use C locale
+ $1
+ Options for \`temp-install' mode:
+   --top-builddir=DIR        (relative) path to top level build directory
+   --temp-port=PORT          port number to start temp postmaster on
+   --listen-on-tcp           listen on the tcp port as well
+ 
+ Options for using an existing installation:
+   --host=HOST               use postmaster running on HOST
+   --port=PORT               use postmaster running at PORT
+   --user=USER               connect as USER
+ 
+ The exit status is 0 if all tests passed, 1 if some tests failed, and 2
+ if the tests could not be run for some reason.
+ 
+ Report bugs to <pgsql-bugs@postgresql.org>."
+ }
+ 
+ init_vars(){
+       : ${TMPDIR=/tmp}
+       TMPFILE=$TMPDIR/pg_regress.$$
+ 
+       # ----------
+       # Initialize default settings
+       # ----------
+ 
+       : ${inputdir=.}
+       : ${outputdir=.}
+ 
+       libdir='@libdir@'
+       bindir='@bindir@'
+       datadir='@datadir@'
+       host_platform='@host_tuple@'
+       enable_shared='@enable_shared@'
+       [EMAIL PROTECTED]@
+       [EMAIL PROTECTED]@
+ 
+       if [ "$GCC" = yes ]; then
+           compiler=gcc
+       else
+           compiler=cc
+       fi
+ 
+       unset mode
+       unset schedule
+       unset debug
+       unset nolocale
+       unset top_builddir
+       unset temp_install
+       unset multibyte
+ 
+       dbname=regression
+       hostname=localhost
+       maxconnections=0
+       temp_port=65432
+       load_langs=""
+       listen_on_tcp=no
+ 
+       : ${GMAKE='@GMAKE@'}
+ }
+ 
+ parse_general_options(){
+ # ----------
+ # Parse command line options
+ # ----------
+ 
+ while [ "$#" -gt 0 ]
+ do
+     case $1 in
+         --help|-\?)
+                 echo "$help"
+                 exit 0;;
+         --version)
+                 echo "pg_regress (PostgreSQL $VERSION)"
+                 exit 0;;
+         --dbname=*)
+                 dbname=`expr "x$1" : "x--dbname=\(.*\)"`
+                 shift;;
+         --debug)
+                 debug=yes
+                 shift;;
+         --inputdir=*)
+                 inputdir=`expr "x$1" : "x--inputdir=\(.*\)"`
+                 shift;;
+         --listen-on-tcp)
+                 listen_on_tcp=yes
+                 shift;;
+         --load-language=*)
+                 lang=`expr "x$1" : "x--load-language=\(.*\)"`
+                 load_langs="$load_langs $lang"
+                 unset lang
+                 shift;;
+         --multibyte=*)
+                 multibyte=`expr "x$1" : "x--multibyte=\(.*\)"`
+                 shift;;
+         --no-locale)
+                 nolocale=yes
+                 shift;;
+         --temp-install)
+                 temp_install=./tmp_check
+                 shift;;
+         --temp-install=*)
+                 temp_install=`expr "x$1" : "x--temp-install=\(.*\)"`
+                 shift;;
+         --max-connections=*)
+                 maxconnections=`expr "x$1" : "x--max-connections=\(.*\)"`
+                 shift;;
+         --outputdir=*)
+                 outputdir=`expr "x$1" : "x--outputdir=\(.*\)"`
+                 shift;;
+         --top-builddir=*)
+                 top_builddir=`expr "x$1" : "x--top-builddir=\(.*\)"`
+                 shift;;
+         --temp-port=*)
+                 temp_port=`expr "x$1" : "x--temp-port=\(.*\)"`
+                 shift;;
+         --host=*)
+                 PGHOST=`expr "x$1" : "x--host=\(.*\)"`
+                 export PGHOST
+                 unset PGHOSTADDR
+                 shift;;
+         --port=*)
+                 PGPORT=`expr "x$1" : "x--port=\(.*\)"`
+                 export PGPORT
+                 shift;;
+         --user=*)
+                 PGUSER=`expr "x$1" : "x--user=\(.*\)"`
+                 export PGUSER
+                 shift;;
+         -*)
+                 # on error, this will not return but exit
+                 parse_special_options "$1"
+                 shift;;
+         *)
+                 extra_tests="$extra_tests $1"
+                 shift;;
+     esac
+ done
+ }
+ 
+ 
+ 
+ setup_environment_variables(){
+ 
+       # This function has two parts. Part 1 sets/unsets environment variables
+       # independently of what options the script receives.
+       # Part 2 later sets environment variables with respect to the
+       # options given.
+ 
+       # =======
+       # PART 1: Options independent stuff goes here
+       # =======
+ 
+ 
+       # ----------
+       # Unset locale settings
+       # ----------
+ 
+       unset LC_COLLATE LC_CTYPE LC_MONETARY LC_MESSAGES LC_NUMERIC LC_TIME 
LC_ALL LANG LANGUAGE
+ 
+       # On Windows the default locale may not be English, so force it
+       case $host_platform in
+           *-*-cygwin*|*-*-mingw32*)
+               LANG=en
+               export LANG
+               ;;
+       esac
+ 
+       # ----------
+       # On some platforms we can't use Unix sockets.
+       # ----------
+ 
+       case $host_platform in
+           *-*-cygwin* | *-*-mingw32*)
+               listen_on_tcp=yes
+       esac
+ 
+       # ----------
+       # Set up diff to ignore horizontal white space differences.
+       # ----------
+ 
+       case $host_platform in
+           *-*-sco3.2v5*)
+               DIFFFLAGS=-b;;
+           *)
+               DIFFFLAGS=-w;;
+       esac
+ 
+       # ----------
+       # Check for echo -n vs echo \c
+       # ----------
+ 
+       if echo '\c' | grep c >/dev/null 2>&1; then
+           ECHO_N='echo -n'
+           ECHO_C=''
+       else
+           ECHO_N='echo'
+           ECHO_C='\c'
+       fi
+ 
+       # ----------
+       # Set up SQL shell for the test.
+       # ----------
+ 
+       psql_test_options="-a -q -X $psql_options"
+ 
+ 
+ 
+       # =======
+       # PART 2: Options dependent stuff goes here
+       # =======
+ 
+       LOGDIR=$outputdir/log
+ 
+       # ----------
+       # warn of Cygwin likely failure if maxconnections = 0
+       # and we are running parallel tests
+       # ----------
+ 
+       case $host_platform in
+           *-*-cygwin*)
+               case "$schedule" in
+                   *parallel_schedule*)
+                       if [ $maxconnections -eq 0 ] ; then
+                           echo Using unlimited parallel connections is likely 
to fail or hang on Cygwin.
+                           echo Try \"$me --max-connections=n\" or \"gmake 
MAX_CONNECTIONS=n check\"
+                           echo with n = 5 or 10 if this happens.
+                           echo
+                       fi
+                       ;;
+               esac
+               ;;
+       esac
+ 
+       # ----------
+       # Set up multibyte environment
+       # ----------
+ 
+       if [ -n "$multibyte" ]; then
+           PGCLIENTENCODING=$multibyte
+           export PGCLIENTENCODING
+           encoding_opt="-E $multibyte"
+       else
+           unset PGCLIENTENCODING
+       fi
+ }
+ 
+ do_temp_install(){
+     if echo x"$temp_install" | grep -v '^x/' >/dev/null 2>&1; then
+         temp_install="`pwd`/$temp_install"
+     fi
+ 
+     bindir=$temp_install/install/$bindir
+     libdir=$temp_install/install/$libdir
+     datadir=$temp_install/install/$datadir
+     PGDATA=$temp_install/data
+ 
+     if [ "$unix_sockets" = no ]; then
+         PGHOST=$hostname
+         export PGHOST
+         unset PGHOSTADDR
+     else
+         unset PGHOST
+         unset PGHOSTADDR
+     fi
+ 
+     # since Makefile isn't very bright, check for out-of-range temp_port
+     if [ "$temp_port" -ge 1024 -a "$temp_port" -le 65535 ] ; then
+       PGPORT=$temp_port
+     else
+       PGPORT=65432
+     fi
+     export PGPORT
+ 
+     # Get rid of environment stuff that might cause psql to misbehave
+     # while contacting our temp installation
+     unset PGDATABASE PGUSER PGSERVICE PGSSLMODE PGREQUIRESSL PGCONNECT_TIMEOUT
+ 
+     # ----------
+     # Set up shared library paths, needed by psql and pg_encoding
+     # (if you run multibyte).  LD_LIBRARY_PATH covers many platforms.
+     # DYLD_LIBRARY_PATH works on Darwin, and maybe other Mach-based systems.
+     # Feel free to account for others as well.
+     # ----------
+ 
+     if [ -n "$LD_LIBRARY_PATH" ]; then
+         LD_LIBRARY_PATH="$libdir:$LD_LIBRARY_PATH"
+     else
+         LD_LIBRARY_PATH=$libdir
+     fi
+     export LD_LIBRARY_PATH
+ 
+     if [ -n "$DYLD_LIBRARY_PATH" ]; then
+         DYLD_LIBRARY_PATH="$libdir:$DYLD_LIBRARY_PATH"
+     else
+         DYLD_LIBRARY_PATH=$libdir
+     fi
+     export DYLD_LIBRARY_PATH
+ 
+     # ----------
+     # Windows needs shared libraries in PATH. (Only those linked into
+     # executables, not dlopen'ed ones)
+     # ----------
+     case $host_platform in
+         *-*-cygwin*|*-*-mingw32*)
+             PATH=$libdir:$PATH
+             export PATH
+             ;;
+     esac
+ 
+     if [ -d "$temp_install" ]; then
+         message "removing existing temp installation"
+         rm -rf "$temp_install"
+     fi
+ 
+     message "creating temporary installation"
+     if [ ! -d "$LOGDIR" ]; then
+         mkdir -p "$LOGDIR" || { (exit 2); exit; }
+     fi
+     $GMAKE -C "$top_builddir" DESTDIR="$temp_install/install" install 
with_perl=no with_python=no >"$LOGDIR/install.log" 2>&1
+ 
+     if [ $? -ne 0 ]
+     then
+         echo
+         echo "$me: installation failed"
+         echo "Examine $LOGDIR/install.log for the reason."
+         echo
+         (exit 2); exit
+     fi
+ 
+     message "initializing database system"
+     [ "$debug" = yes ] && initdb_options="--debug"
+     [ "$nolocale" = yes ] && initdb_options="$initdb_options --no-locale"
+     "$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options 
>"$LOGDIR/initdb.log" 2>&1
+ 
+     if [ $? -ne 0 ]
+     then
+         echo
+         echo "$me: initdb failed"
+         echo "Examine $LOGDIR/initdb.log for the reason."
+         echo
+         (exit 2); exit
+     fi
+ 
+ 
+     # ----------
+     # Start postmaster
+     # ----------
+ 
+     message "starting postmaster"
+     [ "$debug" = yes ] && postmaster_options="$postmaster_options -d 5"
+     if [ "$listen_on_tcp" = yes ]; then
+         postmaster_options="$postmaster_options -c listen_addresses=$hostname"
+     else
+         postmaster_options="$postmaster_options -c listen_addresses="
+     fi
+     "$bindir/postmaster" -D "$PGDATA" -F $postmaster_options 
>"$LOGDIR/postmaster.log" 2>&1 &
+     postmaster_pid=$!
+ 
+     # Wait till postmaster is able to accept connections (normally only
+     # a second or so, but Cygwin is reportedly *much* slower).  Don't
+     # wait forever, however.
+     i=0
+     max=60
+     until "$bindir/psql" -X $psql_options postgres </dev/null 2>/dev/null
+     do
+         i=`expr $i + 1`
+         if [ $i -ge $max ]
+         then
+             break
+         fi
+         if kill -0 $postmaster_pid >/dev/null 2>&1
+         then
+             : still starting up
+         else
+             break
+         fi
+         sleep 1
+     done
+ 
+     if kill -0 $postmaster_pid >/dev/null 2>&1
+     then
+         echo "running on port $PGPORT with pid $postmaster_pid"
+     else
+         echo
+         echo "$me: postmaster did not start"
+         echo "Examine $LOGDIR/postmaster.log for the reason."
+         echo
+         (exit 2); exit
+     fi
+ }
+ 
+ dont_temp_install(){
+     # ----------
+     # Windows needs shared libraries in PATH. (Only those linked into
+     # executables, not dlopen'ed ones)
+     # ----------
+     case $host_platform in
+         *-*-cygwin*|*-*-mingw32*)
+             PATH=$libdir:$PATH
+             export PATH
+             ;;
+     esac
+ 
+     if [ -n "$PGPORT" ]; then
+         port_info="port $PGPORT"
+     else
+         port_info="default port"
+     fi
+ 
+     if [ -n "$PGHOST" ]; then
+         echo "(using postmaster on $PGHOST, $port_info)"
+     else
+         if [ "$unix_sockets" = no ]; then
+             echo "(using postmaster on localhost, $port_info)"
+         else
+             echo "(using postmaster on Unix socket, $port_info)"
+         fi
+     fi
+ 
+     message "dropping database \"$dbname\""
+     "$bindir/dropdb" $psql_options "$dbname"
+     # errors can be ignored
+ }
+ 
+ setup_client_environment_variables(){
+       PGTZ='PST8PDT'; export PGTZ
+       PGDATESTYLE='Postgres, MDY'; export PGDATESTYLE
+ }
+ 
+ # ----------
+ # Exit trap to remove temp file and shut down postmaster
+ # ----------
+ 
+ # Note:  There are some stupid shells (even among recent ones) that
+ # ignore the argument to exit (as in `exit 1') if there is an exit
+ # trap.  The trap (and thus the shell script) will then always exit
+ # with the result of the last shell command before the `exit'.  Hence
+ # we have to write `(exit x); exit' below this point.
+ 
+ exit_trap(){ 
+     savestatus=$1
+     if [ -n "$postmaster_pid" ]; then
+         kill -2 "$postmaster_pid"
+         wait "$postmaster_pid"
+         unset postmaster_pid
+     fi
+     rm -f "$TMPFILE" && exit $savestatus
+ }
+ 
+ sig_trap() {
+     savestatus=$1
+     echo; echo "caught signal"
+     if [ -n "$postmaster_pid" ]; then
+         echo "signalling fast shutdown to postmaster with pid $postmaster_pid"
+         kill -2 "$postmaster_pid"
+         wait "$postmaster_pid"
+         unset postmaster_pid
+     fi
+     (exit $savestatus); exit
+ }
+ 
+ setup_database(){
+       # this receives the name of the database to set up as its argument
+       "$bindir/psql" -q -X $psql_options -c "\
+       alter database \"$1\" set lc_messages to 'C';
+       alter database \"$1\" set lc_monetary to 'C';
+       alter database \"$1\" set lc_numeric to 'C';
+       alter database \"$1\" set lc_time to 'C';" "$1"
+       if [ $? -ne 0 ]; then
+           echo "$me: could not set database default locales"
+           (exit 2); exit
+       fi
+ 
+       # ----------
+       # Install any requested PL languages
+       # ----------
+ 
+       if [ "$enable_shared" = yes ]; then
+           for lang in xyzzy $load_langs ; do    
+               if [ "$lang" != "xyzzy" ]; then
+                   message "installing $lang"
+                   "$bindir/createlang" $psql_options $lang "$1"
+                   if [ $? -ne 0 ] && [ $? -ne 2 ]; then
+                       echo "$me: createlang $lang failed"
+                       (exit 2); exit
+                   fi
+               fi
+           done
+       fi
+ }
+ 
+ create_database(){
+       # ----------
+       # We use template0 so that any installation-local cruft in template1
+       # will not mess up the tests.
+       # ----------
+ 
+       message "creating database \"$1\""
+       "$bindir/createdb" $encoding_opt $psql_options --template template0 "$1"
+       if [ $? -ne 0 ]; then
+           echo "$me: createdb failed"
+           (exit 2); exit
+       fi
+ 
+       setup_database "$1"
+ }
+ 
+ postmaster_shutdown(){
+       # ----------
+       # Server shutdown
+       # ----------
+ 
+       if [ -n "$postmaster_pid" ]; then
+           message "shutting down postmaster"
+           "$bindir/pg_ctl" -s -D "$PGDATA" stop
+           wait "$postmaster_pid"
+           unset postmaster_pid
+       fi
+ }
+ 
+ evaluate(){
+       # ----------
+       # Evaluation
+       # ----------
+ 
+       count_total=`cat "$result_summary_file" | grep '\.\.\.' | wc -l | sed 
's/ //g'`
+       count_ok=`cat "$result_summary_file" | grep '\.\.\. ok' | wc -l | sed 
's/ //g'`
+       count_failed=`cat "$result_summary_file" | grep '\.\.\. FAILED' | wc -l 
| sed 's/ //g'`
+       count_ignored=`cat "$result_summary_file" | grep '\.\.\. failed 
(ignored)' | wc -l | sed 's/ //g'`
+ 
+       echo
+       if [ $count_total -eq $count_ok ]; then
+           msg="All $count_total tests passed."
+           result=0
+       elif [ $count_failed -eq 0 ]; then
+           msg="$count_ok of $count_total tests passed, $count_ignored failed 
test(s) ignored."
+           result=0
+       elif [ $count_ignored -eq 0 ]; then
+           msg="$count_failed of $count_total tests failed."
+           result=1
+       else
+           msg="`expr $count_failed + $count_ignored` of $count_total tests 
failed, $count_ignored of these failures ignored."
+           result=1
+       fi
+ 
+       dashes=`echo " $msg " | sed 's/./=/g'`
+       echo "$dashes"
+       echo " $msg "
+       echo "$dashes"
+       echo
+ 
+       if [ -s "$diff_file" ]; then
+           echo "The differences that caused some tests to fail can be viewed 
in the"
+           echo "file \`$diff_file'.  A copy of the test summary that you see"
+           echo "above is saved in the file \`$result_summary_file'."
+           echo
+       else
+           rm -f "$diff_file" "$result_summary_file"
+       fi
+ }
+ 
diff -cNr cvs/pgsql/src/test/regress/pg_regress.sh 
cvs.build/pgsql/src/test/regress/pg_regress.sh
*** cvs/pgsql/src/test/regress/pg_regress.sh    2006-01-05 04:01:38.000000000 
+0100
--- cvs.build/pgsql/src/test/regress/pg_regress.sh      2006-06-19 
11:39:50.000000000 +0200
***************
*** 2,290 ****
  # $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.64 2006/01/05 
03:01:38 momjian Exp $
  
  me=`basename $0`
- : ${TMPDIR=/tmp}
- TMPFILE=$TMPDIR/pg_regress.$$
  
! help="\
! PostgreSQL regression test driver
  
! Usage: $me [options...] [extra tests...]
! 
! Options:
!   --dbname=DB               use database DB (default \`regression')
!   --debug                   turn on debug mode in programs that are run
!   --inputdir=DIR            take input files from DIR (default \`.')
!   --load-language=lang      load the named language before running the
!                             tests; can appear multiple times
!   --max-connections=N       maximum number of concurrent connections
!                             (default is 0 meaning unlimited)
!   --multibyte=ENCODING      use ENCODING as the multibyte encoding, and
!                             also run a test by the same name
!   --outputdir=DIR           place output files in DIR (default \`.')
    --schedule=FILE           use test ordering schedule from FILE
                              (may be used multiple times to concatenate)
!   --temp-install[=DIR]      create a temporary installation (in DIR)
!   --no-locale               use C locale
! 
! Options for \`temp-install' mode:
!   --top-builddir=DIR        (relative) path to top level build directory
!   --temp-port=PORT          port number to start temp postmaster on
! 
! Options for using an existing installation:
!   --host=HOST               use postmaster running on HOST
!   --port=PORT               use postmaster running at PORT
!   --user=USER               connect as USER
! 
! The exit status is 0 if all tests passed, 1 if some tests failed, and 2
! if the tests could not be run for some reason.
! 
! Report bugs to <pgsql-bugs@postgresql.org>."
! 
! 
! message(){
!     _dashes='==============' # 14
!     _spaces='                                      ' # 38
!     _msg=`echo "$1$_spaces" | cut -c 1-38`
!     echo "$_dashes $_msg $_dashes"
! }
! 
! 
! # ----------
! # Unset locale settings
! # ----------
! 
! unset LC_COLLATE LC_CTYPE LC_MONETARY LC_MESSAGES LC_NUMERIC LC_TIME LC_ALL 
LANG LANGUAGE
! 
! # On Windows the default locale may not be English, so force it
! case $host_platform in
!     *-*-cygwin*|*-*-mingw32*)
!       LANG=en
!       export LANG
!       ;;
! esac
! 
! 
! # ----------
! # Check for echo -n vs echo \c
! # ----------
! 
! if echo '\c' | grep c >/dev/null 2>&1; then
!     ECHO_N='echo -n'
!     ECHO_C=''
! else
!     ECHO_N='echo'
!     ECHO_C='\c'
! fi
! 
! 
! # ----------
! # Initialize default settings
! # ----------
  
! : ${inputdir=.}
! : ${outputdir=.}
  
! libdir='@libdir@'
! bindir='@bindir@'
! datadir='@datadir@'
! host_platform='@host_tuple@'
! enable_shared='@enable_shared@'
! [EMAIL PROTECTED]@
! 
! if [ "$GCC" = yes ]; then
!     compiler=gcc
! else
!     compiler=cc
! fi
! 
! unset mode
! unset schedule
! unset debug
! unset nolocale
! unset top_builddir
! unset temp_install
! unset multibyte
! 
! dbname=regression
! hostname=localhost
! maxconnections=0
! temp_port=65432
! load_langs=""
! 
! : ${GMAKE='@GMAKE@'}
! 
! 
! # ----------
! # Parse command line options
! # ----------
! 
! while [ "$#" -gt 0 ]
! do
      case $1 in
-         --help|-\?)
-                 echo "$help"
-                 exit 0;;
-         --version)
-                 echo "pg_regress (PostgreSQL @VERSION@)"
-                 exit 0;;
-         --dbname=*)
-                 dbname=`expr "x$1" : "x--dbname=\(.*\)"`
-                 shift;;
-         --debug)
-                 debug=yes
-                 shift;;
-         --inputdir=*)
-                 inputdir=`expr "x$1" : "x--inputdir=\(.*\)"`
-                 shift;;
-         --load-language=*)
-                 lang=`expr "x$1" : "x--load-language=\(.*\)"`
-                 load_langs="$load_langs $lang"
-                 unset lang
-                 shift;;
-         --multibyte=*)
-                 multibyte=`expr "x$1" : "x--multibyte=\(.*\)"`
-                 shift;;
-         --no-locale)
-                 nolocale=yes
-                 shift;;
-         --temp-install)
-                 temp_install=./tmp_check
-                 shift;;
-         --temp-install=*)
-                 temp_install=`expr "x$1" : "x--temp-install=\(.*\)"`
-                 shift;;
-         --max-connections=*)
-                 maxconnections=`expr "x$1" : "x--max-connections=\(.*\)"`
-                 shift;;
-         --outputdir=*)
-                 outputdir=`expr "x$1" : "x--outputdir=\(.*\)"`
-                 shift;;
          --schedule=*)
                  foo=`expr "x$1" : "x--schedule=\(.*\)"`
                  schedule="$schedule $foo"
!                 shift;;
!         --top-builddir=*)
!                 top_builddir=`expr "x$1" : "x--top-builddir=\(.*\)"`
!                 shift;;
!         --temp-port=*)
!                 temp_port=`expr "x$1" : "x--temp-port=\(.*\)"`
!                 shift;;
!         --host=*)
!                 PGHOST=`expr "x$1" : "x--host=\(.*\)"`
!                 export PGHOST
!                 unset PGHOSTADDR
!                 shift;;
!         --port=*)
!                 PGPORT=`expr "x$1" : "x--port=\(.*\)"`
!                 export PGPORT
!                 shift;;
!         --user=*)
!                 PGUSER=`expr "x$1" : "x--user=\(.*\)"`
!                 export PGUSER
!                 shift;;
          -*)
                  echo "$me: invalid argument $1" 1>&2
                  exit 2;;
-         *)
-                 extra_tests="$extra_tests $1"
-                 shift;;
      esac
! done
! 
! # ----------
! # warn of Cygwin likely failure if maxconnections = 0
! # and we are running parallel tests
! # ----------
! 
! case $host_platform in
!     *-*-cygwin*)
!       case "$schedule" in
!           *parallel_schedule*)
!               if [ $maxconnections -eq 0 ] ; then
!                   echo Using unlimited parallel connections is likely to fail 
or hang on Cygwin.
!                   echo Try \"$me --max-connections=n\" or \"gmake 
MAX_CONNECTIONS=n check\"
!                   echo with n = 5 or 10 if this happens.
!                   echo
!               fi
!               ;;
!       esac
!       ;;
! esac
! 
! 
! # ----------
! # On some platforms we can't use Unix sockets.
! # ----------
! case $host_platform in
!     *-*-cygwin* | *-*-mingw32*)
!         unix_sockets=no;;
!     *)
!         unix_sockets=yes;;
! esac
  
  
  # ----------
! # Set up diff to ignore horizontal white space differences.
  # ----------
  
! case $host_platform in
!     *-*-sco3.2v5*)
!         DIFFFLAGS=-b;;
!     *)
!         DIFFFLAGS=-w;;
! esac
! 
! 
! # ----------
! # Set backend timezone and datestyle explicitly
! #
! # To pass the horology test in its current form, the postmaster must be
! # started with PGDATESTYLE=ISO, while the frontend must be started with
! # PGDATESTYLE=Postgres.  We set the postmaster values here and change
! # to the frontend settings after the postmaster has been started.
! # ----------
! 
! PGTZ='PST8PDT'; export PGTZ
! PGDATESTYLE='ISO, MDY'; export PGDATESTYLE
  
  
  # ----------
! # Exit trap to remove temp file and shut down postmaster
  # ----------
  
! # Note:  There are some stupid shells (even among recent ones) that
! # ignore the argument to exit (as in `exit 1') if there is an exit
! # trap.  The trap (and thus the shell script) will then always exit
! # with the result of the last shell command before the `exit'.  Hence
! # we have to write `(exit x); exit' below this point.
! 
! exit_trap(){ 
!     savestatus=$1
!     if [ -n "$postmaster_pid" ]; then
!         kill -2 "$postmaster_pid"
!         wait "$postmaster_pid"
!         unset postmaster_pid
!     fi
!     rm -f "$TMPFILE" && exit $savestatus
! }
! 
! trap 'exit_trap $?' 0
! 
! sig_trap() {
!     savestatus=$1
!     echo; echo "caught signal"
!     if [ -n "$postmaster_pid" ]; then
!         echo "signalling fast shutdown to postmaster with pid $postmaster_pid"
!         kill -2 "$postmaster_pid"
!         wait "$postmaster_pid"
!         unset postmaster_pid
!     fi
!     (exit $savestatus); exit
! }
! 
! trap 'sig_trap $?' 1 2 13 15
! 
  
  
  # ----------
  # Scan resultmap file to find which platform-specific expected files to use.
--- 2,58 ----
  # $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.64 2006/01/05 
03:01:38 momjian Exp $
  
  me=`basename $0`
  
! . pg_regress.inc.sh
  
! special_regress_options="\
    --schedule=FILE           use test ordering schedule from FILE
                              (may be used multiple times to concatenate)
! "
  
! build_help "$special_regress_options"
! init_vars
  
! parse_special_options(){
      case $1 in
          --schedule=*)
                  foo=`expr "x$1" : "x--schedule=\(.*\)"`
                  schedule="$schedule $foo"
!                 return 0;;
          -*)
                  echo "$me: invalid argument $1" 1>&2
                  exit 2;;
      esac
! }
  
+ # this will call parse_special_options from above
+ parse_general_options $*
  
  # ----------
! # Set up the environment variables (some of them depend on the options)
  # ----------
+ setup_environment_variables
  
! # see the comment at the defintion of exit_trap() on why we have to write
! # `(exit x); exit' from now on
! trap 'exit_trap $?' 0
! trap 'sig_trap $?' 1 2 13 15
  
+ if [ x"$temp_install" != x"" ]
+ then
+       do_temp_install
+ else
+       dont_temp_install
+ fi
  
  # ----------
! # Postmaster is started, now we can change some environment variables for the
! # client
  # ----------
  
! setup_client_environment_variables
  
+ create_database "$dbname"
  
  # ----------
  # Scan resultmap file to find which platform-specific expected files to use.
***************
*** 321,590 ****
  rm -f $TMPFILE
  
  
- LOGDIR=$outputdir/log
- 
- if [ x"$temp_install" != x"" ]
- then
-     if echo x"$temp_install" | grep -v '^x/' >/dev/null 2>&1; then
-         temp_install="`pwd`/$temp_install"
-     fi
- 
-     bindir=$temp_install/install/$bindir
-     libdir=$temp_install/install/$libdir
-     datadir=$temp_install/install/$datadir
-     PGDATA=$temp_install/data
- 
-     if [ "$unix_sockets" = no ]; then
-         PGHOST=$hostname
-         export PGHOST
-         unset PGHOSTADDR
-     else
-         unset PGHOST
-         unset PGHOSTADDR
-     fi
- 
-     # since Makefile isn't very bright, check for out-of-range temp_port
-     if [ "$temp_port" -ge 1024 -a "$temp_port" -le 65535 ] ; then
-       PGPORT=$temp_port
-     else
-       PGPORT=65432
-     fi
-     export PGPORT
- 
-     # Get rid of environment stuff that might cause psql to misbehave
-     # while contacting our temp installation
-     unset PGDATABASE PGUSER PGSERVICE PGSSLMODE PGREQUIRESSL PGCONNECT_TIMEOUT
- 
-     # ----------
-     # Set up shared library paths, needed by psql and pg_encoding
-     # (if you run multibyte).  LD_LIBRARY_PATH covers many platforms.
-     # DYLD_LIBRARY_PATH works on Darwin, and maybe other Mach-based systems.
-     # Feel free to account for others as well.
-     # ----------
- 
-     if [ -n "$LD_LIBRARY_PATH" ]; then
-         LD_LIBRARY_PATH="$libdir:$LD_LIBRARY_PATH"
-     else
-         LD_LIBRARY_PATH=$libdir
-     fi
-     export LD_LIBRARY_PATH
- 
-     if [ -n "$DYLD_LIBRARY_PATH" ]; then
-         DYLD_LIBRARY_PATH="$libdir:$DYLD_LIBRARY_PATH"
-     else
-         DYLD_LIBRARY_PATH=$libdir
-     fi
-     export DYLD_LIBRARY_PATH
- 
-     # ----------
-     # Windows needs shared libraries in PATH. (Only those linked into
-     # executables, not dlopen'ed ones)
-     # ----------
-     case $host_platform in
-         *-*-cygwin*|*-*-mingw32*)
-             PATH=$libdir:$PATH
-             export PATH
-             ;;
-     esac
- 
-     if [ -d "$temp_install" ]; then
-         message "removing existing temp installation"
-         rm -rf "$temp_install"
-     fi
- 
-     message "creating temporary installation"
-     if [ ! -d "$LOGDIR" ]; then
-         mkdir -p "$LOGDIR" || { (exit 2); exit; }
-     fi
-     $GMAKE -C "$top_builddir" DESTDIR="$temp_install/install" install 
with_perl=no with_python=no >"$LOGDIR/install.log" 2>&1
- 
-     if [ $? -ne 0 ]
-     then
-         echo
-         echo "$me: installation failed"
-         echo "Examine $LOGDIR/install.log for the reason."
-         echo
-         (exit 2); exit
-     fi
- 
-     message "initializing database system"
-     [ "$debug" = yes ] && initdb_options="--debug"
-     [ "$nolocale" = yes ] && initdb_options="$initdb_options --no-locale"
-     "$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options 
>"$LOGDIR/initdb.log" 2>&1
- 
-     if [ $? -ne 0 ]
-     then
-         echo
-         echo "$me: initdb failed"
-         echo "Examine $LOGDIR/initdb.log for the reason."
-         echo
-         (exit 2); exit
-     fi
- 
- 
-     # ----------
-     # Start postmaster
-     # ----------
- 
-     message "starting postmaster"
-     [ "$debug" = yes ] && postmaster_options="$postmaster_options -d 5"
-     if [ "$unix_sockets" = no ]; then
-         postmaster_options="$postmaster_options -c listen_addresses=$hostname"
-     else
-         postmaster_options="$postmaster_options -c listen_addresses="
-     fi
-     "$bindir/postmaster" -D "$PGDATA" -F $postmaster_options 
>"$LOGDIR/postmaster.log" 2>&1 &
-     postmaster_pid=$!
- 
-     # Wait till postmaster is able to accept connections (normally only
-     # a second or so, but Cygwin is reportedly *much* slower).  Don't
-     # wait forever, however.
-     i=0
-     max=60
-     until "$bindir/psql" -X $psql_options postgres </dev/null 2>/dev/null
-     do
-         i=`expr $i + 1`
-         if [ $i -ge $max ]
-         then
-             break
-         fi
-         if kill -0 $postmaster_pid >/dev/null 2>&1
-         then
-             : still starting up
-         else
-             break
-         fi
-         sleep 1
-     done
- 
-     if kill -0 $postmaster_pid >/dev/null 2>&1
-     then
-         echo "running on port $PGPORT with pid $postmaster_pid"
-     else
-         echo
-         echo "$me: postmaster did not start"
-         echo "Examine $LOGDIR/postmaster.log for the reason."
-         echo
-         (exit 2); exit
-     fi
- 
- else # not temp-install
- 
-     # ----------
-     # Windows needs shared libraries in PATH. (Only those linked into
-     # executables, not dlopen'ed ones)
-     # ----------
-     case $host_platform in
-         *-*-cygwin*|*-*-mingw32*)
-             PATH=$libdir:$PATH
-             export PATH
-             ;;
-     esac
- 
-     if [ -n "$PGPORT" ]; then
-         port_info="port $PGPORT"
-     else
-         port_info="default port"
-     fi
- 
-     if [ -n "$PGHOST" ]; then
-         echo "(using postmaster on $PGHOST, $port_info)"
-     else
-         if [ "$unix_sockets" = no ]; then
-             echo "(using postmaster on localhost, $port_info)"
-         else
-             echo "(using postmaster on Unix socket, $port_info)"
-         fi
-     fi
- 
-     message "dropping database \"$dbname\""
-     "$bindir/dropdb" $psql_options "$dbname"
-     # errors can be ignored
- fi
- 
- 
- # ----------
- # Set up SQL shell for the test.
- # ----------
- 
- psql_test_options="-a -q -X $psql_options"
- 
- 
- # ----------
- # Set frontend timezone and datestyle explicitly
- # ----------
- 
- PGTZ='PST8PDT'; export PGTZ
- PGDATESTYLE='Postgres, MDY'; export PGDATESTYLE
- 
- 
- # ----------
- # Set up multibyte environment
- # ----------
- 
- if [ -n "$multibyte" ]; then
-     PGCLIENTENCODING=$multibyte
-     export PGCLIENTENCODING
-     encoding_opt="-E $multibyte"
- else
-     unset PGCLIENTENCODING
- fi
- 
- 
- # ----------
- # Create the regression database
- # We use template0 so that any installation-local cruft in template1
- # will not mess up the tests.
- # ----------
- 
- message "creating database \"$dbname\""
- "$bindir/createdb" $encoding_opt $psql_options --template template0 "$dbname"
- if [ $? -ne 0 ]; then
-     echo "$me: createdb failed"
-     (exit 2); exit
- fi
- 
- "$bindir/psql" -q -X $psql_options -c "\
- alter database \"$dbname\" set lc_messages to 'C';
- alter database \"$dbname\" set lc_monetary to 'C';
- alter database \"$dbname\" set lc_numeric to 'C';
- alter database \"$dbname\" set lc_time to 'C';" "$dbname"
- if [ $? -ne 0 ]; then
-     echo "$me: could not set database default locales"
-     (exit 2); exit
- fi
- 
- 
- # ----------
- # Remove regressuser* and regressgroup* user accounts.
- # ----------
- 
- message "dropping regression test user accounts"
- "$bindir/psql" -q -X $psql_options -c 'DROP GROUP regressgroup1; DROP GROUP 
regressgroup2; DROP USER regressuser1, regressuser2, regressuser3, 
regressuser4;' $dbname 2>/dev/null
- if [ $? -eq 2 ]; then
-     echo "$me: could not drop user accounts"
-     (exit 2); exit
- fi
- 
- 
- # ----------
- # Install any requested PL languages
- # ----------
- 
- if [ "$enable_shared" = yes ]; then
-     for lang in xyzzy $load_langs ; do    
-         if [ "$lang" != "xyzzy" ]; then
-             message "installing $lang"
-             "$bindir/createlang" $psql_options $lang $dbname
-             if [ $? -ne 0 ] && [ $? -ne 2 ]; then
-                 echo "$me: createlang $lang failed"
-                 (exit 2); exit
-             fi
-         fi
-     done
- fi
- 
- 
  # ----------
  # Let's go
  # ----------
--- 89,94 ----
***************
*** 732,789 ****
  
  [ $? -ne 0 ] && exit
  
! # ----------
! # Server shutdown
! # ----------
! 
! if [ -n "$postmaster_pid" ]; then
!     message "shutting down postmaster"
!     "$bindir/pg_ctl" -s -D "$PGDATA" stop
!     wait "$postmaster_pid"
!     unset postmaster_pid
! fi
! 
! rm -f "$TMPFILE"
! 
! 
! # ----------
! # Evaluation
! # ----------
! 
! count_total=`cat "$result_summary_file" | grep '\.\.\.' | wc -l | sed 's/ 
//g'`
! count_ok=`cat "$result_summary_file" | grep '\.\.\. ok' | wc -l | sed 's/ 
//g'`
! count_failed=`cat "$result_summary_file" | grep '\.\.\. FAILED' | wc -l | sed 
's/ //g'`
! count_ignored=`cat "$result_summary_file" | grep '\.\.\. failed (ignored)' | 
wc -l | sed 's/ //g'`
! 
! echo
! if [ $count_total -eq $count_ok ]; then
!     msg="All $count_total tests passed."
!     result=0
! elif [ $count_failed -eq 0 ]; then
!     msg="$count_ok of $count_total tests passed, $count_ignored failed 
test(s) ignored."
!     result=0
! elif [ $count_ignored -eq 0 ]; then
!     msg="$count_failed of $count_total tests failed."
!     result=1
! else
!     msg="`expr $count_failed + $count_ignored` of $count_total tests failed, 
$count_ignored of these failures ignored."
!     result=1
! fi
! 
! dashes=`echo " $msg " | sed 's/./=/g'`
! echo "$dashes"
! echo " $msg "
! echo "$dashes"
! echo
! 
! if [ -s "$diff_file" ]; then
!     echo "The differences that caused some tests to fail can be viewed in the"
!     echo "file \`$diff_file'.  A copy of the test summary that you see"
!     echo "above is saved in the file \`$result_summary_file'."
!     echo
! else
!     rm -f "$diff_file" "$result_summary_file"
! fi
! 
  
  (exit $result); exit
--- 236,242 ----
  
  [ $? -ne 0 ] && exit
  
! postmaster_shutdown
! evaluate
  
  (exit $result); exit
diff -cNr cvs/pgsql/src/test/regress/sql/privileges.sql 
cvs.build/pgsql/src/test/regress/sql/privileges.sql
*** cvs/pgsql/src/test/regress/sql/privileges.sql       2005-08-15 
04:40:32.000000000 +0200
--- cvs.build/pgsql/src/test/regress/sql/privileges.sql 2006-06-19 
10:37:06.000000000 +0200
***************
*** 2,7 ****
--- 2,20 ----
  -- Test access privileges
  --
  
+ -- Prevent NOTICEs whether or not the role existed
+ SET client_min_messages TO 'warning';
+ 
+ DROP ROLE IF EXISTS regressgroup1;
+ DROP ROLE IF EXISTS regressgroup2;
+ 
+ DROP ROLE IF EXISTS regressuser1;
+ DROP ROLE IF EXISTS regressuser2;
+ DROP ROLE IF EXISTS regressuser3;
+ DROP ROLE IF EXISTS regressuser4;
+ 
+ SET client_min_messages TO 'notice';
+ 
  CREATE USER regressuser1;
  CREATE USER regressuser2;
  CREATE USER regressuser3;
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to