New scheme for managing platform-specific regress test result files.

Instead of hard-wiring one result file per platform, there is a map file
'resultmap' that says which one to use --- a lot like template/.similar.
I have only created entries in resultmap for my own platform (HPUX) so
far; feel free to add lines for other platforms.
This commit is contained in:
Tom Lane 2000-01-09 07:54:00 +00:00
parent 2a19ac97a7
commit bd62e062aa
10 changed files with 2328 additions and 143 deletions

View File

@ -7,7 +7,7 @@
# #
# #
# IDENTIFICATION # IDENTIFICATION
# $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.46 1999/12/04 04:34:56 momjian Exp $ # $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.47 2000/01/09 07:53:52 tgl Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -104,7 +104,8 @@ distclean: clean
interfaces/odbc/Makefile.global \ interfaces/odbc/Makefile.global \
pl/plpgsql/src/Makefile \ pl/plpgsql/src/Makefile \
pl/plpgsql/src/mklang.sql \ pl/plpgsql/src/mklang.sql \
pl/tcl/mkMakefile.tcldefs.sh pl/tcl/mkMakefile.tcldefs.sh \
test/regress/GNUmakefile
.DEFAULT: .DEFAULT:
$(MAKE) -C lextest $@ $(MAKE) -C lextest $@

2
src/configure vendored
View File

@ -7924,6 +7924,7 @@ trap 'rm -fr `echo "GNUmakefile
pl/plpgsql/src/Makefile pl/plpgsql/src/Makefile
pl/plpgsql/src/mklang.sql pl/plpgsql/src/mklang.sql
pl/tcl/mkMakefile.tcldefs.sh pl/tcl/mkMakefile.tcldefs.sh
test/regress/GNUmakefile
include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF EOF
cat >> $CONFIG_STATUS <<EOF cat >> $CONFIG_STATUS <<EOF
@ -8098,6 +8099,7 @@ CONFIG_FILES=\${CONFIG_FILES-"GNUmakefile
pl/plpgsql/src/Makefile pl/plpgsql/src/Makefile
pl/plpgsql/src/mklang.sql pl/plpgsql/src/mklang.sql
pl/tcl/mkMakefile.tcldefs.sh pl/tcl/mkMakefile.tcldefs.sh
test/regress/GNUmakefile
"} "}
EOF EOF
cat >> $CONFIG_STATUS <<\EOF cat >> $CONFIG_STATUS <<\EOF

View File

@ -1250,4 +1250,5 @@ AC_OUTPUT(
pl/plpgsql/src/Makefile pl/plpgsql/src/Makefile
pl/plpgsql/src/mklang.sql pl/plpgsql/src/mklang.sql
pl/tcl/mkMakefile.tcldefs.sh pl/tcl/mkMakefile.tcldefs.sh
test/regress/GNUmakefile
) )

View File

@ -1,20 +1,24 @@
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Makefile-- # GNUmakefile--
# Makefile for regress (the regression test) # Makefile for regress (the regression tests)
# #
# Copyright (c) 1994, Regents of the University of California # Copyright (c) 1994, Regents of the University of California
# #
# #
# IDENTIFICATION # IDENTIFICATION
# $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.20 1999/11/19 18:51:48 wieck Exp $ # $Header: /cvsroot/pgsql/src/test/regress/Attic/GNUmakefile.in,v 1.1 2000/01/09 07:53:58 tgl Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
SRCDIR= ../.. SRCDIR= ../..
include ../../Makefile.global include $(SRCDIR)/Makefile.global
CFLAGS+= -I$(LIBPQDIR) -I../../include $(CFLAGS_SL) CONTRIB= $(SRCDIR)/../contrib
HOST= @host@
CFLAGS+= -I$(LIBPQDIR) -I$(SRCDIR)/include $(CFLAGS_SL)
LDADD+= -L$(LIBPQDIR) -lpq LDADD+= -L$(LIBPQDIR) -lpq
@ -43,17 +47,17 @@ endif
EXTRA_TESTS = numeric_big EXTRA_TESTS = numeric_big
# #
# prepare to run the test (including clean-up after the last run) # prepare to run the tests
# #
all: $(INFILES) all: $(INFILES)
cd input; $(MAKE) all; cd .. cd input; $(MAKE) all; cd ..
cd output; $(MAKE) all; cd .. cd output; $(MAKE) all; cd ..
#ifneq ($(PORTNAME), win) #ifneq ($(PORTNAME), win)
$(MAKE) -C ../../../contrib/spi REFINT_VERBOSE=1 refint$(DLSUFFIX) \ $(MAKE) -C $(CONTRIB)/spi REFINT_VERBOSE=1 \
autoinc$(DLSUFFIX) refint$(DLSUFFIX) autoinc$(DLSUFFIX)
#else #else
# cat /dev/null > ../../../contrib/spi/refint$(DLSUFFIX) # cat /dev/null > $(CONTRIB)/spi/refint$(DLSUFFIX)
# cat /dev/null > ../../../contrib/spi/autoinc$(DLSUFFIX) # cat /dev/null > $(CONTRIB)/spi/autoinc$(DLSUFFIX)
#endif #endif
#ifeq ($(PORTNAME), win) #ifeq ($(PORTNAME), win)
@ -62,15 +66,15 @@ all: $(INFILES)
#endif #endif
# #
# run the test # run the tests
# #
runtest: $(INFILES) runtest: $(INFILES)
ifneq ($(PORTNAME), win) ifneq ($(PORTNAME), win)
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
$(SHELL) ./regress.sh $(PORTNAME) 2>&1 | tee regress.out $(SHELL) ./regress.sh $(HOST) 2>&1 | tee regress.out
else else
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
./regress.sh $(PORTNAME) 2>&1 | tee regress.out ./regress.sh $(HOST) 2>&1 | tee regress.out
endif endif
@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out" @echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out"
@echo "" @echo ""
@ -84,10 +88,10 @@ endif
bigtest: $(INFILES) bigtest: $(INFILES)
ifneq ($(PORTNAME), win) ifneq ($(PORTNAME), win)
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
$(SHELL) ./regress.sh $(PORTNAME) $(EXTRA_TESTS) 2>&1 | tee regress.out $(SHELL) ./regress.sh $(HOST) $(EXTRA_TESTS) 2>&1 | tee regress.out
else else
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
./regress.sh $(PORTNAME) $(EXTRA_TESTS) 2>&1 | tee regress.out ./regress.sh $(HOST) $(EXTRA_TESTS) 2>&1 | tee regress.out
endif endif
@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out" @echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out"
@ -97,10 +101,10 @@ endif
runcheck: $(INFILES) runcheck: $(INFILES)
ifneq ($(PORTNAME), win) ifneq ($(PORTNAME), win)
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
$(SHELL) ./run_check.sh $(PORTNAME) $(SHELL) ./run_check.sh $(HOST)
else else
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
./run_check.sh $(PORTNAME) ./run_check.sh $(HOST)
endif endif
@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILES run_check.out" @echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILES run_check.out"
@echo "AND regress.out" @echo "AND regress.out"
@ -115,21 +119,21 @@ endif
bigcheck: $(INFILES) bigcheck: $(INFILES)
ifneq ($(PORTNAME), win) ifneq ($(PORTNAME), win)
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
$(SHELL) ./run_check.sh $(PORTNAME) $(EXTRA_TESTS) $(SHELL) ./run_check.sh $(HOST) $(EXTRA_TESTS)
else else
MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
./run_check.sh $(PORTNAME) $(EXTRA_TESTS) ./run_check.sh $(HOST) $(EXTRA_TESTS)
endif endif
@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILES run_check.out" @echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILES run_check.out"
@echo "AND regress.out" @echo "AND regress.out"
clean: clean:
rm -f $(INFILES) regress.out regress.o regression.diffs rm -f $(INFILES) regress.out run_check.out regress.o regression.diffs
ifeq ($(PORTNAME), win) ifeq ($(PORTNAME), win)
rm -f regress.def rm -f regress.def
endif endif
$(MAKE) -C sql clean $(MAKE) -C sql clean
$(MAKE) -C expected clean $(MAKE) -C expected clean
$(MAKE) -C results clean $(MAKE) -C results clean
$(MAKE) -C ../../../contrib/spi clean $(MAKE) -C $(CONTRIB)/spi clean
rm -rf tmp_check rm -rf tmp_check

View File

@ -2,13 +2,11 @@
Introduction Introduction
The PostgreSQL regression tests are a comprehensive set of tests for the The PostgreSQL regression tests are a comprehensive set of tests for the
SQL implementation embedded in PostgreSQL developed by Jolly Chen and SQL implementation embedded in PostgreSQL. They test standard SQL
Andrew Yu. It tests standard SQL operations as well as the extensibility operations as well as the extensibility capabilities of PostgreSQL.
capabilities of PostgreSQL.
These tests have recently been revised by Marc Fournier and Thomas Lockhart The regression tests were originally developed by Jolly Chen and Andrew Yu,
to become current for PostgreSQL v6.1. The tests are now packaged as and were extensively revised/repackaged by Marc Fournier and Thomas Lockhart.
functional units and should be easier to run and easier to interpret.
Some properly installed and fully functional PostgreSQL installations Some properly installed and fully functional PostgreSQL installations
can fail some of these regression tests due to artifacts of floating point can fail some of these regression tests due to artifacts of floating point
@ -19,12 +17,11 @@ Introduction
Preparation Preparation
The regression test is invoked by the 'make' command which compiles To prepare for regression testing, do "make all". This compiles
a 'c' program with PostgreSQL extension functions into a shared library a 'C' program with PostgreSQL extension functions into a shared library
in the current directory. Localized shell scripts are also created in in the current directory. Localized SQL scripts and output-comparison
the current directory. The output file templates are massaged into the files are also created for the tests that need them. The localization
./expected/*.out files. The localization replaces macros in the source replaces macros in the source files with absolute pathnames and user names.
files with absolute pathnames and user names.
It was formerly necessary to run the postmaster with system time zone It was formerly necessary to run the postmaster with system time zone
set to PST, but this is no longer required. You can run the regression set to PST, but this is no longer required. You can run the regression
@ -45,24 +42,32 @@ Directory Layout
expected/ . .out files that represent what we *expect* the results to expected/ . .out files that represent what we *expect* the results to
look like look like
results/ .. .out files that represent what the results *actually* look results/ .. .out files that contain what the results *actually* look
like. Also used as temporary storage for table copy testing. like. Also used as temporary storage for table copy testing.
Running the regression test Running the regression test
If you have prevously invoked the regression test, clean up the If you have previously run the regression test for a different Postgres
working directory with: release, make sure you have up-to-date comparison files by doing
make clean make clean all
The regression test is invoked with the command: The regression test is invoked with the command:
make all runtest make runtest
Normally, the regression test should be run as the pg_superuser since or you can do
make runcheck
which invokes a parallel form of the regress tests, and does not
need an already-installed postmaster. Instead, runcheck creates
a temporary installation under the regress directory.
Normally, the regression tests should be run as the postgres user since
the 'src/test/regress' directory and sub-directories are owned by the the 'src/test/regress' directory and sub-directories are owned by the
pg_superuser. If you run the regression test as another user the postgres user. If you run the regression test as another user the
'src/test/regress' directory tree should be writeable to that user. 'src/test/regress' directory tree must be writeable to that user.
Comparing expected/actual output Comparing expected/actual output
@ -74,6 +79,11 @@ Comparing expected/actual output
The files might not compare exactly. The following paragraphs attempt The files might not compare exactly. The following paragraphs attempt
to explain the differences. to explain the differences.
Once the output files have been verified for a particular platform,
it is possible to provide new platform-specific comparison files,
so that future test runs won't report bogus "failures". See
'Platform-specific comparison files', below.
Error message differences Error message differences
Some of the regression tests involve intentional invalid input values. Some of the regression tests involve intentional invalid input values.
@ -83,20 +93,6 @@ Error message differences
differences in messages will result in a "failed" regression test which differences in messages will result in a "failed" regression test which
can be validated by inspection. can be validated by inspection.
OID differences
There are several places where PostgreSQL OID (object identifiers) appear
in 'regress.out'. OID's are unique 32-bit integers which are generated
by the PostgreSQL backend whenever a table row is inserted or updated.
If you run the regression test on a non-virgin database or run it multiple
times, the OID's reported will have different values.
The following SQL statements in 'misc.out' have shown this behavior:
QUERY: SELECT user_relns() AS user_relns ORDER BY user_relns;
The 'a,523676' row is composed from an OID.
DATE/TIME differences DATE/TIME differences
Most of the date and time results are dependent on timezone environment. Most of the date and time results are dependent on timezone environment.
@ -164,6 +160,38 @@ The 'expected' files
careful (?) inspection. Many of the development machines are running a careful (?) inspection. Many of the development machines are running a
Unix OS variant (FreeBSD, Linux, etc) on Ix86 hardware. Unix OS variant (FreeBSD, Linux, etc) on Ix86 hardware.
Platform-specific comparison files
Since some of the tests inherently produce platform-specific results,
we have provided a way to supply platform-specific result comparison
files. Frequently, the same variation applies to multiple platforms;
rather than supplying a separate comparison file for every platform,
there is a mapping file that defines which comparison file to use.
So, to eliminate bogus test "failures" for a particular platform,
you must choose or make a variant result file, and then add a line
to the mapping file, which is "resultmap".
Each line in the mapping file is of the form
testname/platformname=comparisonfilename
The test name is just the name of the particular regression test module.
The platform name is the platform name as printed by config.guess (in
the toplevel PostgreSQL src directory), or any prefix of it. The
comparison file name is the name of the substitute result comparison file.
For example: the int2 regress test includes a deliberate entry of a value
that is too large to fit in int2. The specific error message that is
produced is platform-dependent; our reference platform emits
ERROR: pg_atoi: error reading "100000": Numerical result out of range
but a fair number of other Unix platforms emit
ERROR: pg_atoi: error reading "100000": Result too large
Therefore, we provide a variant comparison file, int2-too-large.out,
that includes this spelling of the error message. To silence the
bogus "failure" message on HPPA platforms, resultmap includes
int2/hppa=int2-too-large
which will trigger on any machine for which config.guess's output
begins with 'hppa'. Other lines in resultmap select the variant
comparison file for other platforms where it's appropriate.
Current release notes (Thomas.Lockhart@jpl.nasa.gov) Current release notes (Thomas.Lockhart@jpl.nasa.gov)
The regression tests have been adapted and extensively modified for the The regression tests have been adapted and extensively modified for the

View File

@ -0,0 +1,532 @@
--
-- GEOMETRY
--
--
-- Points
--
SELECT '' AS four, center(f1) AS center
FROM BOX_TBL;
four | center
------+---------
| (1,1)
| (2,2)
| (2.5,3)
| (3,3)
(4 rows)
SELECT '' AS four, (@@ f1) AS center
FROM BOX_TBL;
four | center
------+---------
| (1,1)
| (2,2)
| (2.5,3)
| (3,3)
(4 rows)
SELECT '' AS six, point(f1) AS center
FROM CIRCLE_TBL;
six | center
-----+-----------
| (0,0)
| (1,2)
| (1,3)
| (1,2)
| (100,200)
| (100,0)
(6 rows)
SELECT '' AS six, (@@ f1) AS center
FROM CIRCLE_TBL;
six | center
-----+-----------
| (0,0)
| (1,2)
| (1,3)
| (1,2)
| (100,200)
| (100,0)
(6 rows)
SELECT '' AS two, (@@ f1) AS center
FROM POLYGON_TBL
WHERE (# f1) > 2;
two | center
-----+-------------------------------------
| (1.33333333333333,1.33333333333333)
| (2.33333333333333,1.33333333333333)
(2 rows)
-- "is horizontal" function
SELECT '' AS two, p1.f1
FROM POINT_TBL p1
WHERE ishorizontal(p1.f1, point '(0,0)');
two | f1
-----+---------
| (0,0)
| (-10,0)
(2 rows)
-- "is horizontal" operator
SELECT '' AS two, p1.f1
FROM POINT_TBL p1
WHERE p1.f1 ?- point '(0,0)';
two | f1
-----+---------
| (0,0)
| (-10,0)
(2 rows)
-- "is vertical" function
SELECT '' AS one, p1.f1
FROM POINT_TBL p1
WHERE isvertical(p1.f1, point '(5.1,34.5)');
one | f1
-----+------------
| (5.1,34.5)
(1 row)
-- "is vertical" operator
SELECT '' AS one, p1.f1
FROM POINT_TBL p1
WHERE p1.f1 ?| point '(5.1,34.5)';
one | f1
-----+------------
| (5.1,34.5)
(1 row)
--
-- Line segments
--
-- intersection
SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
FROM LSEG_TBL l, POINT_TBL p;
ERROR: Unable to identify an operator '#' for types 'lseg' and 'point'
You will have to retype this query using an explicit cast
-- closest point
SELECT '' AS thirty, p.f1, l.s, p.f1 ## l.s AS closest
FROM LSEG_TBL l, POINT_TBL p;
thirty | f1 | s | closest
--------+------------+-------------------------------+---------------------------------------
| (0,0) | [(1,2),(3,4)] | (1,2)
| (-10,0) | [(1,2),(3,4)] | (1,2)
| (-3,4) | [(1,2),(3,4)] | (1,2)
| (5.1,34.5) | [(1,2),(3,4)] | (3,4)
| (-5,-12) | [(1,2),(3,4)] | (1,2)
| (10,10) | [(1,2),(3,4)] | (3,4)
| (0,0) | [(0,0),(6,6)] | (0,0)
| (-10,0) | [(0,0),(6,6)] | (0,0)
| (-3,4) | [(0,0),(6,6)] | (0.5,0.5)
| (5.1,34.5) | [(0,0),(6,6)] | (6,6)
| (-5,-12) | [(0,0),(6,6)] | (0,0)
| (10,10) | [(0,0),(6,6)] | (6,6)
| (0,0) | [(10,-10),(-3,-4)] | (-2.04878048780488,-4.4390243902439)
| (-10,0) | [(10,-10),(-3,-4)] | (-3,-4)
| (-3,4) | [(10,-10),(-3,-4)] | (-3,-4)
| (5.1,34.5) | [(10,-10),(-3,-4)] | (-3,-4)
| (-5,-12) | [(10,-10),(-3,-4)] | (-1.60487804878049,-4.64390243902439)
| (10,10) | [(10,-10),(-3,-4)] | (2.39024390243902,-6.48780487804878)
| (0,0) | [(-1000000,200),(300000,-40)] | (0.0028402365895872,15.384614860264)
| (-10,0) | [(-1000000,200),(300000,-40)] | (-9.99715942258202,15.3864610140472)
| (-3,4) | [(-1000000,200),(300000,-40)] | (-2.99789812267519,15.3851688427303)
| (5.1,34.5) | [(-1000000,200),(300000,-40)] | (5.09647083221496,15.3836744976925)
| (-5,-12) | [(-1000000,200),(300000,-40)] | (-4.99494420845634,15.3855375281616)
| (10,10) | [(-1000000,200),(300000,-40)] | (10.000993741978,15.3827690473092)
| (0,0) | [(11,22),(33,44)] | (11,22)
| (-10,0) | [(11,22),(33,44)] | (11,22)
| (-3,4) | [(11,22),(33,44)] | (11,22)
| (5.1,34.5) | [(11,22),(33,44)] | (14.3,25.3)
| (-5,-12) | [(11,22),(33,44)] | (11,22)
| (10,10) | [(11,22),(33,44)] | (11,22)
(30 rows)
--
-- Lines
--
--
-- Boxes
--
SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL;
six | box
-----+----------------------------------------------------------------------------
| (2.12132034355964,2.12132034355964),(-2.12132034355964,-2.12132034355964)
| (71.7106781186547,72.7106781186547),(-69.7106781186547,-68.7106781186547)
| (4.53553390593274,6.53553390593274),(-2.53553390593274,-0.535533905932737)
| (3.12132034355964,4.12132034355964),(-1.12132034355964,-0.121320343559642)
| (107.071067811865,207.071067811865),(92.9289321881345,192.928932188135)
| (170.710678118655,70.7106781186547),(29.2893218813453,-70.7106781186547)
(6 rows)
-- translation
SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p;
twentyfour | translation
------------+-------------------------
| (2,2),(0,0)
| (3,3),(1,1)
| (2.5,3.5),(2.5,2.5)
| (3,3),(3,3)
| (-8,2),(-10,0)
| (-7,3),(-9,1)
| (-7.5,3.5),(-7.5,2.5)
| (-7,3),(-7,3)
| (-1,6),(-3,4)
| (0,7),(-2,5)
| (-0.5,7.5),(-0.5,6.5)
| (0,7),(0,7)
| (7.1,36.5),(5.1,34.5)
| (8.1,37.5),(6.1,35.5)
| (7.6,38),(7.6,37)
| (8.1,37.5),(8.1,37.5)
| (-3,-10),(-5,-12)
| (-2,-9),(-4,-11)
| (-2.5,-8.5),(-2.5,-9.5)
| (-2,-9),(-2,-9)
| (12,12),(10,10)
| (13,13),(11,11)
| (12.5,13.5),(12.5,12.5)
| (13,13),(13,13)
(24 rows)
SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p;
twentyfour | translation
------------+---------------------------
| (2,2),(0,0)
| (3,3),(1,1)
| (2.5,3.5),(2.5,2.5)
| (3,3),(3,3)
| (12,2),(10,0)
| (13,3),(11,1)
| (12.5,3.5),(12.5,2.5)
| (13,3),(13,3)
| (5,-2),(3,-4)
| (6,-1),(4,-3)
| (5.5,-0.5),(5.5,-1.5)
| (6,-1),(6,-1)
| (-3.1,-32.5),(-5.1,-34.5)
| (-2.1,-31.5),(-4.1,-33.5)
| (-2.6,-31),(-2.6,-32)
| (-2.1,-31.5),(-2.1,-31.5)
| (7,14),(5,12)
| (8,15),(6,13)
| (7.5,15.5),(7.5,14.5)
| (8,15),(8,15)
| (-8,-8),(-10,-10)
| (-7,-7),(-9,-9)
| (-7.5,-6.5),(-7.5,-7.5)
| (-7,-7),(-7,-7)
(24 rows)
-- scaling and rotation
SELECT '' AS twentyfour, b.f1 * p.f1 AS rotation
FROM BOX_TBL b, POINT_TBL p;
twentyfour | rotation
------------+-----------------------------
| (0,0),(0,0)
| (0,0),(0,0)
| (0,0),(0,0)
| (0,0),(0,0)
| (0,0),(-20,-20)
| (-10,-10),(-30,-30)
| (-25,-25),(-25,-35)
| (-30,-30),(-30,-30)
| (0,2),(-14,0)
| (-7,3),(-21,1)
| (-17.5,2.5),(-21.5,-0.5)
| (-21,3),(-21,3)
| (0,79.2),(-58.8,0)
| (-29.4,118.8),(-88.2,39.6)
| (-73.5,104.1),(-108,99)
| (-88.2,118.8),(-88.2,118.8)
| (14,0),(0,-34)
| (21,-17),(7,-51)
| (29.5,-42.5),(17.5,-47.5)
| (21,-51),(21,-51)
| (0,40),(0,0)
| (0,60),(0,20)
| (0,60),(-10,50)
| (0,60),(0,60)
(24 rows)
SELECT '' AS twenty, b.f1 / p.f1 AS rotation
FROM BOX_TBL b, POINT_TBL p
WHERE (p.f1 <-> point '(0,0)') >= 1;
twenty | rotation
--------+-----------------------------------------------------------------------------------
| (0,0),(-0.2,-0.2)
| (-0.1,-0.1),(-0.3,-0.3)
| (-0.25,-0.25),(-0.25,-0.35)
| (-0.3,-0.3),(-0.3,-0.3)
| (0.08,0),(0,-0.56)
| (0.12,-0.28),(0.04,-0.84)
| (0.26,-0.7),(0.1,-0.82)
| (0.12,-0.84),(0.12,-0.84)
| (0.0651176557643925,0),(0,-0.0483449262493217)
| (0.0976764836465887,-0.0241724631246608),(0.0325588278821962,-0.0725173893739825)
| (0.109762715208919,-0.0562379754328844),(0.0813970697054906,-0.0604311578116521)
| (0.0976764836465887,-0.0725173893739825),(0.0976764836465887,-0.0725173893739825)
| (0,0.0828402366863905),(-0.201183431952663,0)
| (-0.100591715976331,0.124260355029586),(-0.301775147928994,0.0414201183431953)
| (-0.251479289940828,0.103550295857988),(-0.322485207100592,0.0739644970414201)
| (-0.301775147928994,0.124260355029586),(-0.301775147928994,0.124260355029586)
| (0.2,0),(0,0)
| (0.3,0),(0.1,0)
| (0.3,0.05),(0.25,0)
| (0.3,0),(0.3,0)
(20 rows)
--
-- Paths
--
SET geqo TO 'off';
SELECT '' AS eight, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
eight | npoints | path
-------+---------+---------------------------
| 2 | [(1,2),(3,4)]
| 2 | ((1,2),(3,4))
| 4 | [(0,0),(3,0),(4,5),(1,6)]
| 2 | ((1,2),(3,4))
| 2 | ((1,2),(3,4))
| 2 | [(1,2),(3,4)]
| 2 | [(11,12),(13,14)]
| 2 | ((11,12),(13,14))
(8 rows)
SELECT '' AS four, path(f1) FROM POLYGON_TBL;
four | path
------+---------------------
| ((2,0),(2,4),(0,0))
| ((3,1),(3,3),(1,0))
| ((0,0))
| ((0,1),(0,1))
(4 rows)
-- translation
SELECT '' AS eight, p1.f1 + point '(10,10)' AS dist_add
FROM PATH_TBL p1;
eight | dist_add
-------+-----------------------------------
| [(11,12),(13,14)]
| ((11,12),(13,14))
| [(10,10),(13,10),(14,15),(11,16)]
| ((11,12),(13,14))
| ((11,12),(13,14))
| [(11,12),(13,14)]
| [(21,22),(23,24)]
| ((21,22),(23,24))
(8 rows)
-- scaling and rotation
SELECT '' AS eight, p1.f1 * point '(2,-1)' AS dist_mul
FROM PATH_TBL p1;
eight | dist_mul
-------+------------------------------
| [(4,3),(10,5)]
| ((4,3),(10,5))
| [(0,0),(6,-3),(13,6),(8,11)]
| ((4,3),(10,5))
| ((4,3),(10,5))
| [(4,3),(10,5)]
| [(34,13),(40,15)]
| ((34,13),(40,15))
(8 rows)
RESET geqo;
--
-- Polygons
--
-- containment
SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 ~ p.f1 AS contains
FROM POLYGON_TBL poly, POINT_TBL p;
twentyfour | f1 | f1 | contains
------------+------------+---------------------+----------
| (0,0) | ((2,0),(2,4),(0,0)) | t
| (-10,0) | ((2,0),(2,4),(0,0)) | f
| (-3,4) | ((2,0),(2,4),(0,0)) | f
| (5.1,34.5) | ((2,0),(2,4),(0,0)) | f
| (-5,-12) | ((2,0),(2,4),(0,0)) | f
| (10,10) | ((2,0),(2,4),(0,0)) | f
| (0,0) | ((3,1),(3,3),(1,0)) | f
| (-10,0) | ((3,1),(3,3),(1,0)) | f
| (-3,4) | ((3,1),(3,3),(1,0)) | f
| (5.1,34.5) | ((3,1),(3,3),(1,0)) | f
| (-5,-12) | ((3,1),(3,3),(1,0)) | f
| (10,10) | ((3,1),(3,3),(1,0)) | f
| (0,0) | ((0,0)) | t
| (-10,0) | ((0,0)) | f
| (-3,4) | ((0,0)) | f
| (5.1,34.5) | ((0,0)) | f
| (-5,-12) | ((0,0)) | f
| (10,10) | ((0,0)) | f
| (0,0) | ((0,1),(0,1)) | f
| (-10,0) | ((0,1),(0,1)) | f
| (-3,4) | ((0,1),(0,1)) | f
| (5.1,34.5) | ((0,1),(0,1)) | f
| (-5,-12) | ((0,1),(0,1)) | f
| (10,10) | ((0,1),(0,1)) | f
(24 rows)
SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 @ poly.f1 AS contained
FROM POLYGON_TBL poly, POINT_TBL p;
twentyfour | f1 | f1 | contained
------------+------------+---------------------+-----------
| (0,0) | ((2,0),(2,4),(0,0)) | t
| (-10,0) | ((2,0),(2,4),(0,0)) | f
| (-3,4) | ((2,0),(2,4),(0,0)) | f
| (5.1,34.5) | ((2,0),(2,4),(0,0)) | f
| (-5,-12) | ((2,0),(2,4),(0,0)) | f
| (10,10) | ((2,0),(2,4),(0,0)) | f
| (0,0) | ((3,1),(3,3),(1,0)) | f
| (-10,0) | ((3,1),(3,3),(1,0)) | f
| (-3,4) | ((3,1),(3,3),(1,0)) | f
| (5.1,34.5) | ((3,1),(3,3),(1,0)) | f
| (-5,-12) | ((3,1),(3,3),(1,0)) | f
| (10,10) | ((3,1),(3,3),(1,0)) | f
| (0,0) | ((0,0)) | t
| (-10,0) | ((0,0)) | f
| (-3,4) | ((0,0)) | f
| (5.1,34.5) | ((0,0)) | f
| (-5,-12) | ((0,0)) | f
| (10,10) | ((0,0)) | f
| (0,0) | ((0,1),(0,1)) | f
| (-10,0) | ((0,1),(0,1)) | f
| (-3,4) | ((0,1),(0,1)) | f
| (5.1,34.5) | ((0,1),(0,1)) | f
| (-5,-12) | ((0,1),(0,1)) | f
| (10,10) | ((0,1),(0,1)) | f
(24 rows)
SELECT '' AS four, points(f1) AS npoints, f1 AS polygon
FROM POLYGON_TBL;
four | npoints | polygon
------+---------+---------------------
| 3 | ((2,0),(2,4),(0,0))
| 3 | ((3,1),(3,3),(1,0))
| 1 | ((0,0))
| 2 | ((0,1),(0,1))
(4 rows)
SELECT '' AS four, polygon(f1)
FROM BOX_TBL;
four | polygon
------+-------------------------------------------
| ((0,0),(0,2),(2,2),(2,0))
| ((1,1),(1,3),(3,3),(3,1))
| ((2.5,2.5),(2.5,3.5),(2.5,3.5),(2.5,2.5))
| ((3,3),(3,3),(3,3),(3,3))
(4 rows)
SELECT '' AS four, polygon(f1)
FROM PATH_TBL WHERE isclosed(f1);
four | polygon
------+-------------------
| ((1,2),(3,4))
| ((1,2),(3,4))
| ((1,2),(3,4))
| ((11,12),(13,14))
(4 rows)
SELECT '' AS four, f1 AS open_path, polygon( pclose(f1)) AS polygon
FROM PATH_TBL
WHERE isopen(f1);
four | open_path | polygon
------+---------------------------+---------------------------
| [(1,2),(3,4)] | ((1,2),(3,4))
| [(0,0),(3,0),(4,5),(1,6)] | ((0,0),(3,0),(4,5),(1,6))
| [(1,2),(3,4)] | ((1,2),(3,4))
| [(11,12),(13,14)] | ((11,12),(13,14))
(4 rows)
-- convert circles to polygons using the default number of points
SELECT '' AS six, polygon(f1)
FROM CIRCLE_TBL;
six | polygon
-----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ((-3,0),(-2.59807621135076,1.50000000000442),(-1.49999999999116,2.59807621135842),(1.53102359017709e-11,3),(1.50000000001768,2.59807621134311),(2.59807621136607,1.4999999999779),(3,-3.06204718035418e-11),(2.59807621133545,-1.50000000003094),(1.49999999996464,-2.59807621137373),(-4.59307077053127e-11,-3),(-1.5000000000442,-2.5980762113278),(-2.59807621138138,-1.49999999995138))
| ((-99,2),(-85.6025403783588,52.0000000001473),(-48.9999999997054,88.602540378614),(1.00000000051034,102),(51.0000000005893,88.6025403781036),(87.6025403788692,51.9999999992634),(101,1.99999999897932),(87.6025403778485,-48.0000000010313),(50.9999999988214,-84.6025403791243),(0.999999998468976,-98),(-49.0000000014732,-84.6025403775933),(-85.6025403793795,-47.9999999983795))
| ((-4,3),(-3.33012701891794,5.50000000000737),(-1.49999999998527,7.3301270189307),(1.00000000002552,8),(3.50000000002946,7.33012701890518),(5.33012701894346,5.49999999996317),(6,2.99999999994897),(5.33012701889242,0.499999999948437),(3.49999999994107,-1.33012701895622),(0.999999999923449,-2),(-1.50000000007366,-1.33012701887967),(-3.33012701896897,0.500000000081028))
| ((-2,2),(-1.59807621135076,3.50000000000442),(-0.499999999991161,4.59807621135842),(1.00000000001531,5),(2.50000000001768,4.59807621134311),(3.59807621136607,3.4999999999779),(4,1.99999999996938),(3.59807621133545,0.499999999969062),(2.49999999996464,-0.598076211373729),(0.999999999954069,-1),(-0.500000000044197,-0.598076211327799),(-1.59807621138138,0.500000000048616))
| ((90,200),(91.3397459621641,205.000000000015),(95.0000000000295,208.660254037861),(100.000000000051,210),(105.000000000059,208.66025403781),(108.660254037887,204.999999999926),(110,199.999999999898),(108.660254037785,194.999999999897),(104.999999999882,191.339745962088),(99.9999999998469,190),(94.9999999998527,191.339745962241),(91.3397459620621,195.000000000162))
| ((0,0),(13.3974596216412,50.0000000001473),(50.0000000002946,86.602540378614),(100.00000000051,100),(150.000000000589,86.6025403781036),(186.602540378869,49.9999999992634),(200,-1.02068239345139e-09),(186.602540377848,-50.0000000010313),(149.999999998821,-86.6025403791243),(99.999999998469,-100),(49.9999999985268,-86.6025403775933),(13.3974596206205,-49.9999999983795))
(6 rows)
-- convert the circle to an 8-point polygon
SELECT '' AS six, polygon(8, f1)
FROM CIRCLE_TBL;
six | polygon
-----+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ((-3,0),(-2.12132034355423,2.12132034356506),(1.53102359017709e-11,3),(2.12132034357588,2.1213203435434),(3,-3.06204718035418e-11),(2.12132034353258,-2.12132034358671),(-4.59307077053127e-11,-3),(-2.12132034359753,-2.12132034352175))
| ((-99,2),(-69.7106781184743,72.7106781188352),(1.00000000051034,102),(71.710678119196,72.7106781181135),(101,1.99999999897932),(71.7106781177526,-68.7106781195569),(0.999999998468976,-98),(-69.7106781199178,-68.7106781173917))
| ((-4,3),(-2.53553390592372,6.53553390594176),(1.00000000002552,8),(4.5355339059598,6.53553390590567),(6,2.99999999994897),(4.53553390588763,-0.535533905977846),(0.999999999923449,-2),(-2.53553390599589,-0.535533905869586))
| ((-2,2),(-1.12132034355423,4.12132034356506),(1.00000000001531,5),(3.12132034357588,4.1213203435434),(4,1.99999999996938),(3.12132034353258,-0.121320343586707),(0.999999999954069,-1),(-1.12132034359753,-0.121320343521752))
| ((90,200),(92.9289321881526,207.071067811884),(100.000000000051,210),(107.07106781192,207.071067811811),(110,199.999999999898),(107.071067811775,192.928932188044),(99.9999999998469,190),(92.9289321880082,192.928932188261))
| ((0,0),(29.2893218815257,70.7106781188352),(100.00000000051,100),(170.710678119196,70.7106781181135),(200,-1.02068239345139e-09),(170.710678117753,-70.7106781195569),(99.999999998469,-100),(29.2893218800822,-70.7106781173917))
(6 rows)
--
-- Circles
--
SELECT '' AS six, circle(f1, 50.0)
FROM POINT_TBL;
six | circle
-----+-----------------
| <(0,0),50>
| <(-10,0),50>
| <(-3,4),50>
| <(5.1,34.5),50>
| <(-5,-12),50>
| <(10,10),50>
(6 rows)
SELECT '' AS four, circle(f1)
FROM BOX_TBL;
four | circle
------+-------------------------
| <(1,1),1.4142135623731>
| <(2,2),1.4142135623731>
| <(2.5,3),0.5>
| <(3,3),0>
(4 rows)
SELECT '' AS two, circle(f1)
FROM POLYGON_TBL
WHERE (# f1) >= 3;
two | circle
-----+--------------------------------------------------------
| <(1.33333333333333,1.33333333333333),2.04168905063636>
| <(2.33333333333333,1.33333333333333),1.47534300379185>
(2 rows)
SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance
FROM CIRCLE_TBL c1, POINT_TBL p1
WHERE (p1.f1 <-> c1.f1) > 0
ORDER BY distance, circle, point using <<;
twentyfour | circle | point | distance
------------+----------------+------------+------------------
| <(100,0),100> | (5.1,34.5) | 0.97653192697797
| <(1,2),3> | (-3,4) | 1.47213595499958
| <(0,0),3> | (-3,4) | 2
| <(100,0),100> | (-3,4) | 3.07764064044152
| <(100,0),100> | (-5,-12) | 5.68348972285122
| <(1,3),5> | (-10,0) | 6.40175425099138
| <(1,3),5> | (10,10) | 6.40175425099138
| <(0,0),3> | (-10,0) | 7
| <(1,2),3> | (-10,0) | 8.18033988749895
| <(1,2),3> | (10,10) | 9.0415945787923
| <(0,0),3> | (-5,-12) | 10
| <(100,0),100> | (-10,0) | 10
| <(0,0),3> | (10,10) | 11.142135623731
| <(1,3),5> | (-5,-12) | 11.1554944214035
| <(1,2),3> | (-5,-12) | 12.2315462117278
| <(1,3),5> | (5.1,34.5) | 26.7657047773223
| <(1,2),3> | (5.1,34.5) | 29.757594539282
| <(0,0),3> | (5.1,34.5) | 31.8749193547455
| <(100,200),10> | (5.1,34.5) | 180.778038568384
| <(100,200),10> | (10,10) | 200.237960416286
| <(100,200),10> | (-3,4) | 211.415898254845
| <(100,200),10> | (0,0) | 213.606797749979
| <(100,200),10> | (-10,0) | 218.254244210267
| <(100,200),10> | (-5,-12) | 226.577682802077
(24 rows)

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
#!/bin/sh #!/bin/sh
# $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.37 2000/01/06 06:40:18 thomas Exp $ # $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.38 2000/01/09 07:53:58 tgl Exp $
# #
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
echo "Syntax: $0 <portname> [extra-tests]" echo "Syntax: $0 <hostname> [extra-tests]"
exit 1 exit 1
fi fi
portname=$1 hostname=$1
shift shift
extratests="$*" extratests="$*"
if [ x$portname = "xwin" -o x$portname = "xqnx4" ] if [ "x$hostname" = "xwin" -o "x$hostname" = "xqnx4" ]
then then
HOST="-h localhost" HOSTLOC="-h localhost"
else else
HOST="" HOSTLOC=""
fi fi
if echo '\c' | grep -s c >/dev/null 2>&1 if echo '\c' | grep -s c >/dev/null 2>&1
@ -35,19 +35,16 @@ PGTZ="PST8PDT"; export PGTZ
PGDATESTYLE="Postgres,US"; export PGDATESTYLE PGDATESTYLE="Postgres,US"; export PGDATESTYLE
#FRONTEND=monitor #FRONTEND=monitor
FRONTEND="psql $HOST -n -e -q" FRONTEND="psql $HOSTLOC -n -e -q"
SYSTEM=`../../config.guess | awk -F\- '{ split($3,a,/[0-9]/); printf"%s-%s", $1, a[1] }'`
echo "=============== Notes... =================" echo "=============== Notes... ================="
echo "postmaster must already be running for the regression tests to succeed." echo "postmaster must already be running for the regression tests to succeed."
echo "The time zone is set to PST8PDT for these tests by the client frontend."
echo "Please report any apparent problems to ports@postgresql.org" echo "Please report any apparent problems to ports@postgresql.org"
echo "See regress/README for more information." echo "See regress/README for more information."
echo "" echo ""
echo "=============== dropping old regression database... =================" echo "=============== dropping old regression database... ================="
dropdb $HOST regression dropdb $HOSTLOC regression
echo "=============== creating new regression database... =================" echo "=============== creating new regression database... ================="
if [ -n "$MULTIBYTE" ];then if [ -n "$MULTIBYTE" ];then
@ -60,16 +57,16 @@ else
unset PGCLIENTENCODING unset PGCLIENTENCODING
ENCODINGOPT="" ENCODINGOPT=""
fi fi
createdb $ENCODINGOPT $HOST regression createdb $ENCODINGOPT $HOSTLOC regression
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo createdb failed echo createdb failed
exit 1 exit 1
fi fi
if [ x$portname != "xqnx4" ] if [ "x$hostname" != "xqnx4" ]
then then
echo "=============== installing PL/pgSQL... =================" echo "=============== installing PL/pgSQL... ================="
createlang $HOST plpgsql regression createlang $HOSTLOC plpgsql regression
if [ $? -ne 0 -a $? -ne 2 ]; then if [ $? -ne 0 -a $? -ne 2 ]; then
echo createlang failed echo createlang failed
exit 1 exit 1
@ -79,7 +76,7 @@ fi
echo "=============== running regression queries... =================" echo "=============== running regression queries... ================="
echo "" > regression.diffs echo "" > regression.diffs
if [ x$portname = "xqnx4" ] if [ "x$hostname" = "xqnx4" ]
then then
DIFFOPT="-b" DIFFOPT="-b"
else else
@ -91,20 +88,42 @@ $1=="test" { print $2; }
{} {}
' < sql/run_check.tests` ' < sql/run_check.tests`
for i in $stdtests $mbtests $extratests for tst in $stdtests $mbtests $extratests
do do
$ECHO_N "${i} .. " $ECHO_C $ECHO_N "${tst} .. " $ECHO_C
$FRONTEND regression < sql/${i}.sql > results/${i}.out 2>&1 $FRONTEND regression < sql/${tst}.sql > results/${tst}.out 2>&1
if [ -f expected/${i}-${SYSTEM}.out ]
then #
EXPECTED="expected/${i}-${SYSTEM}.out" # Check resultmap to see if we should compare to a
# system-specific result file. The format of the .similar file is
# testname/hostname=substitutefile
# There shouldn't be multiple matches, but take the last if there are.
#
EXPECTED="expected/${tst}.out"
SUBST=`grep "^$tst/$hostname=" resultmap | sed 's/^.*=//' | tail -1`
if test "$SUBST"
then EXPECTED="expected/${SUBST}.out"
else else
EXPECTED="expected/${i}.out" # Next look for a .similar entry that is a prefix of $hostname.
# If there are multiple matches, take the last one.
exec 4<resultmap
while read LINE <&4
do
SIMHOST=`expr "$LINE" : '\(.*\)='`
MATCH=`expr "$tst/$hostname" : "$SIMHOST"`
if test "$MATCH" != 0
then SUBST=`echo "$LINE" | sed 's/^.*=//'`
fi
done
exec 4<&-
if test "$SUBST"
then EXPECTED="expected/${SUBST}.out"
fi
fi fi
if [ `diff ${DIFFOPT} ${EXPECTED} results/${i}.out | wc -l` -ne 0 ] if [ `diff ${DIFFOPT} ${EXPECTED} results/${tst}.out | wc -l` -ne 0 ]
then then
( diff ${DIFFOPT} -C3 ${EXPECTED} results/${i}.out; \ ( diff ${DIFFOPT} -C3 ${EXPECTED} results/${tst}.out; \
echo ""; \ echo ""; \
echo "----------------------"; \ echo "----------------------"; \
echo "" ) >> regression.diffs echo "" ) >> regression.diffs

View File

@ -0,0 +1,4 @@
int2/hppa=int2-too-large
int4/hppa=int4-too-large
geometry/hppa2.0=geometry-hppa2.0
horology/hppa=horology-no-DST-before-1970

View File

@ -1,21 +1,13 @@
#!/bin/sh #!/bin/sh
# #
# $Header: /cvsroot/pgsql/src/test/regress/Attic/run_check.sh,v 1.4 1999/12/03 12:47:43 wieck Exp $ # $Header: /cvsroot/pgsql/src/test/regress/Attic/run_check.sh,v 1.5 2000/01/09 07:53:58 tgl Exp $
# ----------
# This is currently needed because the actual 7.0 psql makes
# all tests fail. Set a path to an existing 6.5.x version of
# psql, the will be copied into the temporary installation
# as psql.
# ----------
TEMP_PSQL_HACK=`which psql_65`
# ---------- # ----------
# Check call syntax # Check call syntax
# ---------- # ----------
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
echo "Syntax: $0 <portname> [extra-tests]" echo "Syntax: $0 <hostname> [extra-tests]"
exit 1 exit 1
fi fi
@ -25,18 +17,18 @@ fi
cd `dirname $0` cd `dirname $0`
# ---------- # ----------
# Some paths used durint the test # Some paths used during the test
# ---------- # ----------
PWD=`pwd` PWD=`pwd`
CHKDIR=$PWD/tmp_check CHKDIR="$PWD/tmp_check"
PGDATA=$CHKDIR/data PGDATA="$CHKDIR/data"
LIBDIR=$CHKDIR/lib LIBDIR="$CHKDIR/lib"
BINDIR=$CHKDIR/bin BINDIR="$CHKDIR/bin"
LOGDIR=$CHKDIR/log LOGDIR="$CHKDIR/log"
TIMDIR=$CHKDIR/timestamp TIMDIR="$CHKDIR/timestamp"
PGPORT=65432 PGPORT="65432"
PGLIB=$LIBDIR PGLIB="$LIBDIR"
PMPID= PMPID=""
export CHKDIR export CHKDIR
export PGDATA export PGDATA
@ -49,18 +41,18 @@ export PGPORT
# ---------- # ----------
# Get the commandline parameters # Get the commandline parameters
# ---------- # ----------
portname=$1 hostname=$1
shift shift
extratests="$*" extratests="$*"
# ---------- # ----------
# Special setting for Windows (no unix domain sockets) # Special setting for Windows (no unix domain sockets)
# ---------- # ----------
if [ x$portname = "xwin" ] if [ "x$hostname" = "xwin" ]
then then
HOST="-h localhost" HOSTLOC="-h localhost"
else else
HOST="" HOSTLOC=""
fi fi
# ---------- # ----------
@ -84,13 +76,19 @@ PGDATESTYLE="Postgres,US"; export PGDATESTYLE
# ---------- # ----------
# The SQL shell to use during this test # The SQL shell to use during this test
# ---------- # ----------
FRONTEND="$BINDIR/psql $HOST -n -e -q" FRONTEND="$BINDIR/psql $HOSTLOC -n -e -q"
# ---------- # ----------
# Determine system type # Prepare temp file holding combined test script.
# ---------- # ----------
SYSTEM=`/bin/sh ../../config.guess | awk -F\- '{ split($3,a,/[0-9]/); printf"%s-%s", $1, TESTLIST="/tmp/testlist.$$"
a[1] }'` TESTS=./sql/run_check.tests
(
cat $TESTS
for name in $extratests ; do
echo "test $name"
done
) > $TESTLIST
# ---------- # ----------
# Catch SIGINT and SIGTERM to shutdown the postmaster # Catch SIGINT and SIGTERM to shutdown the postmaster
@ -106,6 +104,7 @@ trap ' echo ""
echo "" echo ""
fi fi
echo "" echo ""
rm $TESTLIST
exit 1 exit 1
' 2 15 ' 2 15
@ -140,15 +139,6 @@ then
fi fi
# ----------
# Copy an explicitly to use psql shell over the built one
# ----------
if [ ! -z "$TEMP_PSQL_HACK" ] ; then
rm -f $BINDIR/psql
cp $TEMP_PSQL_HACK $BINDIR/psql
fi
# ---------- # ----------
# Change the path so that all binaries from the current # Change the path so that all binaries from the current
# build are first candidates # build are first candidates
@ -210,7 +200,7 @@ else
unset PGCLIENTENCODING unset PGCLIENTENCODING
ENCODINGOPT="" ENCODINGOPT=""
fi fi
createdb $ENCODINGOPT $HOST regression createdb $ENCODINGOPT $HOSTLOC regression
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo createdb failed echo createdb failed
kill -15 $PMPID kill -15 $PMPID
@ -222,7 +212,7 @@ fi
# Install the PL/pgSQL language in it # Install the PL/pgSQL language in it
# ---------- # ----------
echo "=============== Installing PL/pgSQL... ================" echo "=============== Installing PL/pgSQL... ================"
createlang $HOST plpgsql regression createlang $HOSTLOC plpgsql regression
if [ $? -ne 0 -a $? -ne 2 ]; then if [ $? -ne 0 -a $? -ne 2 ]; then
echo createlang failed echo createlang failed
kill -15 $PMPID kill -15 $PMPID
@ -231,21 +221,15 @@ fi
# ---------- # ----------
# Run the regression tests specified in the ./sql/run_check.tests file # Run the regression tests specified in the $TESTLIST file
# ---------- # ----------
echo "=============== Running regression queries... ================" echo "=============== Running regression queries... ================"
echo "" > regression.diffs echo "" > regression.diffs
echo "" > regress.out echo "" > regress.out
TESTS=./sql/run_check.tests
lno=0 lno=0
( while read line
cat $TESTS do
for name in $extratests ; do
echo "test $name"
done
) | while read line ; do
# ---------- # ----------
# Count line numbers and skip comments and empty lines # Count line numbers and skip comments and empty lines
# ---------- # ----------
@ -272,7 +256,8 @@ lno=0
pargroup=$name pargroup=$name
parntests=0 parntests=0
parpar=0 parpar=0
while read line ; do while read line
do
# ---------- # ----------
# Again count line numbers and skip comments # Again count line numbers and skip comments
# ---------- # ----------
@ -349,7 +334,7 @@ lno=0
> results/${name}.out 2>&1 > results/${name}.out 2>&1
$ECHO_N " $name" $ECHO_C $ECHO_N " $name" $ECHO_C
) & ) &
done done </dev/null
wait wait
echo "" echo ""
@ -394,35 +379,55 @@ lno=0
# old format, so checkresults will still find the proper # old format, so checkresults will still find the proper
# information. # information.
# ---------- # ----------
for name in $checklist ; do for tst in $checklist ; do
if [ $checkpname -ne 0 ] if [ $checkpname -ne 0 ]
then then
pnam=`echo $name | awk '{printf "%-20.20s", $1;}'` pnam=`echo $tst | awk '{printf "%-20.20s", $1;}'`
$ECHO_N " test $pnam ... " $ECHO_C $ECHO_N " test $pnam ... " $ECHO_C
fi fi
if [ -f expected/${name}-${SYSTEM}.out ] #
then # Check resultmap to see if we should compare to a
EXPECTED="expected/${name}-${SYSTEM}.out" # system-specific result file. The format of the file is
# testname/hostname=substitutefile
# There shouldn't be multiple matches, but take the last if there are.
#
EXPECTED="expected/${tst}.out"
SUBST=`grep "^$tst/$hostname=" resultmap | sed 's/^.*=//' | tail -1`
if test "$SUBST"
then EXPECTED="expected/${SUBST}.out"
else else
EXPECTED="expected/${name}.out" # Next look for a .similar entry that is a prefix of $hostname.
# If there are multiple matches, take the last one.
while read LINE
do
SIMHOST=`expr "$LINE" : '\(.*\)='`
MATCH=`expr "$tst/$hostname" : "$SIMHOST"`
echo "$LINE $SIMHOST $MATCH"
if test "$MATCH" != 0
then SUBST=`echo "$LINE" | sed 's/^.*=//'`
fi
done <resultmap
if test "$SUBST"
then EXPECTED="expected/${SUBST}.out"
fi
fi fi
if [ `diff -w ${EXPECTED} results/${name}.out | wc -l` -ne 0 ] if [ `diff -w ${EXPECTED} results/${tst}.out | wc -l` -ne 0 ]
then then
( diff -wC3 ${EXPECTED} results/${name}.out ; \ ( diff -wC3 ${EXPECTED} results/${tst}.out ; \
echo "" ; \ echo "" ; \
echo "----------------------" ; \ echo "----------------------" ; \
echo "" ; \ echo "" ; \
) >> regression.diffs ) >> regression.diffs
echo "FAILED" echo "FAILED"
echo "$name .. failed" >> regress.out echo "$tst .. failed" >> regress.out
else else
echo "ok" echo "ok"
echo "$name .. ok" >> regress.out echo "$tst .. ok" >> regress.out
fi fi
done done
done | tee run_check.out 2>&1 done <$TESTLIST | tee run_check.out 2>&1
# ---------- # ----------
# Finally kill the postmaster we started # Finally kill the postmaster we started
@ -430,5 +435,6 @@ done | tee run_check.out 2>&1
echo "=============== Terminating regression postmaster ================" echo "=============== Terminating regression postmaster ================"
kill -15 $PMPID kill -15 $PMPID
rm $TESTLIST
exit 0 exit 0