]> granicus.if.org Git - postgresql/commitdiff
Regenerate text files.
authorPeter Eisentraut <peter_e@gmx.net>
Thu, 13 Nov 2003 18:03:11 +0000 (18:03 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Thu, 13 Nov 2003 18:03:11 +0000 (18:03 +0000)
INSTALL
src/test/regress/README

diff --git a/INSTALL b/INSTALL
index 456b72218550347fd0f690d51ed5844cb22e6048..b3307f34f3484c0b1261002a9d7c609516386299 100644 (file)
--- a/INSTALL
+++ b/INSTALL
+                      PostgreSQL Installation Instructions
+
+This document describes the installation of PostgreSQL from the source code
+distribution.
+
+-------------------------------------------------------------------------------
+
+Short Version
+
+  ./configure
+  gmake
+  su
+  gmake install
+  adduser postgres
+  mkdir /usr/local/pgsql/data
+  chown postgres /usr/local/pgsql/data
+  su - postgres
+  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
+  /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
+  /usr/local/pgsql/bin/createdb test
+  /usr/local/pgsql/bin/psql test
+
+The long version is the rest of this document.
+
+-------------------------------------------------------------------------------
+
+Requirements
+
+In general, a modern Unix-compatible platform should be able to run PostgreSQL.
+The platforms that had received specific testing at the time of release are
+listed in the Section called Supported Platforms below. In the "doc"
+subdirectory of the distribution there are several platform-specific FAQ
+documents you might wish to consult if you are having trouble. The following
+software packages are required for building PostgreSQL:
+
+    * GNU make is required; other make programs will *not* work. GNU make is
+      often installed under the name "gmake"; this document will always refer
+      to it by that name. (On some systems GNU make is the default tool with
+      the name "make".) To test for GNU make enter
+
+        gmake --version
+
+      It is recommended to use version 3.76.1 or later.
+
+    * You need an ISO/ANSI C compiler. Recent versions of GCC are
+      recommendable, but PostgreSQL is known to build with a wide variety of
+      compilers from different vendors.
+
+    * gzip is needed to unpack the distribution in the first place. If you are
+      reading this, you probably already got past that hurdle.
+
+    * The GNU Readline library (for comfortable line editing and command
+      history retrieval) will be used by default. If you don't want to use it
+      then you must specify the "--without-readline" option for "configure".
+      (On NetBSD, the "libedit" library is Readline-compatible and is used if
+      "libreadline" is not found.)
+
+    * To build on Windows NT or Windows 2000 you need the Cygwin and cygipc
+      packages. See the file "doc/FAQ_MSWIN" for details.
+
+The following packages are optional. They are not required in the default
+configuration, but they are needed when certain build options are enabled, as
+explained below.
+
+    * To build the server programming language PL/Perl you need a full Perl
+      installation, including the "libperl" library and the header files. Since
+      PL/Perl will be a shared library, the "libperl" library must be a shared
+      library also on most platforms. This appears to be the default in recent
+      Perl versions, but it was not in earlier versions, and in general it is
+      the choice of whomever installed Perl at your site.
+      If you don't have the shared library but you need one, a message like
+      this will appear during the build to point out this fact:
+
+        *** Cannot build PL/Perl because libperl is not a shared library.
+        *** You might have to rebuild your Perl installation.  Refer to
+        *** the documentation for details.
+
+      (If you don't follow the on-screen output you will merely notice that the
+      PL/Perl library object, "plperl.so" or similar, will not be installed.)
+      If you see this, you will have to rebuild and install Perl manually to be
+      able to build PL/Perl. During the configuration process for Perl, request
+      a shared library.
+
+    * To build the PL/Python server programming language, you need a Python
+      installation, including the header files. Since PL/Python will be a
+      shared library, the "libpython" library must be a shared library also on
+      most platforms. This is not the case in a default Python installation.
+      If after building and installing you have a file called "plpython.so"
+      (possibly a different extension), then everything went well. Otherwise
+      you should have seen a notice like this flying by:
+
+        *** Cannot build PL/Python because libpython is not a shared library.
+        *** You might have to rebuild your Python installation.  Refer to
+        *** the documentation for details.
+
+      That means you have to rebuild (part of) your Python installation to
+      supply this shared library.
+      The catch is that the Python distribution or the Python maintainers do
+      not provide any direct way to do this. The closest thing we can offer you
+      is the information in Python FAQ 3.30. On some operating systems you
+      don't really have to build a shared library, but then you will have to
+      convince the PostgreSQL build system of this. Consult the "Makefile" in
+      the "src/pl/plpython" directory for details.
+
+    * If you want to build Tcl or Tk components (clients and the PL/Tcl
+      language) you of course need a Tcl installation.
+
+    * To build the JDBC driver, you need Ant 1.5 or higher and a JDK. Ant is a
+      special tool for building Java-based packages. It can be downloaded from
+      the Ant web site.
+      If you have several Java compilers installed, it depends on the Ant
+      configuration which one gets used. Precompiled Ant distributions are
+      typically set up to read a file ".antrc" in the current user's home
+      directory for configuration. For example, to use a different JDK than the
+      default, this may work:
+
+        JAVA_HOME=/usr/local/sun-jdk1.3
+        JAVACMD=$JAVA_HOME/bin/java
+
+           Note: Do not try to build the driver by calling "ant" or even
+           "javac" directly. This will not work. Run "gmake" normally as
+           described below.
+
+    * To enable Native Language Support (NLS), that is, the ability to display
+      a program's messages in a language other than English, you need an
+      implementation of the Gettext API. Some operating systems have this
+      built-in (e.g., Linux, NetBSD, Solaris), for other systems you can
+      download an add-on package from here: http://www.postgresql.org/~petere/
+      gettext.html. If you are using the Gettext implementation in the GNU C
+      library then you will additionally need the GNU Gettext package for some
+      utility programs. For any of the other implementations you will not need
+      it.
+
+    * Kerberos, OpenSSL, or PAM, if you want to support authentication using
+      these services.
+
+If you are building from a CVS tree instead of using a released source package,
+or if you want to do development, you also need the following packages:
+
+    * Flex and Bison are needed to build a CVS checkout or if you changed the
+      actual scanner and parser definition files. If you need them, be sure to
+      get Flex 2.5.4 or later and Bison 1.875 or later. Other yacc programs can
+      sometimes be used, but doing so requires extra effort and is not
+      recommended. Other lex programs will definitely not work.
+
+If you need to get a GNU package, you can find it at your local GNU mirror site
+(see http://www.gnu.org/order/ftp.html for a list) or at ftp://ftp.gnu.org/
+gnu/.
+Also check that you have sufficient disk space. You will need about 65 MB for
+the source tree during compilation and about 15 MB for the installation
+directory. An empty database cluster takes about 25 MB, databases take about
+five times the amount of space that a flat text file with the same data would
+take. If you are going to run the regression tests you will temporarily need up
+to an extra 90 MB. Use the "df" command to check for disk space.
+
+-------------------------------------------------------------------------------
+
+If You Are Upgrading
+
+The internal data storage format changes with new releases of PostgreSQL.
+Therefore, if you are upgrading an existing installation that does not have a
+version number "7.4.x", you must back up and restore your data as shown here.
+These instructions assume that your existing installation is under the "/usr/
+local/pgsql" directory, and that the data area is in "/usr/local/pgsql/data".
+Substitute your paths appropriately.
+
+   1. Make sure that your database is not updated during or after the backup.
+      This does not affect the integrity of the backup, but the changed data
+      would of course not be included. If necessary, edit the permissions in
+      the file "/usr/local/pgsql/data/pg_hba.conf" (or equivalent) to disallow
+      access from everyone except you.
+
+   2. To back up your database installation, type:
+
+        pg_dumpall > outputfile
+
+      If you need to preserve OIDs (such as when using them as foreign keys),
+      then use the "-o" option when running "pg_dumpall".
+      "pg_dumpall" does not save large objects. Check the documentation if you
+      need to do this.
+      To make the backup, you can use the "pg_dumpall" command from the version
+      you are currently running. For best results, however, try to use the
+      "pg_dumpall" command from PostgreSQL 7.4, since this version contains
+      bug fixes and improvements over older versions. While this advice might
+      seem idiosyncratic since you haven't installed the new version yet, it is
+      advisable to follow it if you plan to install the new version in parallel
+      with the old version. In that case you can complete the installation
+      normally and transfer the data later. This will also decrease the
+      downtime.
+
+   3. If you are installing the new version at the same location as the old one
+      then shut down the old server, at the latest before you install the new
+      files:
+
+        kill -INT `cat /usr/local/pgsql/data/postmaster.pid`
+
+      Versions prior to 7.0 do not have this "postmaster.pid" file. If you are
+      using such a version you must find out the process ID of the server
+      yourself, for example by typing "ps ax | grep postmaster", and supply it
+      to the "kill" command.
+      On systems that have PostgreSQL started at boot time, there is probably a
+      start-up file that will accomplish the same thing. For example, on a Red
+      Hat Linux system one might find that
+
+        /etc/rc.d/init.d/postgresql stop
+
+      works. Another possibility is "pg_ctl stop".
+
+   4. If you are installing in the same place as the old version then it is
+      also a good idea to move the old installation out of the way, in case you
+      have trouble and need to revert to it. Use a command like this:
+
+        mv /usr/local/pgsql /usr/local/pgsql.old
+
+After you have installed PostgreSQL 7.4, create a new database directory and
+start the new server. Remember that you must execute these commands while
+logged in to the special database user account (which you already have if you
+are upgrading).
+
+  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
+  /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
+
+Finally, restore your data with
+
+  /usr/local/pgsql/bin/psql -d template1 -f outputfile
+
+using the *new* psql.
+These topics are discussed at length in the documentation, which you are
+encouraged to read in any case.
+
+-------------------------------------------------------------------------------
+
+Installation Procedure
+
+   1. Configuration
+      The first step of the installation procedure is to configure the source
+      tree for your system and choose the options you would like. This is done
+      by running the "configure" script. For a default installation simply
+      enter
+
+        ./configure
+
+      This script will run a number of tests to guess values for various system
+      dependent variables and detect some quirks of your operating system, and
+      finally will create several files in the build tree to record what it
+      found. (You can also run "configure" in a directory outside the source
+      tree if you want to keep the build directory separate.)
+      The default configuration will build the server and utilities, as well as
+      all client applications and interfaces that require only a C compiler.
+      All files will be installed under "/usr/local/pgsql" by default.
+      You can customize the build and installation process by supplying one or
+      more of the following command line options to "configure":
 
-                    PostgreSQL Installation Instructions
-                                      
-   This document describes the installation of PostgreSQL from the source
-   code distribution.
-     _________________________________________________________________
-   
-                               Short Version
-                                      
-./configure
-gmake
-su
-gmake install
-adduser postgres
-mkdir /usr/local/pgsql/data
-chown postgres /usr/local/pgsql/data
-su - postgres
-/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
-/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
-/usr/local/pgsql/bin/createdb test
-/usr/local/pgsql/bin/psql test
-
-   The long version is the rest of this document.
-     _________________________________________________________________
-   
-                                Requirements
-                                      
-   In general, a modern Unix-compatible platform should be able to run
-   PostgreSQL. The platforms that had received specific testing at the
-   time of release are listed in the section called Supported Platforms
-   below. In the "doc" subdirectory of the distribution there are several
-   platform-specific FAQ documents you might wish to consult if you are
-   having trouble.
-   
-   The following software packages are required for building PostgreSQL:
-   
-     * GNU make is required; other make programs will *not* work. GNU
-       make is often installed under the name "gmake"; this document will
-       always refer to it by that name. (On some systems GNU make is the
-       default tool with the name "make".) To test for GNU make enter
-gmake --version
-       It is recommended to use version 3.76.1 or later.
-     * You need an ISO/ANSI C compiler. Recent versions of GCC are
-       recommendable, but PostgreSQL is known to build with a wide
-       variety of compilers from different vendors.
-     * gzip is needed to unpack the distribution in the first place. If
-       you are reading this, you probably already got past that hurdle.
-     * The GNU Readline library (for comfortable line editing and command
-       history retrieval) will be used by default. If you don't want to
-       use it then you must specify the "--without-readline" option for
-       "configure". (On NetBSD, the "libedit" library is
-       Readline-compatible and is used if "libreadline" is not found.)
-     * To build on Windows NT or Windows 2000 you need the Cygwin and
-       cygipc packages. See the file "doc/FAQ_MSWIN" for details.
-       
-   The following packages are optional. They are not required in the
-   default configuration, but they are needed when certain build options
-   are enabled, as explained below.
-   
-     * To build the server programming language PL/Perl you need a full
-       Perl installation, including the "libperl" library and the header
-       files. Since PL/Perl will be a shared library, the "libperl"
-       library must be a shared library also on most platforms. This
-       appears to be the default in recent Perl versions, but it was not
-       in earlier versions, and in general it is the choice of whomever
-       installed Perl at your site.
-       If you don't have the shared library but you need one, a message
-       like this will appear during the build to point out this fact:
-*** Cannot build PL/Perl because libperl is not a shared library.
-*** You might have to rebuild your Perl installation.  Refer to
-*** the documentation for details.
-       (If you don't follow the on-screen output you will merely notice
-       that the PL/Perl library object, "plperl.so" or similar, will not
-       be installed.) If you see this, you will have to rebuild and
-       install Perl manually to be able to build PL/Perl. During the
-       configuration process for Perl, request a shared library.
-     * To build the PL/Python server programming language, you need a
-       Python installation, including the header files. Since PL/Python
-       will be a shared library, the "libpython" library must be a shared
-       library also on most platforms. This is not the case in a default
-       Python installation.
-       If after building and installing you have a file called
-       "plpython.so" (possibly a different extension), then everything
-       went well. Otherwise you should have seen a notice like this
-       flying by:
-*** Cannot build PL/Python because libpython is not a shared library.
-*** You might have to rebuild your Python installation.  Refer to
-*** the documentation for details.
-       That means you have to rebuild (part of) your Python installation
-       to supply this shared library.
-       The catch is that the Python distribution or the Python
-       maintainers do not provide any direct way to do this. The closest
-       thing we can offer you is the information in Python FAQ 3.30. On
-       some operating systems you don't really have to build a shared
-       library, but then you will have to convince the PostgreSQL build
-       system of this. Consult the "Makefile" in the "src/pl/plpython"
-       directory for details.
-     * If you want to build Tcl or Tk components (clients and the PL/Tcl
-       language) you of course need a Tcl installation.
-     * To build the JDBC driver, you need Ant 1.5 or higher and a JDK.
-       Ant is a special tool for building Java-based packages. It can be
-       downloaded from the Ant web site.
-       If you have several Java compilers installed, it depends on the
-       Ant configuration which one gets used. Precompiled Ant
-       distributions are typically set up to read a file ".antrc" in the
-       current user's home directory for configuration. For example, to
-       use a different JDK than the default, this may work:
-JAVA_HOME=/usr/local/sun-jdk1.3
-JAVACMD=$JAVA_HOME/bin/java
-       
-     Note: Do not try to build the driver by calling "ant" or even
-     "javac" directly. This will not work. Run "gmake" normally as
-     described below.
-     * To enable Native Language Support (NLS), that is, the ability to
-       display a program's messages in a language other than English, you
-       need an implementation of the Gettext API. Some operating systems
-       have this built-in (e.g., Linux, NetBSD, Solaris), for other
-       systems you can download an add-on package from here:
-       http://www.postgresql.org/~petere/gettext.html. If you are using
-       the Gettext implementation in the GNU C library then you will
-       additionally need the GNU Gettext package for some utility
-       programs. For any of the other implementations you will not need
-       it.
-     * Kerberos, OpenSSL, or PAM, if you want to support authentication
-       using these services.
-       
-   If you are building from a CVS tree instead of using a released source
-   package, or if you want to do development, you also need the following
-   packages:
-   
-     * Flex and Bison are needed to build a CVS checkout or if you
-       changed the actual scanner and parser definition files. If you
-       need them, be sure to get Flex 2.5.4 or later and Bison 1.875 or
-       later. Other yacc programs can sometimes be used, but doing so
-       requires extra effort and is not recommended. Other lex programs
-       will definitely not work.
-       
-   If you need to get a GNU package, you can find it at your local GNU
-   mirror site (see http://www.gnu.org/order/ftp.html for a list) or at
-   ftp://ftp.gnu.org/gnu/.
-   
-   Also check that you have sufficient disk space. You will need about 65
-   MB for the source tree during compilation and about 15 MB for the
-   installation directory. An empty database cluster takes about 25 MB,
-   databases take about five times the amount of space that a flat text
-   file with the same data would take. If you are going to run the
-   regression tests you will temporarily need up to an extra 90 MB. Use
-   the "df" command to check for disk space.
-     _________________________________________________________________
-   
-                            If You Are Upgrading
-                                      
-   The internal data storage format changes with new releases of
-   PostgreSQL. Therefore, if you are upgrading an existing installation
-   that does not have a version number "7.4.x", you must back up and
-   restore your data as shown here. These instructions assume that your
-   existing installation is under the "/usr/local/pgsql" directory, and
-   that the data area is in "/usr/local/pgsql/data". Substitute your
-   paths appropriately.
-    1. Make sure that your database is not updated during or after the
-       backup. This does not affect the integrity of the backup, but the
-       changed data would of course not be included. If necessary, edit
-       the permissions in the file "/usr/local/pgsql/data/pg_hba.conf"
-       (or equivalent) to disallow access from everyone except you.
-    2. To back up your database installation, type:
-pg_dumpall > outputfile
-       If you need to preserve OIDs (such as when using them as foreign
-       keys), then use the "-o" option when running "pg_dumpall".
-       "pg_dumpall" does not save large objects. Check the documentation
-       if you need to do this.
-       To make the backup, you can use the "pg_dumpall" command from the
-       version you are currently running. For best results, however, try
-       to use the "pg_dumpall" command from PostgreSQL 7.4beta5, since
-       this version contains bug fixes and improvements over older
-       versions. While this advice might seem idiosyncratic since you
-       haven't installed the new version yet, it is advisable to follow
-       it if you plan to install the new version in parallel with the old
-       version. In that case you can complete the installation normally
-       and transfer the data later. This will also decrease the downtime.
-    3. If you are installing the new version at the same location as the
-       old one then shut down the old server, at the latest before you
-       install the new files:
-kill -INT `cat /usr/local/pgsql/data/postmaster.pid`
-       Versions prior to 7.0 do not have this "postmaster.pid" file. If
-       you are using such a version you must find out the process ID of
-       the server yourself, for example by typing "ps ax | grep
-       postmaster", and supply it to the "kill" command.
-       On systems that have PostgreSQL started at boot time, there is
-       probably a start-up file that will accomplish the same thing. For
-       example, on a Red Hat Linux system one might find that
-/etc/rc.d/init.d/postgresql stop
-       works. Another possibility is "pg_ctl stop".
-    4. If you are installing in the same place as the old version then it
-       is also a good idea to move the old installation out of the way,
-       in case you have trouble and need to revert to it. Use a command
-       like this:
-mv /usr/local/pgsql /usr/local/pgsql.old
-       
-   After you have installed PostgreSQL 7.4beta5, create a new database
-   directory and start the new server. Remember that you must execute
-   these commands while logged in to the special database user account
-   (which you already have if you are upgrading).
-/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
-/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
-
-   Finally, restore your data with
-/usr/local/pgsql/bin/psql -d template1 -f outputfile
-
-   using the *new* psql.
-   
-   These topics are discussed at length in the documentation, which you
-   are encouraged to read in any case.
-     _________________________________________________________________
-   
-                           Installation Procedure
-                                      
-    1. Configuration
-       The first step of the installation procedure is to configure the
-       source tree for your system and choose the options you would like.
-       This is done by running the "configure" script. For a default
-       installation simply enter
-./configure
-       This script will run a number of tests to guess values for various
-       system dependent variables and detect some quirks of your
-       operating system, and finally will create several files in the
-       build tree to record what it found. (You can also run "configure"
-       in a directory outside the source tree if you want to keep the
-       build directory separate.)
-       The default configuration will build the server and utilities, as
-       well as all client applications and interfaces that require only a
-       C compiler. All files will be installed under "/usr/local/pgsql"
-       by default.
-       You can customize the build and installation process by supplying
-       one or more of the following command line options to "configure":
-       
         --prefix=PREFIX
-                Install all files under the directory "PREFIX" instead of
-                "/usr/local/pgsql". The actual files will be installed
-                into various subdirectories; no files will ever be
-                installed directly into the "PREFIX" directory.
-                
-                If you have special needs, you can also customize the
-                individual subdirectories with the following options.
-                
+
+            Install all files under the directory "PREFIX" instead of "/usr/
+            local/pgsql". The actual files will be installed into various
+            subdirectories; no files will ever be installed directly into the
+            "PREFIX" directory.
+            If you have special needs, you can also customize the individual
+            subdirectories with the following options.
+
         --exec-prefix=EXEC-PREFIX
-                You can install architecture-dependent files under a
-                different prefix, "EXEC-PREFIX", than what "PREFIX" was
-                set to. This can be useful to share
-                architecture-independent files between hosts. If you omit
-                this, then "EXEC-PREFIX" is set equal to "PREFIX" and
-                both architecture-dependent and independent files will be
-                installed under the same tree, which is probably what you
-                want.
-                
+
+            You can install architecture-dependent files under a different
+            prefix, "EXEC-PREFIX", than what "PREFIX" was set to. This can be
+            useful to share architecture-independent files between hosts. If
+            you omit this, then "EXEC-PREFIX" is set equal to "PREFIX" and both
+            architecture-dependent and independent files will be installed
+            under the same tree, which is probably what you want.
+
         --bindir=DIRECTORY
-                Specifies the directory for executable programs. The
-                default is "EXEC-PREFIX/bin", which normally means
-                "/usr/local/pgsql/bin".
-                
+
+            Specifies the directory for executable programs. The default is
+            "EXEC-PREFIX/bin", which normally means "/usr/local/pgsql/bin".
+
         --datadir=DIRECTORY
-                Sets the directory for read-only data files used by the
-                installed programs. The default is "PREFIX/share". Note
-                that this has nothing to do with where your database
-                files will be placed.
-                
+
+            Sets the directory for read-only data files used by the installed
+            programs. The default is "PREFIX/share". Note that this has nothing
+            to do with where your database files will be placed.
+
         --sysconfdir=DIRECTORY
-                The directory for various configuration files,
-                "PREFIX/etc" by default.
-                
+
+            The directory for various configuration files, "PREFIX/etc" by
+            default.
+
         --libdir=DIRECTORY
-                The location to install libraries and dynamically
-                loadable modules. The default is "EXEC-PREFIX/lib".
-                
+
+            The location to install libraries and dynamically loadable modules.
+            The default is "EXEC-PREFIX/lib".
+
         --includedir=DIRECTORY
-                The directory for installing C and C++ header files. The
-                default is "PREFIX/include".
-                
+
+            The directory for installing C and C++ header files. The default is
+            "PREFIX/include".
+
         --docdir=DIRECTORY
-                Documentation files, except "man" pages, will be
-                installed into this directory. The default is
-                "PREFIX/doc".
-                
+
+            Documentation files, except "man" pages, will be installed into
+            this directory. The default is "PREFIX/doc".
+
         --mandir=DIRECTORY
-                The man pages that come with PostgreSQL will be installed
-                under this directory, in their respective "manx"
-                subdirectories. The default is "PREFIX/man".
-                
-     Note: Care has been taken to make it possible to install PostgreSQL
-     into shared installation locations (such as "/usr/local/include")
-     without interfering with the namespace of the rest of the system.
-     First, the string "/postgresql" is automatically appended to
-     datadir, sysconfdir, and docdir, unless the fully expanded
-     directory name already contains the string "postgres" or "pgsql".
-     For example, if you choose "/usr/local" as prefix, the
-     documentation will be installed in "/usr/local/doc/postgresql", but
-     if the prefix is "/opt/postgres", then it will be in
-     "/opt/postgres/doc". The public C header files of the client
-     interfaces are installed into includedir and are namespace-clean.
-     The internal header files and the server header files are installed
-     into private directories under includedir. See the documentation of
-     each interface for information about how to get at the its header
-     files. Finally, a private subdirectory will also be created, if
-     appropriate, under libdir for dynamically loadable modules.
-       
+
+            The man pages that come with PostgreSQL will be installed under
+            this directory, in their respective "manx" subdirectories. The
+            default is "PREFIX/man".
+
+           Note: Care has been taken to make it possible to install
+           PostgreSQL into shared installation locations (such as "/usr/
+           local/include") without interfering with the namespace of the
+           rest of the system. First, the string "/postgresql" is
+           automatically appended to datadir, sysconfdir, and docdir,
+           unless the fully expanded directory name already contains the
+           string "postgres" or "pgsql". For example, if you choose "/usr/
+           local" as prefix, the documentation will be installed in "/usr/
+           local/doc/postgresql", but if the prefix is "/opt/postgres",
+           then it will be in "/opt/postgres/doc". The public C header
+           files of the client interfaces are installed into includedir
+           and are namespace-clean. The internal header files and the
+           server header files are installed into private directories
+           under includedir. See the documentation of each interface for
+           information about how to get at the its header files. Finally,
+           a private subdirectory will also be created, if appropriate,
+           under libdir for dynamically loadable modules.
+
         --with-includes=DIRECTORIES
-                "DIRECTORIES" is a colon-separated list of directories
-                that will be added to the list the compiler searches for
-                header files. If you have optional packages (such as GNU
-                Readline) installed in a non-standard location, you have
-                to use this option and probably also the corresponding
-                "--with-libraries" option.
-                
-                Example:
-                --with-includes=/opt/gnu/include:/usr/sup/include.
-                
+
+            "DIRECTORIES" is a colon-separated list of directories that will be
+            added to the list the compiler searches for header files. If you
+            have optional packages (such as GNU Readline) installed in a non-
+            standard location, you have to use this option and probably also
+            the corresponding "--with-libraries" option.
+            Example: --with-includes=/opt/gnu/include:/usr/sup/include.
+
         --with-libraries=DIRECTORIES
-                "DIRECTORIES" is a colon-separated list of directories to
-                search for libraries. You will probably have to use this
-                option (and the corresponding "--with-includes" option)
-                if you have packages installed in non-standard locations.
-                
-                Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
-                
+
+            "DIRECTORIES" is a colon-separated list of directories to search
+            for libraries. You will probably have to use this option (and the
+            corresponding "--with-includes" option) if you have packages
+            installed in non-standard locations.
+            Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
+
         --enable-nls[=LANGUAGES]
-                Enables Native Language Support (NLS), that is, the
-                ability to display a program's messages in a language
-                other than English. "LANGUAGES" is a space separated list
-                of codes of the languages that you want supported, for
-                example --enable-nls='de fr'. (The intersection between
-                your list and the set of actually provided translations
-                will be computed automatically.) If you do not specify a
-                list, then all available translations are installed.
-                
-                To use this option, you will need an implementation of
-                the Gettext API; see above.
-                
+
+            Enables Native Language Support (NLS), that is, the ability to
+            display a program's messages in a language other than English.
+            "LANGUAGES" is a space separated list of codes of the languages
+            that you want supported, for example --enable-nls='de fr'. (The
+            intersection between your list and the set of actually provided
+            translations will be computed automatically.) If you do not specify
+            a list, then all available translations are installed.
+            To use this option, you will need an implementation of the Gettext
+            API; see above.
+
         --with-pgport=NUMBER
-                Set "NUMBER" as the default port number for server and
-                clients. The default is 5432. The port can always be
-                changed later on, but if you specify it here then both
-                server and clients will have the same default compiled
-                in, which can be very convenient. Usually the only good
-                reason to select a non-default value is if you intend to
-                run multiple PostgreSQL servers on the same machine.
-                
+
+            Set "NUMBER" as the default port number for server and clients. The
+            default is 5432. The port can always be changed later on, but if
+            you specify it here then both server and clients will have the same
+            default compiled in, which can be very convenient. Usually the only
+            good reason to select a non-default value is if you intend to run
+            multiple PostgreSQL servers on the same machine.
+
         --with-perl
-                Build the PL/Perl server-side language.
-                
+
+            Build the PL/Perl server-side language.
+
         --with-python
-                Build the PL/Python server-side language.
-                
+
+            Build the PL/Python server-side language.
+
         --with-tcl
-                Build components that require Tcl/Tk, which are libpgtcl,
-                pgtclsh, pgtksh, and PL/Tcl. But see below about
-                "--without-tk".
-                
+
+            Build components that require Tcl/Tk, which are libpgtcl, pgtclsh,
+            pgtksh, and PL/Tcl. But see below about "--without-tk".
+
         --without-tk
-                If you specify "--with-tcl" and this option, then the
-                program that requires Tk (pgtksh) will be excluded.
-                
+
+            If you specify "--with-tcl" and this option, then the program that
+            requires Tk (pgtksh) will be excluded.
+
         --with-tclconfig=DIRECTORY, --with-tkconfig=DIRECTORY
-                Tcl/Tk installs the files "tclConfig.sh" and
-                "tkConfig.sh", which contain configuration information
-                needed to build modules interfacing to Tcl or Tk. These
-                files are normally found automatically at their
-                well-known locations, but if you want to use a different
-                version of Tcl or Tk you can specify the directory in
-                which to find them.
-                
+
+            Tcl/Tk installs the files "tclConfig.sh" and "tkConfig.sh", which
+            contain configuration information needed to build modules
+            interfacing to Tcl or Tk. These files are normally found
+            automatically at their well-known locations, but if you want to use
+            a different version of Tcl or Tk you can specify the directory in
+            which to find them.
+
         --with-java
-                Build the JDBC driver and associated Java packages.
-                
+
+            Build the JDBC driver and associated Java packages.
+
         --with-krb4[=DIRECTORY], --with-krb5[=DIRECTORY]
-                Build with support for Kerberos authentication. You can
-                use either Kerberos version 4 or 5, but not both. The
-                "DIRECTORY" argument specifies the root directory of the
-                Kerberos installation; "/usr/athena" is assumed as
-                default. If the relevant header files and libraries are
-                not under a common parent directory, then you must use
-                the "--with-includes" and "--with-libraries" options in
-                addition to this option. If, on the other hand, the
-                required files are in a location that is searched by
-                default (e.g., "/usr/lib"), then you can leave off the
-                argument.
-                
-                "configure" will check for the required header files and
-                libraries to make sure that your Kerberos installation is
-                sufficient before proceeding.
-                
+
+            Build with support for Kerberos authentication. You can use either
+            Kerberos version 4 or 5, but not both. The "DIRECTORY" argument
+            specifies the root directory of the Kerberos installation; "/usr/
+            athena" is assumed as default. If the relevant header files and
+            libraries are not under a common parent directory, then you must
+            use the "--with-includes" and "--with-libraries" options in
+            addition to this option. If, on the other hand, the required files
+            are in a location that is searched by default (e.g., "/usr/lib"),
+            then you can leave off the argument.
+            "configure" will check for the required header files and libraries
+            to make sure that your Kerberos installation is sufficient before
+            proceeding.
+
         --with-krb-srvnam=NAME
-                The name of the Kerberos service principal. postgres is
-                the default. There's probably no reason to change this.
-                
+
+            The name of the Kerberos service principal. postgres is the
+            default. There's probably no reason to change this.
+
         --with-openssl[=DIRECTORY]
-                Build with support for SSL (encrypted) connections. This
-                requires the OpenSSL package to be installed. The
-                "DIRECTORY" argument specifies the root directory of the
-                OpenSSL installation; the default is "/usr/local/ssl".
-                
-                "configure" will check for the required header files and
-                libraries to make sure that your OpenSSL installation is
-                sufficient before proceeding.
-                
+
+            Build with support for SSL (encrypted) connections. This requires
+            the OpenSSL package to be installed. The "DIRECTORY" argument
+            specifies the root directory of the OpenSSL installation; the
+            default is "/usr/local/ssl".
+            "configure" will check for the required header files and libraries
+            to make sure that your OpenSSL installation is sufficient before
+            proceeding.
+
         --with-pam
-                Build with PAM (Pluggable Authentication Modules)
-                support.
-                
+
+            Build with PAM (Pluggable Authentication Modules) support.
+
         --without-readline
-                Prevents the use of the Readline library. This disables
-                command-line editing and history in psql, so it is not
-                recommended.
-                
+
+            Prevents the use of the Readline library. This disables command-
+            line editing and history in psql, so it is not recommended.
+
         --with-rendezvous
-                Build with Rendezvous support.
-                
+
+            Build with Rendezvous support.
+
         --disable-spinlocks
-                Allows source builds to succeed without CPU spinlock
-                support. Lack of spinlock support will produce poor
-                performance. This option is to be used only by platforms
-                lacking spinlock support.
-                
+
+            Allow the builds to succeed even if PostgreSQL has no CPU spinlock
+            support for the platform. The lack of spinlock support will result
+            in poor performance; therefore, this option should only be used if
+            the build aborts and informs you that the platform lacks spinlock
+            support.
+
         --enable-thread-safety
-                Allow separate libpq and ecpg threads to safely control
-                their private connection handles.
-                
+
+            Make the client libraries thread-safe. This allows concurrent
+            threads in libpq and ECPG programs to safely control their private
+            connection handles.
+
         --without-zlib
-                Prevents the use of the Zlib library. This disables
-                compression support in pg_dump. This option is only
-                intended for those rare systems where this library is not
-                available.
-                
+
+            Prevents the use of the Zlib library. This disables compression
+            support in pg_dump. This option is only intended for those rare
+            systems where this library is not available.
+
         --enable-debug
-                Compiles all programs and libraries with debugging
-                symbols. This means that you can run the programs through
-                a debugger to analyze problems. This enlarges the size of
-                the installed executables considerably, and on non-GCC
-                compilers it usually also disables compiler optimization,
-                causing slowdowns. However, having the symbols available
-                is extremely helpful for dealing with any problems that
-                may arise. Currently, this option is recommended for
-                production installations only if you use GCC. But you
-                should always have it on if you are doing development
-                work or running a beta version.
-                
+
+            Compiles all programs and libraries with debugging symbols. This
+            means that you can run the programs through a debugger to analyze
+            problems. This enlarges the size of the installed executables
+            considerably, and on non-GCC compilers it usually also disables
+            compiler optimization, causing slowdowns. However, having the
+            symbols available is extremely helpful for dealing with any
+            problems that may arise. Currently, this option is recommended for
+            production installations only if you use GCC. But you should always
+            have it on if you are doing development work or running a beta
+            version.
+
         --enable-cassert
-                Enables assertion checks in the server, which test for
-                many "can't happen" conditions. This is invaluable for
-                code development purposes, but the tests slow things down
-                a little. Also, having the tests turned on won't
-                necessarily enhance the stability of your server! The
-                assertion checks are not categorized for severity, and so
-                what might be a relatively harmless bug will still lead
-                to server restarts if it triggers an assertion failure.
-                Currently, this option is not recommended for production
-                use, but you should have it on for development work or
-                when running a beta version.
-                
+
+            Enables assertion checks in the server, which test for many "can't
+            happen" conditions. This is invaluable for code development
+            purposes, but the tests slow things down a little. Also, having the
+            tests turned on won't necessarily enhance the stability of your
+            server! The assertion checks are not categorized for severity, and
+            so what might be a relatively harmless bug will still lead to
+            server restarts if it triggers an assertion failure. Currently,
+            this option is not recommended for production use, but you should
+            have it on for development work or when running a beta version.
+
         --enable-depend
-                Enables automatic dependency tracking. With this option,
-                the makefiles are set up so that all affected object
-                files will be rebuilt when any header file is changed.
-                This is useful if you are doing development work, but is
-                just wasted overhead if you intend only to compile once
-                and install. At present, this option will work only if
-                you use GCC.
-                
-       If you prefer a C compiler different from the one "configure"
-       picks then you can set the environment variable CC to the program
-       of your choice. By default, "configure" will pick "gcc" unless
-       this is inappropriate for the platform. Similarly, you can
-       override the default compiler flags with the CFLAGS variable.
-       You can specify environment variables on the "configure" command
-       line, for example:
-./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
-    2. Build
-       To start the build, type
-gmake
-       (Remember to use GNU make.) The build may take anywhere from 5
-       minutes to half an hour depending on your hardware. The last line
-       displayed should be
-All of PostgreSQL is successfully made. Ready to install.
-    3. Regression Tests
-       If you want to test the newly built server before you install it,
-       you can run the regression tests at this point. The regression
-       tests are a test suite to verify that PostgreSQL runs on your
-       machine in the way the developers expected it to. Type
-gmake check
-       (This won't work as root; do it as an unprivileged user.) It is
-       possible that some tests fail, due to differences in error message
-       wording or floating point results. The file
-       "src/test/regress/README" and the documentation contain detailed
-       information about interpreting the test results. You can repeat
-       this test at any later time by issuing the same command.
-    4. Installing The Files
-       
-     Note: If you are upgrading an existing system and are going to
-     install the new files over the old ones, then you should have
-     backed up your data and shut down the old server by now, as
-     explained in the section called If You Are Upgrading above.
-       To install PostgreSQL enter
-gmake install
-       This will install files into the directories that were specified
-       in step 1. Make sure that you have appropriate permissions to
-       write into that area. Normally you need to do this step as root.
-       Alternatively, you could create the target directories in advance
-       and arrange for appropriate permissions to be granted.
-       You can use gmake install-strip instead of gmake install to strip
-       the executable files and libraries as they are installed. This
-       will save some space. If you built with debugging support,
-       stripping will effectively remove the debugging support, so it
-       should only be done if debugging is no longer needed.
-       install-strip tries to do a reasonable job saving space, but it
-       does not have perfect knowledge of how to strip every unneeded
-       byte from an executable file, so if you want to save all the disk
-       space you possibly can, you will have to do manual work.
-       The standard installation provides only the header files needed
-       for client application development. If you plan to do any
-       server-side program development (such as custom functions or data
-       types written in C), then you may want to install the entire
-       PostgreSQL include tree into your target include directory. To do
-       that, enter
-gmake install-all-headers
-       This adds a megabyte or two to the installation footprint, and is
-       only useful if you don't plan to keep the whole source tree around
-       for reference. (If you do, you can just use the source's include
-       directory when building server-side software.)
-       Client-only installation: If you want to install only the client
-       applications and interface libraries, then you can use these
-       commands:
-gmake -C src/bin install
-gmake -C src/include install
-gmake -C src/interfaces install
-gmake -C doc install
-       
-   Uninstallation: To undo the installation use the command "gmake
-   uninstall". However, this will not remove any created directories.
-   
-   Cleaning: After the installation you can make room by removing the
-   built files from the source tree with the command "gmake clean". This
-   will preserve the files made by the "configure" program, so that you
-   can rebuild everything with "gmake" later on. To reset the source tree
-   to the state in which it was distributed, use "gmake distclean". If
-   you are going to build for several platforms from the same source tree
-   you must do this and re-configure for each build.
-   
-   If you perform a build and then discover that your "configure" options
-   were wrong, or if you change anything that "configure" investigates
-   (for example, software upgrades), then it's a good idea to do "gmake
-   distclean" before reconfiguring and rebuilding. Without this, your
-   changes in configuration choices may not propagate everywhere they
-   need to.
-     _________________________________________________________________
-   
-                          Post-Installation Setup
-                                      
-                                   Tuning
-                                      
-   By default, PostgreSQL is configured to run on minimal hardware. This
-   allows it to start up with almost any hardware configuration. However,
-   the default configuration is not designed for optimum performance. To
-   achieve optimum performance, several server variables must be
-   adjusted, the two most common being shared_buffers and sort_mem
-   mentioned in the documentation . Other parameters in the documentation
-   also affect performance.
-     _________________________________________________________________
-   
-                              Shared Libraries
-                                      
-   On some systems that have shared libraries (which most systems do) you
-   need to tell your system how to find the newly installed shared
-   libraries. The systems on which this is *not* necessary include
-   BSD/OS, FreeBSD, HP-UX, IRIX, Linux, NetBSD, OpenBSD, Tru64 UNIX
-   (formerly Digital UNIX), and Solaris.
-   
-   The method to set the shared library search path varies between
-   platforms, but the most widely usable method is to set the environment
-   variable LD_LIBRARY_PATH like so: In Bourne shells ("sh", "ksh",
-   "bash", "zsh")
-LD_LIBRARY_PATH=/usr/local/pgsql/lib
-export LD_LIBRARY_PATH
-
-   or in "csh" or "tcsh"
-setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
-
-   Replace /usr/local/pgsql/lib with whatever you set "--libdir" to in
-   step 1. You should put these commands into a shell start-up file such
-   as "/etc/profile" or "~/.bash_profile". Some good information about
-   the caveats associated with this method can be found at
-   http://www.visi.com/~barr/ldpath.html.
-   
-   On some systems it might be preferable to set the environment variable
-   LD_RUN_PATH *before* building.
-   
-   On Cygwin, put the library directory in the PATH or move the ".dll"
-   files into the "bin" directory.
-   
-   If in doubt, refer to the manual pages of your system (perhaps "ld.so"
-   or "rld"). If you later on get a message like
-psql: error in loading shared libraries
-libpq.so.2.1: cannot open shared object file: No such file or directory
-
-   then this step was necessary. Simply take care of it then.
-   
-   If you are on BSD/OS, Linux, or SunOS 4 and you have root access you
-   can run
-/sbin/ldconfig /usr/local/pgsql/lib
-
-   (or equivalent directory) after installation to enable the run-time
-   linker to find the shared libraries faster. Refer to the manual page
-   of "ldconfig" for more information. On FreeBSD, NetBSD, and OpenBSD
-   the command is
-/sbin/ldconfig -m /usr/local/pgsql/lib
-
-   instead. Other systems are not known to have an equivalent command.
-     _________________________________________________________________
-   
-                           Environment Variables
-                                      
-   If you installed into "/usr/local/pgsql" or some other location that
-   is not searched for programs by default, you should add
-   "/usr/local/pgsql/bin" (or whatever you set "--bindir" to in step 1)
-   into your PATH. Strictly speaking, this is not necessary, but it will
-   make the use of PostgreSQL much more convenient.
-   
-   To do this, add the following to your shell start-up file, such as
-   "~/.bash_profile" (or "/etc/profile", if you want it to affect every
-   user):
-PATH=/usr/local/pgsql/bin:$PATH
-export PATH
-
-   If you are using "csh" or "tcsh", then use this command:
-set path = ( /usr/local/pgsql/bin $path )
-
-   To enable your system to find the man documentation, you need to add
-   lines like the following to a shell start-up file unless you installed
-   into a location that is searched by default.
-MANPATH=/usr/local/pgsql/man:$MANPATH
-export MANPATH
-
-   The environment variables PGHOST and PGPORT specify to client
-   applications the host and port of the database server, overriding the
-   compiled-in defaults. If you are going to run client applications
-   remotely then it is convenient if every user that plans to use the
-   database sets PGHOST. This is not required, however: the settings can
-   be communicated via command line options to most client programs.
-     _________________________________________________________________
-   
-                              Getting Started
-                                      
-   The following is a quick summary of how to get PostgreSQL up and
-   running once installed. The main documentation contains more
-   information.
-    1. Create a user account for the PostgreSQL server. This is the user
-       the server will run as. For production use you should create a
-       separate, unprivileged account ("postgres" is commonly used). If
-       you do not have root access or just want to play around, your own
-       user account is enough, but running the server as root is a
-       security risk and will not work.
-adduser postgres
-    2. Create a database installation with the "initdb" command. To run
-       "initdb" you must be logged in to your PostgreSQL server account.
-       It will not work as root.
-root# mkdir /usr/local/pgsql/data
-root# chown postgres /usr/local/pgsql/data
-root# su - postgres
-postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
-       The "-D" option specifies the location where the data will be
-       stored. You can use any path you want, it does not have to be
-       under the installation directory. Just make sure that the server
-       account can write to the directory (or create it, if it doesn't
-       already exist) before starting "initdb", as illustrated here.
-    3. The previous step should have told you how to start up the
-       database server. Do so now. The command should look something like
-/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
-       This will start the server in the foreground. To put the server in
-       the background use something like
-nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \
-    </dev/null >>server.log 2>&1 </dev/null &
-       To stop a server running in the background you can type
-kill `cat /usr/local/pgsql/data/postmaster.pid`
-       In order to allow TCP/IP connections (rather than only Unix domain
-       socket ones) you need to pass the "-i" option to "postmaster".
-    4. Create a database:
-createdb testdb
-       Then enter
-psql testdb
-       to connect to that database. At the prompt you can enter SQL
-       commands and start experimenting.
-     _________________________________________________________________
-   
-                                 What Now?
-                                      
-     * The PostgreSQL distribution contains a comprehensive documentation
-       set, which you should read sometime. After installation, the
-       documentation can be accessed by pointing your browser to
-       "/usr/local/pgsql/doc/html/index.html", unless you changed the
-       installation directories.
-       The first few chapters of the main documentation are the Tutorial,
-       which should be your first reading if you are completely new to
-       SQL databases. If you are familiar with database concepts then you
-       want to proceed with part on server administration, which contains
-       information about how to set up the database server, database
-       users, and authentication.
-     * Usually, you will want to modify your computer so that it will
-       automatically start the database server whenever it boots. Some
-       suggestions for this are in the documentation.
-     * Run the regression tests against the installed server (using the
-       sequential test method). If you didn't run the tests before
-       installation, you should definitely do it now. This is also
-       explained in the documentation.
-     _________________________________________________________________
-   
-                            Supported Platforms
-                                      
-   PostgreSQL has been verified by the developer community to work on the
-   platforms listed below. A supported platform generally means that
-   PostgreSQL builds and installs according to these instructions and
-   that the regression tests pass.
-   
-     Note: If you are having problems with the installation on a
-     supported platform, please write to <pgsql-bugs@postgresql.org> or
-     <pgsql-ports@postgresql.org>, not to the people listed here.
-     
-   OS Processor Version Reported Remarks
-   AIX RS6000 7.3 2002-11-12, Andreas Zeugswetter
-   (<ZeugswetterA@spardat.at>) see also doc/FAQ_AIX
-   BSD/OS x86 7.3 2002-10-25, Bruce Momjian (<pgman@candle.pha.pa.us>)
-   4.2
-   FreeBSD Alpha 7.3 2002-11-13, Chris Kings-Lynne
-   (<chriskl@familyhealth.com.au>)
-   FreeBSD x86 7.3 2002-10-29, 3.3, Nigel J. Andrews
-   (<nandrews@investsystems.co.uk>), 4.7, Larry Rosenman
-   (<ler@lerctr.org>), 5.0, Sean Chittenden (<sean@chittenden.org>)
-   HP-UX PA-RISC 7.3 2002-10-28, 10.20 Tom Lane (<tgl@sss.pgh.pa.us>),
-   11.00, 11.11, 32 and 64 bit, Giles Lean (<giles@nemeton.com.au>) gcc
-   and cc; see also doc/FAQ_HPUX
-   IRIX MIPS 7.3 2002-10-27, Ian Barwick (<barwick@gmx.net>) Irix64 Komma
-   6.5
-   Linux Alpha 7.3 2002-10-28, Magnus Naeslund (<mag@fbab.net>)
-   2.4.19-pre6
-   Linux armv4l 7.2 2001-12-10, Mark Knox (<segfault@hardline.org>) 2.2.x
-   Linux MIPS 7.2 2001-11-15, Hisao Shibuya (<shibuya@alpha.or.jp>)
-   2.0.x; Cobalt Qube2
-   Linux PlayStation 2 7.3 2002-11-19, Permaine Cheung
-   <pcheung@redhat.com>) #undef HAS_TEST_AND_SET, remove slock_t typedef
-   Linux PPC74xx 7.3 2002-10-26, Tom Lane (<tgl@sss.pgh.pa.us>) bye
-   2.2.18; Apple G3
-   Linux S/390 7.3 2002-11-22, Permaine Cheung <pcheung@redhat.com>) both
-   s390 and s390x (32 and 64 bit)
-   Linux Sparc 7.3 2002-10-26, Doug McNaught (<doug@mcnaught.org>) 3.0
-   Linux x86 7.3 2002-10-26, Alvaro Herrera (<alvherre@dcc.uchile.cl>)
-   2.4
-   MacOS X PPC 7.3 2002-10-28, 10.1, Tom Lane (<tgl@sss.pgh.pa.us>),
-   10.2.1, Adam Witney (<awitney@sghms.ac.uk>)
-   NetBSD Alpha 7.2 2001-11-20, Thomas Thai (<tom@minnesota.com>) 1.5W
-   NetBSD arm32 7.3 2002-11-19, Patrick Welche (<prlw1@newn.cam.ac.uk>)
-   1.6
-   NetBSD m68k 7.0 2000-04-10, Henry B. Hotz (<hotz@jpl.nasa.gov>) Mac
-   8xx
-   NetBSD MIPS 7.2.1 2002-06-13, Warwick Hunter (<whunter@agile.tv>)
-   1.5.3
-   NetBSD PPC 7.2 2001-11-28, Bill Studenmund (<wrstuden@netbsd.org>) 1.5
-   NetBSD Sparc 7.2 2001-12-03, Matthew Green (<mrg@eterna.com.au>) 32-
-   and 64-bit builds
-   NetBSD VAX 7.1 2001-03-30, Tom I. Helbekkmo (<tih@kpnQwest.no>) 1.5
-   NetBSD x86 7.3 2002-11-14, Patrick Welche (<prlw1@newn.cam.ac.uk>) 1.6
-   OpenBSD Sparc 7.3 2002-11-17, Christopher Kings-Lynne
-   (<chriskl@familyhealth.com.au>) 3.2
-   OpenBSD x86 7.3 2002-11-14, 3.1 Magnus Naeslund (<mag@fbab.net>), 3.2
-   Christopher Kings-Lynne (<chriskl@familyhealth.com.au>)
-   SCO OpenServer 5 x86 7.3.1 2002-12-11, Shibashish Satpathy
-   (<shib@postmark.net>) 5.0.4, gcc; see also doc/FAQ_SCO
-   Solaris Sparc 7.3 2002-10-28, Andrew Sullivan
-   (<andrew@libertyrms.info>) Solaris 7 and 8; see also doc/FAQ_Solaris
-   Solaris x86 7.3 2002-11-20, Martin Renters (<martin@datafax.com>) 5.8;
-   see also doc/FAQ_Solaris
-   SunOS 4 Sparc 7.2 2001-12-04, Tatsuo Ishii (<t-ishii@sra.co.jp>)
-   Tru64 UNIX Alpha 7.3 2002-11-05, Alessio Bragadini
-   (<alessio@albourne.com>)
-   UnixWare x86 7.3 2002-11-01, 7.1.3 Larry Rosenman (<ler@lerctr.org>),
-   7.1.1 and 7.1.2(8.0.0) Olivier Prenant (<ohp@pyrenet.fr>) see also
-   doc/FAQ_SCO
-   Windows x86 7.3 2002-10-29, Dave Page (<dpage@vale-housing.co.uk>),
-   Jason Tishler (<jason@tishler.net>) with Cygwin; see doc/FAQ_MSWIN
-   Windows x86 7.3 2002-11-05, Dave Page (<dpage@vale-housing.co.uk>)
-   native is client-side only; see documentation
-   
-   Unsupported Platforms: The following platforms are either known not to
-   work, or they used to work in a previous release and we did not
-   receive explicit confirmation of a successful test with version 7.4 at
-   the time this list was compiled. We include these here to let you know
-   that these platforms *could* be supported if given some attention.
-   
-   OS Processor Version Reported Remarks
-   BeOS x86 7.2 2001-11-29, Cyril Velter (<cyril.velter@libertysurf.fr>)
-   needs updates to semaphore code
-   DG/UX 5.4R4.11 m88k 6.3 1998-03-01, Brian E Gallew (<geek+@cmu.edu>)
-   no recent reports
-   MkLinux DR1 PPC750 7.0 2001-04-03, Tatsuo Ishii (<t-ishii@sra.co.jp>)
-   7.1 needs OS update?
-   NeXTSTEP x86 6.x 1998-03-01, David Wetzel (<dave@turbocat.de>) bit rot
-   suspected
-   QNX 4 RTOS x86 7.2 2001-12-10, Bernd Tegge (<tegge@repas-aeg.de>)
-   needs updates to semaphore code; see also doc/FAQ_QNX4
-   QNX RTOS v6 x86 7.2 2001-11-20, Igor Kovalenko
-   (<Igor.Kovalenko@motorola.com>) patches available in archives, but too
-   late for 7.2
-   System V R4 m88k 6.2.1 1998-03-01, Doug Winterburn
-   (<dlw@seavme.xroads.com>) needs new TAS spinlock code
-   System V R4 MIPS 6.4 1998-10-28, Frank Ridderbusch
-   (<ridderbusch.pad@sni.de>) no recent reports
-   Ultrix MIPS 7.1 2001-03-26 TAS spinlock code not detected
-   Ultrix VAX 6.x 1998-03-01
+
+            Enables automatic dependency tracking. With this option, the
+            makefiles are set up so that all affected object files will be
+            rebuilt when any header file is changed. This is useful if you are
+            doing development work, but is just wasted overhead if you intend
+            only to compile once and install. At present, this option will work
+            only if you use GCC.
+
+      If you prefer a C compiler different from the one "configure" picks then
+      you can set the environment variable CC to the program of your choice. By
+      default, "configure" will pick "gcc" unless this is inappropriate for the
+      platform. Similarly, you can override the default compiler flags with the
+      CFLAGS variable.
+
+      You can specify environment variables on the "configure" command line,
+      for example:
+
+        ./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
+
+   2. Build
+      To start the build, type
+
+        gmake
+
+      (Remember to use GNU make.) The build may take anywhere from 5 minutes to
+      half an hour depending on your hardware. The last line displayed should
+      be
+
+        All of PostgreSQL is successfully made. Ready to install.
+
+   3. Regression Tests
+      If you want to test the newly built server before you install it, you can
+      run the regression tests at this point. The regression tests are a test
+      suite to verify that PostgreSQL runs on your machine in the way the
+      developers expected it to. Type
+
+        gmake check
+
+      (This won't work as root; do it as an unprivileged user.) The file "src/
+      test/regress/README" and the documentation contain detailed information
+      about interpreting the test results. You can repeat this test at any
+      later time by issuing the same command.
+
+   4. Installing The Files
+           Note: If you are upgrading an existing system and are going to
+           install the new files over the old ones, then you should have
+           backed up your data and shut down the old server by now, as
+           explained in
+           the Section called If You Are Upgrading
+            above.
+      To install PostgreSQL enter
+
+        gmake install
+
+      This will install files into the directories that were specified in step
+      1. Make sure that you have appropriate permissions to write into that
+      area. Normally you need to do this step as root. Alternatively, you could
+      create the target directories in advance and arrange for appropriate
+      permissions to be granted.
+      You can use gmake install-strip instead of gmake install to strip the
+      executable files and libraries as they are installed. This will save some
+      space. If you built with debugging support, stripping will effectively
+      remove the debugging support, so it should only be done if debugging is
+      no longer needed. install-strip tries to do a reasonable job saving
+      space, but it does not have perfect knowledge of how to strip every
+      unneeded byte from an executable file, so if you want to save all the
+      disk space you possibly can, you will have to do manual work.
+      The standard installation provides only the header files needed for
+      client application development. If you plan to do any server-side program
+      development (such as custom functions or data types written in C), then
+      you may want to install the entire PostgreSQL include tree into your
+      target include directory. To do that, enter
+
+        gmake install-all-headers
+
+      This adds a megabyte or two to the installation footprint, and is only
+      useful if you don't plan to keep the whole source tree around for
+      reference. (If you do, you can just use the source's include directory
+      when building server-side software.)
+      Client-only installation: If you want to install only the client
+      applications and interface libraries, then you can use these commands:
+
+        gmake -C src/bin install
+        gmake -C src/include install
+        gmake -C src/interfaces install
+        gmake -C doc install
+
+Uninstallation: To undo the installation use the command "gmake uninstall".
+However, this will not remove any created directories.
+Cleaning: After the installation you can make room by removing the built files
+from the source tree with the command "gmake clean". This will preserve the
+files made by the "configure" program, so that you can rebuild everything with
+"gmake" later on. To reset the source tree to the state in which it was
+distributed, use "gmake distclean". If you are going to build for several
+platforms from the same source tree you must do this and re-configure for each
+build.
+If you perform a build and then discover that your "configure" options were
+wrong, or if you change anything that "configure" investigates (for example,
+software upgrades), then it's a good idea to do "gmake distclean" before
+reconfiguring and rebuilding. Without this, your changes in configuration
+choices may not propagate everywhere they need to.
+
+-------------------------------------------------------------------------------
+
+Post-Installation Setup
+
+Shared Libraries
+
+On some systems that have shared libraries (which most systems do) you need to
+tell your system how to find the newly installed shared libraries. The systems
+on which this is *not* necessary include BSD/OS, FreeBSD, HP-UX, IRIX, Linux,
+NetBSD, OpenBSD, Tru64 UNIX (formerly Digital UNIX), and Solaris.
+The method to set the shared library search path varies between platforms, but
+the most widely usable method is to set the environment variable
+LD_LIBRARY_PATH like so: In Bourne shells ("sh", "ksh", "bash", "zsh")
+
+  LD_LIBRARY_PATH=/usr/local/pgsql/lib
+  export LD_LIBRARY_PATH
+
+or in "csh" or "tcsh"
+
+  setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
+
+Replace /usr/local/pgsql/lib with whatever you set "--libdir" to in step 1. You
+should put these commands into a shell start-up file such as "/etc/profile" or
+"~/.bash_profile". Some good information about the caveats associated with this
+method can be found at http://www.visi.com/~barr/ldpath.html.
+On some systems it might be preferable to set the environment variable
+LD_RUN_PATH *before* building.
+On Cygwin, put the library directory in the PATH or move the ".dll" files into
+the "bin" directory.
+If in doubt, refer to the manual pages of your system (perhaps "ld.so" or
+"rld"). If you later on get a message like
+
+  psql: error in loading shared libraries
+  libpq.so.2.1: cannot open shared object file: No such file or directory
+
+then this step was necessary. Simply take care of it then.
+If you are on BSD/OS, Linux, or SunOS 4 and you have root access you can run
+
+  /sbin/ldconfig /usr/local/pgsql/lib
+
+(or equivalent directory) after installation to enable the run-time linker to
+find the shared libraries faster. Refer to the manual page of "ldconfig" for
+more information. On FreeBSD, NetBSD, and OpenBSD the command is
+
+  /sbin/ldconfig -m /usr/local/pgsql/lib
+
+instead. Other systems are not known to have an equivalent command.
+
+-------------------------------------------------------------------------------
+
+Environment Variables
+
+If you installed into "/usr/local/pgsql" or some other location that is not
+searched for programs by default, you should add "/usr/local/pgsql/bin" (or
+whatever you set "--bindir" to in step 1) into your PATH. Strictly speaking,
+this is not necessary, but it will make the use of PostgreSQL much more
+convenient.
+To do this, add the following to your shell start-up file, such as
+"~/.bash_profile" (or "/etc/profile", if you want it to affect every user):
+
+  PATH=/usr/local/pgsql/bin:$PATH
+  export PATH
+
+If you are using "csh" or "tcsh", then use this command:
+
+  set path = ( /usr/local/pgsql/bin $path )
+
+To enable your system to find the man documentation, you need to add lines like
+the following to a shell start-up file unless you installed into a location
+that is searched by default.
+
+  MANPATH=/usr/local/pgsql/man:$MANPATH
+  export MANPATH
+
+The environment variables PGHOST and PGPORT specify to client applications the
+host and port of the database server, overriding the compiled-in defaults. If
+you are going to run client applications remotely then it is convenient if
+every user that plans to use the database sets PGHOST. This is not required,
+however: the settings can be communicated via command line options to most
+client programs.
+
+-------------------------------------------------------------------------------
+
+Getting Started
+
+The following is a quick summary of how to get PostgreSQL up and running once
+installed. The main documentation contains more information.
+
+   1. Create a user account for the PostgreSQL server. This is the user the
+      server will run as. For production use you should create a separate,
+      unprivileged account ("postgres" is commonly used). If you do not have
+      root access or just want to play around, your own user account is enough,
+      but running the server as root is a security risk and will not work.
+
+        adduser postgres
+
+   2. Create a database installation with the "initdb" command. To run "initdb"
+      you must be logged in to your PostgreSQL server account. It will not work
+      as root.
+
+        root# mkdir /usr/local/pgsql/data
+        root# chown postgres /usr/local/pgsql/data
+        root# su - postgres
+        postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
+
+      The "-D" option specifies the location where the data will be stored. You
+      can use any path you want, it does not have to be under the installation
+      directory. Just make sure that the server account can write to the
+      directory (or create it, if it doesn't already exist) before starting
+      "initdb", as illustrated here.
+
+   3. The previous step should have told you how to start up the database
+      server. Do so now. The command should look something like
+
+        /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
+
+      This will start the server in the foreground. To put the server in the
+      background use something like
+
+        nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \
+            </dev/null >>server.log 2>&1 </dev/null &
+
+      To stop a server running in the background you can type
+
+        kill `cat /usr/local/pgsql/data/postmaster.pid`
+
+      In order to allow TCP/IP connections (rather than only Unix domain socket
+      ones) you need to pass the "-i" option to "postmaster".
+
+   4. Create a database:
+
+        createdb testdb
+
+      Then enter
+
+        psql testdb
+
+      to connect to that database. At the prompt you can enter SQL commands and
+      start experimenting.
+
+-------------------------------------------------------------------------------
+
+What Now?
+
+    * The PostgreSQL distribution contains a comprehensive documentation set,
+      which you should read sometime. After installation, the documentation can
+      be accessed by pointing your browser to "/usr/local/pgsql/doc/html/
+      index.html", unless you changed the installation directories.
+      The first few chapters of the main documentation are the Tutorial, which
+      should be your first reading if you are completely new to SQL databases.
+      If you are familiar with database concepts then you want to proceed with
+      part on server administration, which contains information about how to
+      set up the database server, database users, and authentication.
+
+    * Usually, you will want to modify your computer so that it will
+      automatically start the database server whenever it boots. Some
+      suggestions for this are in the documentation.
+
+    * Run the regression tests against the installed server (using "gmake
+      installcheck"). If you didn't run the tests before installation, you
+      should definitely do it now. This is also explained in the documentation.
+
+    * By default, PostgreSQL is configured to run on minimal hardware. This
+      allows it to start up with almost any hardware configuration. The default
+      configuration is, however, not designed for optimum performance. To
+      achieve optimum performance, several server parameters must be adjusted,
+      the two most common being shared_buffers and sort_mem mentioned in the
+      documentation. Other parameters mentioned in the documentation also
+      affect performance.
+
+-------------------------------------------------------------------------------
+
+Supported Platforms
+
+PostgreSQL has been verified by the developer community to work on the
+platforms listed below. A supported platform generally means that PostgreSQL
+builds and installs according to these instructions and that the regression
+tests pass.
+     Note: If you are having problems with the installation on a supported
+     platform, please write to <pgsql-bugs@postgresql.org> or <pgsql-
+     ports@postgresql.org>, not to the people listed here.
+ _____________________________________________________________________________
+|OS__________|Processor|Version|Reported______________________|Remarks________|
+|AIX         |RS6000   |7.4    |2003-10-25, Hans-Jürgen       |see also doc/  |
+|____________|_________|_______|Schönig_(<hs@cybertec.at>)____|FAQ_AIX________|
+|BSD/OS      |x86      |7.4    |2003-10-24, Bruce Momjian     |4.3            |
+|____________|_________|_______|(<pgman@candle.pha.pa.us>)____|_______________|
+|FreeBSD     |Alpha    |7.4    |2003-10-25, Peter Eisentraut  |4.8            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|FreeBSD     |x86      |7.4    |2003-10-24, Peter Eisentraut  |4.9            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|HP-UX       |PA-RISC  |7.4    |2003-10-31, 10.20, Tom Lane   |gcc and cc; see|
+|            |         |       |(<tgl@sss.pgh.pa.us>); 2003-  |also doc/      |
+|            |         |       |11-04, 11.00, Peter Eisentraut|FAQ_HPUX       |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|IRIX        |MIPS     |7.4    |2003-11-12, Robert E.         |6.5.20, cc only|
+|            |         |       |Bruccoleri                    |               |
+|____________|_________|_______|(<bruc@stone.congenomics.com>)|_______________|
+|Linux       |Alpha    |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |arm41    |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |Itanium  |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |m68k     |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |MIPS     |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |Opteron  |7.4    |2003-11-01, Jani Averbach     |2.6            |
+|____________|_________|_______|(<jaa@cc.jyu.fi>)_____________|_______________|
+|Linux       |PPC      |7.4    |2003-10-25, Noèl Köthe        |               |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |S/390    |7.4    |2003-10-25, Noèl Köthe        |2.4            |
+|____________|_________|_______|(<noel@debian.org>)___________|_______________|
+|Linux       |Sparc    |7.4    |2003-10-24, Peter Eisentraut  |2.4, 32-bit    |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|Linux       |x86      |7.4    |2003-10-24, Peter Eisentraut  |2.4            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|MacOS X     |PPC      |7.4    |2003-10-24, 10.2.8, Adam      |               |
+|            |         |       |Witney                        |               |
+|            |         |       |(<awitney@sghms.ac.uk>), 10.3,|               |
+|            |         |       |Marko Karppinen               |               |
+|____________|_________|_______|(<marko@karppinen.fi>)________|_______________|
+|NetBSD      |arm32    |7.4    |2003-11-12, Patrick Welche    |1.6ZE/acorn32  |
+|____________|_________|_______|(<prlw1@newn.cam.ac.uk>)______|_______________|
+|NetBSD      |x86      |7.4    |2003-10-24, Peter Eisentraut  |1.6            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|OpenBSD     |Sparc    |7.4    |2003-11-01, Peter Eisentraut  |3.4            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|OpenBSD     |x86      |7.4    |2003-10-24, Peter Eisentraut  |3.2            |
+|____________|_________|_______|(<peter_e@gmx.net>)___________|_______________|
+|Solaris     |Sparc    |7.4    |2003-10-26, Christopher Browne|2.8; see also  |
+|____________|_________|_______|(<cbbrowne@libertyrms.info>)__|doc/FAQ_Solaris|
+|Solaris     |x86      |7.4    |2003-10-26, Kurt Roeckx       |2.6 see also   |
+|____________|_________|_______|(<Q@ping.be>)_________________|doc/FAQ_Solaris|
+|Tru64 UNIX  |Alpha    |7.4    |2003-10-25, 5.1b, Peter       |               |
+|            |         |       |Eisentraut                    |               |
+|            |         |       |(<peter_e@gmx.net>); 2003-10- |               |
+|            |         |       |29, 4.0g, Alessio Bragadini   |               |
+|____________|_________|_______|(<alessio@albourne.com>)______|_______________|
+|UnixWare    |x86      |7.4    |2003-11-03, Larry Rosenman    |7.1.3; join    |
+|            |         |       |(<ler@lerctr.org>)            |test may fail, |
+|            |         |       |                              |see also doc/  |
+|____________|_________|_______|______________________________|FAQ_SCO________|
+|Windows with|x86      |7.4    |2003-10-24, Peter Eisentraut  |see doc/       |
+|Cygwin______|_________|_______|(<peter_e@gmx.net>)___________|FAQ_MSWIN______|
+|Windows     |x86      |7.4    |2003-10-27, Dave Page         |native is      |
+|            |         |       |(<dpage@vale-housing.co.uk>)  |client-side    |
+|            |         |       |                              |only, see      |
+|____________|_________|_______|______________________________|documentation__|
+
+Unsupported Platforms: The following platforms are either known not to work, or
+they used to work in a previous release and we did not receive explicit
+confirmation of a successful test with version 7.4 at the time this list was
+compiled. We include these here to let you know that these platforms *could* be
+supported if given some attention.
+ ________________________________________________________________________________
+|OS________|Processor__|Version|Reported_______________________|Remarks__________|
+|BeOS      |x86        |7.2    |2001-11-29, Cyril Velter       |needs updates to |
+|__________|___________|_______|(<cyril.velter@libertysurf.fr>)|semaphore_code___|
+|Linux     |PlayStation|7.4    |2003-11-02, Peter Eisentraut   |needs new        |
+|          |2          |       |(<peter_e@gmx.net>)            |config.guess, -- |
+|          |           |       |                               |disable-         |
+|          |           |       |                               |spinlocks, #undef|
+|          |           |       |                               |HAS_TEST_AND_SET,|
+|          |           |       |                               |disable tas_dummy|
+|__________|___________|_______|_______________________________|()_______________|
+|Linux     |PA-RISC    |7.4    |2003-10-25, Noèl Köthe         |needs --disable- |
+|          |           |       |(<noel@debian.org>)            |spinlocks,       |
+|__________|___________|_______|_______________________________|otherwise_OK_____|
+|NetBSD    |Alpha      |7.2    |2001-11-20, Thomas Thai        |1.5W             |
+|__________|___________|_______|(<tom@minnesota.com>)__________|_________________|
+|NetBSD    |MIPS       |7.2.1  |2002-06-13, Warwick Hunter     |1.5.3            |
+|__________|___________|_______|(<whunter@agile.tv>)___________|_________________|
+|NetBSD    |PPC        |7.2    |2001-11-28, Bill Studenmund    |1.5              |
+|__________|___________|_______|(<wrstuden@netbsd.org>)________|_________________|
+|NetBSD    |Sparc      |7.2    |2001-12-03, Matthew Green      |32- and 64-bit   |
+|__________|___________|_______|(<mrg@eterna.com.au>)__________|builds___________|
+|NetBSD    |VAX        |7.1    |2001-03-30, Tom I. Helbekkmo   |1.5              |
+|__________|___________|_______|(<tih@kpnQwest.no>)____________|_________________|
+|QNX 4 RTOS|x86        |7.2    |2001-12-10, Bernd Tegge        |needs updates to |
+|          |           |       |(<tegge@repas-aeg.de>)         |semaphore code;  |
+|          |           |       |                               |see also doc/    |
+|__________|___________|_______|_______________________________|FAQ_QNX4_________|
+|QNX RTOS  |x86        |7.2    |2001-11-20, Igor Kovalenko     |patches available|
+|v6        |           |       |(<Igor.Kovalenko@motorola.com>)|in archives, but |
+|__________|___________|_______|_______________________________|too_late_for_7.2_|
+|SCO       |x86        |7.3.1  |2002-12-11, Shibashish Satpathy|5.0.4, gcc; see  |
+|OpenServer|___________|_______|(<shib@postmark.net>)__________|also_doc/FAQ_SCO_|
+|SunOS 4   |Sparc      |7.2    |2001-12-04, Tatsuo Ishii (<t-  |                 |
+|__________|___________|_______|ishii@sra.co.jp>)______________|_________________|
index 86311be8983d0ba4ea1e42615cea603a1c62eee2..2bebafa3d190666a69beae903b250848861487a8 100644 (file)
-Regression Tests
-
-Introduction
+                                Regression Tests
 
 The regression tests are a comprehensive set of tests for the SQL
-implementation in PostgreSQL. They test standard SQL operations as well as
-the extended capabilities of PostgreSQL. The test suite was originally
-developed by Jolly Chen and Andrew Yu, and was extensively revised and
-repackaged by Marc Fournier and Thomas Lockhart. From PostgreSQL 6.1 onward
-the regression tests are current for every official release.
+implementation in PostgreSQL. They test standard SQL operations as well as the
+extended capabilities of PostgreSQL. From PostgreSQL 6.1 onward, the regression
+tests are current for every official release.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
 Running the Tests
 
-The regression test can be run against an already installed and running
-server, or using a temporary installation within the build tree.
-Furthermore, there is a "parallel" and a "sequential" mode for running the
-tests. The sequential method runs each test script in turn, whereas the
-parallel method starts up multiple server processes to run groups of tests
-in parallel. Parallel testing gives confidence that interprocess
-communication and locking are working correctly. For historical reasons, the
-sequential test is usually run against an existing installation and the
-parallel method against a temporary installation, but there are no technical
-reasons for this.
+The regression test can be run against an already installed and running server,
+or using a temporary installation within the build tree. Furthermore, there is
+a "parallel" and a "sequential" mode for running the tests. The sequential
+method runs each test script in turn, whereas the parallel method starts up
+multiple server processes to run groups of tests in parallel. Parallel testing
+gives confidence that interprocess communication and locking are working
+correctly. For historical reasons, the sequential test is usually run against
+an existing installation and the parallel method against a temporary
+installation, but there are no technical reasons for this.
 
 To run the regression tests after building but before installation, type
 
-$ gmake check
+  gmake check
 
-in the top-level directory. (Or you can change to src/test/regress and run
-the command there.) This will first build several auxiliary files, such as
-platform-dependent "expected" files and some sample user-defined trigger
-functions, and then run the test driver script. At the end you should see
-something like
+in the top-level directory. (Or you can change to "src/test/regress" and run
+the command there.) This will first build several auxiliary files, such as some
+sample user-defined trigger functions, and then run the test driver script. At
+the end you should see something like
 
-======================
All 77 tests passed.
-======================
+  ======================
  All 93 tests passed.
+  ======================
 
-or otherwise a note about what tests failed. See the Section called Test
+or otherwise a note about which tests failed. See the Section called Test
 Evaluation below for more.
 
-     Note: Because this test method runs a temporary server, it will
-     not work when you are the root user (the server will not start as
-     root). If you already did the build as root, you do not have to
-     start all over. Instead, make the regression test directory
-     writable by some other user, log in as that user, and restart the
-     tests. For example,
+Because this test method runs a temporary server, it will not work when you are
+the root user (since the server will not start as root). If you already did the
+build as root, you do not have to start all over. Instead, make the regression
+test directory writable by some other user, log in as that user, and restart
+the tests. For example
+
+  root# chmod -R a+w src/test/regress
+  root# chmod -R a+w contrib/spi
+  root# su - joeuser
+  joeuser$ cd top-level build directory
+  joeuser$ gmake check
+
+(The only possible "security risk" here is that other users might be able to
+alter the regression test results behind your back. Use common sense when
+managing user permissions.)
+
+Alternatively, run the tests after installation.
+
+The parallel regression test starts quite a few processes under your user ID.
+Presently, the maximum concurrency is twenty parallel test scripts, which means
+sixty processes: there's a server process, a psql, and usually a shell parent
+process for the psql for each test script. So if your system enforces a per-
+user limit on the number of processes, make sure this limit is at least
+seventy-five or so, else you may get random-seeming failures in the parallel
+test. If you are not in a position to raise the limit, you can cut down the
+degree of parallelism by setting the MAX_CONNECTIONS parameter. For example,
 
-     root# chmod -R a+w src/test/regress
-     root# chmod -R a+w contrib/spi
-     root# su - joeuser
-     joeuser$ cd <build top-level directory>
-     joeuser$ gmake check
+  gmake MAX_CONNECTIONS=10 check
 
-     (The only possible "security risk" here is that other users might
-     be able to alter the regression test results behind your back. Use
-     common sense when managing user permissions.)
+runs no more than ten tests concurrently.
 
-     Alternatively, run the tests after installation.
+On some systems, the default Bourne-compatible shell ("/bin/sh") gets confused
+when it has to manage too many child processes in parallel. This may cause the
+parallel test run to lock up or fail. In such cases, specify a different
+Bourne-compatible shell on the command line, for example:
 
-     Tip: On some systems, the default Bourne-compatible shell
-     (/bin/sh) gets confused when it has to manage too many child
-     processes in parallel. This may cause the parallel test run to
-     lock up or fail. In such cases, specify a different
-     Bourne-compatible shell on the command line, for example:
+  gmake SHELL=/bin/ksh check
 
-     $ gmake SHELL=/bin/ksh check
+If no non-broken shell is available, you may be able to work around the problem
+by limiting the number of connections, as shown above.
 
 To run the tests after installation, initialize a data area and start the
 server, then type
 
-$ gmake installcheck
+  gmake installcheck
 
-The tests will expect to contact the server at the local host and the
-default port number, unless directed otherwise by PGHOST and PGPORT
-environment variables.
+The tests will expect to contact the server at the local host and the default
+port number, unless directed otherwise by PGHOST and PGPORT environment
+variables.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
 Test Evaluation
 
 Some properly installed and fully functional PostgreSQL installations can
-"fail" some of these regression tests due to platform-specific artifacts
-such as varying floating point representation and time zone support. The
-tests are currently evaluated using a simple diff comparison against the
-outputs generated on a reference system, so the results are sensitive to
-small system differences. When a test is reported as "failed", always
-examine the differences between expected and actual results; you may well
-find that the differences are not significant. Nonetheless, we still strive
-to maintain accurate reference files across all supported platforms, so it
-can be expected that all tests pass.
-
-The actual outputs of the regression tests are in files in the
-src/test/regress/results directory. The test script uses diff to compare
-each output file against the reference outputs stored in the
-src/test/regress/expected directory. Any differences are saved for your
-inspection in src/test/regress/regression.diffs. (Or you can run diff
-yourself, if you prefer.)
-
-  ------------------------------------------------------------------------
+"fail" some of these regression tests due to platform-specific artifacts such
+as varying floating-point representation and time zone support. The tests are
+currently evaluated using a simple "diff" comparison against the outputs
+generated on a reference system, so the results are sensitive to small system
+differences. When a test is reported as "failed", always examine the
+differences between expected and actual results; you may well find that the
+differences are not significant. Nonetheless, we still strive to maintain
+accurate reference files across all supported platforms, so it can be expected
+that all tests pass.
+
+The actual outputs of the regression tests are in files in the "src/test/
+regress/results" directory. The test script uses "diff" to compare each output
+file against the reference outputs stored in the "src/test/regress/expected"
+directory. Any differences are saved for your inspection in "src/test/regress/
+regression.diffs". (Or you can run "diff" yourself, if you prefer.)
+
+-------------------------------------------------------------------------------
 
 Error message differences
 
 Some of the regression tests involve intentional invalid input values. Error
 messages can come from either the PostgreSQL code or from the host platform
-system routines. In the latter case, the messages may vary between
-platforms, but should reflect similar information. These differences in
-messages will result in a "failed" regression test that can be validated by
-inspection.
+system routines. In the latter case, the messages may vary between platforms,
+but should reflect similar information. These differences in messages will
+result in a "failed" regression test that can be validated by inspection.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
 Locale differences
 
-The tests expect to run in plain "C" locale. This should not cause any
-problems when you run the tests against a temporary installation, since the
-regression test driver takes care to start the server in C locale. However,
-if you run the tests against an already-installed server that is using non-C
-locale settings, you may see differences caused by varying rules for string
-sort order, formatting of numeric and monetary values, and so forth.
-
-In some locales the resulting differences are small and easily checked by
-inspection. However, in a locale that changes the rules for formatting of
-numeric values (typically by swapping the usage of commas and decimal
-points), entry of some data values will fail, resulting in extensive
-differences later in the tests where the missing data values are supposed to
-be used.
-
-  ------------------------------------------------------------------------
+If you run the tests against an already-installed server that was initialized
+with a collation-order locale other than C, then there may be differences due
+to sort order and follow-up failures. The regression test suite is set up to
+handle this problem by providing alternative result files that together are
+known to handle a large number of locales. For example, for the char test, the
+expected file "char.out" handles the C and POSIX locales, and the file
+"char_1.out" handles many other locales. The regression test driver will
+automatically pick the best file to match against when checking for success and
+for computing failure differences. (This means that the regression tests cannot
+detect whether the results are appropriate for the configured locale. The tests
+will simply pick the one result file that works best.)
+
+If for some reason the existing expected files do not cover some locale, you
+can add a new file. The naming scheme is testname_digit.out. The actual digit
+is not significant. Remember that the regression test driver will consider all
+such files to be equally valid test results. If the test results are platform-
+specific, the technique described in the Section called Platform-specific
+comparison files should be used instead.
+
+-------------------------------------------------------------------------------
 
 Date and time differences
 
-Some of the queries in the timestamp test will fail if you run the test on
-the day of a daylight-savings time changeover, or the day before or after
-one. These queries assume that the intervals between midnight yesterday,
-midnight today and midnight tomorrow are exactly twenty-four hours -- which
-is wrong if daylight-savings time went into or out of effect meanwhile.
-
-Most of the date and time results are dependent on the time zone
-environment. The reference files are generated for time zone PST8PDT
-(Berkeley, California) and there will be apparent failures if the tests are
-not run with that time zone setting. The regression test driver sets
-environment variable PGTZ to PST8PDT, which normally ensures proper results.
-However, your system must provide library support for the PST8PDT time zone,
-or the time zone-dependent tests will fail. To verify that your machine does
-have this support, type the following:
-
-$ env TZ=PST8PDT date
-
-The command above should have returned the current system time in the
-PST8PDT time zone. If the PST8PDT database is not available, then your
-system may have returned the time in GMT. If the PST8PDT time zone is not
-available, you can set the time zone rules explicitly:
+A few of the queries in the "horology" test will fail if you run the test on
+the day of a daylight-saving time changeover, or the day after one. These
+queries expect that the intervals between midnight yesterday, midnight today
+and midnight tomorrow are exactly twenty-four hours --- which is wrong if
+daylight-saving time went into or out of effect meanwhile.
 
-PGTZ='PST8PDT7,M04.01.0,M10.05.03'; export PGTZ
+     Note: Because USA daylight-saving time rules are used, this problem
+     always occurs on the first Sunday of April, the last Sunday of
+     October, and their following Mondays, regardless of when daylight-
+     saving time is in effect where you live. Also note that the problem
+     appears or disappears at midnight Pacific time (UTC-7 or UTC-8), not
+     midnight your local time. Thus the failure may appear late on
+     Saturday or persist through much of Tuesday, depending on where you
+     live.
 
-There appear to be some systems that do not accept the recommended syntax
-for explicitly setting the local time zone rules; you may need to use a
-different PGTZ setting on such machines.
+Most of the date and time results are dependent on the time zone environment.
+The reference files are generated for time zone PST8PDT (Berkeley, California),
+and there will be apparent failures if the tests are not run with that time
+zone setting. The regression test driver sets environment variable PGTZ to
+PST8PDT, which normally ensures proper results. However, your operating system
+must provide support for the PST8PDT time zone, or the time zone-dependent
+tests will fail. To verify that your machine does have this support, type the
+following:
 
-Some systems using older time zone libraries fail to apply daylight-savings
-corrections to dates before 1970, causing pre-1970 PDT times to be displayed
-in PST instead. This will result in localized differences in the test
-results.
+  env TZ=PST8PDT date
 
-  ------------------------------------------------------------------------
+The command above should have returned the current system time in the PST8PDT
+time zone. If the PST8PDT time zone is not available, then your system may have
+returned the time in UTC. If the PST8PDT time zone is missing, you can set the
+time zone rules explicitly:
 
-Floating point differences
+  PGTZ='PST8PDT7,M04.01.0,M10.05.03'; export PGTZ
 
-Some of the tests involve computing 64-bit (double precision) numbers from
-table columns. Differences in results involving mathematical functions of
-double precision columns have been observed. The float8 and geometry tests
-are particularly prone to small differences across platforms, or even with
-different compiler optimization options. Human eyeball comparison is needed
-to determine the real significance of these differences which are usually 10
-places to the right of the decimal point.
+There appear to be some systems that do not accept the recommended syntax for
+explicitly setting the local time zone rules; you may need to use a different
+PGTZ setting on such machines.
 
-Some systems signal errors from pow() and exp() differently from the
-mechanism expected by the current PostgreSQL code.
+Some systems using older time-zone libraries fail to apply daylight-saving
+corrections to dates before 1970, causing pre-1970 PDT times to be displayed in
+PST instead. This will result in localized differences in the test results.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
-Polygon differences
+Floating-point differences
 
-Several of the tests involve operations on geographic data about the
-Oakland/Berkeley, California street map. The map data is expressed as
-polygons whose vertices are represented as pairs of double precision numbers
-(decimal latitude and longitude). Initially, some tables are created and
-loaded with geographic data, then some views are created that join two
-tables using the polygon intersection operator (##), then a select is done
-on the view.
+Some of the tests involve computing 64-bit floating-point numbers (double
+precision) from table columns. Differences in results involving mathematical
+functions of double precision columns have been observed. The float8 and
+geometry tests are particularly prone to small differences across platforms, or
+even with different compiler optimization options. Human eyeball comparison is
+needed to determine the real significance of these differences which are
+usually 10 places to the right of the decimal point.
 
-When comparing the results from different platforms, differences occur in
-the 2nd or 3rd place to the right of the decimal point. The SQL statements
-where these problems occur are the following:
+Some systems display minus zero as -0, while others just show 0.
 
-SELECT * from street;
-SELECT * from iexit;
+Some systems signal errors from pow() and exp() differently from the mechanism
+expected by the current PostgreSQL code.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
 Row ordering differences
 
 You might see differences in which the same rows are output in a different
 order than what appears in the expected file. In most cases this is not,
 strictly speaking, a bug. Most of the regression test scripts are not so
-pedantic as to use an ORDER BY for every single SELECT, and so their result
-row orderings are not well-defined according to the letter of the SQL
+pedantic as to use an ORDER BY for every single SELECT, and so their result row
+orderings are not well-defined according to the letter of the SQL
 specification. In practice, since we are looking at the same queries being
-executed on the same data by the same software, we usually get the same
-result ordering on all platforms, and so the lack of ORDER BY isn't a
-problem. Some queries do exhibit cross-platform ordering differences,
-however. (Ordering differences can also be triggered by non-C locale
-settings.)
+executed on the same data by the same software, we usually get the same result
+ordering on all platforms, and so the lack of ORDER BY isn't a problem. Some
+queries do exhibit cross-platform ordering differences, however. (Ordering
+differences can also be triggered by non-C locale settings.)
 
 Therefore, if you see an ordering difference, it's not something to worry
 about, unless the query does have an ORDER BY that your result is violating.
-But please report it anyway, so that we can add an ORDER BY to that
-particular query and thereby eliminate the bogus "failure" in future
-releases.
+But please report it anyway, so that we can add an ORDER BY to that particular
+query and thereby eliminate the bogus "failure" in future releases.
 
-You might wonder why we don't order all the regress test queries explicitly
-to get rid of this issue once and for all. The reason is that that would
-make the regression tests less useful, not more, since they'd tend to
-exercise query plan types that produce ordered results to the exclusion of
-those that don't.
+You might wonder why we don't order all the regression test queries explicitly
+to get rid of this issue once and for all. The reason is that that would make
+the regression tests less useful, not more, since they'd tend to exercise query
+plan types that produce ordered results to the exclusion of those that don't.
 
-  ------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
 The "random" test
 
-There is at least one case in the "random" test script that is intended to
-produce random results. This causes random to fail the regression test once
-in a while (perhaps once in every five to ten trials). Typing
+There is at least one case in the random test script that is intended to
+produce random results. This causes random to fail the regression test once in
+a while (perhaps once in every five to ten trials). Typing
 
-diff results/random.out expected/random.out
+  diff results/random.out expected/random.out
 
 should produce only one or a few lines of differences. You need not worry
-unless the random test always fails in repeated attempts. (On the other
-hand, if the random test is never reported to fail even in many trials of
-the regression tests, you probably should worry.)
+unless the random test always fails in repeated attempts. (On the other hand,
+if the random test is *never* reported to fail even in many trials of the
+regression tests, you probably *should* worry.)
+
+-------------------------------------------------------------------------------
+
+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 "src/test/regress/resultmap".
+
+Each line in the mapping file is of the form
+
+  testname/platformpattern=comparisonfilename
+
+The test name is just the name of the particular regression test module. The
+platform pattern is a pattern in the style of the Unix tool "expr" (that is, a
+regular expression with an implicit ^ anchor at the start). It is matched
+against the platform name as printed by "config.guess" followed by :gcc or :cc,
+depending on whether you use the GNU compiler or the system's native compiler
+(on systems where there is a difference). The comparison file name is the name
+of the substitute result comparison file.
+
+For example: some systems using older time zone libraries fail to apply
+daylight-saving corrections to dates before 1970, causing pre-1970 PDT times to
+be displayed in PST instead. This causes a few differences in the "horology"
+regression test. Therefore, we provide a variant comparison file, "horology-no-
+DST-before-1970.out", which includes the results to be expected on these
+systems. To silence the bogus "failure" message on HPUX platforms, "resultmap"
+includes
+
+  horology/.*-hpux=horology-no-DST-before-1970
+
+which will trigger on any machine for which the output of "config.guess"
+includes -hpux. Other lines in "resultmap" select the variant comparison file
+for other platforms where it's appropriate.