Commit 4a1efbc1 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Installation notes for v6.5.

Generated from install.sgml and installation.sgml.
parent 5541abee
PostgreSQL Installation Guide PostgreSQL Installation Guide
by The PostgreSQL Development Team by The PostgreSQL Development Team
Edited by Thomas Lockhart Edited by Thomas Lockhart
PostgreSQL is copyright (C) 1998 PostgreSQL is 1996-9 by the Postgres Global Development Group.
by the Postgres Global Development Group.
Table of Contents Table of Contents
...@@ -21,12 +17,6 @@ Table of Contents ...@@ -21,12 +17,6 @@ Table of Contents
Playing with Postgres Playing with Postgres
The Next Step The Next Step
Porting Notes Porting Notes
Ultrix4.x
Linux
Linux ELF
Linux a.out
BSD/OS
NeXT
4. Configuration Options 4. Configuration Options
Parameters for Configuration (configure) Parameters for Configuration (configure)
Parameters for Building (make) Parameters for Building (make)
...@@ -38,15 +28,16 @@ Table of Contents ...@@ -38,15 +28,16 @@ Table of Contents
Installation Installation
Operation Operation
5. Release Notes 5. Release Notes
Release 6.4 Release 6.5
Migration to v6.4 Migration to v6.5
Multi-Version Concurrency Control
Detailed Change List Detailed Change List
List of Tables List of Tables
2-1. Supported Platforms 2-1. Supported Platforms
2-2. Possibly Incompatible Platforms 2-2. Possibly Incompatible Platforms
4-1. Kerberos Parameter Examples 4-1. Kerberos Parameter Examples
Summary Summary
...@@ -71,152 +62,175 @@ Chapter 1. Introduction ...@@ -71,152 +62,175 @@ Chapter 1. Introduction
Chapter 2. Ports Chapter 2. Ports
This manual describes version 6.4 of Postgres. The This manual describes version 6.5 of Postgres. The
Postgres developer community has compiled and tested Postgres developer community has compiled and tested
Postgres on a number of platforms. Check the web site Postgres on a number of platforms. Check the web site
for the latest information. (http://www.postgresql.org/docs/admin/ports.htm) for
the latest information.
Currently Supported Platforms Currently Supported Platforms
At the time of publication, the following platforms At the time of publication, the following platforms
have been tested: have been tested:
Table 2-1. Supported Platforms Table 2-1. Supported Platforms
OS Processor Version Reported Remarks OS Processor Version Reported Remarks
AIX 4.2.1 RS6000 v6.4 1998-10-27 (Andreas Zeugswetter) AIX 4.3.2 RS6000 v6.5 1999-05-26 (Andreas Zeugswetter
BSDI x86 v6.4 1998-10-25 (Bruce Momjian (mailto:Andreas.Zeugswetter@telecom.at))
FreeBSD x86 v6.4 1998-10-26 (Tatsuo Ishii, Marc BSDI x86 v6.5 1999-05-25 (Bruce Momjian
2.2.x-3.x Fournier) (mailto:maillist@candle.pha.pa.us)
DGUX 5.4R4.11 m88k v6.3 1998-03-01 v6.4 probably OK. Needs FreeBSD x86 v6.5 1999-05-25 (Tatsuo Ishii
new maintainer. (Brian E 2.2.x-4.0 (mailto:t-ishii@sra.co.jp),
Gallew) Marc Fournier
Digital Unix Alpha v6.4 1998-10-29 Minor patchable problems (mailto:scrappy@hub.org))
4.0 (Pedro J. Lobo) DGUX m88k v6.3 1998-03-01 v6.4 probably OK. Needs new
HPUX PA-RISC v6.4 1998-10-25 Both 9.0x and 10.20 5.4R4.11 maintainer. (Brian E Gallew
(Tom Lane, Stan Brown) (mailto:geek+@cmu.edu))
IRIX 6.x MIPS v6.3 1998-03-01 5.x is different (Andrew Digital Alpha v6.4 1998-10-29 Minor patchable problems
Martin) Unix 4.0 (Pedro J. Lobo
linux 2.0.x Alpha v6.3.2 1998-04-16 Mostly successful. Needs (mailto:pjlobo@euitt.upm.es))
work for v6.4. (Ryan HPUX PA-RISC v6.4 1998-10-25 Both 9.0x and 10.20 (Tom Lane
Kirkpatrick) (mailto:tgl@sss.pgh.pa.us),
linux 2.0.x x86 v6.4 1998-10-27 (Thomas Lockhart) Stan Brown
linux x86 v6.4 1998-10-25 (Oliver Elphick, Taral) (mailto:stanb@awod.com))
2.0.x/glibc2 IRIX 6.5 MIPS v6.4 1998-12-29 IRIX 5.x is different (Mark Dalphin
linux 2.0.x Sparc v6.4 1998-10-25 (Tom Szybist) (mdalphin@amgen.com))
linuxPPC PPC603e v6.4 1998-10-26 Powerbook 2400c (Tatsuo linux Alpha v6.3.2 1998-04-16 Mostly successful. Needs
2.1.24 Ishii) 2.0.x work for v6.4. (Ryan Kirkpatrick
mklinux DR3 PPC750 v6.4 1998-09-16 PowerMac 7600 (Tatsuo (mailto:rkirkpat@nag.cs.colorado.edu))
Ishii) linux x86 v6.4 1998-10-27 (Thomas Lockhart
NetBSD/i386 x86 v6.4 1998-10-25 (Brook Milligan) 2.0.x/libc5 (mailto:lockhart@alumni.caltech.edu))
1.3.2 linux x86 v6.5 1999-05-24 (Thomas Lockhart
NetBSD- NS32532 v6.4 1998-10-27 (small problems in 2.0.x/glibc (mailto:lockhart@alumni.caltech.edu))
current date/time math linux MIPS v6.4 1998-12-16 Cobalt Qube (Tatsuo Ishii
(Jon Buller) 2.0.x (mailto:t-ishii@sra.co.jp))
NetBSD/sparc Sparc v6.4 1998-10-27 (Tom I Helbekkmo) linux Sparc v6.4 1998-10-25 (Tom Szybist
1.3H 2.0.x (mailto:szybist@boxhill.com))
NetBSD 1.3 VAX v6.3 1998-03-01 (Tom I Helbekkmo) linuxPPC PPC603e v6.4 1998-10-26 Powerbook 2400c (Tatsuo Ishii
SCO UnixWare x86 v6.3 1998-03-01 aka UNIVEL (Billy G. 2.1.24 (mailto:t-ishii@sra.co.jp))
2.x Allie) mklinux DR3 PPC750 v6.4 1998-09-16 PowerMac 7600 (Tatsuo Ishii
SCO UnixWare x86 v6.4 1998-10-04 (Billy G. Allie) (mailto:t-ishii@sra.co.jp))
7 NetBSD arm32 v6.5 1999-04-14 (Andrew McMurry
Solaris x86 v6.4 1998-10-28 (Marc Fournier) (mailto:a.mcmurry1@physics.oxford.ac.uk))
Solaris Sparc v6.4 1998-10-28 (Tom Szybist, Frank NetBSD/i3- x86 v6.4 1998-10-25 (Brook Milligan
2.6-2.7 Ridderbusch) 86 1.3.2 (mailto:brook@trillium.NMSU.Edu))
SunOS 4.1.4 Sparc v6.3 1998-03-01 patches submitted (Tatsuo NetBSD m68k v6.4.2 1998-12-28 Mac SE/30 (Mr. Mutsuki
Ishii) Nakajima, Tatsuo Ishii
SVR4 MIPS v6.4 1998-10-28 no 64-bit int support (mailto:t-ishii@sra.co.jp))
(Frank Ridderbusch) NetBSD- NS32532 v6.4 1998-10-27 small problems in date/time
SVR4 4.4 m88k v6.2.1 1998-03-01 confirmed with patching current math (Jon Buller
(Doug Winterburn) (mailto:jonb@metronet.com))
Windows NT x86 v6.4 1998-10-08 Mostly working with the NetBSD/sp- Sparc v6.4 1998-10-27 (Tom I Helbekkmo
Cygwin library. No DLLs arc 1.3H (mailto:tih@hamartun.priv.no))
yet. (Horak Daniel) NetBSD 1.3 VAX v6.3 1998-03-01 (Tom I Helbekkmo
(mailto:tih@hamartun.priv.no))
SCO x86 v6.5 1999-05-25 (Andrew Merrill
Platforms listed for v6.3.x should also work with OpenServer 5 (mailto:andrew@compclass.com))
v6.4, but we did not receive confirmation of such at SCO x86 v6.5 1999-05-25 (Andrew Merrill
the time this list was compiled. UnixWare 7 (mailto:andrew@compclass.com))
Solaris x86 v6.4 1998-10-28 (Marc Fournier
(mailto:scrappy@hub.org))
Solaris Sparc v6.4 1998-10-28 (Tom Szybist
2.6-2.7 (mailto:szybist@boxhill.com),
Frank Ridderbusch
(mailto:ridderbusch.pad@sni.de))
SunOS Sparc v6.3 1998-03-01 Patches submitted (Tatsuo Ishii
4.1.4 (mailto:t-ishii@sra.co.jp))
SVR4 MIPS v6.4 1998-10-28 No 64-bit int compiler
support (Frank Ridderbusch
(mailto:ridderbusch.pad@sni.de))
Windows x86 v6.4 1999-01-06 Client-side libraries or
ODBC/JDBC. No server yet.
(Magnus Hagander
(mha@sollentuna.net)
Windows NT x86 v6.5 1999-05-26 Working with the Cygwin
library. (Daniel Horak
(mailto:Dan.Horak@email.cz))
Platforms listed for v6.3.x and v6.4.x should also
work with v6.5, but we did not receive explicit
confirmation of such at the time this list was
compiled.
Note: For Windows NT, the server-side port of Note: For Windows NT, the server-side port of
Postgres has recently been accomplished. Check the Postgres has recently been accomplished. The
Askesis Postgres Home Page for up to date Cygnus library is required to compile it.
information. You may also want to look for
possible patches on the Postgres web site.
Unsupported Platforms Unsupported Platforms
There are a few platforms which have been attempted There are a few platforms which have been attempted
and which have been reported to not work with the and which have been reported to not work with the
standard distribution. Others listed here do not standard distribution. Others listed here do not
provide sufficient library support for an attempt. provide sufficient library support for an attempt.
Table 2-2. Possibly Incompatible Platforms Table 2-2. Possibly Incompatible Platforms
OS Processor Version Reported Remarks OS Processor Version Reported Remarks
MacOS all v6.3 1998-03-01 not library compatible; MacOS all v6.3 1998-03-01 Not library compatible;
use ODBC/JDBC use ODBC/JDBC
NetBSD arm32 v6.3 1998-03-01 not yet working (Dave NextStep x86 v6.x 1998-03-01 Client-only support;
Millen) v1.0.9 worked with
NetBSD m68k v6.3 1998-03-01 Amiga, HP300, Mac; not patches (David Wetzel
yet working (Henry Hotz) (mailto:dave@turbocat.de))
NextStep x86 v6.x 1998-03-01 client-only support; SVR4 4.4 m88k v6.2.1 1998-03-01 Confirmed with patching;
v1.0.9 worked with v6.4.x will need TAS
patches (David Wetzel) spinlock code (Doug Winterburn
Ultrix MIPS,VAX? v6.x 1998-03-01 no recent reports; (mailto:dlw@seavme.xroads.com))
obsolete? Ultrix MIPS,VAX? v6.x 1998-03-01 No recent reports; obsolete?
Windows x86 v6.3 1998-03-01 not library compatible;
client side maybe; use
ODBC/JDBC
Note that Windows ports of the frontend are
apparently possible using third-party Posix porting
tools and libraries.
Chapter 3. Installation Chapter 3. Installation
Complete installation instructions for Postgres v6.4. Complete installation instructions for Postgres
Before installing Postgres, you may wish to visit v6.5.
www.postgresql.org for up to date information,
patches, etc. Before installing Postgres, you may wish to visit
These installation instructions assume: www.postgresql.org (http://www.postgresql.org) for up
o Commands are Unix-compatible. See note below. to date information, patches, etc.
o Defaults are used except where noted. These installation instructions assume:
o User postgres is the Postgres superuser. o Commands are Unix-compatible. See note below.
o The source path is /usr/src/pgsql (other paths are possible). o Defaults are used except where noted.
o The runtime path is /usr/local/pgsql (other paths are possible). o User postgres is the Postgres superuser.
Commands were tested on RedHat Linux version 4.2 o The source path is /usr/src/pgsql (other paths are possible).
o The runtime path is /usr/local/pgsql (other paths are possible).
Commands were tested on RedHat Linux version 5.2
using the tcsh shell. Except where noted, they will using the tcsh shell. Except where noted, they will
probably work on most systems. Commands like ps and probably work on most systems. Commands like ps and
tar may vary wildly between platforms on what options tar may vary wildly between platforms on what options
you should use. Use common sense before typing in you should use. Use common sense before typing in
these commands. these commands.
Our Makefiles require GNU make (called ?gmake? in this Our Makefiles require GNU make (called ?gmake? in this
document). They will not work with non-GNU make document). They will not work with non-GNU make
programs. If you have GNU make installed under the programs. If you have GNU make installed under the
name ?make? instead of ?gmake?, then you will use the name ?make? instead of ?gmake?, then you will use the
command make instead. That's OK, but you need to have command make instead. That's OK, but you need to have
the GNU form of make to succeed with an installation. the GNU form of make to succeed with an installation.
Requirements to Run Postgres Requirements to Run Postgres
Up to date information on supported platforms is at Up to date information on supported platforms is at
http://www.postgresql.org/docs/admin/install.htm. In http://www.postgresql.org/docs/admin/install.htm
general, most Unix-compatible platforms with modern (http://www.postgresql.org/docs/admin/install.htm).
libraries should be able to run Postgres. In general, most Unix-compatible platforms with
Although the minimum required memory for running modern libraries should be able to run Postgres.
Although the minimum required memory for running
Postgres is as little as 8MB, there are noticable Postgres is as little as 8MB, there are noticable
improvements in runtimes for the regression tests improvements in runtimes for the regression tests
when expanding memory up to 96MB on a relatively fast when expanding memory up to 96MB on a relatively fast
dual-processor system running X-Windows. The rule is dual-processor system running X-Windows. The rule is
you can never have too much memory. you can never have too much memory.
Check that you have sufficient disk space. You will Check that you have sufficient disk space. You will
need about 30 Mbytes for /usr/src/pgsql, about 5 need about 30 Mbytes for /usr/src/pgsql, about 5
Mbytes for /usr/local/pgsql (excluding your database) Mbytes for /usr/local/pgsql (excluding your database)
and 1 Mbyte for an empty database. The database will and 1 Mbyte for an empty database. The database will
temporarily grow to about 20 Mbytes during the temporarily grow to about 20 Mbytes during the
regression tests. You will also need about 3 Mbytes regression tests. You will also need about 3 Mbytes
for the distribution tar file. for the distribution tar file.
We therefore recommend that during installation and We therefore recommend that during installation and
testing you have well over 20 Mbytes free under testing you have well over 20 Mbytes free under
/usr/local and another 25 Mbytes free on the disk /usr/local and another 25 Mbytes free on the disk
partition containing your database. Once you delete partition containing your database. Once you delete
...@@ -224,18 +238,18 @@ Requirements to Run Postgres ...@@ -224,18 +238,18 @@ Requirements to Run Postgres
you will need 2 Mbytes for /usr/local/pgsql, 1 Mbyte you will need 2 Mbytes for /usr/local/pgsql, 1 Mbyte
for the empty database, plus about five times the for the empty database, plus about five times the
space you would require to store your database data space you would require to store your database data
in a flat file. in a flat file.
To check for disk space, use To check for disk space, use
$ df -k $ df -k
Installation Procedure Installation Procedure
Procedure 3.1. Postgres Installation Postgres Installation
For a fresh install or upgrading from previous For a fresh install or upgrading from previous
releases of Postgres: releases of Postgres:
1. Read any last minute information and platform 1. Read any last minute information and platform
specific porting notes. There are some platform specific porting notes. There are some platform
specific notes at the end of this file for specific notes at the end of this file for
...@@ -246,7 +260,7 @@ Installation Procedure ...@@ -246,7 +260,7 @@ Installation Procedure
is a file called INSTALL in this directory then is a file called INSTALL in this directory then
this file will contain the latest installation this file will contain the latest installation
information. information.
Please note that a "tested" platform in the list Please note that a "tested" platform in the list
given earlier simply means that someone went to given earlier simply means that someone went to
the effort at some point of making sure that a the effort at some point of making sure that a
Postgres distribution would compile and run on Postgres distribution would compile and run on
...@@ -257,34 +271,29 @@ Installation Procedure ...@@ -257,34 +271,29 @@ Installation Procedure
current release due to minor problems. Any such current release due to minor problems. Any such
known problems and their solutions will be posted known problems and their solutions will be posted
in ftp://ftp.postgresql.org/pub/INSTALL. in ftp://ftp.postgresql.org/pub/INSTALL.
2. Create the Postgres superuser account (postgres is 2. Create the Postgres superuser account (postgres is
commonly used) if it does not already exist. commonly used) if it does not already exist.
The owner of the Postgres files can be any The owner of the Postgres files can be any
unprivileged user account. It must not be root, unprivileged user account. It must not be root,
bin, or any other account with special access bin, or any other account with special access
rights, as that would create a security risk. rights, as that would create a security risk.
3. Log in to the Postgres superuser account. Most of 3. Log in to the Postgres superuser account. Most of
the remaining steps in the installation will the remaining steps in the installation will
happen in this account. happen in this account.
4. Ftp file 4. Ftp file
ftp://ftp.postgresql.org/pub/postgresql-v6.4.tar.gz ftp://ftp.postgresql.org/pub/postgresql-v6.5.tar.gz
from the Internet. Store it in your home directory. from the Internet. Store it in your home directory.
5. Some platforms use flex. If your system uses flex 5. Some platforms use flex. If your system uses flex
then make sure you have a good version. To check, then make sure you have a good version. To check,
type type
$ flex --version $ flex --version
If the flex command is not found then you
If the flex command is not found then you probably probably do not need it. If the version is 2.5.2
do not need it. If the version is 2.5.2 or 2.5.4 or 2.5.4 or greater then you are okay. If it is
or greater then you are okay. If it is 2.5.3 or 2.5.3 or before 2.5.2 then you will have to
before 2.5.2 then you will have to upgrade flex. upgrade flex. You may get it at
You may get it at
ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz. ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz.
If you need flex and don't have it or have the If you need flex and don't have it or have the
wrong version, then you will be told so when you wrong version, then you will be told so when you
attempt to compile the program. Feel free to skip attempt to compile the program. Feel free to skip
this step if you aren't sure you need it. If you this step if you aren't sure you need it. If you
...@@ -312,13 +321,12 @@ Installation Procedure ...@@ -312,13 +321,12 @@ Installation Procedure
$ gmake install $ gmake install
$ cd /usr/local/src $ cd /usr/local/src
$ rm -rf flex-2.5.4 $ rm -rf flex-2.5.4
This will update files /usr/man/man1/flex.1, This will update files /usr/man/man1/flex.1,
/usr/bin/flex, /usr/lib/libfl.a, /usr/bin/flex, /usr/lib/libfl.a,
/usr/include/FlexLexer.h and will add a link /usr/include/FlexLexer.h and will add a link
/usr/bin/flex++ which points to flex. /usr/bin/flex++ which points to flex.
6. If you are not upgrading an existing system then 6. If you are not upgrading an existing system then
skip to step 9. If you are upgrading an existing skip to step 9. If you are upgrading an existing
system then back up your database. For alpha- and system then back up your database. For alpha- and
beta-level releases, the database format is liable beta-level releases, the database format is liable
to change, often every few weeks, with no notice to change, often every few weeks, with no notice
...@@ -327,35 +335,35 @@ Installation Procedure ...@@ -327,35 +335,35 @@ Installation Procedure
from previous releases. It is therefore a bad idea from previous releases. It is therefore a bad idea
to skip this step. to skip this step.
Tip: Do not use the pg_dumpall script from v6.0 or Tip: Do not use the pg_dumpall script from v6.0
everything will be owned by the Postgres super or everything will be owned by the Postgres
user. super user.
To dump your fairly recent post-v6.0 database To dump your fairly recent post-v6.0 database
installation, type installation, type
$ pg_dumpall -z > db.out $ pg_dumpall > db.out
To use the latest pg_dumpall script on your To use the latest pg_dumpall script on your
existing older database before upgrading Postgres, existing older database before upgrading Postgres,
pull the most recent version of pg_dumpall from pull the most recent version of pg_dumpall from
the new distribution: the new distribution:
$ cd $ cd
$ gunzip -c postgresql-v6.4.tar.gz \ $ gunzip -c postgresql-v6.5.tar.gz \
| tar xvf - src/bin/pg_dump/pg_dumpall | tar xvf - src/bin/pg_dump/pg_dumpall
$ chmod a+x src/bin/pg_dump/pg_dumpall $ chmod a+x src/bin/pg_dump/pg_dumpall
$ src/bin/pg_dump/pg_dumpall -z > db.out $ src/bin/pg_dump/pg_dumpall > db.out
$ rm -rf src $ rm -rf src
If you wish to preserve object id's (oids), then If you wish to preserve object id's (oids), then
use the -o option when running pg_dumpall. use the -o option when running pg_dumpall.
However, unless you have a special reason for However, unless you have a special reason for
doing this (such as using OIDs as keys in tables), doing this (such as using OIDs as keys in tables),
don't do it. don't do it.
If the pg_dumpall command seems to take a long If the pg_dumpall command seems to take a long
time and you think it might have died, then, from time and you think it might have died, then, from
another terminal, type another terminal, type
$ ls -l db.out $ ls -l db.out
several times to see if the size of the file is several times to see if the size of the file is
growing. growing.
Please note that if you are upgrading from a Please note that if you are upgrading from a
version prior to Postgres95 v1.09 then you must version prior to Postgres95 v1.09 then you must
back up your database, install Postgres95 v1.09, back up your database, install Postgres95 v1.09,
restore your database, then back it up again. You restore your database, then back it up again. You
...@@ -363,7 +371,7 @@ Installation Procedure ...@@ -363,7 +371,7 @@ Installation Procedure
cover any release-specific issues. cover any release-specific issues.
Caution Caution
You must make sure that your database is not You must make sure that your database is not
updated in the middle of your backup. If updated in the middle of your backup. If
necessary, bring down postmaster, edit the necessary, bring down postmaster, edit the
permissions in file permissions in file
...@@ -379,7 +387,6 @@ Installation Procedure ...@@ -379,7 +387,6 @@ Installation Procedure
of processes. Type the following line, with pid of processes. Type the following line, with pid
replaced by the process id for process postmaster. replaced by the process id for process postmaster.
(Do not use the id for process "grep postmaster".) (Do not use the id for process "grep postmaster".)
Type Type
$ kill pid $ kill pid
to actually stop the process. to actually stop the process.
...@@ -399,32 +406,31 @@ Installation Procedure ...@@ -399,32 +406,31 @@ Installation Procedure
/usr/local/pgsql/data directory tree. At a /usr/local/pgsql/data directory tree. At a
minimum, save file minimum, save file
/usr/local/pgsql/data/pg_hba.conf. /usr/local/pgsql/data/pg_hba.conf.
Type the following: Type the following:
$ su - $ su -
$ cd /usr/src $ cd /usr/src
$ mv pgsql pgsql_6_0 $ mv pgsql pgsql_6_0
$ cd /usr/local $ cd /usr/local
$ mv pgsql pgsql_6_0 $ mv pgsql pgsql_6_0
$ exit $ exit
If you are not using /usr/local/pgsql/data as your If you are not using /usr/local/pgsql/data as
data directory (check to see if environment your data directory (check to see if environment
variable PGDATA is set to something else) then you variable PGDATA is set to something else) then you
will also want to move this directory in the same will also want to move this directory in the same
manner. manner.
9. Make new source and install directories. The 9. Make new source and install directories. The
actual paths can be different for your actual paths can be different for your
installation but you must be consistant throughout installation but you must be consistent throughout
this procedure. this procedure.
Note: There are two places in this installation Note: There are two places in this installation
procedure where you will have an opportunity to procedure where you will have an opportunity to
specify installation locations for programs, specify installation locations for programs,
libraries, documentation, and other files. libraries, documentation, and other files.
Usually it is sufficient to specify these at the Usually it is sufficient to specify these at the
make install stage of installation. gmake install stage of installation.
Type Type
$ su $ su
$ cd /usr/src $ cd /usr/src
$ mkdir pgsql $ mkdir pgsql
...@@ -435,7 +441,7 @@ Installation Procedure ...@@ -435,7 +441,7 @@ Installation Procedure
$ exit $ exit
10. Unzip and untar the new source file. Type 10. Unzip and untar the new source file. Type
$ cd /usr/src/pgsql $ cd /usr/src/pgsql
$ gunzip -c ~/postgresql-v6.4.tar.gz | tar xvf - $ gunzip -c ~/postgresql-v6.5.tar.gz | tar xvf -
11. Configure the source code for your system. It 11. Configure the source code for your system. It
is this step at which you can specify your actual is this step at which you can specify your actual
installation path for the build process (see the installation path for the build process (see the
...@@ -455,11 +461,12 @@ Installation Procedure ...@@ -455,11 +461,12 @@ Installation Procedure
Please Report Problems: If your system is not Please Report Problems: If your system is not
automatically recognized by configure and automatically recognized by configure and
you have to do this, please send email to you have to do this, please send email to
scrappy@hub.org with the output of the scrappy@hub.org (mailto:scrappy@hub.org)
program ./config.guess. Indicate what the with the output of the program
template file should be. ./config.guess. Indicate what the template
file should be.
b. Choose configuration options. Check b. Choose configuration options. Check
Configuration Options for details. However, Configuration Options for details. However,
for a plain-vanilla first installation with for a plain-vanilla first installation with
no extra options like multi-byte character no extra options like multi-byte character
...@@ -472,7 +479,8 @@ Installation Procedure ...@@ -472,7 +479,8 @@ Installation Procedure
configuration. To see them all, type configuration. To see them all, type
./configure --help ./configure --help
Some of the more commonly used ones are: Some of the more commonly used ones are:
--prefix=BASEDIR Selects a different base directory --prefix=BASEDIR Selects a different base directory for the
installation of the Postgres configuration.
The default is /usr/local/pgsql. The default is /usr/local/pgsql.
--with-template=TEMPLATE --with-template=TEMPLATE
Use template file TEMPLATE - the template Use template file TEMPLATE - the template
...@@ -485,8 +493,7 @@ Installation Procedure ...@@ -485,8 +493,7 @@ Installation Procedure
--enable-hba Enables Host Based Authentication (DEFAULT) --enable-hba Enables Host Based Authentication (DEFAULT)
--disable-hba Disables Host Based Authentication --disable-hba Disables Host Based Authentication
--enable-locale Enables USE_LOCALE --enable-locale Enables USE_LOCALE
--enable-cassert Enables --enable-cassert Enables ASSERT_CHECKING
ASSERT_CHECKING
--with-CC=compiler --with-CC=compiler
Use a specific C compiler that the configure Use a specific C compiler that the configure
script cannot find. script cannot find.
...@@ -496,7 +503,8 @@ Installation Procedure ...@@ -496,7 +503,8 @@ Installation Procedure
script cannot find, or exclude C++ compilation script cannot find, or exclude C++ compilation
altogether. (This only affects libpq++ at altogether. (This only affects libpq++ at
present.) present.)
c. Here is the configure script used on a Sparc Solaris 2.5 system with /opt/postgres c. Here is the configure script used on a Sparc
Solaris 2.5 system with /opt/postgres
specified as the installation base directory: specified as the installation base directory:
$ ./configure --prefix=/opt/postgres \ $ ./configure --prefix=/opt/postgres \
--with-template=sparc_solaris-gcc --with-template=sparc_solaris-gcc
...@@ -512,17 +520,15 @@ Installation Procedure ...@@ -512,17 +520,15 @@ Installation Procedure
The documentation is also available in Postscript The documentation is also available in Postscript
format. Look for files ending with .ps.gz in the format. Look for files ending with .ps.gz in the
same directory. same directory.
13. Compile the program. Type
13. <removed>
14. Compile the program. Type
$ cd /usr/src/pgsql/src $ cd /usr/src/pgsql/src
$ gmake all >& make.log & $ gmake all >& make.log &
$ tail -f make.log $ tail -f make.log
The last line displayed will hopefully be The last line displayed will hopefully be
All of PostgreSQL is successfully made. Ready to All of PostgreSQL is successfully made. Ready to
install. install.
At this point, or earlier if you wish, type Remember, ?gmake? may be called ?make? on your system.
At this point, or earlier if you wish, type
control-C to get out of tail. (If you have control-C to get out of tail. (If you have
problems later on you may wish to examine file problems later on you may wish to examine file
make.log for warning and error messages.) make.log for warning and error messages.)
...@@ -531,33 +537,32 @@ Installation Procedure ...@@ -531,33 +537,32 @@ Installation Procedure
messages in make.log. Unless you have problems messages in make.log. Unless you have problems
later on, these messages may be safely ignored. later on, these messages may be safely ignored.
If the compiler fails with a message stating that If the compiler fails with a message stating that
the flex command cannot be found then install flex the flex command cannot be found then install flex
as described earlier. Next, change directory back as described earlier. Next, change directory back
to this directory, type to this directory, type
$ make clean $ gmake clean
then recompile again. then recompile again.
Compiler options, such as optimization and Compiler options, such as optimization and
debugging, may be specified on the command line debugging, may be specified on the command line
using the COPT variable. For example, typing using the COPT variable. For example, typing
$ gmake COPT="-g" all >& make.log & $ gmake COPT="-g" all >& make.log &
would invoke your compiler's -g option in all would invoke your compiler's -g option in all
steps of the build. See src/Makefile.global.in for steps of the build. See src/Makefile.global.in for
further details. further details.
14. Install the program. Type
15. Install the program. Type
$ cd /usr/src/pgsql/src $ cd /usr/src/pgsql/src
$ gmake install >& make.install.log & $ gmake install >& make.install.log &
$ tail -f make.install.log $ tail -f make.install.log
The last line displayed will be The last line displayed will be
gmake[1]: Leaving directory gmake[1]: Leaving directory
`/usr/src/pgsql/src/man' `/usr/src/pgsql/src/man'
At this point, or earlier if you wish, type At this point, or earlier if you wish, type
control-C to get out of tail. control-C to get out of tail. Remember, ?gmake? may
be called ?make? on your system.
16. If necessary, tell your system how to find 15. If necessary, tell your system how to find
the new shared libraries. You can do one of the the new shared libraries. You can do one of the
following, preferably the first: following, preferably the first:
a. As root, edit file /etc/ld.so.conf. Add a a. As root, edit file /etc/ld.so.conf. Add a
line line
/usr/local/pgsql/lib /usr/local/pgsql/lib
...@@ -568,17 +573,16 @@ Installation Procedure ...@@ -568,17 +573,16 @@ Installation Procedure
c. In a csh shell, type c. In a csh shell, type
setenv LD_LIBRARY_PATH setenv LD_LIBRARY_PATH
/usr/local/pgsql/lib /usr/local/pgsql/lib
Please note that the above commands may vary Please note that the above commands may vary
wildly for different operating systems. Check the wildly for different operating systems. Check the
platform specific notes, such as those for platform specific notes, such as those for
Ultrix4.x or and for non-ELF Linux. Ultrix4.x or and for non-ELF Linux.
If, when you create the database, you get the If, when you create the database, you get the
message message
pg_id: can't load library 'libpq.so' pg_id: can't load library 'libpq.so'
then the above step was necessary. Simply do this then the above step was necessary. Simply do this
step, then try to create the database again. step, then try to create the database again.
16. If you used the --with-perl option to
17. If you used the --with-perl option to
configure, check the install log to see whether configure, check the install log to see whether
the Perl module was actually installed. If you've the Perl module was actually installed. If you've
followed our advice to make the Postgres files be followed our advice to make the Postgres files be
...@@ -588,13 +592,14 @@ Installation Procedure ...@@ -588,13 +592,14 @@ Installation Procedure
You can complete its installation, either now or You can complete its installation, either now or
later, by becoming the user that does own the Perl later, by becoming the user that does own the Perl
library (often root) (via su) and doing library (often root) (via su) and doing
$ cd /usr/src/pgsql/src/interfaces/perl5 $ cd /usr/src/pgsql/src/interfaces/perl5
$ gmake install $ gmake install
18. If it has not already been done, then prepare
17. If it has not already been done, then prepare
account postgres for using Postgres. Any account account postgres for using Postgres. Any account
that will use Postgres must be similarly prepared. that will use Postgres must be similarly prepared.
There are several ways to influence the runtime There are several ways to influence the runtime
environment of the Postgres server. Refer to the environment of the Postgres server. Refer to the
Administrator's Guide for more information. Administrator's Guide for more information.
...@@ -602,39 +607,47 @@ Installation Procedure ...@@ -602,39 +607,47 @@ Installation Procedure
bash/sh shell. Adapt accordingly for other bash/sh shell. Adapt accordingly for other
shells. shells.
a. Add the following lines to your login a. Add the following lines to your login
environment: shell, ~/.bash_profile: environment: shell, ~/.bash_profile:
PATH=$PATH:/usr/local/pgsql/bin PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man MANPATH=$MANPATH:/usr/local/pgsql/man
PGLIB=/usr/local/pgsql/lib PGLIB=/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql/data PGDATA=/usr/local/pgsql/data
export PATH MANPATH PGLIB PGDATA export PATH MANPATH PGLIB PGDATA
b. Several regression tests could failed if the
b. Several regression tests could fail if the
user's locale collation scheme is different user's locale collation scheme is different
from that of standard C locale. from that of standard C locale.
If you configure and compile Postgres with If you configure and compile Postgres with
the --enable-locale option then set locale the --enable-locale option then set locale
environment to C (or unset all LC_* environment to C (or unset all LC_*
variables) by putting these additional lines variables) by putting these additional lines
to your login environment before starting to your login environment before starting
postmaster: postmaster:
LC_COLLATE=C LC_COLLATE=C
LC_CTYPE=C LC_CTYPE=C
LC_COLLATE=C LC_COLLATE=C
export LC_COLLATE LC_CTYPE LC_COLLATE export LC_COLLATE LC_CTYPE LC_COLLATE
c. Make sure that you have defined these c. Make sure that you have defined these
variables before continuing with the variables before continuing with the
remaining steps. The easiest way to do this remaining steps. The easiest way to do this
is to type: is to type:
$ source ~/.bash_profile $ source ~/.bash_profile
19. Create the database installation from your
18. Create the database installation from your
Postgres superuser account (typically account Postgres superuser account (typically account
postgres). Do not do the following as root! This postgres). Do not do the following as root! This
would be a major security hole. Type would be a major security hole. Type
$ initdb $ initdb
19. Set up permissions to access the database
20. Set up permissions to access the database
system. Do this by editing file system. Do this by editing file
/usr/local/pgsql/data/pg_hba.conf. The /usr/local/pgsql/data/pg_hba.conf. The
instructions are included in the file. (If your instructions are included in the file. (If your
...@@ -646,9 +659,8 @@ Installation Procedure ...@@ -646,9 +659,8 @@ Installation Procedure
later you can copy file pg_hba.conf from your old later you can copy file pg_hba.conf from your old
database on top of the one in your new database, database on top of the one in your new database,
rather than redoing the file from scratch. rather than redoing the file from scratch.
20. Briefly test that the backend will start and
21. Briefly test that the backend will start and run by running it from the command line.
run by running it from the command line.
a. Start the postmaster daemon running in the a. Start the postmaster daemon running in the
background by typing background by typing
$ cd $ cd
...@@ -664,19 +676,18 @@ Installation Procedure ...@@ -664,19 +676,18 @@ Installation Procedure
f. Remove the test database (unless you will f. Remove the test database (unless you will
want to use it later for other tests): want to use it later for other tests):
$ destroydb $ destroydb
21. Run postmaster in the background from your
22. Run postmaster in the background from your
Postgres superuser account (typically account Postgres superuser account (typically account
postgres). Do not run postmaster from the root postgres). Do not run postmaster from the root
account! account!
Usually, you will want to modify your computer so Usually, you will want to modify your computer so
that it will automatically start postmaster that it will automatically start postmaster
whenever it boots. It is not required; the whenever it boots. It is not required; the
Postgres server can be run successfully from Postgres server can be run successfully from
non-privileged accounts without root intervention. non-privileged accounts without root intervention.
Here are some suggestions on how to do this, Here are some suggestions on how to do this,
contributed by various users. contributed by various users.
Whatever you do, postmaster must be run by the Whatever you do, postmaster must be run by the
Postgres superuser (postgres?) and not by root. Postgres superuser (postgres?) and not by root.
This is why all of the examples below start by This is why all of the examples below start by
switching user (su) to postgres. These commands switching user (su) to postgres. These commands
...@@ -692,7 +703,7 @@ Installation Procedure ...@@ -692,7 +703,7 @@ Installation Procedure
o Edit file rc.local on NetBSD or file rc2.d on o Edit file rc.local on NetBSD or file rc2.d on
SPARC Solaris 2.5.1 to contain the following SPARC Solaris 2.5.1 to contain the following
single line: single line:
su postgres -c "/usr/local/pgsql/bin/postmaster su postgres -c "/usr/local/pgsql/bin/postmaster \
-S -D /usr/local/pgsql/data" -S -D /usr/local/pgsql/data"
o In FreeBSD 2.2-RELEASE edit o In FreeBSD 2.2-RELEASE edit
/usr/local/etc/rc.d/pgsql.sh to contain the /usr/local/etc/rc.d/pgsql.sh to contain the
...@@ -701,32 +712,32 @@ Installation Procedure ...@@ -701,32 +712,32 @@ Installation Procedure
#!/bin/sh #!/bin/sh
[ -x /usr/local/pgsql/bin/postmaster ] && { [ -x /usr/local/pgsql/bin/postmaster ] && {
su -l pgsql -c 'exec su -l pgsql -c 'exec
/usr/local/pgsql/bin/postmaster /usr/local/pgsql/bin/postmaster \
-D/usr/local/pgsql/data -D/usr/local/pgsql/data \
-S -o -F > /usr/local/pgsql/errlog' & -S -o -F > /usr/local/pgsql/errlog' \
echo -n ' pgsql' & echo -n ' pgsql'
} }
You may put the line breaks as shown above. The You may put the line breaks as shown above. The
shell is smart enough to keep parsing beyond shell is smart enough to keep parsing beyond
end-of-line if there is an expression unfinished. end-of-line if there is an expression unfinished.
The exec saves one layer of shell under the The exec saves one layer of shell under the
postmaster process so the parent is init. postmaster process so the parent is init.
o In RedHat Linux add a file o In RedHat Linux add a file
/etc/rc.d/init.d/postgres.init which is based on /etc/rc.d/init.d/postgres.init which is based on
the example in contrib/linux/. Then make a the example in contrib/linux/. Then make a
softlink to this file from softlink to this file from
/etc/rc.d/rc5.d/S98postgres.init. /etc/rc.d/rc5.d/S98postgres.init.
o In RedHat Linux edit file /etc/inittab to add the o In RedHat Linux edit file /etc/inittab to add the
following as a single line: following as a single line:
pg:2345:respawn:/bin/su - postgres -c pg:2345:respawn:/bin/su - postgres -c
"/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data "/usr/local/pgsql/bin/postmaster \
>> /usr/local/pgsql/server.log 2>&1 </dev/null" -D/usr/local/pgsql/data \
>> /usr/local/pgsql/server.log 2>&1 \
</dev/null"
(The author of this example says this example (The author of this example says this example
will revive the postmaster if it dies, but he will revive the postmaster if it dies, but he
doesn't know if there are other side effects.) doesn't know if there are other side effects.)
22. Run the regression tests. The file
23. Run the regression tests. The file
/usr/src/pgsql/src/test/regress/README has /usr/src/pgsql/src/test/regress/README has
detailed instructions for running and interpreting detailed instructions for running and interpreting
the regression tests. A short version follows the regression tests. A short version follows
...@@ -735,9 +746,9 @@ Installation Procedure ...@@ -735,9 +746,9 @@ Installation Procedure
$ cd /usr/src/pgsql/src/test/regress $ cd /usr/src/pgsql/src/test/regress
$ gmake clean $ gmake clean
$ gmake all runtest $ gmake all runtest
You do not need to type gmake clean if this You do not need to type gmake clean if this
is the first time you are running the tests. is the first time you are running the tests.
You should get on the screen (and also You should get on the screen (and also
written to file ./regress.out) a series of written to file ./regress.out) a series of
statements stating which tests passed and statements stating which tests passed and
which tests failed. Please note that it can which tests failed. Please note that it can
...@@ -760,17 +771,9 @@ Installation Procedure ...@@ -760,17 +771,9 @@ Installation Procedure
it appears to be a significant issue. it appears to be a significant issue.
For example, For example,
o For a i686/Linux-ELF platform, no tests o For a i686/Linux-ELF platform, no tests
failed since this is the v6.4 regression failed since this is the v6.5 regression
testing reference platform. testing reference platform.
o For the SPARC/Linux-ELF platform, using the Even if a test result clearly indicates a
970525 beta version of Postgres v6.2 the
following tests "failed": float8 and
geometry "failed" due to minor precision
differences in floating point numbers.
select_views produces massively different
output, but the differences are due to minor
floating point differences.
Even if a test result clearly indicates a
real failure, it may be a localized problem real failure, it may be a localized problem
that will not affect you. An example is that that will not affect you. An example is that
the int8 test will fail, producing obviously the int8 test will fail, producing obviously
...@@ -780,13 +783,13 @@ Installation Procedure ...@@ -780,13 +783,13 @@ Installation Procedure
discover it). This is not something to worry discover it). This is not something to worry
about unless you need to store 64-bit about unless you need to store 64-bit
integers. integers.
Conclusion? If you do see failures, try to Conclusion? If you do see failures, try to
understand the nature of the differences and understand the nature of the differences and
then decide if those differences will affect then decide if those differences will affect
your intended use of Postgres. The regression your intended use of Postgres. The regression
tests are a helpful tool, but they may tests are a helpful tool, but they may
require some study to be useful. require some study to be useful.
After running the regression tests, type After running the regression tests, type
$ destroydb regression $ destroydb regression
$ cd /usr/src/pgsql/src/test/regress $ cd /usr/src/pgsql/src/test/regress
$ gmake clean $ gmake clean
...@@ -794,28 +797,27 @@ Installation Procedure ...@@ -794,28 +797,27 @@ Installation Procedure
tests. (You may want to save the tests. (You may want to save the
regression.diffs file in another place before regression.diffs file in another place before
doing this.) doing this.)
23. If you haven't already done so, this would be
24. If you haven't already done so, this would be
a good time to modify your computer to do regular a good time to modify your computer to do regular
maintainence. The following should be done at maintainence. The following should be done at
regular intervals: regular intervals:
Procedure 3.2. Minimal Backup Procedure Minimal Backup Procedure
1. Run the SQL command VACUUM. This will clean 1. Run the SQL command VACUUM. This will clean
up your database. up your database.
2. Back up your system. (You should probably 2. Back up your system. (You should probably
keep the last few backups on hand.) Preferably, keep the last few backups on hand.) Preferably,
no one else should be using the system at the no one else should be using the system at the
time. time.
Ideally, the above tasks should be done by a shell Ideally, the above tasks should be done by a
script that is run nightly or weekly by cron. Look shell script that is run nightly or weekly by
at the man page for crontab for a starting point cron. Look at the man page for crontab for a
on how to do this. (If you do it, please e-mail us starting point on how to do this. (If you do it,
a copy of your shell script. We would like to set please e-mail us a copy of your shell script. We
up our own systems to do this too.) would like to set up our own systems to do this
too.)
25. If you are upgrading an existing system then 24. If you are upgrading an existing system then
reinstall your old database. Type reinstall your old database. Type
$ cd $ cd
$ psql -e template1 < db.out $ psql -e template1 < db.out
...@@ -834,52 +836,51 @@ Installation Procedure ...@@ -834,52 +836,51 @@ Installation Procedure
fact from an old syntax, but RevertPoly() is fact from an old syntax, but RevertPoly() is
provided to reverse the effects of a mis-applied provided to reverse the effects of a mis-applied
upgrade. upgrade.
25. If you are a new user, you may wish to play
26. If you are a new user, you may wish to play
with Postgres as described below. with Postgres as described below.
26. Clean up after yourself. Type
27. Clean up after yourself. Type $ rm -rf /usr/src/pgsql_6_5
$ rm -rf /usr/src/pgsql_6_0 $ rm -rf /usr/local/pgsql_6_5
$ rm -rf /usr/local/pgsql_6_0 # Also delete old database directory tree if it is not in
# Also delete old database directory tree if it is # /usr/local/pgsql_6_5/data
not in $ rm ~/postgresql-v6.5.tar.gz
# /usr/local/pgsql_6_0/data 27. You will probably want to print out the
$ rm ~/postgresql-v6.2.1.tar.gz
28. You will probably want to print out the
documentation. If you have a Postscript printer, documentation. If you have a Postscript printer,
or have your machine already set up to accept or have your machine already set up to accept
Postscript files using a print filter, then to Postscript files using a print filter, then to
print the User's Guide simply type print the User's Guide simply type
$ cd /usr/local/pgsql/doc $ cd /usr/local/pgsql/doc
$ gunzip user.ps.tz | lpr $ gunzip user.ps.tz | lpr
Here is how you might do it if you have Here is how you might do it if you have
Ghostscript on your system and are writing to a Ghostscript on your system and are writing to a
laserjet printer. laserjet printer.
$ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE' $ alias gshp='gs -sDEVICE=laserjet -r300
-dNOPAUSE'
$ export $ export
GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
$ gunzip user.ps.gz $ gunzip user.ps.gz
$ gshp -sOUTPUTFILE=user.hp user.ps $ gshp -sOUTPUTFILE=user.hp user.ps
$ gzip user.ps $ gzip user.ps
$ lpr -l -s -r manpage.hp $ lpr -l -s -r manpage.hp
28. The Postgres team wants to keep Postgres
29. The Postgres team wants to keep Postgres
working on all of the supported platforms. We working on all of the supported platforms. We
therefore ask you to let us know if you did or did therefore ask you to let us know if you did or did
not get Postgres to work on you system. Please not get Postgres to work on you system. Please
send a mail message to pgsql-ports@postgresql.org send a mail message to pgsql-ports@postgresql.org
telling us the following: (mailto:pgsql-ports@postgresql.org) telling us the
o The version of Postgres (v6.4, 6.3.2, beta 981014, etc.). following:
o Your operating system (i.e. RedHat v5.1 Linux v2.0.34). o The version of Postgres (v6.5, 6.4.2, beta
o Your hardware (SPARC, i486, etc.). 981014, etc.).
o Your operating system (i.e. RedHat v5.1 Linux
v2.0.34).
o Your hardware (SPARC, i486, etc.).
o Did you compile, install and run the regression o Did you compile, install and run the regression
tests cleanly? If not, what source code did you tests cleanly? If not, what source code did you
change (i.e. patches you applied, changes you change (i.e. patches you applied, changes you
made, etc.), what tests failed, etc. It is normal made, etc.), what tests failed, etc. It is normal
to get many warning when you compile. You do not to get many warning when you compile. You do not
need to report these. need to report these.
30. Now create, access and manipulate databases 29. Now create, access and manipulate databases
as desired. Write client programs to access the as desired. Write client programs to access the
database server. In other words, enjoy! database server. In other words, enjoy!
...@@ -939,12 +940,12 @@ Playing with Postgres ...@@ -939,12 +940,12 @@ Playing with Postgres
foo=> \d bar foo=> \d bar
Table = bar Table = bar
+--------------+--------------+-------+ +--------------+---------------+-------+
| Field | Type | Length| | Field | Type | Length|
+--------------+--------------+-------+ +--------------+---------------+-------+
| i | int4 | 4 | | i | int4 | 4 |
| c | (bp)char | 16 | | c | (bp)char | 16 |
+--------------+--------------+-------+ +--------------+---------------+-------+
And so on. You get the idea. And so on. You get the idea.
...@@ -963,67 +964,21 @@ The Next Step ...@@ -963,67 +964,21 @@ The Next Step
Porting Notes Porting Notes
Note: Check for any platform-specific FAQs in the Check for any platform-specific FAQs in the doc/
doc/ directory of the source distribution. For directory of the source distribution.
some ports, the notes below may be out of date.
Ultrix4.x
Note: There have been no recent reports of Ultrix
usage with Postgres.
You need to install the libdl-1.1 package since
Ultrix 4.x doesn't have a dynamic loader. It's
available in
s2k-ftp.CS.Berkeley.EDU:pub/personal/andrew/libdl-1.-
1.tar.Z
Linux
Linux ELF
The regression test reference machine is a
linux-2.0.30/libc-5.3.12/RedHat-4.2 installation
running on a dual processor i686. The linux-elf port
installs cleanly. See the Linux FAQ for more details.
Linux a.out
For non-ELF Linux, the dld library MUST be obtained
and installed on the system. It enables dynamic link
loading capability to the Postgres port. The dld
library can be obtained from the sunsite linux
distributions. The current name is dld-3.2.5. Jalon
Q. Zimmerman
BSD/OS
For BSD/OS 2.0 and 2.01, you will need to get the GNU
dld library.
NeXT
The NeXT port for v1.09 was supplied by Tom R.
Hageman. It requires a SysV IPC emulation library and
header files for shared libary and semaphore stuff.
Tom just happens to sell such a product so contact
him for information. He has also indicated that
binary releases of Postgres for NEXTSTEP will be made
available to the general public. Contact Info@RnA.nl
for information.
We have no recent reports of successful NeXT
installations (as of v6.2.1). However, the
client-side libraries should work even if the backend
is not supported.
Chapter 4. Configuration Options Chapter 4. Configuration Options
Parameters for Configuration (configure) Parameters for Configuration (configure)
The full set of parameters available in configure can The full set of parameters available in configure
be obtained by typing can be obtained by typing
$ ./configure --help $ ./configure --help
The following parameters may be of interest to
The following parameters may be of interest to
installers: installers:
Directory and file names: Directory and file names:
...@@ -1046,32 +1001,35 @@ Parameters for Configuration (configure) ...@@ -1046,32 +1001,35 @@ Parameters for Configuration (configure)
--with-libs=incdir also search for libraries in DIR --with-libs=incdir also search for libraries in DIR
--with-libraries=libdir also search for libraries in DIR --with-libraries=libdir also search for libraries in DIR
--enable-locale enable locale support --enable-locale enable locale support
--enable-recode enable cyrillic recode --enable-recode enable cyrillic recode support
support
--with-mb=encoding enable multi-byte support --with-mb=encoding enable multi-byte support
--with-pgport=portnum change default startup port --with-pgport=portnum change default startup port
--with-tcl use tcl --with-maxbackends=n set default maximum number of
server processes
--with-tcl build Tcl interfaces and pgtclsh
--with-tclconfig=tcldir tclConfig.sh and tkConfig.sh are in DIR --with-tclconfig=tcldir tclConfig.sh and tkConfig.sh are in DIR
--with-perl use perl --with-perl build Perl interface
--with-odbc build ODBC driver package --with-odbc build ODBC driver package
--with-odbcinst=odbcdir change default directory for odbcinst.ini --with-odbcinst=odbcdir change default directory for odbcinst.ini
--enable-cassert enable assertion checks (debugging) --enable-cassert enable assertion checks (debugging)
--with-CC=compiler use specific C compiler --with-CC=compiler use specific C compiler
--with-CXX=compiler use specific C++ compiler --with-CXX=compiler use specific C++ compiler
--without-CXX do not build libpq++ --without-CXX prevent building C++ code
Some systems may have trouble building a specific
Some systems may have trouble building a specific
feature of Postgres. For example, systems with a feature of Postgres. For example, systems with a
damaged C++ compiler may need to specify damaged C++ compiler may need to specify
--without-CXX to encourage the build procedure to --without-CXX to instruct the build procedure to skip
ignore the libpq++ construction. construction of libpq++.
Parameters for Building (make) Parameters for Building (make)
Many installation-related parameters can be set in Many installation-related parameters can be set in
the building stage of Postgres installation. the building stage of Postgres installation.
In most cases, these parameters should be place in a In most cases, these parameters should be placed in
file, Makefile.custom, intended just for that a file, Makefile.custom, intended just for that
purpose. The default distribution does not contain purpose. The default distribution does not contain
this optional file, so you will create it using a this optional file, so you will create it using a
text editor of your choice. When upgrading text editor of your choice. When upgrading
...@@ -1079,49 +1037,63 @@ Parameters for Building (make) ...@@ -1079,49 +1037,63 @@ Parameters for Building (make)
Makefile.custom to the new installation before doing Makefile.custom to the new installation before doing
the build. the build.
make [ variable=value [,...] ] make [ variable=value [,...] ]
A few of the many variables which can be specified
A few of the many variables which can be specified
are: are:
POSTGRESDIR
Top of the installation tree. POSTGRESDIR
BINDIR Top of the installation tree.
Location of applications and utilities.
LIBDIR BINDIR
Location of object libraries, including shared Location of applications and utilities.
LIBDIR
Location of object libraries, including shared
libraries. libraries.
HEADERDIR
Location of include files. HEADERDIR
ODBCINST Location of include files.
Location of installation-wide psqlODBC (ODBC)
ODBCINST
Location of installation-wide psqlODBC (ODBC)
configuration file. configuration file.
There are other optional parameters which are not as
There are other optional parameters which are not as
commonly used. Many of those listed below are commonly used. Many of those listed below are
appropriate when doing Postgres server code appropriate when doing Postgres server code
development. development.
CFLAGS
Set flags for the C compiler. Should be assigned CFLAGS
Set flags for the C compiler. Should be assigned
with "+=" to retain relevant default parameters. with "+=" to retain relevant default parameters.
YFLAGS
Set flags for the yacc/bison parser. -v might be YFLAGS
Set flags for the yacc/bison parser. -v might be
used to help diagnose problems building a new used to help diagnose problems building a new
parser. Should be assigned with "+=" to retain parser. Should be assigned with "+=" to retain
relevant default parameters. relevant default parameters.
USE_TCL
Enable Tcl interface building. USE_TCL
HSTYLE Enable Tcl interface building.
DocBook HTML style sheets for building the
HSTYLE
DocBook HTML style sheets for building the
documentation from scratch. Not used unless you documentation from scratch. Not used unless you
are developing new documentation from the are developing new documentation from the
DocBook-compatible SGML source documents in DocBook-compatible SGML source documents in
doc/src/sgml/. doc/src/sgml/.
PSTYLE
DocBook style sheets for building printed PSTYLE
DocBook style sheets for building printed
documentation from scratch. Not used unless you documentation from scratch. Not used unless you
are developing new documentation from the are developing new documentation from the
DocBook-compatible SGML source documents in DocBook-compatible SGML source documents in
doc/src/sgml/. doc/src/sgml/.
Here is an example Makefile.custom for a PentiumPro
Here is an example Makefile.custom for a PentiumPro
Linux system: Linux system:
# Makefile.custom # Makefile.custom
...@@ -1132,16 +1104,22 @@ Parameters for Building (make) ...@@ -1132,16 +1104,22 @@ Parameters for Building (make)
# documentation # documentation
HSTYLE= /home/tgl/SGML/db118.d/docbook/html HSTYLE= /home/lockhart/SGML/db118.d/docbook/html
PSTYLE= /home/tgl/SGML/db118.d/docbook/print PSTYLE= /home/lockhart/SGML/db118.d/docbook/print
Locale Support Locale Support
Note: Written by Oleg Bartunov. See Oleg's web Note: Written by Oleg Bartunov. See Oleg's web
page for additional information on locale and page (http://www.sai.msu.su/~megera/postgres/) for
Russian language support. additional information on locale and Russian
language support.
While doing a project for a company in Moscow, While doing a project for a company in Moscow,
Russia, I encountered the problem that postgresql had Russia, I encountered the problem that postgresql had
no support of national alphabets. After looking for no support of national alphabets. After looking for
possible workarounds I decided to develop support of possible workarounds I decided to develop support of
...@@ -1156,10 +1134,9 @@ Locale Support ...@@ -1156,10 +1134,9 @@ Locale Support
LC_MONETARY was added by others. I got many messages LC_MONETARY was added by others. I got many messages
from people about this patch so I decided to send it from people about this patch so I decided to send it
to developers and (to my surprise) it was to developers and (to my surprise) it was
incorporated into the Postgres distribution. incorporated into the Postgres distribution.
People often complain that locale doesn't work for People often complain that locale doesn't work for
them. There are several common mistakes: them. There are several common mistakes:
o Didn't properly configure postgresql before o Didn't properly configure postgresql before
compilation. You must run configure with compilation. You must run configure with
--enable-locale option to enable locale support. --enable-locale option to enable locale support.
...@@ -1169,379 +1146,448 @@ Locale Support ...@@ -1169,379 +1146,448 @@ Locale Support
because backend gets information about locale from because backend gets information about locale from
environment. I use following shell script environment. I use following shell script
(runpostgres): (runpostgres):
#!/bin/sh #!/bin/sh
export LC_CTYPE=koi8-r export LC_CTYPE=koi8-r
export LC_COLLATE=koi8-r export LC_COLLATE=koi8-r
postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe' postmaster -B 1024 -S
-D/usr/local/pgsql/data/ -o '-Fe'
and run it from rc.local as and run it from rc.local as
/bin/su - postgres -c "/home/postgres/runpostgres" /bin/su - postgres -c
"/home/postgres/runpostgres"
o Broken locale support in OS (for example, locale o Broken locale support in OS (for example, locale
support in libc under Linux several times has support in libc under Linux several times has
changed and this caused a lot of problems). Latest changed and this caused a lot of problems). Latest
perl has also support of locale and if locale is perl has also support of locale and if locale is
broken perl -v will complain something like: broken perl -v will complain something like:
8:17[mira]:~/WWW/postgres>setenv LC_CTYPE 8:17[mira]:~/WWW/postgres>setenv LC_CTYPE
not_exist not_exist
8:18[mira]:~/WWW/postgres>perl -v 8:18[mira]:~/WWW/postgres>perl -v
perl: warning: Setting locale failed. perl: warning: Setting locale failed.
perl: warning: Please check that your locale perl: warning: Please check that your locale
settings: settings:
LC_ALL = (unset), LC_ALL = (unset),
LC_CTYPE = "not_exist", LC_CTYPE = "not_exist",
LANG = (unset) LANG = (unset)
are supported and installed on your are supported and installed on your system.
system. perl: warning: Falling back to the standard
perl: warning: Falling back to the standard
locale ("C"). locale ("C").
o Wrong location of locale files! Possible locations o Wrong location of locale files! Possible locations
include: /usr/lib/locale (Linux, Solaris), include: /usr/lib/locale (Linux, Solaris),
/usr/share/locale (Linux), /usr/lib/nls/loc (DUX /usr/share/locale (Linux), /usr/lib/nls/loc (DUX
4.0). Check man locale to find the correct 4.0). Check man locale to find the correct
location. Under Linux I did a symbolic link between location. Under Linux I did a symbolic link between
/usr/lib/locale and /usr/share/locale to be sure /usr/lib/locale and /usr/share/locale to be sure
that the next libc will not break my locale. that the next libc will not break my locale.
What are the Benefits? What are the Benefits?
You can use ~* and order by operators for strings You can use ~* and order by operators for strings
contain characters from national alphabets. contain characters from national alphabets.
Non-english users definitely need that. If you won't Non-english users definitely need that. If you won't
use locale stuff just undefine the USE_LOCALE use locale stuff just undefine the USE_LOCALE
variable. variable.
What are the Drawbacks? What are the Drawbacks?
There is one evident drawback of using locale - it's There is one evident drawback of using locale - its
speed! So, use locale only if you really need it. speed! So, use locale only if you really need it.
Kerberos Authentication Kerberos Authentication
Kerberos is an industry-standard secure Kerberos is an industry-standard secure
authentication system suitable for distributed authentication system suitable for distributed
computing over a public network. computing over a public network.
Availability Availability
The Kerberos authentication system is not distributed The Kerberos authentication system is not
with Postgres. Versions of Kerberos are typically distributed with Postgres. Versions of Kerberos are
available as optional software from operating system typically available as optional software from
vendors. In addition, a source code distribution may operating system vendors. In addition, a source code
be obtained through MIT Project Athena. distribution may be obtained through MIT Project
Athena (ftp://athena-dist.mit.edu).
Note: You may wish to obtain the MIT version even Note: You may wish to obtain the MIT version even
if your vendor provides a version, since some if your vendor provides a version, since some
vendor ports have been deliberately crippled or vendor ports have been deliberately crippled or
rendered non-interoperable with the MIT version. rendered non-interoperable with the MIT version.
Users located outside the United States of America Users located outside the United States of America
and Canada are warned that distribution of the actual and Canada are warned that distribution of the actual
encryption code in Kerberos is restricted by U. S. encryption code in Kerberos is restricted by U. S.
Government export regulations. Government export regulations.
Inquiries regarding your Kerberos should be directed Inquiries regarding your Kerberos should be directed
to your vendor or MIT Project Athena. Note that FAQLs to your vendor or MIT Project Athena
(info-kerberos@athena.mit.edu). Note that FAQLs
(Frequently-Asked Questions Lists) are periodically (Frequently-Asked Questions Lists) are periodically
posted to the Kerberos mailing list (send mail to posted to the Kerberos mailing list
subscribe), and USENET news group. (mailto:kerberos@ATHENA.MIT.EDU) (send mail to
subscribe (mailto:kerberos-request@ATHENA.MIT.EDU)),
and USENET news group (news:comp.protocols.kerberos).
Installation Installation
Installation of Kerberos itself is covered in detail Installation of Kerberos itself is covered in detail
in the Kerberos Installation Notes . Make sure that in the Kerberos Installation Notes . Make sure that
the server key file (the srvtab or keytab) is somehow the server key file (the srvtab or keytab) is somehow
readable by the Postgres account. readable by the Postgres account.
Postgres and its clients can be compiled to use Postgres and its clients can be compiled to use
either Version 4 or Version 5 of the MIT Kerberos either Version 4 or Version 5 of the MIT Kerberos
protocols by setting the KRBVERS variable in the file protocols by setting the KRBVERS variable in the file
src/Makefile.global to the appropriate value. You can src/Makefile.global to the appropriate value. You can
also change the location where Postgres expects to also change the location where Postgres expects to
find the associated libraries, header files and its find the associated libraries, header files and its
own server key file. own server key file.
After compilation is complete, Postgres must be After compilation is complete, Postgres must be
registered as a Kerberos service. See the Kerberos registered as a Kerberos service. See the Kerberos
Operations Notes and related manual pages for more Operations Notes and related manual pages for more
details on registering services. details on registering services.
Operation Operation
After initial installation, Postgres should operate After initial installation, Postgres should operate
in all ways as a normal Kerberos service. For details in all ways as a normal Kerberos service. For details
on the use of authentication, see the PostgreSQL on the use of authentication, see the PostgreSQL
User's Guide reference sections for postmaster and User's Guide reference sections for postmaster and
psql. psql.
In the Kerberos Version 5 hooks, the following In the Kerberos Version 5 hooks, the following
assumptions are made about user and service naming: assumptions are made about user and service naming:
o User principal names (anames) are assumed to o User principal names (anames) are assumed to
contain the actual Unix/Postgres user name in the contain the actual Unix/Postgres user name in the
first component. first component.
o The Postgres service is assumed to be have two o The Postgres service is assumed to be have two
components, the service name and a hostname, components, the service name and a hostname,
canonicalized as in Version 4 (i.e., with all canonicalized as in Version 4 (i.e., with all
domain suffixes removed). domain suffixes removed).
Table 4-1. Kerberos Parameter Examples Table 4-1. Kerberos Parameter Examples
Param- Example Parameter Example
eter user frew@S2K.ORG
user frew@S2K.ORG user aoki/HOST=miyu.S2K.Berkel-
user aoki/HOST=miyu.S2K.Berkeley- ey.EDU@S2K.ORG
.EDU@S2K.ORG host postgres_dbms/ucbvax@S2K.-
host postgres_dbms/ucbvax@S2K.ORG ORG
Support for Version 4 will disappear sometime after
the production release of Version 5 by MIT. Support for Version 4 will disappear sometime after
the production release of Version 5 by MIT.
Chapter 5. Release Notes Chapter 5. Release Notes
Release 6.4 Release 6.5
There are many new features and improvements in this This release marks a major step in the development
release. Thanks to our developers and maintainers, team's mastery of the source code we inherited from
nearly every aspect of the system has received some Berkeley. You will see we are now easily adding major
attention since the previous release. Here is a features, thanks to the increasing size and
brief, incomplete summary: experience of our world-wide development team.
o Views and rules are now functional thanks to Here is a brief summary of some of the more
extensive new code in the rewrite rules system from noticable changes:
Jan Wieck. He also wrote a chapter on it for the
Programmer's Guide. Multi-version concurrency control(MVCC)
o Jan also contributed a second procedural language, This removes our old table-level locking, and
PL/pgSQL, to go with the original PL/pgTCL replaces it with a locking system that is superior
procedural language he contributed last release. to most commercial database systems. In a
o We have optional multiple-byte character set traditional system, each row that is modified is
support from Tatsuo Iishi to complement our locked until committed, preventing reads by other
existing locale support. users. MVCC uses the natural multi-version nature
o Client/server communications has been cleaned up, of PostgreSQL to allow readers to continue reading
with better support for asynchronous messages and consistent data during writer activity. Writers
interrupts thanks to Tom Lane. continue to use the compact pg_log transaction
o The parser will now perform automatic type coersion system. This is all performed without having to
to match arguments to available operators and allocate a lock for every row like traditional
functions, and to match columns and expressions database systems. So, basically, we no longer are
with target columns. This uses a generic mechanism restricted by simple table-level locking; we have
which supports the type extensibility features of something better than row-level locking.
Postgres. There is a new chapter in the User's
Guide which covers this topic. Numeric data type
o Three new data types have been added. Two types, We now have a true numeric data type, with
inet and cidr, support various forms of IP network, user-specified precision.
subnet, and machine addressing. There is now an
8-byte integer type available on some platforms. Temporary tables
See the chapter on data types in the User's Guide Temporary tables are guaranteed to have unique
for details. A fourth type, serial, is now names within a database session, and are destroyed
supported by the parser as an amalgam of the int4 on session exit.
type, a sequence, and a unique index.
o Several more SQL92-compatible syntax features have New SQL features
been added, including INSERT DEFAULT VALUES We now have CASE, INTERSECT, and EXCEPT statement
o The automatic configuration and installation system support. We have new LIMIT/OFFSET, SET TRANSACTION
has received some attention, and should be more ISOLATION LEVEL, SELECT ... FOR UPDATE, and an
robust for more platforms than it has ever been. improved LOCK command.
Migration to v6.4 Speedups
We continue to speed up PostgreSQL, thanks to the
A dump/restore using pg_dump or pg_dumpall is variety of talents within our team. We have sped
up memory allocation, optimization, table joins,
and row transfer routines.
Ports
We continue to expand our port list, this time
including WinNT/ix86 and NetBSD/arm32.
Interfaces
Most interfaces have new versions, and existing
functionality has been improved.
Migration to v6.5
A dump/restore using pg_dump or pg_dumpall is
required for those wishing to migrate data from any required for those wishing to migrate data from any
previous release of Postgres. previous release of Postgres.
The new Multi-Version Concurrency Control (MVCC)
features can give somewhat different behaviors in
multi-user environments. Read and understand the
following section to ensure that your existing
applications will give you the behavior you need.
Multi-Version Concurrency Control
Because readers in 6.5 don't lock data, regardless
of transaction isolation level, data read by one
transaction can be overwritten by another. In the
other words, if a row is returned by SELECT it
doesn't mean that this row really exists at the time
it is returned (i.e. sometime after the statement or
transaction began) nor that the row is protected from
deletion or updation by concurrent transactions
before the current transaction does a commit or
rollback.
To ensure the actual existance of a row and protect
it against concurrent updates one must use SELECT FOR
UPDATE or an appropriate LOCK TABLE statement. This
should be taken into account when porting
applications from previous releases of Postgres and
other environments.
Keep above in mind if you are using contrib/refint.*
triggers for referential integrity. Additional
technics are required now. One way is to use LOCK
parent_table IN SHARE ROW EXCLUSIVE MODE command if a
transaction is going to update/delete a primary key
and use LOCK parent_table IN SHARE MODE command if a
transaction is going to update/insert a foreign key.
Note: Note that if you run a transaction in
SERIALIZABLE mode then you must execute LOCK
commands above before execution of any DML
statement
(SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the
transaction.
These inconveniences will disappear in the future
when the ability to read dirty (uncommitted) data
(regardless of isolation level) and true referential
integrity will be implemented.
Detailed Change List Detailed Change List
Bug Fixes Bug Fixes
--------- ---------
Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan) Fix text<->float8 and text<->float4 conversion
Remove char2-16 data types, use char/varchar(Darren) functions(Thomas)
Pqfn not handles a NOTICE message(Anders) Fix for creating tables with mixed-case
Reduced busywaiting overhead for spinlocks with many constraints(Billy)
backends (dg) Change exp()/pow() behavior to generate error on
Stuck spinlock detection (dg) underflow/overflow(Jan)
Fix up "ISO-style" timespan decoding and Fix bug in pg_dump -z
encoding(Thomas) Memory overrun cleanups(Tatsuo)
Fix problem with table drop after rollback of Fix for lo_import crash(Tatsuo)
transaction(Vadim) Adjust handling of data type names to suppress double
Change error message and remove non-functional update quotes(Thomas)
message(Vadim) Use type coersion for matching columns and
Fix for COPY array checking DEFAULT(Thomas)
Fix for SELECT 1 UNION SELECT NULL Fix deadlock so it only checks once after one second
Fix for buffer leaks in large object calls(Pascal) of sleep(Bruce)
Change owner from oid to int4 type(Bruce) Fixes for aggregates and PL/pgsql(Hiroshi)
Fix a bug in the oracle compatibility functions Fix for subquery crash(Vadim)
btrim() ltrim() and rtrim() Fix for libpq function PQfnumber and case-insensitive
Fix for shared invalidation cache overflow(Massimo) names(Bahman Rafatjoo)
Prevent file descriptor leaks in failed COPY's(Bruce) Fix for large object write-in-middle, no extra block,
Fix memory leak in libpgtcl's pg_select(Constantin) memory consumption(Tatsuo)
Fix problems with username/passwords over 8 Fix for pg_dump -d or -D and quote special
characters(Tom) characters in INSERT
Fix problems with handling of asynchronous NOTIFY in Repair serious problems with dynahash(Tom)
backend(Tom) Fix INET/CIDR portability problems
Fix of many bad system table entries(Tom) Fix problem with selectivity error in ALTER TABLE ADD
COLUMN(Bruce)
Fix executor so mergejoin of different column types
works(Tom)
Fix for Alpha OR selectivity bug
Fix OR index selectivity problem(Bruce)
Fix so \d shows proper length for
char()/varchar()(Ryan)
Fix tutorial code(Clark)
Improve destroyuser checking(Oliver)
Fix for Kerberos(Rodney McDuff)
Fix for dropping database while dirty buffers(Bruce)
Fix so sequence nextval() can be
case-sensitive(Bruce)
Fix !!= operator
Drop buffers before destroying database files(Bruce)
Fix case where executor evaluates functions
twice(Tatsuo)
Allow sequence nextval actions to be
case-sensitive(Bruce)
Fix optimizer indexing not working for negative
numbers(Bruce)
Fix for memory leak in executor with fjIsNull
Fix for aggregate memory leaks(Erik Riedel)
Allow username containing a dash GRANT permissions
Cleanup of NULL in inet types
Clean up system table bugs(Tom)
Fix problems of PAGER and \? command(Masaaki Sakaida)
Reduce default multi-segment file size limit to
1GB(Peter)
Fix for dumping of CREATE OPERATOR(Tom)
Fix for backward scanning of cursors(Hiroshi Inoue)
Fix for COPY FROM STDIN when using \i(Tom)
Fix for subselect is compared inside an
expression(Jan)
Fix handling of error reporting while returning
rows(Tom)
Fix problems with reference to array types(Tom,Jan)
Prevent UPDATE SET oid(Jan)
Fix pg_dump so -t option can handle case-sensitive
tablenames
Fixes for GROUP BY in special cases(Tom, Jan)
Fix for memory leak in failed queries(Tom)
DEFAULT now supports mixed-case identifiers(Tom)
Fix for multi-segment uses of DROP/RENAME table,
indexes(Ole Gjerde)
Enhancements Enhancements
------------ ------------
Upgrade ecpg and ecpglib,see Add "vacuumdb" utility
src/interfaces/ecpc/ChangeLog(Michael) Speed up libpq by allocating memory better(Tom)
Show the index used in an EXPLAIN(Zeugswetter) EXPLAIN all indices used(Tom)
EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan) Implement CASE, COALESCE, NULLIF expression(Thomas)
Multi-byte awareness of many data types and functions, via configure(Tatsuo) New pg_dump table output format(Constantin)
New configure --with-mb option(Tatsuo) Add string min()/max() functions(Thomas)
New initdb --pgencoding option(Tatsuo) Extend new type coersion techniques to
New createdb -E multibyte option(Tatsuo) aggregates(Thomas)
Select version(); now returns PostgreSQL version(Jeroen) New moddatetime contrib(Terry)
Libpq now allows asynchronous clients(Tom) Update to pgaccess 0.96(Constantin)
Allow cancel from client of backend query(Tom) Add routines for single-byte "char" type(Thomas)
Psql now cancels query with Control-C(Tom) Improved substr() function(Thomas)
Libpq users need not issue dummy queries to get NOTIFY messages(Tom) Improved multi-byte handling(Tatsuo)
NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom) Multi-version concurrency control/MVCC(Vadim)
PGresult struct now includes associated error message, if any(Tom) New Serialized mode(Vadim)
Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas) Fix for tables over 2gigs(Peter)
Add routines to convert between varchar and bpchar(Thomas) New SET TRANSACTION ISOLATION LEVEL(Vadim)
Add routines to allow sizing of varchar and bpchar into target columns(Thomas) New LOCK TABLE IN ... MODE(Vadim)
Add bit flags to support timezonehour and minute in data retrieval(Thomas) Update ODBC driver(Byron)
Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas) New NUMERIC data type(Jan)
Fixes for unary minus parsing with leading spaces(Thomas) New SELECT FOR UPDATE(Vadim)
Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas) Handle "NaN" and "Infinity" for input values(Jan)
Check for and properly ignore FOREIGN KEY column constraints(Thomas) Improved date/year handling(Thomas)
Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas) Improved handling of backend connections(Magnus)
Enable HAVING clause but no fixes elsewhere yet. New options ELOG_TIMESTAMPS and USE_SYSLOG options
Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas) for log files(Massimo)
Save string type if specified for DEFAULT clause handling(Thomas) New TCL_ARRAYS option(Massimo)
Coerce operations involving different data types(Thomas) New INTERSECT and EXCEPT(Stefan)
Allow some index use for columns of different types(Thomas) New pg_index.indisprimary for primary key
Add capabilities for automatic type conversion(Thomas) tracking(D'Arcy)
Cleanups for large objects, so file is truncated on open(Peter) New pg_dump option to allow dropping of tables before
Readline cleanups(Tom) creation(Brook)
Allow psql \f \ to make spaces as delimiter(Bruce) Speedup of row output routines(Tom)
Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce) New READ COMMITTED isolation level(Vadim)
Msql compatibility library in /contrib(Aldrin) New TEMP tables/indexes(Bruce)
Remove the requirement that ORDER/GROUP BY clause identifiers be Prevent sorting if result is already sorted(Jan)
included in the target list(David) New memory allocation optimization(Jan)
Convert columns to match columns in UNION clauses(Thomas) Allow psql to do \p\g(Bruce)
Remove fork()/exec() and only do fork()(Bruce) Allow multiple rule actions(Jan)
Jdbc cleanups(Peter) Added LIMIT/OFFSET functionality(Jan)
Show backend status on ps command line(only works on some platforms)(Bruce) Improve optimizer when joining a large number of
Pg_hba.conf now has a sameuser option in the database field tables(Bruce)
Make lo_unlink take oid param, not int4 New intro to SQL from S. Simkovics' Master's Thesis
New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce) (Stefan, Thomas)
Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom) New intro to backend processing from S. Simkovics'
libpgtcl cleanups(Tom) Master's Thesis (Stefan)
Add -error option to libpgtcl's pg_result command(Tom) Improved int8 support(Ryan Bradetich, Thomas, Tom)
New locale patch, see docs/README/locale(Oleg) New routines to convert between int8 and text/varchar
Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) types(Thomas)
New contrib/lo code for large object orphan removal(Peter) New bushy plans, where meta-tables are joined(Bruce)
New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes Enable right-hand queries by default(Bruce)
feature, see /doc/README.mb(Tatsuo) Allow reliable maximum number of backends to be set
/contrib/noupdate code to revoke update permission on a column at configure time
Libpq can now be compiled on win32(Magnus) (--with-maxbackends and postmaster switch (-N
Add PQsetdbLogin() in libpq backends))(Tom)
New 8-byte integer type, checked by configure for OS support(Thomas) GEQO default now 10 tables because of optimizer
Better support for quoted table/column names(Thomas) speedups(Tom)
Surround table and column names with double-quotes in pg_dump(Thomas) Allow NULL=Var for MS-SQL portability(Michael, Bruce)
PQreset() now works with passwords(Tom) Modify contrib check_primary_key() so either
Handle case of GROUP BY target list column number out of range(David) "automatic" or "dependent"(Anand)
Allow UNION in subselects Allow psql \d on a view show query(Ryan)
Add auto-size to screen to \d? commands(Bruce) Speedup for LIKE(Bruce)
Use UNION to show all \d? results in one query(Bruce) Ecpg fixes/features, see
Add \d? field search feature(Bruce) src/interfaces/ecpg/ChangeLog file(Michael)
Pg_dump issues fewer \connect requests(Tom) JDBC fixes/features, see
Make pg_dump -z flag work better, document it in manual page(Tom) src/interfaces/jdbc/CHANGELOG(Peter)
Add HAVING clause with full support for subselects Make % operator have precedence like /(Bruce)
and unions(Stephan) Add new postgres -O option to allow system table
Full text indexing routines in contrib/fulltextindex(Maarten) structure changes(Bruce)
Transaction ids now stored in shared memory(Vadim) Update contrib/pginterface/findoidjoins script(Tom)
New PGCLIENTENCODING when issuing COPY command(Tatsuo) Major speedup in vacuum of deleted rows with
Support for SQL92 syntax "SET NAMES"(Tatsuo) indexes(Vadim)
Support for LATIN2-5(Tatsuo) Allow non-SQL functions to run different versions
Add UNICODE regression test case(Tatsuo) based on arguments(Tom)
Lock manager cleanup, new locking modes for LLL(Vadim) Add -E option that shows actual queries sent by \dt
Allow index use with OR clauses(Bruce) and friends(Masaaki Sakaida)
Allows "SELECT NULL ORDER BY 1;" Add version number in startup banners for
Explain VERBOSE prints the plan, and now pretty-prints the plan to psql(Masaaki Sakaida)
the postmaster log file(Bruce) New contrib/vacuumlo removes large objects not
Add Indices display to \d command(Bruce) referenced(Peter)
Allow GROUP BY on functions(David) New initialization for table sizes so non-vacuumed
New pg_class.relkind for large objects(Bruce) tables perform better(Tom)
New way to send libpq NOTICE messages to a different location(Tom) Improve error messages when a connection is
New \w write command to psql(Bruce) rejected(Tom)
New /contrib/findoidjoins scans oid columns to find join relationships(Bruce) Support for arrays of char() and varchar()
Allow binary-compatible indices to be considered when checking for valid fields(Massimo)
indices for restriction clauses containing a constant(Thomas) Overhaul of hash code to increase reliability and
New ISBN/ISSN code in /contrib/isbn_issn performance(Tom)
Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas) Update to PyGreSQL 2.4(D'Arcy)
New rewrite system fixes many problems with rules and views(Jan) Changed debug options so -d4 and -d5 produce
* Rules on relations work different node displays(Jan)
* Event qualifications on insert/update/delete work New pg_options: pretty_plan, pretty_parse,
* New OLD variable to reference CURRENT, CURRENT will be remove in future pretty_rewritten(Jan)
* Update rules can reference NEW and OLD in rule qualifications/actions Better optimization statistics for system table
* Insert/update/delete rules on views work access(Tom)
* Multiple rule actions are now supported, surrounded by parentheses Better handling of non-default block sizes(Massimo)
* Regular users can create views/rules on tables they have RULE permits Improve GEQO optimizer memory consumption(Tom)
* Rules and views inherit the permissions on the creator UNION now suppports ORDER BY of columns not in target
* No rules at the column level list(Jan)
* No UPDATE NEW/OLD rules Major libpq++ improvements(Vince Vielhaber)
* New pg_tables, pg_indexes, pg_rules and pg_views system views
* Only a single action on SELECT rules
* Total rewrite overhaul, perhaps for 6.5
* handle subselects
* handle aggregates on views
* handle insert into select from view works
System indexes are now multi-key(Bruce)
Oidint2, oidint4, and oidname types are removed(Bruce)
Use system cache for more system table lookups(Bruce)
New backend programming language PL/pgSQL in backend/pl(Jan)
New SERIAL data type, auto-creates sequence/index(Thomas)
Enable assert checking without a recompile(Massimo)
User lock enhancements(Massimo)
New setval() command to set sequence value(Massimo)
Auto-remove unix socket file on startup if no postmaster running(Massimo)
Conditional trace package(Massimo)
New UNLISTEN command(Massimo)
Psql and libpq now compile under win32 using win32.mak(Magnus)
Lo_read no longer stores trailing NULL(Bruce)
Identifiers are now truncated to 31 characters internally(Bruce)
Createuser options now availble on the command line
Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
Prevent file descriptor leaf from failed COPY(Bruce)
New pg_upgrade command(Bruce)
Updated /contrib directories(Massimo)
New CREATE TABLE DEFAULT VALUES statement available(Thomas)
New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
New DECLARE and FETCH feature(Thomas)
libpq's internal structures now not exported(Tom)
Allow up to 8 key indexes(Bruce)
Remove ARCHIVE keyword, that is no longer used(Thomas)
pg_dump -n flag to supress quotes around indentifiers
disable system columns for views(Jan)
new INET and CIDR types for network addresses(TomH, Paul)
no more double quotes in psql output pg_dump now dumps views(Terry)
new SET QUERY_LIMIT(Tatsuo,Jan)
Source Tree Changes Source Tree Changes
------------------- -------------------
/contrib cleanup(Jun) Improve port matching(Tom)
Inline some small functions called for every row(Bruce) Portability fixes for SunOS
Alpha/linux fixes Add NT/Win32 backend port and enable dynamic
Hp/UX cleanups(Tom) loading(Magnus and Daniel Horak)
Multi-byte regression tests(Soonmyung.) New port to Cobalt Qube(Mips) running Linux(Tatsuo)
Remove --disabled options from configure Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
Define PGDOC to use POSTGRESDIR by default Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
Make regression optional Port to NetBSD/macppc(Toshimi Aoki)
Remove extra braces code to pgindent(Bruce) Fix for tcl/tk configuration(Vince)
Add bsdi shared library support(Bruce) Removed CURRENT keyword for rule queries(Jan)
New --without-CXX support configure option(Brook) NT dynamic loading now works(Daniel Horak)
New FAQ_CVS Add ARM32 support(Andrew McMurry)
Update backend flowchart in tools/backend(Bruce) Better support for HPUX 11 and Unixware
Change atttypmod from int16 to int32(Bruce, Tom) Improve file handling to be more uniform, prevent
Getrusage() fix for platforms that do not have it(Tom) file descriptor leak(Tom)
Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page New install commands for plpgsql(Jan)
NS32K platform fixes(Phil Nelson, John Buller)
Sco 7/UnixWare 2.x fixes(Billy,others)
Sparc/Solaris 2.5 fixes(Ryan)
Pgbuiltin.3 is obsolete, move to doc files(Thomas)
Even more documention(Thomas)
Nextstep support(Jacek)
Aix support(David)
pginterface manual page(Bruce)
shared libraries all have version numbers
merged all OS-specific shared library defines into one file
smarter TCL/TK configuration checking(Billy)
smarter perl configuration(Brook)
configure uses supplied install-sh if no install script found(Tom)
new Makefile.shlib for shared library configuration(Tom)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment