aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-08-28 16:13:11 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-08-28 16:13:11 +0000
commitae28cfe67353320a80f8fa21b96932f0d8effec1 (patch)
tree304aaf0da5c9635573d0fe77d98833d424622a90 /src
parentfcba3b82e2d4fe42a0acfb9251fd1a7b4862ca30 (diff)
downloadpostgresql-ae28cfe67353320a80f8fa21b96932f0d8effec1.tar.gz
postgresql-ae28cfe67353320a80f8fa21b96932f0d8effec1.zip
Partial fix for ecpg's VPATH problems. It compiles and successfully
builds all the files needed for its regression tests, but the tests themselves fail because of diffs in the #line directives output by ecpg itself. Not sure what to do about that.
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/compatlib/Makefile9
-rw-r--r--src/interfaces/ecpg/ecpglib/Makefile5
-rw-r--r--src/interfaces/ecpg/include/Makefile3
-rw-r--r--src/interfaces/ecpg/pgtypeslib/Makefile5
-rw-r--r--src/interfaces/ecpg/preproc/Makefile9
-rw-r--r--src/interfaces/ecpg/test/Makefile45
-rw-r--r--src/interfaces/ecpg/test/Makefile.regress3
-rw-r--r--src/interfaces/ecpg/test/pg_regress.inc.sh.in613
-rw-r--r--src/interfaces/ecpg/test/pg_regress.sh615
9 files changed, 666 insertions, 641 deletions
diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile
index 1a888a450f8..f385d8b745e 100644
--- a/src/interfaces/ecpg/compatlib/Makefile
+++ b/src/interfaces/ecpg/compatlib/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.23 2005/12/09 21:19:35 petere Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.24 2006/08/28 16:13:10 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -17,11 +17,12 @@ SO_MAJOR_VERSION= 2
SO_MINOR_VERSION= 2
DLTYPE= library
-override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) \
- -I$(top_srcdir)/src/include/utils $(CPPFLAGS)
+override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
+ -I$(libpq_srcdir) -I$(top_srcdir)/src/include/utils $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS)
SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) \
- $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS)
+ $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) \
+ $(PTHREAD_LIBS)
OBJS= informix.o
diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile
index 49c10704006..3528133aa66 100644
--- a/src/interfaces/ecpg/ecpglib/Makefile
+++ b/src/interfaces/ecpg/ecpglib/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.40 2006/04/29 20:13:07 tgl Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.41 2006/08/28 16:13:11 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -17,7 +17,8 @@ SO_MAJOR_VERSION= 5
SO_MINOR_VERSION= 2
DLTYPE= library
-override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/interfaces/ecpg/include \
+override CPPFLAGS := -DFRONTEND \
+ -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
-I$(libpq_srcdir) -I$(top_builddir)/src/port $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS)
diff --git a/src/interfaces/ecpg/include/Makefile b/src/interfaces/ecpg/include/Makefile
index 4f2c472c596..8cbf9b606cf 100644
--- a/src/interfaces/ecpg/include/Makefile
+++ b/src/interfaces/ecpg/include/Makefile
@@ -2,7 +2,8 @@ subdir = src/interfaces/ecpg/include
top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global
-override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/interfaces/ecpg/include \
+override CPPFLAGS := -DFRONTEND \
+ -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
-I$(libpq_srcdir) -I$(top_builddir)/src/port $(CPPFLAGS)
informix_esql_dir = $(pkgincludedir)/informix/esql
diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index ca695a0c081..9e79118a393 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.29 2005/12/09 21:19:36 petere Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.30 2006/08/28 16:13:11 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -17,7 +17,8 @@ SO_MAJOR_VERSION= 2
SO_MINOR_VERSION= 2
DLTYPE= library
-override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/interfaces/ecpg/include \
+override CPPFLAGS := -DFRONTEND \
+ -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
-I$(top_srcdir)/src/include/utils -I$(libpq_srcdir) $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS)
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 752579c4644..b1bcd552289 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2006, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.120 2006/03/07 00:48:07 tgl Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.121 2006/08/28 16:13:11 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -17,9 +17,10 @@ MAJOR_VERSION= 4
MINOR_VERSION= 2
PATCHLEVEL=1
-override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \
- -DMAJOR_VERSION=$(MAJOR_VERSION) \
- -DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL)
+override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
+ -I$(srcdir) -DMAJOR_VERSION=$(MAJOR_VERSION) \
+ -DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
+ $(CPPFLAGS)
ifeq ($(GCC), yes)
override CFLAGS += -Wno-error
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile
index 3bc22425293..553c0d697d9 100644
--- a/src/interfaces/ecpg/test/Makefile
+++ b/src/interfaces/ecpg/test/Makefile
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/interfaces/ecpg/test/Makefile,v 1.58 2006/08/19 13:42:40 meskes Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/test/Makefile,v 1.59 2006/08/28 16:13:11 tgl Exp $
subdir = src/interfaces/ecpg/test
top_builddir = ../../../..
@@ -17,6 +17,12 @@ ifdef NO_LOCALE
NOLOCALE += --no-locale
endif
+ifneq ($(PORTNAME),win32)
+abs_builddir := $(shell pwd)
+else
+abs_builddir := $(shell pwd -W)
+endif
+
all install installdirs uninstall dep depend distprep:
$(MAKE) -C connect $@
$(MAKE) -C sql $@
@@ -36,13 +42,11 @@ clean distclean maintainer-clean:
$(MAKE) -C complex $@
$(MAKE) -C thread $@
rm -rf tmp_check results log
- rm -f pg_regress.inc.sh regression.diffs
+ rm -f pg_regress regression.diffs
-all: pg_regress.sh
+all: pg_regress
-pg_regress.sh: pg_regress.inc.sh
-
-pg_regress.inc.sh: pg_regress.inc.sh.in $(top_builddir)/src/Makefile.global
+pg_regress: pg_regress.sh $(top_builddir)/src/Makefile.global
sed -e 's,@bindir@,$(bindir),g' \
-e 's,@libdir@,$(libdir),g' \
-e 's,@pkglibdir@,$(pkglibdir),g' \
@@ -54,12 +58,29 @@ pg_regress.inc.sh: pg_regress.inc.sh.in $(top_builddir)/src/Makefile.global
-e 's/@GCC@/$(GCC)/g' \
$< >$@
-check: all pg_regress.inc.sh
- sh ./pg_regress.sh --dbname=regress1 --debug --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
+# When doing a VPATH build, copy over the .pgc, .stdout and .stderr
+# files so that the driver script can find them. We have to use an
+# absolute path for the targets, because otherwise make will try to
+# locate the missing files using VPATH, and will find them in
+# $(srcdir), but the point here is that we want to copy them from
+# $(srcdir) to the build directory.
+
+ifdef VPATH
+remaining_files_src := $(wildcard $(srcdir)/*/*.pgc) $(wildcard $(srcdir)/expected/*.c) $(wildcard $(srcdir)/expected/*.stdout) $(wildcard $(srcdir)/expected/*.stderr)
+remaining_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(remaining_files_src))
+
+all: $(remaining_files_build)
+$(remaining_files_build): $(abs_builddir)/%: $(srcdir)/%
+ ln -s $< $@
+endif
+
+
+check: all
+ sh ./pg_regress --dbname=regress1 --debug --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
# the same options, but with --listen-on-tcp
-checktcp: all pg_regress.inc.sh
- sh ./pg_regress.sh --dbname=regress1 --debug --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) --listen-on-tcp
+checktcp: all
+ sh ./pg_regress --dbname=regress1 --debug --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE) --listen-on-tcp
-installcheck: all pg_regress.inc.sh
- sh ./pg_regress.sh --dbname=regress1 --debug --top-builddir=$(top_builddir) --load-language=plpgsql $(NOLOCALE)
+installcheck: all
+ sh ./pg_regress --dbname=regress1 --debug --top-builddir=$(top_builddir) --load-language=plpgsql $(NOLOCALE)
diff --git a/src/interfaces/ecpg/test/Makefile.regress b/src/interfaces/ecpg/test/Makefile.regress
index c79393b7e09..31f767a1c49 100644
--- a/src/interfaces/ecpg/test/Makefile.regress
+++ b/src/interfaces/ecpg/test/Makefile.regress
@@ -1,4 +1,5 @@
-override CPPFLAGS := -I$(srcdir)/../../include -I$(libpq_srcdir) $(CPPFLAGS)
+override CPPFLAGS := -I../../include -I$(top_srcdir)/src/interfaces/ecpg/include \
+ -I$(libpq_srcdir) $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS)
override LDFLAGS := -L../../ecpglib -L../../pgtypeslib -L../../../libpq $(LDFLAGS)
diff --git a/src/interfaces/ecpg/test/pg_regress.inc.sh.in b/src/interfaces/ecpg/test/pg_regress.inc.sh.in
deleted file mode 100644
index c0e03716482..00000000000
--- a/src/interfaces/ecpg/test/pg_regress.inc.sh.in
+++ /dev/null
@@ -1,613 +0,0 @@
-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@'
- GCC=@GCC@
- VERSION=@VERSION@
-
- 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 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
-
- # ----------
- # 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
-}
-
-setup_client_environment_variables(){
- PGDATESTYLE='Postgres'
- 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
-}
-
-drop_database(){
- message "dropping database \"$1\""
- "$bindir/dropdb" $psql_options "$1"
-}
-
-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"
-}
-
-database_cleanup(){
- # ----------
- # 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
-}
-
-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 --git a/src/interfaces/ecpg/test/pg_regress.sh b/src/interfaces/ecpg/test/pg_regress.sh
index bf5160c065b..35a42158cde 100644
--- a/src/interfaces/ecpg/test/pg_regress.sh
+++ b/src/interfaces/ecpg/test/pg_regress.sh
@@ -1,9 +1,620 @@
#! /bin/sh
-# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.6 2006/08/19 13:42:40 meskes Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.7 2006/08/28 16:13:11 tgl Exp $
me=`basename $0`
-. ./pg_regress.inc.sh
+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@'
+ GCC=@GCC@
+ VERSION=@VERSION@
+
+ 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 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
+
+ # ----------
+ # 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
+}
+
+setup_client_environment_variables(){
+ PGDATESTYLE='Postgres'
+ 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
+}
+
+drop_database(){
+ message "dropping database \"$1\""
+ "$bindir/dropdb" $psql_options "$1"
+}
+
+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"
+}
+
+database_cleanup(){
+ # ----------
+ # 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
+}
+
+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
+}
additional_regress_options=""