-POSTGRESQL INSTALLATION INSTRUCTIONS
-Copyright (c) 1997 Regents of the University of California
-
-This is file /usr/src/pgsql/INSTALL. It contains notes on how to install
-PostgreSQL v6.4. Up to date information on PostgreSQL may be found at
-http://www.postgresql.org.
-
-PostgreSQL is an RDBMS database server. It is not completely ANSI SQL
-compliant, but with each release it gets closer.
-
-PostgreSQL, formerly called Postgres95, is a derivative of Postgres 4.2
-(the last release of the UC Berkeley research project). For copyright
-terms for PostgreSQL, please see the file named COPYRIGHT. This version
-was developed by a team of developers on the Postgres developers mailing
-list. Version 1 (through 1.01) was developed by Jolly Chen and Andrew Yu.
-
-The installation notes below assume the following (except where noted):
- - Commands are Unix-compatible. See note below.
- - Defaults are used except where noted.
- - User postgres is the Postgres superuser.
- - The source path is /usr/src/pgsql (other paths are possible).
- - The runtime path is /usr/local/pgsql (other paths are possible).
-
-Commands were tested on RedHat Linux version 4.0 using the bash shell.
-Except where noted, they will probably work on most systems. Commands
-like ps and tar vary wildly on what options you should use on each
-platform. USE COMMON SENSE before typing in these commands.
-
-Our Makefiles require GNU make (called gmake in this document) and
-also assume that "install" accepts BSD options. The INSTALL
-variable in the Makefiles is set to the BSD-compatible version of
-install. On some systems, you will have to find a BSD-compatible
-install command (eg. bsdinst, which comes with the MIT X Window System
-distribution)
-
-
-REQUIREMENTS TO RUN POSTGRESQL
-------------------------------
-
-PostgreSQL has been tested on the following platforms:
-
- aix IBM on AIX 3.2.5 or 4.x
- alpha DEC Alpha AXP on Digital Unix 2.0, 3.2, 4.0
- BSD44_derived OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)
- bsdi BSD/OS 2.0, 2.01, 2.1, 3.0
- dgux DG/UX 5.4R4.11
- hpux HP PA-RISC on HP-UX 9.0, 10
- i386_solaris i386 Solaris
- irix5 SGI MIPS on IRIX 5.3
- linux Intel x86 on Linux 2.0 and Linux ELF
- SPARC on Linux ELF
- PPC on Linux ELF
- (For non-ELF Linux, see LINUX_ELF below).
- sco SCO 3.2v5
- sparc_solaris SUN SPARC on Solaris 2.4, 2.5, 2.5.1
- sunos4 SUN SPARC on SunOS 4.1.3
- svr4 Intel x86 on Intel SVR4 and MIPS
- ultrix4 DEC MIPS on Ultrix 4.4
-
-PostgreSQL has known problems/bugs on the following platforms:
-
- nextstep Motorola MC68K or Intel x86 on NeXTSTEP 3.2
-
-PostgreSQL is also known to work on a number of other platforms that the
-authors have not personally tested.
-
-You should have at least 8 MB of memory and at least 45 MB of disk space
-to hold the source, binaries, and user databases. After installation
-you may reduce this to about 3 Mbytes plus space for user databases.
-
-To those upgrading from PostgreSQL 6.3.*:
-----------------------------------------
-
-A dump/restore is required for those running 6.3.*, or you can use the
-new pg_upgrade command to upgrade your data files without
-dumping/loading them. See the new pg_upgrade manual page.
-
-To those doing a fresh install or upgrading from previous releases of
-PostgreSQL:
-----------------------------------------------
-
- 1) Read any last minute information and platform specific porting
- notes. There are some platform specific notes at the end of this
- file for Ultrix4.x, Linux, BSD/OS and NeXT. There are other
- files in directory /usr/src/pgsql/doc, including files FAQ-Irix
- and FAQ-Linux. Also look in directory ftp://ftp.postgresql.org/pub.
- If there is a file called INSTALL in this directory then this
- file will contain the latest installation information.
-
- Please note that a "tested" platform in the list given earlier
- simply means that someone went to the effort at some point of making
- sure that a PostgreSQL distribution would compile and run on this
- platform without modifying the code. Since the current developers
- will not have access to all of these platforms, some of them may not
- compile cleanly and pass the regression tests in the current
- release due to minor problems. Any such known problems and their
- solutions will be posted in ftp://ftp.postgresql.org/pub/INSTALL.
-
- 2) Create account postgres if it does not already exist.
-
- 3) Log into account postgres.
-
- 3a) Check that you have sufficient disk space. You will need about
- 17 Mbytes for /usr/src/pgsql, about 2 Mbytes for /usr/local/pgsql
- (excluding your database) and 1 Mbyte for an empty database.
- For the regression tests, you will need an extra 20 Mbytes.
- You will also need about 3 Mbytes for the distribution tar file.
-
- We therefore recommend that during installation and testing you
- have well over 20 Mbytes free under /usr/local and another 5 MB
- free on the disk partition containing your database. Once you
- delete the source files, tar file and regression database, you
- will need 2 Mbytes for /usr/local/pgsql, 1 Mbyte for the empty
- database, plus about five times the space you would require to
- store your database data in a flat file.
-
- To check for disk space, use command "df -k".
-
- 4) Ftp file ftp://ftp.postgresql.org/pub/postgresql-6.4.tar.gz from the
- Internet. Store it in your home directory.
-
- 5) Some platforms use flex. If your system uses flex then make sure
- you have a good version. Type
- flex --version
-
- If the flex command is not found then you probably do not need it.
- If the version is 2.5.2 or 2.5.4 or greater then you are okay. If it
- is 2.5.3 or before 2.5.2 then you will have to upgrade flex. You may
- get it at 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 wrong version, then
- you will be told so when you attempt to compile the program. Feel
- free to skip this step if you aren't sure you need it. If you do
- need it then you will be told to install/upgrade flex when you try to
- compile.
-
- To install it, type the following:
- cd
- gunzip -c flex-2.5.4.tar.gz | tar xvf -
- cd flex-2.5.4
- configure --prefix=/usr
- make
- make check
- # You must be root when typing the next line.
- make install
- cd
- rm -rf flex-2.5.4
-
- This will update files /usr/man/man1/flex.1, /usr/bin/flex,
- /usr/lib/libfl.a, /usr/include/FlexLexer.h and will add link
- /usr/bin/flex++ which points to flex.
-
- 6) If you are upgrading an existing system then back up your database.
- For alpha- and beta-level releases, the database format is liable
- to change often every few weeks with no notice besides a quick comment
- in the HACKERS mailing list. Full releases always require a dump/reload
- from previous releases. It is therefore a bad idea to skip this
- step. Type (with the gunzip line and the following line typed as one
- line):
- cd
- gunzip -c postgresql-6.4.tar.gz |
- tar xvf - src/bin/pg_dump/pg_dumpall
- chmod a+x src/bin/pg_dump/pg_dumpall
- src/bin/pg_dump/pg_dumpall > db.out
- rm -rf src
- If you wish to preserve object id's (oids), then use the -o
- option when running pg_dumpall. However, unless you have a
- special reason for doing this, don't do it.
-
- If the pg_dumpall command seems to take a long time and you think
- it might have died, then, from another terminal, use "ls -l db.out"
- several times to see if the size of the file is growing.
-
- Please note that if you are upgrading from a version prior to
- Postgres95 v1.09 then you must back up your database, install
- Postgres95 v1.09, restore your database, then back it up again.
-
- You should also read the appropriate files pgsql/migration/*.
-
- You must make sure that your database is not updated in the middle of
- your backup. If necessary, bring down postmaster, edit the permissions
- in file /usr/local/pgsql/data/pg_hba.conf to allow only you on, then
- bring postmaster back up.
-
- 7) If you are upgrading an existing system then kill the postmaster. Type
- ps -ax | grep postmaster
- This should list the process numbers for a number of processes. Type
- the following line, with "???" replaced by the process id for process
- "postmaster". (Do not use the id for process "grep postmaster".) Type
- kill ???
- with "???" modified as indicated.
-
- 8) If you are upgrading an existing system then move the old directories
- out of the way. If you are short of disk space then you may have to
- back up and delete the directories instead. If you do this, save the
- old database in the /usr/local/pgsql/data directory tree. At a
- minimum, save file /usr/local/pgsql/data/pg_hba.conf.
-
- Type the following:
- su
- cd /usr/src
- mv pgsql pgsql_6_0
- cd /usr/local
- mv pgsql pgsql_6_0
- exit
-
- If you are not using /usr/local/pgsql/data as your data directory
- (check to see if environment variable PGDATA is set to something
- else) then you will also want to move this directory in the same
- manner.
-
- 9) Make new source and install directories. The actual paths can be
- different for your installation; be consistant with your configuration
- in step (11).
- Type
- su
- cd /usr/src
- mkdir pgsql
- chown postgres:postgres pgsql
- cd /usr/local
- mkdir pgsql
- chown postgres:postgres pgsql
- exit
-
- 10) Unzip and untar the new source file. Type
- cd /usr/src/pgsql
- gunzip -c ~/postgresql-6.4.tar.gz | tar xvf -
-
- 11) Configure the source code for your system. It is this step at which
- you can specify your actual source path and installation paths for
- the build process (see the --prefix option below). Type
- cd /usr/src/pgsql/src
- ./configure
-
- The configure program will list the template files available and
- ask you to choose one. A lot of times, an appropriate template
- file is chosen for you, and you can just press Enter to accept the
- default. If the default is not appropriate, then type in the
- appropriate template file and press Enter. (If you do this, then
- send email to scrappy@hub.org stating the output of the program
- './config.guess' and what the template file should be.)
-
- Once you have entered the template file, you will be asked a
- number of questions about your particular configuration. These
- can be skipped by adding parameters to the configure command above.
- The following parameters can be tagged onto the end of the configure
- command:
-
- --prefix=BASEDIR Selects a different base directory for the
- installation of the PostgreSQL configuration.
- The default is /usr/local/pgsql.
-
- --enable-hba Enables Host Based Authentication (DEFAULT)
-
- --enable-locale Enables USE_LOCALE
-
- --enable-cassert Enables ASSERT_CHECKING
-
- --with-template=TEMPLATE
- Use template file TEMPLATE - the template
- files are assumed to be in the directory
- src/template, so look there for proper values.
- (If the configure script cannot find the
- specified template file, it will ask you for
- one).
-
- --with-pgport=PORT Sets the port that the postmaster process
- listens for incoming connections on. The
- default for this is port 5432.
-
- --with-tcl Enables programs requiring Tcl/Tk and X11,
- including pgtclsh and libpgtcl.
-
- --with-perl Enables the perl interface.
-
- --with-includes=DIRS
- Include DIRS in list of directories searched
- for header files. (Typical use will need
- --with-includes=/usr/local/include)
-
- --with-libs=DIRS
- --with-libraries=DIRS
- Include DIRS in list of directories searched
- for archive libraries. (Typical use will need
- --with-libraries=/usr/local/lib)
-
- --with-CC=compiler
- Use a specific C compiler that the configure
- script cannot find.
-
- --with-CXX=compiler
- --without-CXX
- Use a specific C++ compiler that the configure
- script cannot find, or exclude C++ compilation
- altogether.
-
- As an example, here is the configure script I use on a Sparc
- Solaris 2.5 system with /opt/postgres being the install base.
-
- % ./configure --prefix=/opt/postgres
- --with-template=sparc_solaris-gcc --with-pgport=5432
- --enable-hba
-
- Of course, in a real shell, you would type these three lines all
- on the same line.
-
- 12) Compile the program. Type
- cd /usr/src/pgsql/src
- gmake all >& make.log &
- tail -f make.log
-
- The last line displayed will hopefully be "All of PostgreSQL is
- successfully made. Ready to install." At this point, or earlier
- if you wish, type control-C to get out of tail. (If you have
- problems later on you may wish to examine file make.log for
- warning and error messages.)
-
- If your computer does not have gmake (GNU make) then try running
- make instead throughout the rest of these notes.
-
- Please note that you will probably find a number of warning
- messages in make.log. Unless you have problems later on, these
- messages may be safely ignored.
-
- If the compiler fails with an error stating that the flex command
- cannot be found then install flex as described earlier. Next,
- change directory back to this directory, type "make clean", then
- recompile again.
-
- 13) Install the program. Type
- cd /usr/src/pgsql/src
- gmake install >& make.install.log &
- tail -f make.install.log
-
- The last line displayed will be "gmake[1]: Leaving directory
- `/usr/src/pgsql/src/man'". At this point, or earlier if you wish,
- type control-C to get out of tail.
-
- 14) If necessary, tell UNIX how to find your shared libraries. You can
- do ONE of the following, preferably the first:
-
- a) As root, edit file /etc/ld.so.conf. Add line
- /usr/local/pgsql/lib
- to the file. Then run command /sbin/ldconfig.
-
- b) In a bash shell, type
- export LD_LIBRARY_PATH=/usr/local/pgsql/lib
-
- c) In a csh shell, type
- setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
-
- Please note that the above commands may vary wildly for different
- operating systems. Check the platform specific notes, such as
- those for Ultrix4.x or and for non-ELF Linux.
-
- If, when you create the database, you get the message "pg_id: can't
- load library 'libpq.so'" then the above step was necessary. Simply
- do this step, then try to create the database again.
-
- 15) If it has not already been done, then prepare account postgres
- for using PostgreSQL. Any account that will use PostgreSQL must
- be similarily prepared. (The following instructions are for a
- bash shell. Adapt accordingly for other shells.)
-
- Add the following lines to your login shell, ~/.bash_profile:
- PATH=$PATH:/usr/local/pgsql/bin
- MANPATH=$MANPATH:/usr/local/pgsql/man
- PGLIB=/usr/local/pgsql/lib
- PGDATA=/usr/local/pgsql/data
- export PATH MANPATH PGLIB PGDATA
-
- Make sure that you have defined these variables before continuing
- with the remaining steps. The easiest way to do this is to type:
- source ~/.bash_profile
-
- 16) Create the database. DO NOT DO THE FOLLOWING AS ROOT! This would
- be a major security hole. Type
- initdb
-
- 17) Set up permissions to access the database system. Do this by editing
- file /usr/local/pgsql/data/pg_hba.conf. The instructions are
- included in the file. (If your database is not located in the
- default location, i.e. if PGDATA is set to point elsewhere, then the
- location of this file will change accordingly.) This file should be
- made read only again once you are finsihed.
-
- If you are upgrading, you can NOT copy file pg_hba.conf from your
- old database on top of the one in your new database. You will
- have to re-do your changes.
-
-
- 18) If you wish to skip the regression tests then skip to step 21.
-
- The file /usr/src/pgsql/src/test/regress/README has detailed
- instructions for running and interpreting the regression tests.
- A short version follows here:
-
- Start the postmaster in preparation for the regression tests. First,
- set the timezone for Berkeley, California. On some systems you may do
- this by setting environment variable TZ. I.e., using bash, type
- export TZ=PST8PDT
-
- Now start the postmaster daemon running in the background by typing
- cd
- nohup postmaster > regress.log 2>&1 &
-
- Run postmaster from your Postgres super user account (typically
- account postgres). DO NOT RUN POSTMASTER FROM THE ROOT ACCOUNT.
-
- 19) Run the regression tests. Type
-
- cd /usr/src/pgsql/src/test/regress
- gmake clean
- gmake all runtest
-
- You do not need to type "gmake clean" if this is the first time you
- are running the tests.
-
- You should get on the screen (and also written to file ./regress.out)
- a series of statements stating which tests passed and which tests
- failed. Please note that it can be normal for some of the tests to
- "fail". For the failed tests, use diff to compare the files in
- directories ./results and ./expected. If float8 failed, type
- something like:
- cd /usr/src/pgsql/src/test/regress
- diff -w expected/float8.out results
-
- "Failed" tests may have failed due to slightly different error messages,
- output formatting, failure to set the timezone correctly for your
- platform, etc. "Failures" of this type do not indicate a problem with
- PostgreSQL.
-
- For a i686/Linux-ELF platform, no tests failed since this is the
- v6.4 regression testing reference platform.
-
- For the SPARC/Linux-ELF platform, using the 970525 beta version of
- PostgreSQL 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.
-
- Conclusion? If you do see failures, try to understand the nature of
- the differences and then decide if those differences will affect your
- intended use of PostgreSQL. However, keep in mind that this is likely
- to be the most solid release of PostgreSQL to date, incorporating many
- bug fixes from v6.2.1, and that previous versions of PostgreSQL have been
- in use successfully for some time now.
-
- After running the tests, type
- destroydb regression
- cd /usr/src/pgsql/src/test/regress
- gmake clean
-
- 20) Stop the postmaster as described in step 7. Then restore the
- timezone to it's normal setting. If you changed the timezone by
- modifying environment variable TZ then one way to do this is to
- log out of, then back into, account postgres.
-
- 21) Start the postmaster daemon running. Type
- cd
- nohup postmaster > server.log 2>&1 &
- Run postmaster from your Postgres super user account (typically
- account postgres). DO NOT RUN POSTMASTER FROM THE ROOT ACCOUNT.
-
- 22) If you haven't already done so, this would be a good time to modify
- your computer so that it will automatically start postmaster whenever
- you boot your computer.
-
- Here are some suggestions on how to do this, contributed by various
- users.
-
- Whatever you do, postmaster must be run by user postgres AND NOT BY
- ROOT. This is why all of the examples below start by switching user
- (su) to postgres. These commands also take into account the fact
- that environment variables like PATH and PGDATA may not be set properly.
-
- The examples are as follows. Use them with extreme caution.
-
- a) Edit file rc.local on NetBSD or file rc2.d on SPARC Solaris
- 2.5.1 to contain the following single line:
- su postgres -c "/usr/local/pgsql/bin/postmaster -S -D
- /usr/local/pgsql/data"
-
- b) In FreeBSD 2.2-RELEASE edit /usr/local/etc/rc.d/pgsql.sh to
- contain the following lines and make it chmod 755 and chown
- root:bin.
- #!/bin/sh
- [ -x /usr/local/pgsql/bin/postmaster ] && {
- su -l postgres -c 'exec /usr/local/pgsql/bin/postmaster
- -D/usr/local/pgsql/data
- -S -o -F > /usr/local/pgsql/errlog' &
- echo -n ' pgsql'
- }
- You may put the line breaks as shown above. The shell is smart
- enough to keep parsing beyond end-of-line if there is an
- expression unfinished. The exec saves one layer of shell under
- the postmaster process so the parent is init. Note: Unlike most
- other examples, this one has been tested.
-
- c) In RedHat v4.0 Linux edit file /etc/inittab to contain the
- following single line:
- pg:2345:respawn:/bin/su - postgres -c
- "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data
- >> /usr/local/pgsql/server.log 2>&1" >/dev/null
- (The author of this example says this example will revive the
- postmaster if it dies, but he doesn't know if there are other side
- effects.)
-
- d) The contrib/linux area of the PostgreSQL distribution has an example
- init.d script compatible with and tested using recent RedHat packages.
-
- 22a) If you haven't already done so, this would be a good time to modify
- your computer to do regular maintainence. The following should be
- done at regular intervals:
-
- a) Run the SQL command vacuum. This will clean up your database.
- b) Back up your system. (You should probably keep the last few
- backups on hand.) Ideally, no one else should be using the
- system at the time.
-
- Ideally, the above tasks should be done by a shell script that is
- run nightly or weekly by cron. Look at the man page for crontab
- for a starting point on how to do this. (If you do it, please
- e-mail us a copy of your shell script. We would like to set up
- our own systems to do this too.)
-
- 23) If you are upgrading an existing system then reload your old database.
- Type
- cd
- psql -e template1 < db.out
-
- If your pre-v6.2 database uses either path or polygon geometric data types,
- then you will need to upgrade any columns containing those types. To
- do so, type (from within psql)
- update YourTable set PathCol = UpgradePath(PathCol);
- update YourTable set PolyCol = UpgradePoly(PolyCol);
- ...
- vacuum;
-
- UpgradePath() checks to see that a path value is consistant with the
- old syntax, and will not update a column which fails that examination.
- UpgradePoly() cannot verify that a polygon is in fact from an old
- syntax, but RevertPoly() is provided to reverse the effects of a
- mis-applied upgrade.
-
- 24) If you are a new user, you may wish to play with Postgres as described
- below.
-
- 25) Clean up after yourself. Type
- rm -rf /usr/src/pgsql_6_0
- rm -rf /usr/local/pgsql_6_0
- # Also delete old database directory tree if it is not in
- # /usr/local/pgsql_6_0/data
- rm ~/postgresql-6.4.tar.gz
-
- 26) You will probably want to print out the documentation. Here is how
- you might do it if you have Ghostscript on your system and are
- writing to a laserjet printer.
- alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
- export GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
- # Print out the man pages.
- man -a -t /usr/local/pgsql/man/*/* > manpage.ps
- gshp -sOUTPUTFILE=manpage.hp manpage.ps
- rm manpage.ps
- lpr -l -s -r manpage.hp
- # Print out the Postgres95 User Manual, version 1.0,
- # Sept. 5, 1996.
- cd /usr/src/pgsql/doc
- gshp -sOUTPUTFILE=userguide.hp userguide.ps
- lpr -l -s -r userguide.hp
-
- If you are a developer, you will probably want to also print out
- the Postgres Implemention Guide, version 1.0, October 1, 1995.
- This is a WWW document located at
- http://www.postgresql.org/docs/impguide.
-
- 27) The Postgres team wants to keep PostgreSQL working on all of the
- supported platforms. We therefore ask you to let us know if you did
- or did not get PostgreSQL to work on you system. Please send a
- mail message to pgsql-ports@postgresql.org telling us the following:
- - The version of PostgreSQL (6.4, 6.3.2, beta 970703, etc.).
- - Your operating system (i.e. RedHat v4.0 Linux v2.0.26).
- - Your hardware (SPARC, i486, etc.).
- - Did you compile, install and run the regression tests cleanly?
- If not, what source code did you change (i.e. patches you
- applied, changes you made, etc.), what tests failed, etc.
- It is normal to get many warning when you compile. You do
- not need to report these.
-
- 28) Now create, access and manipulate databases as desired. Write client
- programs to access the database server. In other words, ENJOY!
-
-
-PLAYING WITH POSTGRESQL
------------------------
-
-After PostgreSQL is installed, a database system is created, a postmaster
-daemon is running, and the regression tests have passed, you'll want to
-see PostgreSQL do something. That's easy. Invoke the interactive interface
-to PostgreSQL, psql, and start typing SQL:
-
- $ psql template1
-
-(psql has to open a particular database, but at this point the only one
-that exists is the template1 database, which always exists. We will connect
-to it only long enough to create another one and switch to it).
-
-The response from psql is:
-
- type \? for help on slash commands
- type \q to quit
- type \g or terminate with semicolon to execute query
-You are currently connected to the database: template1
-
-template1=>
-
-Create the database foo:
-
-template1=> CREATE DATABASE FOO;
-INSERT 773248
-
-(Get in the habit of including those SQL semicolons. Psql won't execute
-anything until it sees the semicolon or a "\g" and the semicolon is required
-to delimit multiple statements.)
-
-template1=> \c foo
-closing connection to database: template1
-connecting to new database: foo
-
-(\ commands aren't SQL, so no semicolon. Use \? to see all the \ commands.)
-
-foo=> CREATE TABLE bar (column1 int4, column2 char16);
-CREATE
-
-foo=> \d bar
-
-...
-
-You get the idea.
-
-
-QUESTIONS? BUGS? FEEDBACK?
-----------------------------
-
-First, read the files in directory /usr/src/pgsql/doc. The FAQ in
-this directory may be particularly useful.
-
-If PostgreSQL failed to compile on your computer then fill out the form
-in file /usr/src/pgsql/doc/bug.template and mail it to the location
-indicated at the top of the form.
-
-Mail questions to pgsql-questions@postgresql.org. For more information
-on the various mailing lists, see http://www.postgresql.org under mailing
-lists.
-
-
-----------------------------------------------------------------------
-
-Porting Notes (these notes may be out of date):
--------------
-
-Ultrix4.x:
- 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:
- A linux-2.0.30/libc-5.3.12/RedHat-4.2 running on a dual processor
- i686 is the regression testing reference machine.
- The linux-elf port installs cleanly. If you are using an
- i486 processor or higher, you can edit template/linux-elf
- to include "-m486" as a compiler option. configure does not
- detect that sigsetjmp() is available, but you can edit
- include/config.h after running configure and before running
- make to include "#define HAVE_SIGSETJMP 1". Note that I have
- not seen any difference in PostgreSQL behavior either way.
- (Thomas G. Lockhart
- <lockhart@alumni.caltech.edu> 97/10/14)
- 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
- <sneaker@powergrid.electriciti.com> 5/11/95)
-
-BSD/OS:
- For BSD/OS 2.0 and 2.01, you will need to get the GNU dld library.
-
-NeXT:
- The NeXT port was supplied by Tom R. Hageman <tom@basil.icce.rug.nl>.
- 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 PostgreSQL for NEXTSTEP will be made available to
- the general public. Contact Info@RnA.nl for information.
+PostgreSQL Installation Guide
+by The PostgreSQL Development Team
+
+Edited by Thomas Lockhart
+
+PostgreSQL is copyright (C) 1998
+by the Postgres Global Development Group.
+
+Table of Contents
+
+ Summary
+ 1. Introduction
+ 2. Ports
+ Currently Supported Platforms
+ Unsupported Platforms
+ 3. Installation
+ Requirements to Run Postgres
+ Installation Procedure
+ Playing with Postgres
+ The Next Step
+ Porting Notes
+ Ultrix4.x
+ Linux
+ Linux ELF
+ Linux a.out
+ BSD/OS
+ NeXT
+ 4. Configuration Options
+ Parameters for Configuration (configure)
+ Parameters for Building (make)
+ Locale Support
+ What are the Benefits?
+ What are the Drawbacks?
+ Kerberos Authentication
+ Availability
+ Installation
+ Operation
+ 5. Release Notes
+ Release 6.4
+ Migration to v6.4
+ Detailed Change List
+
+List of Tables
+
+ 2-1. Supported Platforms
+ 2-2. Possibly Incompatible Platforms
+ 4-1. Kerberos Parameter Examples
+
+Summary
+
+ Postgres, developed originally in the UC Berkeley
+ Computer Science Department, pioneered many of the
+ object-relational concepts now becoming available in
+ some commercial databases. It provides SQL92/SQL3
+ language support, transaction integrity, and type
+ extensibility. PostgreSQL is a public-domain, open
+ source descendant of this original Berkeley code.
+
+Chapter 1. Introduction
+
+ This installation procedure makes some assumptions
+ about the desired configuration and runtime
+ environment for your system. This may be adequate for
+ many installations, and is almost certainly adequate
+ for a first installation. But you may want to do an
+ initial installation up to the point of unpacking the
+ source tree and installing documentation, and then
+ print or browse the Administrator's Guide.
+
+Chapter 2. Ports
+
+ This manual describes version 6.4 of Postgres. The
+ Postgres developer community has compiled and tested
+ Postgres on a number of platforms. Check the web site
+ for the latest information.
+
+Currently Supported Platforms
+
+ At the time of publication, the following platforms
+ have been tested:
+
+ Table 2-1. Supported Platforms
+ OS Processor Version Reported Remarks
+ AIX 4.2.1 RS6000 v6.4 1998-10-27 (Andreas Zeugswetter)
+ BSDI x86 v6.4 1998-10-25 (Bruce Momjian
+ FreeBSD x86 v6.4 1998-10-26 (Tatsuo Ishii, Marc
+ 2.2.x-3.x Fournier)
+ DGUX 5.4R4.11 m88k v6.3 1998-03-01 v6.4 probably OK. Needs
+ new maintainer. (Brian E
+ Gallew)
+ Digital Unix Alpha v6.4 1998-10-29 Minor patchable problems
+ 4.0 (Pedro J. Lobo)
+ HPUX PA-RISC v6.4 1998-10-25 Both 9.0x and 10.20
+ (Tom Lane, Stan Brown)
+ IRIX 6.x MIPS v6.3 1998-03-01 5.x is different (Andrew
+ Martin)
+ linux 2.0.x Alpha v6.3.2 1998-04-16 Mostly successful. Needs
+ work for v6.4. (Ryan
+ Kirkpatrick)
+ linux 2.0.x x86 v6.4 1998-10-27 (Thomas Lockhart)
+ linux x86 v6.4 1998-10-25 (Oliver Elphick, Taral)
+ 2.0.x/glibc2
+ linux 2.0.x Sparc v6.4 1998-10-25 (Tom Szybist)
+ linuxPPC PPC603e v6.4 1998-10-26 Powerbook 2400c (Tatsuo
+ 2.1.24 Ishii)
+ mklinux DR3 PPC750 v6.4 1998-09-16 PowerMac 7600 (Tatsuo
+ Ishii)
+ NetBSD/i386 x86 v6.4 1998-10-25 (Brook Milligan)
+ 1.3.2
+ NetBSD- NS32532 v6.4 1998-10-27 (small problems in
+ current date/time math
+ (Jon Buller)
+ NetBSD/sparc Sparc v6.4 1998-10-27 (Tom I Helbekkmo)
+ 1.3H
+ NetBSD 1.3 VAX v6.3 1998-03-01 (Tom I Helbekkmo)
+ SCO UnixWare x86 v6.3 1998-03-01 aka UNIVEL (Billy G.
+ 2.x Allie)
+ SCO UnixWare x86 v6.4 1998-10-04 (Billy G. Allie)
+ 7
+ Solaris x86 v6.4 1998-10-28 (Marc Fournier)
+ Solaris Sparc v6.4 1998-10-28 (Tom Szybist, Frank
+ 2.6-2.7 Ridderbusch)
+ SunOS 4.1.4 Sparc v6.3 1998-03-01 patches submitted (Tatsuo
+ Ishii)
+ SVR4 MIPS v6.4 1998-10-28 no 64-bit int support
+ (Frank Ridderbusch)
+ SVR4 4.4 m88k v6.2.1 1998-03-01 confirmed with patching
+ (Doug Winterburn)
+ Windows NT x86 v6.4 1998-10-08 Mostly working with the
+ Cygwin library. No DLLs
+ yet. (Horak Daniel)
+
+
+ Platforms listed for v6.3.x should also work with
+ v6.4, but we did not receive confirmation of such at
+ the time this list was compiled.
+
+ Note: For Windows NT, the server-side port of
+ Postgres has recently been accomplished. Check the
+ Askesis Postgres Home Page for up to date
+ information. You may also want to look for
+ possible patches on the Postgres web site.
+
+Unsupported Platforms
+
+ There are a few platforms which have been attempted
+ and which have been reported to not work with the
+ standard distribution. Others listed here do not
+ provide sufficient library support for an attempt.
+
+ Table 2-2. Possibly Incompatible Platforms
+ OS Processor Version Reported Remarks
+ MacOS all v6.3 1998-03-01 not library compatible;
+ use ODBC/JDBC
+ NetBSD arm32 v6.3 1998-03-01 not yet working (Dave
+ Millen)
+ NetBSD m68k v6.3 1998-03-01 Amiga, HP300, Mac; not
+ yet working (Henry Hotz)
+ NextStep x86 v6.x 1998-03-01 client-only support;
+ v1.0.9 worked with
+ patches (David Wetzel)
+ 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
+
+ Complete installation instructions for Postgres v6.4.
+ Before installing Postgres, you may wish to visit
+ www.postgresql.org for up to date information,
+ patches, etc.
+ These installation instructions assume:
+ o Commands are Unix-compatible. See note below.
+ o Defaults are used except where noted.
+ o User postgres is the Postgres superuser.
+ 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 4.2
+ using the tcsh shell. Except where noted, they will
+ probably work on most systems. Commands like ps and
+ tar may vary wildly between platforms on what options
+ you should use. Use common sense before typing in
+ these commands.
+ Our Makefiles require GNU make (called ?gmake? in this
+ document). They will not work with non-GNU make
+ programs. If you have GNU make installed under the
+ name ?make? instead of ?gmake?, then you will use the
+ command make instead. That's OK, but you need to have
+ the GNU form of make to succeed with an installation.
+
+Requirements to Run Postgres
+
+ Up to date information on supported platforms is at
+ http://www.postgresql.org/docs/admin/install.htm. In
+ general, most Unix-compatible platforms with modern
+ libraries should be able to run Postgres.
+ Although the minimum required memory for running
+ Postgres is as little as 8MB, there are noticable
+ improvements in runtimes for the regression tests
+ when expanding memory up to 96MB on a relatively fast
+ dual-processor system running X-Windows. The rule is
+ you can never have too much memory.
+ Check that you have sufficient disk space. You will
+ need about 30 Mbytes for /usr/src/pgsql, about 5
+ Mbytes for /usr/local/pgsql (excluding your database)
+ and 1 Mbyte for an empty database. The database will
+ temporarily grow to about 20 Mbytes during the
+ regression tests. You will also need about 3 Mbytes
+ for the distribution tar file.
+ We therefore recommend that during installation and
+ testing you have well over 20 Mbytes free under
+ /usr/local and another 25 Mbytes free on the disk
+ partition containing your database. Once you delete
+ the source files, tar file and regression database,
+ you will need 2 Mbytes for /usr/local/pgsql, 1 Mbyte
+ for the empty database, plus about five times the
+ space you would require to store your database data
+ in a flat file.
+ To check for disk space, use
+
+ $ df -k
+
+Installation Procedure
+
+ Procedure 3.1. Postgres Installation
+
+ For a fresh install or upgrading from previous
+ releases of Postgres:
+
+ 1. Read any last minute information and platform
+ specific porting notes. There are some platform
+ specific notes at the end of this file for
+ Ultrix4.x, Linux, BSD/OS and NeXT. There are other
+ files in directory /usr/src/pgsql/doc, including
+ files FAQ-Irix and FAQ-Linux. Also look in
+ directory ftp://ftp.postgresql.org/pub. If there
+ is a file called INSTALL in this directory then
+ this file will contain the latest installation
+ information.
+ Please note that a "tested" platform in the list
+ given earlier simply means that someone went to
+ the effort at some point of making sure that a
+ Postgres distribution would compile and run on
+ this platform without modifying the code. Since
+ the current developers will not have access to all
+ of these platforms, some of them may not compile
+ cleanly and pass the regression tests in the
+ current release due to minor problems. Any such
+ known problems and their solutions will be posted
+ in ftp://ftp.postgresql.org/pub/INSTALL.
+
+ 2. Create the Postgres superuser account (postgres is
+ commonly used) if it does not already exist.
+ The owner of the Postgres files can be any
+ unprivileged user account. It must not be root,
+ bin, or any other account with special access
+ rights, as that would create a security risk.
+
+ 3. Log in to the Postgres superuser account. Most of
+ the remaining steps in the installation will
+ happen in this account.
+
+ 4. Ftp file
+ ftp://ftp.postgresql.org/pub/postgresql-v6.4.tar.gz
+ from the Internet. Store it in your home directory.
+
+ 5. Some platforms use flex. If your system uses flex
+ then make sure you have a good version. To check,
+ type
+ $ flex --version
+
+ If the flex command is not found then you probably
+ do not need it. If the version is 2.5.2 or 2.5.4
+ or greater then you are okay. If it is 2.5.3 or
+ before 2.5.2 then you will have to upgrade flex.
+ You may get it at
+ 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
+ wrong version, then you will be told so when you
+ attempt to compile the program. Feel free to skip
+ this step if you aren't sure you need it. If you
+ do need it then you will be told to
+ install/upgrade flex when you try to compile
+ Postgres.
+ You may want to do the entire flex installation
+ from the root account, though that is not
+ absolutely necessary. Assuming that you want the
+ installation to place files in the usual default
+ areas, type the following:
+ $ su -
+ $ cd /usr/local/src
+ ftp prep.ai.mit.edu
+ ftp> cd /pub/gnu/
+ ftp> binary
+ ftp> get flex-2.5.4.tar.gz
+ ftp> quit
+ $ gunzip -c flex-2.5.4.tar.gz | tar xvf -
+ $ cd flex-2.5.4
+ $ configure --prefix=/usr
+ $ gmake
+ $ gmake check
+ # You must be root when typing the next line:
+ $ gmake install
+ $ cd /usr/local/src
+ $ rm -rf flex-2.5.4
+ This will update files /usr/man/man1/flex.1,
+ /usr/bin/flex, /usr/lib/libfl.a,
+ /usr/include/FlexLexer.h and will add a link
+ /usr/bin/flex++ which points to flex.
+
+ 6. If you are not upgrading an existing system then
+ skip to step 9. If you are upgrading an existing
+ system then back up your database. For alpha- and
+ beta-level releases, the database format is liable
+ to change, often every few weeks, with no notice
+ besides a quick comment in the HACKERS mailing
+ list. Full releases always require a dump/reload
+ from previous releases. It is therefore a bad idea
+ to skip this step.
+
+ Tip: Do not use the pg_dumpall script from v6.0 or
+ everything will be owned by the Postgres super
+ user.
+
+ To dump your fairly recent post-v6.0 database
+ installation, type
+ $ pg_dumpall -z > db.out
+ To use the latest pg_dumpall script on your
+ existing older database before upgrading Postgres,
+ pull the most recent version of pg_dumpall from
+ the new distribution:
+ $ cd
+ $ gunzip -c postgresql-v6.4.tar.gz \
+ | tar xvf - src/bin/pg_dump/pg_dumpall
+ $ chmod a+x src/bin/pg_dump/pg_dumpall
+ $ src/bin/pg_dump/pg_dumpall -z > db.out
+ $ rm -rf src
+ If you wish to preserve object id's (oids), then
+ use the -o option when running pg_dumpall.
+ However, unless you have a special reason for
+ doing this (such as using OIDs as keys in tables),
+ don't do it.
+ If the pg_dumpall command seems to take a long
+ time and you think it might have died, then, from
+ another terminal, type
+ $ ls -l db.out
+ several times to see if the size of the file is
+ growing.
+ Please note that if you are upgrading from a
+ version prior to Postgres95 v1.09 then you must
+ back up your database, install Postgres95 v1.09,
+ restore your database, then back it up again. You
+ should also read the release notes which should
+ cover any release-specific issues.
+
+ Caution
+ You must make sure that your database is not
+ updated in the middle of your backup. If
+ necessary, bring down postmaster, edit the
+ permissions in file
+ /usr/local/pgsql/data/pg_hba.conf to allow
+ only you on, then bring postmaster back up.
+
+
+
+ 7. If you are upgrading an existing system then kill
+ the postmaster. Type
+ $ ps -ax | grep postmaster
+ This should list the process numbers for a number
+ of processes. Type the following line, with pid
+ replaced by the process id for process postmaster.
+ (Do not use the id for process "grep postmaster".)
+
+ Type
+ $ kill pid
+ to actually stop the process.
+
+ Tip: On systems which have Postgres started at
+ boot time, there is probably a startup file
+ which will accomplish the same thing. For
+ example, on my Linux system I can type
+ $ /etc/rc.d/init.d/postgres.init stop
+ to halt Postgres.
+
+ 8. If you are upgrading an existing system then move
+ the old directories out of the way. If you are
+ short of disk space then you may have to back up
+ and delete the directories instead. If you do
+ this, save the old database in the
+ /usr/local/pgsql/data directory tree. At a
+ minimum, save file
+ /usr/local/pgsql/data/pg_hba.conf.
+ Type the following:
+ $ su -
+ $ cd /usr/src
+ $ mv pgsql pgsql_6_0
+ $ cd /usr/local
+ $ mv pgsql pgsql_6_0
+ $ exit
+ If you are not using /usr/local/pgsql/data as your
+ data directory (check to see if environment
+ variable PGDATA is set to something else) then you
+ will also want to move this directory in the same
+ manner.
+
+ 9. Make new source and install directories. The
+ actual paths can be different for your
+ installation but you must be consistant throughout
+ this procedure.
+
+ Note: There are two places in this installation
+ procedure where you will have an opportunity to
+ specify installation locations for programs,
+ libraries, documentation, and other files.
+ Usually it is sufficient to specify these at the
+ make install stage of installation.
+
+ Type
+ $ su
+ $ cd /usr/src
+ $ mkdir pgsql
+ $ chown postgres:postgres pgsql
+ $ cd /usr/local
+ $ mkdir pgsql
+ $ chown postgres:postgres pgsql
+ $ exit
+ 10. Unzip and untar the new source file. Type
+ $ cd /usr/src/pgsql
+ $ gunzip -c ~/postgresql-v6.4.tar.gz | tar xvf -
+ 11. Configure the source code for your system. It
+ is this step at which you can specify your actual
+ installation path for the build process (see the
+ --prefix option below). Type
+ $ cd /usr/src/pgsql/src
+ $ ./configure [ options ]
+ a. Among other chores, the configure script
+ selects a system-specific "template" file
+ from the files provided in the template
+ subdirectory. If it cannot guess which one to
+ use for your system, it will say so and exit.
+ In that case you'll need to figure out which
+ one to use and run configure again, this time
+ giving the --with-template=TEMPLATE option to
+ make the right file be chosen.
+
+ Please Report Problems: If your system is not
+ automatically recognized by configure and
+ you have to do this, please send email to
+ scrappy@hub.org with the output of the
+ program ./config.guess. Indicate what the
+ template file should be.
+
+ b. Choose configuration options. Check
+ Configuration Options for details. However,
+ for a plain-vanilla first installation with
+ no extra options like multi-byte character
+ support or locale collation support it may be
+ adequate to have chosen the installation
+ areas and to run configure without extra
+ options specified. The configure script
+ accepts many additional options that you can
+ use if you don't like the default
+ configuration. To see them all, type
+ ./configure --help
+ Some of the more commonly used ones are:
+ --prefix=BASEDIR Selects a different base directory
+ The default is /usr/local/pgsql.
+ --with-template=TEMPLATE
+ Use template file TEMPLATE - the template
+ files are assumed to be in the directory
+ src/template, so look there for proper values.
+ --with-tcl Build interface libraries and programs requiring
+ Tcl/Tk, including libpgtcl, pgtclsh, and pgtksh.
+ --with-perl Build the Perl interface library.
+ --with-odbc Build the ODBC driver package.
+ --enable-hba Enables Host Based Authentication (DEFAULT)
+ --disable-hba Disables Host Based Authentication
+ --enable-locale Enables USE_LOCALE
+ --enable-cassert Enables
+ ASSERT_CHECKING
+ --with-CC=compiler
+ Use a specific C compiler that the configure
+ script cannot find.
+ --with-CXX=compiler
+ --without-CXX
+ Use a specific C++ compiler that the configure
+ script cannot find, or exclude C++ compilation
+ altogether. (This only affects libpq++ at
+ present.)
+ c. Here is the configure script used on a Sparc Solaris 2.5 system with /opt/postgres
+ specified as the installation base directory:
+ $ ./configure --prefix=/opt/postgres \
+ --with-template=sparc_solaris-gcc
+ --with-pgport=5432 \
+ --enable-hba --disable-locale
+
+ Tip: Of course, you may type these three
+ lines all on the same line.
+
+ 12. Install the HTML documentation. Type
+ $ cd /usr/src/pgsql/doc
+ $ gmake install
+ The documentation is also available in Postscript
+ format. Look for files ending with .ps.gz in the
+ same directory.
+
+ 13. Install the man page documentation. Type
+ $ cd /usr/src/pgsql/doc
+ $ gmake man
+
+ 14. Compile the program. Type
+ $ cd /usr/src/pgsql/src
+ $ gmake all >& make.log &
+ $ tail -f make.log
+ The last line displayed will hopefully be
+ All of PostgreSQL is successfully made. Ready to
+ install.
+ At this point, or earlier if you wish, type
+ control-C to get out of tail. (If you have
+ problems later on you may wish to examine file
+ make.log for warning and error messages.)
+
+ Note: You will probably find a number of warning
+ messages in make.log. Unless you have problems
+ later on, these messages may be safely ignored.
+
+ If the compiler fails with a message stating that
+ the flex command cannot be found then install flex
+ as described earlier. Next, change directory back
+ to this directory, type
+ $ make clean
+ then recompile again.
+ Compiler options, such as optimization and
+ debugging, may be specified on the command line
+ using the COPT variable. For example, typing
+ $ gmake COPT="-g" all >& make.log &
+ would invoke your compiler's -g option in all
+ steps of the build. See src/Makefile.global.in for
+ further details.
+
+ 15. Install the program. Type
+ $ cd /usr/src/pgsql/src
+ $ gmake install >& make.install.log &
+ $ tail -f make.install.log
+ The last line displayed will be
+ gmake[1]: Leaving directory
+ `/usr/src/pgsql/src/man'
+ At this point, or earlier if you wish, type
+ control-C to get out of tail.
+
+ 16. If necessary, tell your system how to find
+ the new shared libraries. You can do one of the
+ following, preferably the first:
+ a. As root, edit file /etc/ld.so.conf. Add a
+ line
+ /usr/local/pgsql/lib
+ to the file. Then run command /sbin/ldconfig.
+ b. In a bash shell, type
+ export
+ LD_LIBRARY_PATH=/usr/local/pgsql/lib
+ c. In a csh shell, type
+ setenv LD_LIBRARY_PATH
+ /usr/local/pgsql/lib
+ Please note that the above commands may vary
+ wildly for different operating systems. Check the
+ platform specific notes, such as those for
+ Ultrix4.x or and for non-ELF Linux.
+ If, when you create the database, you get the
+ message
+ pg_id: can't load library 'libpq.so'
+ then the above step was necessary. Simply do this
+ step, then try to create the database again.
+
+ 17. If you used the --with-perl option to
+ configure, check the install log to see whether
+ the Perl module was actually installed. If you've
+ followed our advice to make the Postgres files be
+ owned by an unprivileged userid, then the Perl
+ module won't have been installed, for lack of
+ write privileges on the Perl library directories.
+ You can complete its installation, either now or
+ later, by becoming the user that does own the Perl
+ library (often root) (via su) and doing
+ $ cd /usr/src/pgsql/src/interfaces/perl5
+ $ gmake install
+
+ 18. If it has not already been done, then prepare
+ account postgres for using Postgres. Any account
+ that will use Postgres must be similarly prepared.
+ There are several ways to influence the runtime
+ environment of the Postgres server. Refer to the
+ Administrator's Guide for more information.
+
+ Note: The following instructions are for a
+ bash/sh shell. Adapt accordingly for other
+ shells.
+
+ a. Add the following lines to your login
+ environment: shell, ~/.bash_profile:
+ PATH=$PATH:/usr/local/pgsql/bin
+ MANPATH=$MANPATH:/usr/local/pgsql/man
+ PGLIB=/usr/local/pgsql/lib
+ PGDATA=/usr/local/pgsql/data
+ export PATH MANPATH PGLIB PGDATA
+ b. Several regression tests could failed if the
+ user's locale collation scheme is different
+ from that of standard C locale.
+ If you configure and compile Postgres with
+ the --enable-locale option then set locale
+ environment to C (or unset all LC_*
+ variables) by putting these additional lines
+ to your login environment before starting
+ postmaster:
+ LC_COLLATE=C
+ LC_CTYPE=C
+ LC_COLLATE=C
+ export LC_COLLATE LC_CTYPE LC_COLLATE
+ c. Make sure that you have defined these
+ variables before continuing with the
+ remaining steps. The easiest way to do this
+ is to type:
+ $ source ~/.bash_profile
+
+ 19. Create the database installation from your
+ Postgres superuser account (typically account
+ postgres). Do not do the following as root! This
+ would be a major security hole. Type
+ $ initdb
+
+ 20. Set up permissions to access the database
+ system. Do this by editing file
+ /usr/local/pgsql/data/pg_hba.conf. The
+ instructions are included in the file. (If your
+ database is not located in the default location,
+ i.e. if PGDATA is set to point elsewhere, then the
+ location of this file will change accordingly.)
+ This file should be made read only again once you
+ are finished. If you are upgrading from v6.0 or
+ later you can copy file pg_hba.conf from your old
+ database on top of the one in your new database,
+ rather than redoing the file from scratch.
+
+ 21. Briefly test that the backend will start and
+ run by running it from the command line.
+ a. Start the postmaster daemon running in the
+ background by typing
+ $ cd
+ $ postmaster -i
+ b. Create a database by typing
+ $ createdb
+ c. Connect to the new database:
+ $ psql
+ d. And run a sample query:
+ postgres=> SELECT datetime 'now';
+ e. Exit psql:
+ postgres=> \q
+ f. Remove the test database (unless you will
+ want to use it later for other tests):
+ $ destroydb
+
+ 22. Run postmaster in the background from your
+ Postgres superuser account (typically account
+ postgres). Do not run postmaster from the root
+ account!
+ Usually, you will want to modify your computer so
+ that it will automatically start postmaster
+ whenever it boots. It is not required; the
+ Postgres server can be run successfully from
+ non-privileged accounts without root intervention.
+ Here are some suggestions on how to do this,
+ contributed by various users.
+ Whatever you do, postmaster must be run by the
+ Postgres superuser (postgres?) and not by root.
+ This is why all of the examples below start by
+ switching user (su) to postgres. These commands
+ also take into account the fact that environment
+ variables like PATH and PGDATA may not be set
+ properly. The examples are as follows. Use them
+ with extreme caution.
+ o If you are installing from a non-privileged
+ account and have no root access, then start the
+ postmaster and send it to the background:
+ $ cd
+ $ nohup postmaster > regress.log 2>&1 &
+ o Edit file rc.local on NetBSD or file rc2.d on
+ SPARC Solaris 2.5.1 to contain the following
+ single line:
+ su postgres -c "/usr/local/pgsql/bin/postmaster
+ -S -D /usr/local/pgsql/data"
+ o In FreeBSD 2.2-RELEASE edit
+ /usr/local/etc/rc.d/pgsql.sh to contain the
+ following lines and make it chmod 755 and chown
+ root:bin.
+ #!/bin/sh
+ [ -x /usr/local/pgsql/bin/postmaster ] && {
+ su -l pgsql -c 'exec
+ /usr/local/pgsql/bin/postmaster
+ -D/usr/local/pgsql/data
+ -S -o -F > /usr/local/pgsql/errlog' &
+ echo -n ' pgsql'
+ }
+ You may put the line breaks as shown above. The
+ shell is smart enough to keep parsing beyond
+ end-of-line if there is an expression unfinished.
+ The exec saves one layer of shell under the
+ postmaster process so the parent is init.
+ o In RedHat Linux add a file
+ /etc/rc.d/init.d/postgres.init which is based on
+ the example in contrib/linux/. Then make a
+ softlink to this file from
+ /etc/rc.d/rc5.d/S98postgres.init.
+ o In RedHat Linux edit file /etc/inittab to add the
+ following as a single line:
+ pg:2345:respawn:/bin/su - postgres -c
+ "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data
+ >> /usr/local/pgsql/server.log 2>&1 </dev/null"
+
+ (The author of this example says this example
+ will revive the postmaster if it dies, but he
+ doesn't know if there are other side effects.)
+
+ 23. Run the regression tests. The file
+ /usr/src/pgsql/src/test/regress/README has
+ detailed instructions for running and interpreting
+ the regression tests. A short version follows
+ here:
+ a. Type
+ $ cd /usr/src/pgsql/src/test/regress
+ $ gmake clean
+ $ gmake all runtest
+ You do not need to type gmake clean if this
+ is the first time you are running the tests.
+ You should get on the screen (and also
+ written to file ./regress.out) a series of
+ statements stating which tests passed and
+ which tests failed. Please note that it can
+ be normal for some tests to "fail" on some
+ platforms. The script says a test has failed
+ if there is any difference at all between the
+ actual output of the test and the expected
+ output. Thus, tests may "fail" due to minor
+ differences in wording of error messages,
+ small differences in floating-point roundoff,
+ etc, between your system and the regression
+ test reference platform. "Failures" of this
+ type do not indicate a problem with Postgres.
+ The file ./regression.diffs contains the
+ textual differences between the actual test
+ output on your machine and the "expected"
+ output (which is simply what the reference
+ system produced). You should carefully
+ examine each difference listed to see whether
+ it appears to be a significant issue.
+ For example,
+ o For a i686/Linux-ELF platform, no tests
+ failed since this is the v6.4 regression
+ testing reference platform.
+ o For the SPARC/Linux-ELF platform, using the
+ 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
+ that will not affect you. An example is that
+ the int8 test will fail, producing obviously
+ incorrect output, if your machine and C
+ compiler do not provide a 64-bit integer data
+ type (or if they do but configure didn't
+ discover it). This is not something to worry
+ about unless you need to store 64-bit
+ integers.
+ Conclusion? If you do see failures, try to
+ understand the nature of the differences and
+ then decide if those differences will affect
+ your intended use of Postgres. The regression
+ tests are a helpful tool, but they may
+ require some study to be useful.
+ After running the regression tests, type
+ $ destroydb regression
+ $ cd /usr/src/pgsql/src/test/regress
+ $ gmake clean
+ to recover the disk space used for the
+ tests. (You may want to save the
+ regression.diffs file in another place before
+ doing this.)
+
+ 24. If you haven't already done so, this would be
+ a good time to modify your computer to do regular
+ maintainence. The following should be done at
+ regular intervals:
+
+ Procedure 3.2. Minimal Backup Procedure
+ 1. Run the SQL command VACUUM. This will clean
+ up your database.
+ 2. Back up your system. (You should probably
+ keep the last few backups on hand.) Preferably,
+ no one else should be using the system at the
+ time.
+
+ Ideally, the above tasks should be done by a shell
+ script that is run nightly or weekly by cron. Look
+ at the man page for crontab for a starting point
+ on how to do this. (If you do it, please e-mail us
+ a copy of your shell script. We would like to set
+ up our own systems to do this too.)
+
+ 25. If you are upgrading an existing system then
+ reinstall your old database. Type
+ $ cd
+ $ psql -e template1 < db.out
+ If your pre-v6.2 database uses either path or
+ polygon geometric data types, then you will need
+ to upgrade any columns containing those types. To
+ do so, type (from within psql)
+ UPDATE FirstTable SET PathCol = UpgradePath(PathCol);
+ UPDATE SecondTable SET PathCol = UpgradePath(PathCol);
+ ...
+ VACUUM;
+ UpgradePath() checks to see that a path value is
+ consistant with the old syntax, and will not
+ update a column which fails that examination.
+ UpgradePoly() cannot verify that a polygon is in
+ fact from an old syntax, but RevertPoly() is
+ provided to reverse the effects of a mis-applied
+ upgrade.
+
+ 26. If you are a new user, you may wish to play
+ with Postgres as described below.
+
+ 27. Clean up after yourself. Type
+ $ rm -rf /usr/src/pgsql_6_0
+ $ rm -rf /usr/local/pgsql_6_0
+ # Also delete old database directory tree if it is
+ not in
+ # /usr/local/pgsql_6_0/data
+ $ rm ~/postgresql-v6.2.1.tar.gz
+
+ 28. You will probably want to print out the
+ documentation. If you have a Postscript printer,
+ or have your machine already set up to accept
+ Postscript files using a print filter, then to
+ print the User's Guide simply type
+ $ cd /usr/local/pgsql/doc
+ $ gunzip user.ps.tz | lpr
+ Here is how you might do it if you have
+ Ghostscript on your system and are writing to a
+ laserjet printer.
+ $ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
+ $ export
+ GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
+ $ gunzip user.ps.gz
+ $ gshp -sOUTPUTFILE=user.hp user.ps
+ $ gzip user.ps
+ $ lpr -l -s -r manpage.hp
+
+ 29. The Postgres team wants to keep Postgres
+ working on all of the supported platforms. We
+ therefore ask you to let us know if you did or did
+ not get Postgres to work on you system. Please
+ send a mail message to pgsql-ports@postgresql.org
+ telling us the following:
+ o The version of Postgres (v6.4, 6.3.2, beta 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
+ tests cleanly? If not, what source code did you
+ change (i.e. patches you applied, changes you
+ made, etc.), what tests failed, etc. It is normal
+ to get many warning when you compile. You do not
+ need to report these.
+ 30. Now create, access and manipulate databases
+ as desired. Write client programs to access the
+ database server. In other words, enjoy!
+
+Playing with Postgres
+
+ After Postgres is installed, a database system is
+ created, a postmaster daemon is running, and the
+ regression tests have passed, you'll want to see
+ Postgres do something. That's easy. Invoke the
+ interactive interface to Postgres, psql:
+
+ % psql template1
+
+ (psql has to open a particular database, but at this
+ point the only one that exists is the template1
+ database, which always exists. We will connect to it
+ only long enough to create another one and switch to
+ it.)
+ The response from psql is:
+
+ Welcome to the POSTGRESQL interactive sql monitor:
+ Please read the file COPYRIGHT for copyright terms
+ of POSTGRESQL
+
+ type \? for help on slash commands
+ type \q to quit
+ type \g or terminate with semicolon to execute
+ query
+ You are currently connected to the database:
+ template1
+
+ template1=>
+
+ Create the database foo:
+
+ template1=> create database foo;
+ CREATEDB
+
+ (Get in the habit of including those SQL semicolons.
+ Psql won't execute anything until it sees the
+ semicolon or a "\g" and the semicolon is required to
+ delimit multiple statements.)
+ Now connect to the new database:
+
+ template1=> \c foo
+ connecting to new database: foo
+
+ ("slash" commands aren't SQL, so no semicolon. Use \?
+ to see all the slash commands.)
+ And create a table:
+
+ foo=> create table bar (i int4, c char(16));
+ CREATE
+
+ Then inspect the new table:
+
+ foo=> \d bar
+
+ Table = bar
+ +--------------+--------------+-------+
+ | Field | Type | Length|
+ +--------------+--------------+-------+
+ | i | int4 | 4 |
+ | c | (bp)char | 16 |
+ +--------------+--------------+-------+
+
+ And so on. You get the idea.
+
+The Next Step
+
+ Questions? Bugs? Feedback? First, read the files in
+ directory /usr/src/pgsql/doc/. The FAQ in this
+ directory may be particularly useful.
+ If Postgres failed to compile on your computer then
+ fill out the form in file
+ /usr/src/pgsql/doc/bug.template and mail it to the
+ location indicated at the top of the form.
+ Check on the web site at http://www.postgresql.org
+ For more information on the various support mailing
+ lists.
+
+Porting Notes
+
+ Note: Check for any platform-specific FAQs in the
+ doc/ directory of the source distribution. For
+ 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
+
+Parameters for Configuration (configure)
+
+ The full set of parameters available in configure can
+ be obtained by typing
+
+ $ ./configure --help
+
+ The following parameters may be of interest to
+ installers:
+
+ Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [/usr/local/pgsql]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --enable and --with options recognized:
+ --with-template=template
+ use operating system template file
+ see template directory
+ --with-includes=incdir site header files for tk/tcl, etc in DIR
+ --with-libs=incdir also search for libraries in DIR
+ --with-libraries=libdir also search for libraries in DIR
+ --enable-locale enable locale support
+ --enable-recode enable cyrillic recode
+ support
+ --with-mb=encoding enable multi-byte support
+ --with-pgport=portnum change default startup port
+ --with-tcl use tcl
+ --with-tclconfig=tcldir tclConfig.sh and tkConfig.sh are in DIR
+ --with-perl use perl
+ --with-odbc build ODBC driver package
+ --with-odbcinst=odbcdir change default directory for odbcinst.ini
+ --enable-cassert enable assertion checks (debugging)
+ --with-CC=compiler use specific C compiler
+ --with-CXX=compiler use specific C++ compiler
+ --without-CXX do not build libpq++
+
+ Some systems may have trouble building a specific
+ feature of Postgres. For example, systems with a
+ damaged C++ compiler may need to specify
+ --without-CXX to encourage the build procedure to
+ ignore the libpq++ construction.
+
+Parameters for Building (make)
+
+ Many installation-related parameters can be set in
+ the building stage of Postgres installation.
+ In most cases, these parameters should be place in a
+ file, Makefile.custom, intended just for that
+ purpose. The default distribution does not contain
+ this optional file, so you will create it using a
+ text editor of your choice. When upgrading
+ installations, you can simply copy your old
+ Makefile.custom to the new installation before doing
+ the build.
+
+ make [ variable=value [,...] ]
+
+ A few of the many variables which can be specified
+ are:
+ POSTGRESDIR
+ Top of the installation tree.
+ BINDIR
+ Location of applications and utilities.
+ LIBDIR
+ Location of object libraries, including shared
+ libraries.
+ HEADERDIR
+ Location of include files.
+ ODBCINST
+ Location of installation-wide psqlODBC (ODBC)
+ configuration file.
+ There are other optional parameters which are not as
+ commonly used. Many of those listed below are
+ appropriate when doing Postgres server code
+ development.
+ CFLAGS
+ Set flags for the C compiler. Should be assigned
+ with "+=" to retain relevant default parameters.
+ YFLAGS
+ Set flags for the yacc/bison parser. -v might be
+ used to help diagnose problems building a new
+ parser. Should be assigned with "+=" to retain
+ relevant default parameters.
+ USE_TCL
+ Enable Tcl interface building.
+ HSTYLE
+ DocBook HTML style sheets for building the
+ documentation from scratch. Not used unless you
+ are developing new documentation from the
+ DocBook-compatible SGML source documents in
+ doc/src/sgml/.
+ PSTYLE
+ DocBook style sheets for building printed
+ documentation from scratch. Not used unless you
+ are developing new documentation from the
+ DocBook-compatible SGML source documents in
+ doc/src/sgml/.
+ Here is an example Makefile.custom for a PentiumPro
+ Linux system:
+
+ # Makefile.custom
+ # Thomas Lockhart 1998-03-01
+
+ POSTGRESDIR= /opt/postgres/current
+ CFLAGS+= -m486 # -g -O0
+
+ # documentation
+
+ HSTYLE= /home/tgl/SGML/db118.d/docbook/html
+ PSTYLE= /home/tgl/SGML/db118.d/docbook/print
+
+Locale Support
+
+ Note: Written by Oleg Bartunov. See Oleg's web
+ page for additional information on locale and
+ Russian language support.
+
+ While doing a project for a company in Moscow,
+ Russia, I encountered the problem that postgresql had
+ no support of national alphabets. After looking for
+ possible workarounds I decided to develop support of
+ locale myself. I'm not a C-programer but already had
+ some experience with locale programming when I work
+ with perl (debugging) and glimpse. After several days
+ of digging through the Postgres source tree I made
+ very minor corections to
+ src/backend/utils/adt/varlena.c and
+ src/backend/main/main.c and got what I needed! I did
+ support only for LC_CTYPE and LC_COLLATE, but later
+ LC_MONETARY was added by others. I got many messages
+ from people about this patch so I decided to send it
+ to developers and (to my surprise) it was
+ incorporated into the Postgres distribution.
+ People often complain that locale doesn't work for
+ them. There are several common mistakes:
+
+ o Didn't properly configure postgresql before
+ compilation. You must run configure with
+ --enable-locale option to enable locale support.
+ Didn't setup environment correctly when starting
+ postmaster. You must define environment variables
+ LC_CTYPE and LC_COLLATE before running postmaster
+ because backend gets information about locale from
+ environment. I use following shell script
+ (runpostgres):
+ #!/bin/sh
+ export LC_CTYPE=koi8-r
+ export LC_COLLATE=koi8-r
+ postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe'
+
+ and run it from rc.local as
+ /bin/su - postgres -c "/home/postgres/runpostgres"
+
+ o Broken locale support in OS (for example, locale
+ support in libc under Linux several times has
+ changed and this caused a lot of problems). Latest
+ perl has also support of locale and if locale is
+ broken perl -v will complain something like:
+ 8:17[mira]:~/WWW/postgres>setenv LC_CTYPE
+ not_exist
+ 8:18[mira]:~/WWW/postgres>perl -v
+ perl: warning: Setting locale failed.
+ perl: warning: Please check that your locale
+ settings:
+ LC_ALL = (unset),
+ LC_CTYPE = "not_exist",
+ LANG = (unset)
+ are supported and installed on your
+ system.
+ perl: warning: Falling back to the standard
+ locale ("C").
+
+ o Wrong location of locale files! Possible locations
+ include: /usr/lib/locale (Linux, Solaris),
+ /usr/share/locale (Linux), /usr/lib/nls/loc (DUX
+ 4.0). Check man locale to find the correct
+ location. Under Linux I did a symbolic link between
+ /usr/lib/locale and /usr/share/locale to be sure
+ that the next libc will not break my locale.
+
+What are the Benefits?
+
+ You can use ~* and order by operators for strings
+ contain characters from national alphabets.
+ Non-english users definitely need that. If you won't
+ use locale stuff just undefine the USE_LOCALE
+ variable.
+
+What are the Drawbacks?
+
+ There is one evident drawback of using locale - it's
+ speed! So, use locale only if you really need it.
+
+Kerberos Authentication
+
+ Kerberos is an industry-standard secure
+ authentication system suitable for distributed
+ computing over a public network.
+
+Availability
+
+ The Kerberos authentication system is not distributed
+ with Postgres. Versions of Kerberos are typically
+ available as optional software from operating system
+ vendors. In addition, a source code distribution may
+ be obtained through MIT Project Athena.
+
+ Note: You may wish to obtain the MIT version even
+ if your vendor provides a version, since some
+ vendor ports have been deliberately crippled or
+ rendered non-interoperable with the MIT version.
+
+ Users located outside the United States of America
+ and Canada are warned that distribution of the actual
+ encryption code in Kerberos is restricted by U. S.
+ Government export regulations.
+ Inquiries regarding your Kerberos should be directed
+ to your vendor or MIT Project Athena. Note that FAQLs
+ (Frequently-Asked Questions Lists) are periodically
+ posted to the Kerberos mailing list (send mail to
+ subscribe), and USENET news group.
+
+Installation
+
+ Installation of Kerberos itself is covered in detail
+ in the Kerberos Installation Notes . Make sure that
+ the server key file (the srvtab or keytab) is somehow
+ readable by the Postgres account.
+ Postgres and its clients can be compiled to use
+ either Version 4 or Version 5 of the MIT Kerberos
+ protocols by setting the KRBVERS variable in the file
+ src/Makefile.global to the appropriate value. You can
+ also change the location where Postgres expects to
+ find the associated libraries, header files and its
+ own server key file.
+ After compilation is complete, Postgres must be
+ registered as a Kerberos service. See the Kerberos
+ Operations Notes and related manual pages for more
+ details on registering services.
+
+Operation
+
+ After initial installation, Postgres should operate
+ in all ways as a normal Kerberos service. For details
+ on the use of authentication, see the PostgreSQL
+ User's Guide reference sections for postmaster and
+ psql.
+ In the Kerberos Version 5 hooks, the following
+ assumptions are made about user and service naming:
+ o User principal names (anames) are assumed to
+ contain the actual Unix/Postgres user name in the
+ first component.
+ o The Postgres service is assumed to be have two
+ components, the service name and a hostname,
+ canonicalized as in Version 4 (i.e., with all
+ domain suffixes removed).
+
+ Table 4-1. Kerberos Parameter Examples
+ Param- Example
+ eter
+ user frew@S2K.ORG
+ user aoki/HOST=miyu.S2K.Berkeley-
+ .EDU@S2K.ORG
+ host postgres_dbms/ucbvax@S2K.ORG
+
+
+ Support for Version 4 will disappear sometime after
+ the production release of Version 5 by MIT.\f
+
+Chapter 5. Release Notes
+
+Release 6.4
+
+ There are many new features and improvements in this
+ release. Thanks to our developers and maintainers,
+ nearly every aspect of the system has received some
+ attention since the previous release. Here is a
+ brief, incomplete summary:
+ o Views and rules are now functional thanks to
+ extensive new code in the rewrite rules system from
+ Jan Wieck. He also wrote a chapter on it for the
+ Programmer's Guide.
+ o Jan also contributed a second procedural language,
+ PL/pgSQL, to go with the original PL/pgTCL
+ procedural language he contributed last release.
+ o We have optional multiple-byte character set
+ support from Tatsuo Iishi to complement our
+ existing locale support.
+ o Client/server communications has been cleaned up,
+ with better support for asynchronous messages and
+ interrupts thanks to Tom Lane.
+ o The parser will now perform automatic type coersion
+ to match arguments to available operators and
+ functions, and to match columns and expressions
+ with target columns. This uses a generic mechanism
+ which supports the type extensibility features of
+ Postgres. There is a new chapter in the User's
+ Guide which covers this topic.
+ o Three new data types have been added. Two types,
+ inet and cidr, support various forms of IP network,
+ subnet, and machine addressing. There is now an
+ 8-byte integer type available on some platforms.
+ See the chapter on data types in the User's Guide
+ for details. A fourth type, serial, is now
+ supported by the parser as an amalgam of the int4
+ type, a sequence, and a unique index.
+ o Several more SQL92-compatible syntax features have
+ been added, including INSERT DEFAULT VALUES
+ o The automatic configuration and installation system
+ has received some attention, and should be more
+ robust for more platforms than it has ever been.
+
+Migration to v6.4
+
+ A dump/restore using pg_dump or pg_dumpall is
+ required for those wishing to migrate data from any
+ previous release of Postgres.
+
+Detailed Change List
+
+ Bug Fixes
+ ---------
+ Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
+ Remove char2-16 data types, use char/varchar(Darren)
+ Pqfn not handles a NOTICE message(Anders)
+ Reduced busywaiting overhead for spinlocks with many
+ backends (dg)
+ Stuck spinlock detection (dg)
+ Fix up "ISO-style" timespan decoding and
+ encoding(Thomas)
+ Fix problem with table drop after rollback of
+ transaction(Vadim)
+ Change error message and remove non-functional update
+ message(Vadim)
+ Fix for COPY array checking
+ Fix for SELECT 1 UNION SELECT NULL
+ Fix for buffer leaks in large object calls(Pascal)
+ Change owner from oid to int4 type(Bruce)
+ Fix a bug in the oracle compatibility functions
+ btrim() ltrim() and rtrim()
+ Fix for shared invalidation cache overflow(Massimo)
+ Prevent file descriptor leaks in failed COPY's(Bruce)
+ Fix memory leak in libpgtcl's pg_select(Constantin)
+ Fix problems with username/passwords over 8
+ characters(Tom)
+ Fix problems with handling of asynchronous NOTIFY in
+ backend(Tom)
+ Fix of many bad system table entries(Tom)
+
+ Enhancements
+ ------------
+ Upgrade ecpg and ecpglib,see
+ src/interfaces/ecpc/ChangeLog(Michael)
+ Show the index used in an EXPLAIN(Zeugswetter)
+ EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
+ Multi-byte awareness of many data types and functions, via configure(Tatsuo)
+ New configure --with-mb option(Tatsuo)
+ New initdb --pgencoding option(Tatsuo)
+ New createdb -E multibyte option(Tatsuo)
+ Select version(); now returns PostgreSQL version(Jeroen)
+ Libpq now allows asynchronous clients(Tom)
+ Allow cancel from client of backend query(Tom)
+ Psql now cancels query with Control-C(Tom)
+ Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
+ NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
+ PGresult struct now includes associated error message, if any(Tom)
+ Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
+ Add routines to convert between varchar and bpchar(Thomas)
+ Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
+ Add bit flags to support timezonehour and minute in data retrieval(Thomas)
+ Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
+ Fixes for unary minus parsing with leading spaces(Thomas)
+ Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
+ Check for and properly ignore FOREIGN KEY column constraints(Thomas)
+ Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
+ Enable HAVING clause but no fixes elsewhere yet.
+ Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
+ Save string type if specified for DEFAULT clause handling(Thomas)
+ Coerce operations involving different data types(Thomas)
+ Allow some index use for columns of different types(Thomas)
+ Add capabilities for automatic type conversion(Thomas)
+ Cleanups for large objects, so file is truncated on open(Peter)
+ Readline cleanups(Tom)
+ Allow psql \f \ to make spaces as delimiter(Bruce)
+ Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
+ Msql compatibility library in /contrib(Aldrin)
+ Remove the requirement that ORDER/GROUP BY clause identifiers be
+ included in the target list(David)
+ Convert columns to match columns in UNION clauses(Thomas)
+ Remove fork()/exec() and only do fork()(Bruce)
+ Jdbc cleanups(Peter)
+ Show backend status on ps command line(only works on some platforms)(Bruce)
+ Pg_hba.conf now has a sameuser option in the database field
+ Make lo_unlink take oid param, not int4
+ New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
+ Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
+ libpgtcl cleanups(Tom)
+ Add -error option to libpgtcl's pg_result command(Tom)
+ New locale patch, see docs/README/locale(Oleg)
+ Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
+ New contrib/lo code for large object orphan removal(Peter)
+ New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes
+ feature, see /doc/README.mb(Tatsuo)
+ /contrib/noupdate code to revoke update permission on a column
+ Libpq can now be compiled on win32(Magnus)
+ Add PQsetdbLogin() in libpq
+ New 8-byte integer type, checked by configure for OS support(Thomas)
+ Better support for quoted table/column names(Thomas)
+ Surround table and column names with double-quotes in pg_dump(Thomas)
+ PQreset() now works with passwords(Tom)
+ Handle case of GROUP BY target list column number out of range(David)
+ Allow UNION in subselects
+ Add auto-size to screen to \d? commands(Bruce)
+ Use UNION to show all \d? results in one query(Bruce)
+ Add \d? field search feature(Bruce)
+ Pg_dump issues fewer \connect requests(Tom)
+ Make pg_dump -z flag work better, document it in manual page(Tom)
+ Add HAVING clause with full support for subselects
+ and unions(Stephan)
+ Full text indexing routines in contrib/fulltextindex(Maarten)
+ Transaction ids now stored in shared memory(Vadim)
+ New PGCLIENTENCODING when issuing COPY command(Tatsuo)
+ Support for SQL92 syntax "SET NAMES"(Tatsuo)
+ Support for LATIN2-5(Tatsuo)
+ Add UNICODE regression test case(Tatsuo)
+ Lock manager cleanup, new locking modes for LLL(Vadim)
+ Allow index use with OR clauses(Bruce)
+ Allows "SELECT NULL ORDER BY 1;"
+ Explain VERBOSE prints the plan, and now pretty-prints the plan to
+ the postmaster log file(Bruce)
+ Add Indices display to \d command(Bruce)
+ Allow GROUP BY on functions(David)
+ New pg_class.relkind for large objects(Bruce)
+ New way to send libpq NOTICE messages to a different location(Tom)
+ New \w write command to psql(Bruce)
+ New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
+ Allow binary-compatible indices to be considered when checking for valid
+ indices for restriction clauses containing a constant(Thomas)
+ New ISBN/ISSN code in /contrib/isbn_issn
+ Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
+ New rewrite system fixes many problems with rules and views(Jan)
+ * Rules on relations work
+ * Event qualifications on insert/update/delete work
+ * New OLD variable to reference CURRENT, CURRENT will be remove in future
+ * Update rules can reference NEW and OLD in rule qualifications/actions
+ * Insert/update/delete rules on views work
+ * Multiple rule actions are now supported, surrounded by parentheses
+ * Regular users can create views/rules on tables they have RULE permits
+ * Rules and views inherit the permissions on the creator
+ * No rules at the column level
+ * No UPDATE NEW/OLD rules
+ * 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
+ -------------------
+ /contrib cleanup(Jun)
+ Inline some small functions called for every row(Bruce)
+ Alpha/linux fixes
+ Hp/UX cleanups(Tom)
+ Multi-byte regression tests(Soonmyung.)
+ Remove --disabled options from configure
+ Define PGDOC to use POSTGRESDIR by default
+ Make regression optional
+ Remove extra braces code to pgindent(Bruce)
+ Add bsdi shared library support(Bruce)
+ New --without-CXX support configure option(Brook)
+ New FAQ_CVS
+ Update backend flowchart in tools/backend(Bruce)
+ Change atttypmod from int16 to int32(Bruce, Tom)
+ Getrusage() fix for platforms that do not have it(Tom)
+ Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
+ 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)