INSTALL.txt.2
text/plain
PostgreSQL Installation Guide
by by The PostgreSQL Development Team
PostgreSQL is copyright (C) 1998 by the Postgres Global
Development Group.
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.
Copyrights and Trademarks
PostgreSQL is copyright (C) 1996-8 by the PostgreSQL
Global Development Group, and is distributed under
the terms of the Berkeley license.
Postgres95 is copyright (C) 1994-5 by the Regents of
the University of California. Permission to use,
copy, modify, and distribute this software and its
documentation for any purpose, without fee, and
without a written agreement is hereby granted,
provided that the above copyright notice and this
paragraph and the following two paragraphs appear in
all copies.
In no event shall the University of California be
liable to any party for direct, indirect, special,
incidental, or consequential damages, including lost
profits, arising out of the use of this software and
its documentation, even if the University of
California has been advised of the possibility of
such damage.
The University of California specifically disclaims
any warranties, including, but not limited to, the
implied warranties of merchantability and fitness for
a particular purpose. The software provided hereunder
is on an "as-is" basis, and the University of
California has no obligations to provide
maintainance, support, updates, enhancements, or
modifications.
UNIX is a trademark of X/Open, Ltd. Sun4, SPARC,
SunOS and Solaris are trademarks of Sun Microsystems,
Inc. DEC, DECstation, Alpha AXP and ULTRIX are
trademarks of Digital Equipment Corp. PA-RISC and
HP-UX are trademarks of Hewlett-Packard Co. OSF/1 is
a trademark of the Open Software Foundation.
Chapter 2. Ports
Currently Supported Platforms
Postgres is available free of charge. This manual
describes version 6.4 of Postgres. The authors have
compiled and tested Postgres on the following
platforms:
Table 2-1. Supported Platforms
OS Processor Version Reported
AIX RS6000 v6.3 1998-03-01
BSDi x86 v6.3 1998-03-01
FreeBSD x86 v6.3 1998-03-01
NetBSD 1.3 x86 v6.3 1998-03-01
NetBSD 1.3 NS32532 v6.3 1998-07-20
NetBSD 1.3 Sparc v6.3 1998-03-01
NetBSD 1.3 VAX v6.3 1998-03-01
DGUX m88k v6.3 1998-03-01
HPUX 10.20 PA-RISC v6.3 1998-03-01
IRIX 6.x MIPS v6.3 1998-03-01
Digital Alpha v6.3.2 1998-04-16
linux Alpha v6.3.2 1998-04-16
linux x86 v6.4 1998-10-09
2.0.x
linux Sparc v6.3 1998-03-01
mklinux PPC750 v6.4 1998-09-16
SCO x86 v6.3 1998-03-01
Solaris x86 v6.3 1998-03-01
Solaris x86 v6.3 1998-03-01
2.5.1-2.6
SunOS Sparc v6.3 1998-03-01
4.1.4
SVR4 MIPS v6.4 1998-10-08
SVR4 4.4 m88k v6.2.1 1998-03-01
Unixware x86 v6.4 1998-10-04
Windows NT x86 v6.4 1998-10-08
For Windows NT, look for 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
MacOS all v6.3 1998-03-01
NetBSD arm32 v6.3 1998-03-01
NetBSD m68k v6.3 1998-03-01
NextStep x86 v6.x 1998-03-01
Ultrix MIPS,VAX? v6.x 1998-03-01
Windows x86 v6.3 1998-03-01
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.3.
This procedure is This is based on the installation
instructions for Postgres v6.3 found in
$PGROOT/INSTALL. Up to date information on Postgres
may be found at www.postgresql.org.
The installation notes below assume the following
(except where noted):
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 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 (eg. bsdinst, which comes with the MIT X
Window System distribution).
Requirements to Run Postgres
Information on supported platforms is another
chapter. In general, most Unix-compatible platforms
with modern libraries should be able to run Postgres.
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.
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 account postgres if it does not already
exist.
3. Log into account postgres.
a. 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. 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.
4. Ftp file
ftp://ftp.postgresql.org/pub/postgresql-v6.3.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.
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. Also, do not use the pg_dumpall
script from v6.0 or everything will be owned by
the Postgres super user. Type (with the gunzip
line and the following line typed as one line):
cd
gunzip -c postgresql-v6.3.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 files /usr/src/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 throughout this
procedure. 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.3.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
Postgres configuration.
The default is
/usr/local/pgsql.
--enable-hba Enables Host Based
Authentication (DEFAULT)
--disable-hba Disables Host Based
Authentication
--enable-locale Enables USE_LOCALE
--disable-locale Disables USE_LOCALE
(DEFAULT)
--enable-cassert Enables ASSERT_CHECKING
--disable-cassert Disables ASSERT_CHECKING
(DEFAULT)
--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.
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 --disable-locale
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.
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.
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. 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 Postgres. Any account
that will use Postgres 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 from v6.0 you
can copy file pg_hba.conf from your old database
on top of the one in your new database, rather
than redoing this from scratch.
18. You may wish to skip the regression tests.
However, we think skipping the tests is a BAD
idea!
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 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
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 Postgres.
For a i686/Linux-ELF platform, no tests failed
since this is the v6.3 regression testing
reference platform.
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.
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. However, keep in mind
that this is likely to be the most solid release
of Postgres to date, incorporating many bug fixes
from v6.2.1, and that previous versions of
Postgres 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 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. 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 Postgres distribution
has an example init.d script compatible with and
tested using recent RedHat packages.
23. 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.)
24. If you are upgrading an existing system then
install 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.
25. If you are a new user, you may wish to play
with Postgres as described below.
26. 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
27. 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/ghostscr-
ipt/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.
28. 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: - The version of
Postgres (v6.2.1, 6.1.1, 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.
29. 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.
Mail questions to pgsql-questions@postgresql.org. For
more information on the various mailing lists, see
http://www.postgresql.org and look for the mailing
lists.
Porting Notes
ERROR: Unknown field type For some ports, 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
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 (for v6.2.1). However, the client-side
libraries should work even if the backend is not
supported.
Chapter 4. Release Notes
Release 6.4
TBD
Release 6.3.2
This is a bugfix release for 6.3.x. Refer to the
release notes for v6.3 for a more complete summary of
new features.
Summary:
o Repairs automatic configuration support for some
platforms, including Linux, from breakage
inadvertently introduced in v6.3.1.
o Correctly handles function calls on the left side
of BETWEEN and LIKE clauses.
A dump/restore is NOT required for those running 6.3
or 6.3.1. A 'make distclean', 'make', and 'make
install' is all that is required. This last step
should be performed while the postmaster is not
running. You should re-link any custom applications
that use Postgres libraries.
For upgrades from pre-v6.3 installations, refer to
the installation and migration instructions for v6.3.
Detailed Change List
Changes
-------
Configure detection improvements for tcl/tk(Brook
Milligan, Alvin)
Manual page improvements(Bruce)
BETWEEN and LIKE fix(Thomas)
fix for psql \connect used by pg_dump(Oliver Elphick)
New odbc driver
pgaccess, version 0.86
qsort removed, now uses libc version,
cleanups(Jeroen)
fix for buffer over-runs detected(Maurice Gittens)
fix for buffer overrun in libpgtcl(Randy Kunkee)
fix for UNION with DISTINCT or ORDER BY(Bruce)
gettimeofday configure check(Doug Winterburn)
Fix "indexes not used" bug(Vadim)
docs additions(Thomas)
Fix for backend memory leak(Bruce)
libreadline cleanup(Erwan MAS)
Remove DISTDIR(Bruce)
Makefile dependency cleanup(Jeroen van Vianen)
ASSERT fixes(Bruce)
Release 6.3.1
Summary:
o Additional support for multi-byte character sets.
o Repair byte ordering for mixed-endian clients and
servers.
o Minor updates to allowed SQL syntax.
o Improvements to the configuration autodetection for
installation.
o
A dump/restore is NOT required for those running 6.3.
A 'make distclean', 'make', and 'make install' is all
that is required. This last step should be performed
while the postmaster is not running. You should
re-link any custom applications that use Postgres
libraries.
For upgrades from pre-v6.3 installations, refer to
the installation and migration instructions for v6.3.
Detailed Change List
Changes
-------
ecpg cleanup/fixes, now version 1.1(Michael Meskes)
pg_user cleanup(Bruce)
large object fix for pg_dump and tclsh (alvin)
LIKE fix for multiple adjacent underscores
fix for redefining builtin functions(Thomas)
ultrix4 cleanup
upgrade to pg_access 0.83
updated CLUSTER manual page
multi-byte character set support, see
doc/README.mb(Tatsuo)
configure --with-pgport fix
pg_ident fix
big-endian fix for backend communications(Kataoka)
SUBSTR() and substring() fix(Jan)
several jdbc fixes(Peter)
libpgtcl improvements, see libptcl/README(Randy
Kunkee)
Fix for "Datasize = 0" error(Vadim)
Prevent \do from wrapping(Bruce)
Remove duplicate Russian character set entries
Sunos4 cleanup
Allow optional TABLE keyword in LOCK and SELECT
INTO(Thomas)
CREATE SEQUENCE options to allow a negative
integer(Thomas)
Add "PASSWORD" as an allowed column
identifier(Thomas)
Add checks for UNION target fields(Bruce)
Fix Alpha port(Dwayne Bailey)
Fix for text arrays containing quotes(Doug Gibson)
Solaris compile fix(Albert Chin-A-Young)
Better identify tcl and tk libs and includes(Bruce)
Release 6.3
There are many new features and improvements in this
release. Here is a brief, incomplete summary:
o Many new SQL features, including full SQL92
subselect capability (everything is here but
target-list subselects).
o Support for client-side environment variables to
specify time zone and date style.
o Socket interface for client/server connection. This
is the default now so you may need to start
postmaster with the ?-i? flag.
o Better password authorization mechanisms. Default
table permissions have changed.
o Old-style ?time travel? has been removed. Performance
has been improved.
ERROR: Unknown field type Bruce Momjian wrote the
following notes to introduce the new release.
There are some general 6.3 issues that I want to
mention. These are only the big items that can not be
described in one sentence. A review of the detailed
changes list is still needed.
First, we now have subselects. Now that we have them,
I would like to mention that without subselects, SQL
is a very limited language. Subselects are a major
feature, and you should review your code for places
where subselects provide a better solution for your
queries. I think you will find that there are more
uses for subselects than you may think. Vadim has put
us on the big SQL map with subselects, and fully
functional ones too. The only thing you can't do with
subselects is to use them in the target list.
Second, 6.3 uses unix domain sockets rather than
TCP/IP by default. To enable connections from other
machines, you have to use the new postmaster -i
option, and of course edit pg_hba.conf. Also, for
this reason, the format of pg_hba.conf has changed.
Third, char() fields will now allow faster access
than varchar() or text. Specifically, the text and
varchar() have a penalty for access to any columns
after the first column of this type. char() used to
also have this access penalty, but it no longer does.
This may suggest that you redesign some of your
tables, especially if you have short character
columns that you have defined as varchar() or text.
This and other changes make 6.3 even faster than
earlier releases.
We now have passwords definable independent of any
Unix file. There are new SQL USER commands. See the
pg_hba.conf manual page for more information. There
is a new table, pg_shadow, which is used to store
user information and user passwords, and it by
default only SELECT-able by the postgres super-user.
pg_user is now a view of pg_shadow, and is
SELECT-able by PUBLIC. You should keep using pg_user
in your application without changes.
User-created tables now no longer have SELECT
permission to PUBLIC by default. This was done
because the ANSI standard requires it. You can of
course GRANT any permissions you want after the table
is created. System tables continue to be SELECT-able
by PUBLIC.
We also have real deadlock detection code. No more
sixty-second timeouts. And the new locking code
implements a FIFO better, so there should be less
resource starvation during heavy use.
Many complaints have been made about inadequate
documenation in previous releases. Thomas has put
much effort into many new manuals for this release.
Check out the doc/ directory.
For performance reasons, time travel is gone, but can
be implemented using triggers (see
pgsql/contrib/spi/README). Please check out the new
\d command for types, operators, etc. Also, views
have their own permissions now, not based on the
underlying tables, so permissions on them have to be
set separately. Check /pgsql/interfaces for some new
ways to talk to Postgres.
This is the first release that really required an
explanation for existing users. In many ways, this
was necessary because the new release removes many
limitations, and the work-arounds people were using
are no longer needed.
Migration to v6.3
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 binary cursors broken by MOVE
implementation(Vadim)
Fix for tcl library crash(Jan)
Fix for array handling, from Gerhard Hintermayer
Fix acl error, and remove duplicate pqtrace(Bruce)
Fix psql \e for empty file(Bruce)
Fix for textcat on varchar() fields(Bruce)
Fix for DBT Sendproc (Zeugswetter Andres)
Fix vacuum analyze syntax problem(Bruce)
Fix for international identifiers(Tatsuo)
Fix aggregates on inherited tables(Bruce)
Fix substr() for out-of-bounds data
Fix for select 1=1 or 2=2, select 1=1 and 2=2, and
select sum(2+2)(Bruce)
Fix notty output to show status result. -q option
still turns it off(Bruce)
Fix for count(*), aggs with views and multiple tables
and sum(3)(Bruce)
Fix cluster(Bruce)
Fix for PQtrace start/stop several times(Bruce)
Fix a variety of locking problems like newer lock
waiters getting
lock before older waiters, and having
readlock people not share
locks if a writer is waiting for a lock, and
waiting writers not
getting priority over waiting readers(Bruce)
Fix crashes in psql when executing queries from
external files(James)
Fix problem with multiple order by columns, with the
first one having
NULL values(Jeroen)
Use correct hash table support functions for float8
and int4(Thomas)
Re-enable JOIN= option in CREATE OPERATOR statement
(Thomas)
Change precedence for boolean operators to match
expected behavior(Thomas)
Generate elog(ERROR) on over-large integer(Bruce)
Allow multiple-argument functions in constraint
clauses(Thomas)
Check boolean input literals for
'true','false','yes','no','1','0'
and throw elog(ERROR) if unrecognized(Thomas)
Major large objects fix
Fix for GROUP BY showing duplicates(Vadim)
Fix for index scans in MergeJion(Vadim)
Enhancements
------------
Subselects with EXISTS, IN, ALL, ANY keywords (Vadim,
Bruce, Thomas)
New User Manual(Thomas, others)
Speedup by inlining some frequently-called functions
Real deadlock detection, no more timeouts(Bruce)
Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME,
CURRENT_TIMESTAMP,
CURRENT_USER(Thomas)
Modify constraint syntax to be
SQL92-compliant(Thomas)
Implement SQL92 PRIMARY KEY and UNIQUE clauses using
indices(Thomas)
Recognize SQL92 syntax for FOREIGN KEY. Throw elog
notice(Thomas)
Allow NOT NULL UNIQUE constraint clause (each allowed
separately before)(Thomas)
Allow Postgres-style casting ("::") of
non-constants(Thomas)
Add support for SQL3 TRUE and FALSE boolean
constants(Thomas)
Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT
TRUE/IS NOT FALSE(Thomas)
Allow shorter strings for boolean literals (e.g. "t",
"tr", "tru")(Thomas)
Allow SQL92 delimited identifiers(Thomas)
Implement SQL92 binary and hexadecimal string
decoding (b'10' and x'1F')(Thomas)
Support SQL92 syntax for type coercion of literal
strings
(e.g. "DATETIME 'now'")(Thomas)
Add conversions for int2, int4, and OID types to and
from text(Thomas)
Use shared lock when building indices(Vadim)
Free memory allocated for an user query inside
transaction block after
this query is done, was turned off in <=
6.2.1(Vadim)
New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
New Postgres Procedural Language (PL) backend
interface(Jan)
Rename pg_dump -H option to -h(Bruce)
Add Java support for passwords, European dates(Peter)
Use indices for LIKE and ~, !~ operations(Bruce)
Add hash functions for datetime and timespan(Thomas)
Time Travel removed(Vadim, Bruce)
Add paging for \d and \z, and fix \i(Bruce)
Add Unix domain socket support to backend and to
frontend library(Goran)
Implement CREATE DATABASE/WITH LOCATION and
initlocation utility(Thomas)
Allow more SQL92 and/or Postgres reserved words as
column identifiers(Thomas)
Augment support for SQL92 SET TIME ZONE...(Thomas)
SET/SHOW/RESET TIME ZONE uses TZ backend environment
variable(Thomas)
Implement SET keyword = DEFAULT and SET TIME ZONE
DEFAULT(Thomas)
Enable SET TIME ZONE using TZ environment
variable(Thomas)
Add PGDATESTYLE environment variable to frontend and
backend initialization(Thomas)
Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
frontend library initialization environment
variables(Thomas)
Regression tests time zone automatically set with
"setenv PGTZ PST8PDT"(Thomas)
Add pg_description table for info on tables, columns,
operators, types, and
aggregates(Bruce)
Increase 16 char limit on system table/index names to
32 characters(Bruce)
Rename system indices(Bruce)
Add 'GERMAN' option to SET DATESTYLE(Thomas)
Define an "ISO-style" timespan output format with
"hh:mm:ss" fields(Thomas)
Allow fractional values for delta times (e.g. '2.5
days')(Thomas)
Validate numeric input more carefully for delta
times(Thomas)
Implement day of year as possible input to
date_part()(Thomas)
Define timespan_finite() and text_timespan()
functions(Thomas)
Remove archive stuff(Bruce)
Allow for a pg_password authentication database that
is separate from
the system password file(Todd)
Dump ACLs, GRANT, REVOKE permissions(Matt)
Define text, varchar, and bpchar string length
functions(Thomas)
Fix Query handling for inheritance, and cost
computations(Bruce)
Implement CREATE TABLE/AS SELECT (alternative to
SELECT/INTO)(Thomas)
Allow NOT, IS NULL, IS NOT NULL in
constraints(Thomas)
Implement UNIONs for SELECT(Bruce)
Add UNION, GROUP, DISTINCT to INSERT(Bruce)
varchar() stores only necessary bytes on disk(Bruce)
Fix for BLOBs(Peter)
Mega-Patch for JDBC...see README_6.3 for list of
changes(Peter)
Remove unused "option" from PQconnectdb()
New LOCK command and lock manual page describing
deadlocks(Bruce)
Add new psql \da, \dd, \df, \do, \dS, and \dT
commands(Bruce)
Enhance psql \z to show sequences(Bruce)
Show NOT NULL and DEFAULT in psql \d table(Bruce)
New psql .psqlrc file startup(Andrew)
Modify sample startup script in contrib/linux to show
syslog(Thomas)
New types for IP and MAC addresses in
contrib/ip_and_mac(TomH)
Unix system time conversions with date/time types in
contrib/unixdate(Thomas)
Update of contrib stuff(Massimo)
Add Unix socket support to DBD::Pg(Goran)
New python interface (PyGreSQL 2.0)(D'Arcy)
New frontend/backend protocol has a version number,
network byte order(Phil)
Security features in pg_hba.conf enhanced and
documented, many cleanups(Phil)
CHAR() now faster access than VARCHAR() or TEXT
ecpg embedded SQL preprocessor
Reduce system column overhead(Vadmin)
Remove pg_time table(Vadim)
Add pg_type attribute to identify types that need
length (bpchar, varchar)
Add report of offending line when COPY command fails
Allow VIEW permissions to be set separately from the
underlying tables.
For security, use GRANT/REVOKE on views as
appropriate(Jan)
Tables now have no default GRANT SELECT TO PUBLIC.
You must
explicitly grant such permissions.
Clean up tutorial examples(Darren)
Source Tree Changes
-------------------
Add new html development tools, and flow chart in
/tools/backend
Fix for SCO compiles
Stratus computer port Robert Gillies
Added support for shlib for BSD44_derived &
i386_solaris
Make configure more automated(Brook)
Add script to check regression test results
Break parser functions into smaller files, group
together(Bruce)
Rename heap_create to heap_create_and_catalog, rename
heap_creatr
to heap_create()(Bruce)
Sparc/Linux patch for locking(TomS)
Remove PORTNAME and reorganize port-specific
stuff(Marc)
Add optimizer README file(Bruce)
Remove some recursion in optimizer and clean up some
code there(Bruce)
Fix for NetBSD locking(Henry)
Fix for libptcl make(Tatsuo)
AIX patch(Darren)
Change IS TRUE, IS FALSE, ... to expressions using
"=" rather than
function calls to istrue() or isfalse() to
allow optimization(Thomas)
Various fixes NetBSD/Sparc related(TomH)
Alpha linux locking(Travis,Ryan)
Change elog(WARN) to elog(ERROR)(Bruce)
FAQ for FreeBSD(Marc)
Bring in the PostODBC source tree as part of our
standard distribution(Marc)
A minor patch for HP/UX 10 vs 9(Stan)
New pg_attribute.atttypmod for type-specific info
like varchar length(Bruce)
Unixware patches(Billy)
New i386 'lock' for spin lock asm(Billy)
Support for multiplexed backends is removed
Start an OpenBSD port
Start an AUX port
Start a Cygnus port
Add string functions to regression suite(Thomas)
Expand a few function names formerly truncated to 16
characters(Thomas)
Remove un-needed malloc() calls and replace with
palloc()(Bruce)
Release 6.2.1
v6.2.1 is a bug-fix and usability release on v6.2.
Summary:
o Allow strings to span lines, per SQL92.
o Include example trigger function for inserting user
names on table updates.
This is a minor bug-fix release on v6.2. For upgrades
from pre-v6.2 systems, a full dump/reload is
required. Refer to the v6.2 release notes for
instructions.
Migration from v6.2 to v6.2.1
This is a minor bug-fix release. A dump/reload is not
required from v6.2, but is required from any release
prior to v6.2.
In upgrading from v6.2, if you choose to dump/reload
you will find that avg(money) is now calculated
correctly. All other bug fixes take effect upon
updating the executables.
Another way to avoid dump/reload is to use the
following SQL command from psql to update the
existing system table:
update pg_aggregate set aggfinalfn =
'cash_div_flt8'
where aggname = 'avg' and aggbasetype = 790;
This will need to be done to every existing database,
including template1.
Detailed Change List
Changes in this release
-----------------------
Allow TIME and TYPE column names(Thomas)
Allow larger range of true/false as boolean
values(Thomas)
Support output of "now" and "current"(Thomas)
Handle DEFAULT with INSERT of NULL properly(Vadim)
Fix for relation reference counts problem in buffer
manager(Vadim)
Allow strings to span lines, like ANSI(Thomas)
Fix for backward cursor with ORDER BY(Vadim)
Fix avg(cash) computation(Thomas)
Fix for specifying a column twice in ORDER/GROUP
BY(Vadim)
Documented new libpq function to return affected
rows, PQcmdTuples(Bruce)
Trigger function for inserting user names for
INSERT/UPDATE(Brook Milligan)
Release 6.2
A dump/restore is required for those wishing to
migrate data from previous releases of Postgres.
Migration from v6.1 to v6.2
This migration requires a complete dump of the 6.1
database and a restore of the database in 6.2.
Note that the pg_dump and pg_dumpall utility from 6.2
should be used to dump the 6.1 database.
Migration from v1.x to v6.2
Those migrating from earlier 1.* releases should
first upgrade to 1.09 because the COPY output format
was improved from the 1.02 release.
Detailed Change List
Bug Fixes
---------
Fix problems with pg_dump for inheritance, sequences,
archive tables(Bruce)
Fix compile errors on overflow due to shifts,
unsigned, and bad prototypes
from Solaris(Diab Jerius)
Fix bugs in geometric line arithmetic (bad
intersection calculations)(Thomas)
Check for geometric intersections at endpoints to
avoid rounding ugliness(Thomas)
Catch non-functional delete attempts(Vadim)
Change time function names to be more
consistent(Michael Reifenberg)
Check for zero divides(Michael Reifenberg)
Fix very old bug which made tuples changed/inserted
by a commnd
visible to the command itself (so we had
multiple update of
updated tuples, etc)(Vadim)
Fix for SELECT null, 'fail' FROM pg_am (Patrick)
SELECT NULL as EMPTY_FIELD now allowed(Patrick)
Remove un-needed signal stuff from
contrib/pginterface
Fix OR (where x <> 1 or x isnull didn't return tuples
with x NULL) (Vadim)
Fix time_cmp function (Vadim)
Fix handling of functions with non-attribute first
argument in
WHERE clauses (Vadim)
Fix GROUP BY when order of entries is different from
order
in target list (Vadim)
Fix pg_dump for aggregates without sfunc1 (Vadim)
Enhancements
------------
Default genetic optimizer GEQO parameter is now
8(Bruce)
Allow use parameters in target list having aggregates
in functions(Vadim)
Added JDBC driver as an interface(Adrian & Peter)
pg_password utility
Return number of tuples inserted/affected by
INSERT/UPDATE/DELETE etc.(Vadim)
Triggers implemented with CREATE TRIGGER
(SQL3)(Vadim)
SPI (Server Programming Interface) allows execution
of queries inside
C-functions (Vadim)
NOT NULL implemented (SQL92)(Robson Paniago de
Miranda)
Include reserved words for string handling, outer
joins, and unions(Thomas)
Implement extended comments ("/* ... */") using
exclusive states(Thomas)
Add "//" single-line comments(Bruce)
Remove some restrictions on characters in operator
names(Thomas)
DEFAULT and CONSTRAINT for tables implemented
(SQL92)(Vadim & Thomas)
Add text concatenation operator and function
(SQL92)(Thomas)
Support WITH TIME ZONE syntax (SQL92)(Thomas)
Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
and CHARACTER VARYING (SQL92)(Thomas)
Define type FLOAT(p) and rudimentary DECIMAL(p,s),
NUMERIC(p,s) (SQL92)(Thomas)
Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM()
(SQL92)(Thomas)
Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
(SQL92)(Thomas)
Add syntax and warnings for UNION, HAVING, INNER and
OUTER JOIN (SQL92)(Thomas)
Add more reserved words, mostly for SQL92
compliance(Thomas)
Allow hh:mm:ss time entry for timespan/reltime
types(Thomas)
Add center() routines for lseg, path, polygon(Thomas)
Add distance() routines for circle-polygon,
polygon-polygon(Thomas)
Check explicitly for points and polygons contained
within polygons
using an axis-crossing algorithm(Thomas)
Add routine to convert circle-box(Thomas)
Merge conflicting operators for different geometric
data types(Thomas)
Replace distance operator "<===>" with "<->"(Thomas)
Replace "above" operator "!^" with ">^" and "below"
operator "!|" with "<^"(Thomas)
Add routines for text trimming on both ends,
substring, and string position(Thomas)
Added conversion routines circle(box) and
poly(circle)(Thomas)
Allow internal sorts to be stored in memory rather
than in files(Bruce & Vadim)
Allow functions and operators on internally-identical
types to succeed(Bruce)
Speed up backend startup after profiling
analysis(Bruce)
Inline frequently called functions for
performance(Bruce)
Reduce open() calls(Bruce)
psql: Add PAGER for \h and \?,\C fix
Fix for psql pager when no tty(Bruce)
New entab utility(Bruce)
General trigger functions for referential integrity
(Vadim)
General trigger functions for time travel (Vadim)
General trigger functions for AUTOINCREMENT/IDENTITY
feature (Vadim)
MOVE implementation (Vadim)
Source Tree Changes
-------------------
HPUX 10 patches (Vladimir Turin)
Added SCO support, (Daniel Harris)
mkLinux patches (Tatsuo Ishii)
Change geometric box terminology from "length" to
"width"(Thomas)
Deprecate temporary unstored slope fields in
geometric code(Thomas)
Remove restart instructions from INSTALL(Bruce)
Look in /usr/ucb first for install(Bruce)
Fix c++ copy example code(Thomas)
Add -o to psql manual page(Bruce)
Prevent relname unallocated string length from being
copied into database(Bruce)
Cleanup for NAMEDATALEN use(Bruce)
Fix pg_proc names over 15 chars in output(Bruce)
Add strNcpy() function(Bruce)
remove some (void) casts that are unnecessary(Bruce)
new interfaces directory(Marc)
Replace fopen() calls with calls to fd.c
functions(Bruce)
Make functions static where possible(Bruce)
enclose unused functions in #ifdef NOT_USED(Bruce)
Remove call to difftime() in timestamp support to fix
SunOS(Bruce & Thomas)
Changes for Digital Unix
Portability fix for pg_dumpall(Bruce)
Rename pg_attribute.attnvals to attdisbursion(Bruce)
"intro/unix" manual page now "pgintro"(Bruce)
"built-in" manual page now "pgbuiltin"(Bruce)
"drop" manual page now "drop_table"(Bruce)
Add "create_trigger", "drop_trigger" manual
pages(Thomas)
Add constraints regression test(Vadim & Thomas)
Add comments syntax regression test(Thomas)
Add PGINDENT and support program(Bruce)
Massive commit to run PGINDENT on all *.c and *.h
files(Bruce)
Files moved to /src/tools directory(Bruce)
SPI and Trigger programming guides (Vadim & D'Arcy)
Release 6.1.1
Migration from v6.1 to v6.1.1
This is a minor bug-fix release. A dump/reload is not
required from v6.1, but is required from any release
prior to v6.1. Refer to the release notes for v6.1
for more details.
Detailed Change List
Changes in this release
-----------------------
fix for SET with options (Thomas)
allow pg_dump/pg_dumpall to preserve ownership of all
tables/objects(Bruce)
new psql \connect option allows changing usernames
without chaning databases
fix for initdb --debug option(Yoshihiko Ichikawa))
lextest cleanup(Bruce)
hash fixes(Vadim)
fix date/time month boundary arithmetic(Thomas)
fix timezone daylight handling for some ports(Thomas,
Bruce, Tatsuo)
timestamp overhauled to use standard
functions(Thomas)
other code cleanup in date/time routines(Thomas)
psql's \d now case-insensitive(Bruce)
psql's backslash commands can now have trailing
semicolon(Bruce)
fix memory leak in psql when using \g(Bruce)
major fix for endian handling of communication to
server(Thomas, Tatsuo)
Fix for Solaris assembler and include files(Yoshihiko
Ichikawa)
allow underscores in usernames(Bruce)
pg_dumpall now returns proper status, portability
fix(Bruce)
Release 6.1
The regression tests have been adapted and
extensively modified for the v6.1 release of
Postgres.
Three new data types (datetime, timespan, and circle)
have been added to the native set of Postgres types.
Points, boxes, paths, and polygons have had their
output formats made consistant across the data types.
The polygon output in misc.out has only been
spot-checked for correctness relative to the original
regression output.
Postgres v6.1 introduces a new, alternate optimizer
which uses genetic algorithms. These algorithms
introduce a random behavior in the ordering of query
results when the query contains multiple qualifiers
or multiple tables (giving the optimizer a choice on
order of evaluation). Several regression tests have
been modified to explicitly order the results, and
hence are insensitive to optimizer choices. A few
regression tests are for data types which are
inherently unordered (e.g. points and time intervals)
and tests involving those types are explicitly
bracketed with set geqo to 'off' and reset geqo.
The interpretation of array specifiers (the curly
braces around atomic values) appears to have changed
sometime after the original regression tests were
generated. The current ./expected/*.out files reflect
this new interpretation, which may not be correct!
The float8 regression test fails on at least some
platforms. This is due to differences in
implementations of pow() and exp() and the signaling
mechanisms used for overflow and underflow
conditions.
The "random" results in the random test should cause
the "random" test to be "failed", since the
regression tests are evaluated using a simple diff.
However, "random" does not seem to produce random
results on my test machine (Linux/gcc/i686).
Migration to v6.1
This migration requires a complete dump of the 6.0
database and a restore of the database in 6.1.
Those migrating from earlier 1.* releases should
first upgrade to 1.09 because the COPY output format
was improved from the 1.02 release.
Detailed Change List
Bug Fixes
---------
packet length checking in library routines
lock manager priority patch
check for under/over flow of float8(Bruce)
multi-table join fix(Vadim)
SIGPIPE crash fix(Darren)
large object fixes(Sven)
allow btree indexes to handle NULLs(Vadim)
timezone fixes(D'Arcy)
select SUM(x) can return NULL on no rows(Thomas)
internal optimizer, executor bug fixes(Vadim)
fix problem where inner loop in < or <= has no
rows(Vadim)
prevent re-commuting join index clauses(Vadim)
fix join clauses for multiple tables(Vadim)
fix hash, hashjoin for arrays(Vadim)
fix btree for abstime type(Vadim)
large object fixes(Raymond)
fix buffer leak in hash indices (Vadim)
fix rtree for use in inner scan (Vadim)
fix gist for use in inner scan, cleanups (Vadim,
Andrea)
avoid unnecessary local buffers allocation (Vadim,
Massimo)
fix local buffers leak in transaction aborts (Vadim)
fix file manager memmory leaks, cleanups (Vadim,
Massimo)
fix storage manager memmory leaks (Vadim)
fix btree duplicates handling (Vadim)
fix deleted tuples re-incarnation caused by vacuum
(Vadim)
fix SELECT varchar()/char() INTO TABLE made
zero-length fields(Bruce)
many psql, pg_dump, and libpq memory leaks fixed
using Purify (Igor)
Enhancements
------------
attribute optimization statistics(Bruce)
much faster new btree bulk load code(Paul)
BTREE UNIQUE added to bulk load code(Vadim)
new lock debug code(Massimo)
massive changes to libpg++(Leo)
new GEQO optimizer speeds table multi-table
optimization(Martin)
new WARN message for non-unique insert into unique
key(Marc)
update x=-3, no spaces, now valid(Bruce)
remove case-sensitive identifier
handling(Bruce,Thomas,Dan)
debug backend now pretty-prints tree(Darren)
new Oracle character functions(Edmund)
new plaintext password functions(Dan)
no such class or insufficient privilege changed to
distinct messages(Dan)
new ANSI timestamp function(Dan)
new ANSI Time and Date types (Thomas)
move large chunks of data in backend(Martin)
multi-column btree indexes(Vadim)
new SET var TO value command(Martin)
update transaction status on reads(Dan)
new locale settings for character types(Oleg)
new SEQUENCE serial number generator(Vadim)
GROUP BY function now possible(Vadim)
re-organize regression test(Thomas,Marc)
new optimizer operation weights(Vadim)
new psql \z grant/permit option(Marc)
new MONEY data type(D'Arcy,Thomas)
tcp socket communication speed improved(Vadim)
new VACUUM option for attribute statistics, and for
certain columns (Vadim)
many geometric type improvements(Thomas,Keith)
additional regression tests(Thomas)
new datestyle variable(Thomas,Vadim,Martin)
more comparison operators for sorting types(Thomas)
new conversion functions(Thomas)
new more compact btree format(Vadim)
allow pg_dumpall to preserve database
ownership(Bruce)
new SET GEQO=# and R_PLANS variable(Vadim)
old (!GEQO) optimizer can use right-sided plans
(Vadim)
typechecking improvement in SQL parser(Bruce)
new SET, SHOW, RESET commands(Thomas,Vadim)
new \connect database USER option
new destroydb -i option (Igor)
new \dt and \di psql commands (Darren)
SELECT "\n" now escapes newline (A. Duursma)
new geometry conversion functions from old format
(Thomas)
Source tree changes
-------------------
new configuration script(Marc)
readline configuration option added(Marc)
OS-specific configuration options removed(Marc)
new OS-specific template files(Marc)
no more need to edit Makefile.global(Marc)
re-arrange include files(Marc)
nextstep patches (Gregor Hoffleit)
removed WIN32-specific code(Bruce)
removed postmaster -e option, now only postgres -e
option (Bruce)
merge duplicate library code in
front/backends(Martin)
now works with eBones, international Kerberos(Jun)
more shared library support
c++ include file cleanup(Bruce)
warn about buggy flex(Bruce)
DG-UX, Ultrix, Irix, AIX portability fixes
Release v6.0
A dump/restore is required for those wishing to
migrate data from previous releases of Postgres.
Migration from v1.09 to v6.0
This migration requires a complete dump of the 1.09
database and a restore of the database in 6.0.
Migration from pre-v1.09 to v6.0
Those migrating from earlier 1.* releases should
first upgrade to 1.09 because the COPY output format
was improved from the 1.02 release.
Detailed Change List
Bug Fixes
---------
ALTER TABLE bug - running postgress process needs to
re-read table definition
Allow vacuum to be run on one table or entire
database(Bruce)
Array fixes
Fix array over-runs of memory writes(Kurt)
Fix elusive btree range/non-range bug(Dan)
Fix for hash indexes on some types like time and date
Fix for pg_log size explosion
Fix permissions on lo_export()(Bruce)
Fix unitialized reads of memory(Kurt)
Fixed ALTER TABLE ... char(3) bug(Bruce)
Fixed a few small memory leaks
Fixed EXPLAIN handling of options and changed
full_path option name
Fixed output of group acl permissions
Memory leaks (hunt and destroy with tools like
Purify(Kurt)
Minor improvements to rules system
NOTIFY fixes
New asserts for run-checking
Overhauled parser/analyze code to properly report
errors and increase speed
Pg_dump -d now handles NULL's properly(Bruce)
Prevent SELECT NULL from crashing server (Bruce)
Properly report errors when INSERT ... SELECT columns
did not match
Properly report errors when insert column names were
not correct
Psql \g filename now works(Bruce)
Psql fixed problem with multiple statements on one
line with multiple outputs
Removed duplicate system oid's
SELECT * INTO TABLE . GROUP/ORDER BY gives unlink
error if table exists(Bruce)
Several fixes for queries that crashed the backend
Starting quote in insert string errors(Bruce)
Submitting an empty query now returns empty status,
not just " " query(Bruce)
Enhancements
------------
Add EXPLAIN manual page(Bruce)
Add UNIQUE index capability(Dan)
Add hostname/user level access control rather than
just hostname and user
Add synonym of != for <>(Bruce)
Allow "select oid,* from table"
Allow BY,ORDER BY to specify columns by number, or by
non-alias table.column(Bruce)
Allow COPY from the frontend(Bryan)
Allow GROUP BY to use alias column name(Bruce)
Allow actual compression, not just reuse on the same
page(Vadim)
Allow installation-configuration option to auto-add
all local users(Bryan)
Allow libpq to distinguish between text value '' and
null(Bruce)
Allow non-postgres users with createdb privs to
destroydb's
Allow restriction on who can create C
functions(Bryan)
Allow restriction on who can do backend COPY(Bryan)
Can shrink tables, pg_time and pg_log(Vadim & Erich)
Change debug level 2 to print queries only, changed
debug heading layout(Bruce)
Change default decimal constant representation from
float4 to float8(Bruce)
European date format now set when postmaster is
started
Execute lowercase function names if not found with
exact case
Fixes for aggregate/GROUP processing, allow 'select
sum(func(x),sum(x+y) from z'
Gist now included in the distrubution(Marc)
Idend authentication of local users(Bryan)
Implement BETWEEN qualifier(Bruce)
Implement IN qualifier(Bruce)
Libpq has PQgetisnull()(Bruce)
Libpq++ improvements
New options to initdb(Bryan)
Pg_dump allow dump of oid's(Bruce)
Pg_dump create indexes after tables are loaded for
speed(Bruce)
Pg_dumpall dumps all databases, and the user table
Pginterface additions for NULL values(Bruce)
Prevent postmaster from being run as root
Psql \h and \? is now readable(Bruce)
Psql allow backslashed, semicolons anywhere on the
line(Bruce)
Psql changed command prompt for lines in query or in
quotes(Bruce)
Psql char(3) now displays as (bp)char in \d
output(Bruce)
Psql return code now more accurate(Bryan?)
Psql updated help syntax(Bruce)
Re-visit and fix vacuum(Vadim)
Reduce size of regression diffs, remove timezone name
difference(Bruce)
Remove compile-time parameters to enable binary
distributions(Bryan)
Reverse meaning of HBA masks(Bryan)
Secure Authentication of local users(Bryan)
Speed up vacuum(Vadim)
Vacuum now had VERBOSE option(Bruce)
Source tree changes
-------------------
All functions now have prototypes that are compared
against the calls
Allow asserts to be disabled easly from
Makefile.global(Bruce)
Change oid constants used in code to #define names
Decoupled sparc and solaris defines(Kurt)
Gcc -Wall compiles cleanly with warnings only from
unfixable constructs
Major include file reorganization/reduction(Marc)
Make now stops on compile failure(Bryan)
Makefile restructuring(Bryan, Marc)
Merge bsdi_2_1 to bsdi(Bruce)
Monitor program removed
Name change from Postgres95 to PostgreSQL
New config.h file(Marc, Bryan)
PG_VERSION now set to 6.0 and used by postmaster
Portability additions, including Ultrix, DG/UX, AIX,
and Solaris
Reduced the number of #define's, centeralized
#define's
Remove duplicate OIDS in system tables(Dan)
Remove duplicate system catalog info or report
mismatches(Dan)
Removed many os-specific #define's
Restructured object file generation/location(Bryan,
Marc)
Restructured port-specific file locations(Bryan,
Marc)
Unused/uninialized variables corrected
Release v1.09
Sorry, we stopped keeping track of changes from 1.02
to 1.09. Some of the changes listed in 6.0 were
actually included in the 1.02.1 to 1.09 releases.
Release v1.02
Migration from v1.02 to v1.02.1
Here is a new migration file for 1.02.1. It includes
the 'copy' change and a script to convert old ascii
files.
ERROR: Unknown field type The following notes are
for the benefit of users who want to migrate
databases from postgres95 1.01 and 1.02 to
postgres95 1.02.1.
If you are starting afresh with postgres95 1.02.1
and do not need to migrate old databases, you do
not need to read any further.
In order to upgrade older postgres95 version 1.01 or
1.02 databases to version 1.02.1, the following steps
are required:
1. Start up a new 1.02.1 postmaster
2. Add the new built-in functions and operators of
1.02.1 to 1.01 or 1.02 databases. This is done by
running the new 1.02.1 server against your own
1.01 or 1.02 database and applying the queries
attached at the end of thie file. This can be done
easily through psql. If your 1.01 or 1.02 database
is named "testdb" and you have cut the commands
from the end of this file and saved them in
addfunc.sql:
% psql testdb -f addfunc.sql
Those upgrading 1.02 databases will get a warning
when executing the last two statements in the file
because they are already present in 1.02. This is
not a cause for concern.
Dump/Reload Procedure
If you are trying to reload a pg_dump or text-mode
'copy tablename to stdout' generated with a previous
version, you will need to run the attached sed script
on the ASCII file before loading it into the
database. The old format used '.' as end-of-data,
while '\.' is now the end-of-data marker. Also, empty
strings are now loaded in as '' rather than NULL. See
the copy manual page for full details.
sed 's/^\.$/\\./g' <in_file >out_file
If you are loading an older binary copy or non-stdout
copy, there is no end-of-data character, and hence no
conversion necessary.
-- following lines added by agc to reflect the
case-insensitive
-- regexp searching for varchar (in 1.02), and bpchar
(in 1.02.1)
create operator ~* (leftarg = bpchar, rightarg =
text, procedure = texticregexeq);
create operator !~* (leftarg = bpchar, rightarg =
text, procedure = texticregexne);
create operator ~* (leftarg = varchar, rightarg =
text, procedure = texticregexeq);
create operator !~* (leftarg = varchar, rightarg =
text, procedure = texticregexne);
Detailed Change List
Source code maintenance and development
* worldwide team of volunteers
* the source tree now in CVS at ftp.ki.net
Enhancements
* psql (and underlying libpq library) now has many
more options for
formatting output, including HTML
* pg_dump now output the schema and/or the data,
with many fixes to
enhance completeness.
* psql used in place of monitor in administration
shell scripts.
monitor to be depreciated in next release.
* date/time functions enhanced
* NULL insert/update/comparison fixed/enhanced
* TCL/TK lib and shell fixed to work with both
tck7.4/tk4.0 and tcl7.5/tk4.1
Bug Fixes (almost too numerous to mention)
* indexes
* storage management
* check for NULL pointer before dereferencing
* Makefile fixes
New Ports
* added SolarisX86 port
* added BSDI 2.1 port
* added DGUX port
Release v1.01
Migration from v1.0 to v1.01
The following notes are for the benefit of users who
want to migrate databases from postgres95 1.0 to
postgres95 1.01.
If you are starting afresh with postgres95 1.01 and
do not need to migrate old databases, you do not need
to read any further.
In order to postgres95 version 1.01 with databases
created with postgres95 version 1.0, the following
steps are required:
1. Set the definition of NAMEDATALEN in
src/Makefile.global to 16 and OIDNAMELEN to 20.
2. Decide whether you want to use Host based
authentication.
a. If you do, you must create a file name
"pg_hba" in your top-level data directory
(typically the value of your $PGDATA).
src/libpq/pg_hba shows an example syntax.
b. If you do not want host-based authentication,
you can comment out the line
HBA = 1
in src/Makefile.global
Note that host-based authentication is turned
on by default, and if you do not take steps A
or B above, the out-of-the-box 1.01 will not
allow you to connect to 1.0 databases.
3. Compile and install 1.01, but DO NOT do the initdb
step.
4. Before doing anything else, terminate your 1.0
postmaster, and backup your existing $PGDATA
directory.
5. Set your PGDATA environment variable to your 1.0
databases, but set up path up so that 1.01
binaries are being used.
6. Modify the file $PGDATA/PG_VERSION from 5.0 to 5.1
7. Start up a new 1.01 postmaster
8. Add the new built-in functions and operators of
1.01 to 1.0 databases. This is done by running the
new 1.01 server against your own 1.0 database and
applying the queries attached and saving in the
file 1.0_to_1.01.sql. This can be done easily
through psql. If your 1.0 database is name
"testdb":
% psql testdb -f 1.0_to_1.01.sql
and then execute the following commands (cut and
paste from here):
-- add builtin functions that are new to 1.01
create function int4eqoid (int4, oid) returns bool
as 'foo'
language 'internal';
create function oideqint4 (oid, int4) returns bool
as 'foo'
language 'internal';
create function char2icregexeq (char2, text)
returns bool as 'foo'
language 'internal';
create function char2icregexne (char2, text)
returns bool as 'foo'
language 'internal';
create function char4icregexeq (char4, text)
returns bool as 'foo'
language 'internal';
create function char4icregexne (char4, text)
returns bool as 'foo'
language 'internal';
create function char8icregexeq (char8, text)
returns bool as 'foo'
language 'internal';
create function char8icregexne (char8, text)
returns bool as 'foo'
language 'internal';
create function char16icregexeq (char16, text)
returns bool as 'foo'
language 'internal';
create function char16icregexne (char16, text)
returns bool as 'foo'
language 'internal';
create function texticregexeq (text, text) returns
bool as 'foo'
language 'internal';
create function texticregexne (text, text) returns
bool as 'foo'
language 'internal';
-- add builtin functions that are new to 1.01
create operator = (leftarg = int4, rightarg = oid,
procedure = int4eqoid);
create operator = (leftarg = oid, rightarg = int4,
procedure = oideqint4);
create operator ~* (leftarg = char2, rightarg =
text, procedure = char2icregexeq);
create operator !~* (leftarg = char2, rightarg =
text, procedure = char2icregexne);
create operator ~* (leftarg = char4, rightarg =
text, procedure = char4icregexeq);
create operator !~* (leftarg = char4, rightarg =
text, procedure = char4icregexne);
create operator ~* (leftarg = char8, rightarg =
text, procedure = char8icregexeq);
create operator !~* (leftarg = char8, rightarg =
text, procedure = char8icregexne);
create operator ~* (leftarg = char16, rightarg =
text, procedure = char16icregexeq);
create operator !~* (leftarg = char16, rightarg =
text, procedure = char16icregexne);
create operator ~* (leftarg = text, rightarg =
text, procedure = texticregexeq);
create operator !~* (leftarg = text, rightarg =
text, procedure = texticregexne);
Detailed Change List
Incompatibilities:
* 1.01 is backwards compatible with 1.0 database
provided the user
follow the steps outlined in the
MIGRATION_from_1.0_to_1.01 file.
If those steps are not taken, 1.01 is not
compatible with 1.0 database.
Enhancements:
* added PQdisplayTuples() to libpq and changed
monitor and psql to use it
* added NeXT port (requires SysVIPC implementation)
* added CAST .. AS ... syntax
* added ASC and DESC keywords
* added 'internal' as a possible language for CREATE
FUNCTION
internal functions are C functions which have been
statically linked
into the postgres backend.
* a new type "name" has been added for system
identifiers (table names,
attribute names, etc.) This replaces the old
char16 type. The
of name is set by the NAMEDATALEN #define in
src/Makefile.global
* a readable reference manual that describes the
query language.
* added host-based access control. A configuration
file ($PGDATA/pg_hba)
is used to hold the configuration data. If
host-based access control
is not desired, comment out HBA=1 in
src/Makefile.global.
* changed regex handling to be uniform use of Henry
Spencer's regex code
regardless of platform. The regex code is
included in the distribution
* added functions and operators for case-insensitive
regular expressions.
The operators are ~* and !~*.
* pg_dump uses COPY instead of SELECT loop for
better performance
Bug fixes:
* fixed an optimizer bug that was causing core dumps
when
functions calls were used in comparisons in the
WHERE clause
* changed all uses of getuid to geteuid so that
effective uids are used
* psql now returns non-zero status on errors when
using -c
* applied public patches 1-14
Release v1.0
Detailed Change List
Copyright change:
* The copyright of Postgres 1.0 has been loosened to
be freely modifiable
and modifiable for any purpose. Please read the
COPYRIGHT file.
Thanks to Professor Michael Stonebraker for making
this possible.
Incompatibilities:
* date formats have to be MM-DD-YYYY (or DD-MM-YYYY
if you're using
EUROPEAN STYLE). This follows SQL-92 specs.
* "delimiters" is now a keyword
Enhancements:
* sql LIKE syntax has been added
* copy command now takes an optional USING
DELIMITER specification.
delimiters can be any single-character string.
* IRIX 5.3 port has been added.
Thanks to Paul Walmsley and others.
* updated pg_dump to work with new libpq
* \d has been added psql
Thanks to Keith Parks
* regexp performance for architectures that use
POSIX regex has been
improved due to caching of precompiled patterns.
Thanks to Alistair Crooks
* a new version of libpq++
Thanks to William Wanders
Bug fixes:
* arbitrary userids can be specified in the
createuser script
* \c to connect to other databases in psql now
works.
* bad pg_proc entry for float4inc() is fixed
* users with usecreatedb field set can now create
databases without
having to be usesuper
* remove access control entries when the entry no
longer has any
permissions
* fixed non-portable datetimes implementation
* added kerberos flags to the src/backend/Makefile
* libpq now works with kerberos
* typographic errors in the user manual have been
corrected.
* btrees with multiple index never worked, now we
tell you they don't
work when you try to use them
Postgres95 Beta 0.03
Detailed Change List
Incompatible changes:
* BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED
WITH PREVIOUS VERSIONS
(due to system catalog changes and indexing
structure changes).
* double-quote (") is deprecated as a quoting
character for string literals;
you need to convert them to single quotes (').
* name of aggregates (eg. int4sum) are renamed in
accordance with the
SQL standard (eg. sum).
* CHANGE ACL syntax is replaced by GRANT/REVOKE
syntax.
* float literals (eg. 3.14) are now of type float4
(instead of float8 in
previous releases); you might have to do
typecasting if you depend on it
being of type float8. If you neglect to do the
typecasting and you assign
a float literal to a field of type float8, you may
get incorrect values
stored!
* LIBPQ has been totally revamped so that frontend
applications
can connect to multiple backends
* the usesysid field in pg_user has been changed
from int2 to int4 to
allow wider range of Unix user ids.
* the netbsd/freebsd/bsd o/s ports have been
consolidated into a
single BSD44_derived port. (thanks to Alistair
Crooks)
SQL standard-compliance (the following details
changes that makes postgres95
more compliant to the SQL-92 standard):
* the following SQL types are now built-in:
smallint, int(eger), float, real,
char(N), varchar(N), date and time.
The following are aliases to existing postgres
types:
smallint -> int2
integer, int -> int4
float, real -> float4
char(N) and varchar(N) are implemented as
truncated text types. In
addition, char(N) does blank-padding.
* single-quote (') is used for quoting string
literals; '' (in addition to
\') is supported as means of inserting a single
quote in a string
* SQL standard aggregate names (MAX, MIN, AVG, SUM,
COUNT) are used
(Also, aggregates can now be overloaded, i.e. you
can define your
own MAX aggregate to take in a user-defined type.)
* CHANGE ACL removed. GRANT/REVOKE syntax added.
- Privileges can be given to a group using the
"GROUP" keyword.
For example:
GRANT SELECT ON foobar TO GROUP
my_group;
The keyword 'PUBLIC' is also supported to
mean all users.
Privileges can only be granted or revoked to
one user or group
at a time.
"WITH GRANT OPTION" is not supported. Only
class owners can change
access control
- The default access control is to to grant users
readonly access.
You must explicitly grant insert/update access
to users. To change
this, modify the line in
src/backend/utils/acl.h
that defines ACL_WORLD_DEFAULT
Bug fixes:
* the bug where aggregates of empty tables were not
run has been fixed. Now,
aggregates run on empty tables will return the
initial conditions of the
aggregates. Thus, COUNT of an empty table will
now properly return 0.
MAX/MIN of an empty table will return a tuple of
value NULL.
* allow the use of \; inside the monitor
* the LISTEN/NOTIFY asynchronous notification
mechanism now work
* NOTIFY in rule action bodies now work
* hash indices work, and access methods in general
should perform better.
creation of large btree indices should be much
faster. (thanks to Paul
Aoki)
Other changes and enhancements:
* addition of an EXPLAIN statement used for
explaining the query execution
plan (eg. "EXPLAIN SELECT * FROM EMP" prints out
the execution plan for
the query).
* WARN and NOTICE messages no longer have timestamps
on them. To turn on
timestamps of error messages, uncomment the line
in
src/backend/utils/elog.h:
/* define ELOG_TIMESTAMPS */
* On an access control violation, the message
"Either no such class or insufficient
privilege"
will be given. This is the same message that is
returned when
a class is not found. This dissuades
non-privileged users from
guessing the existence of privileged classes.
* some additional system catalog changes have been
made that are not
visible to the user.
libpgtcl changes:
* The -oid option has been added to the "pg_result"
tcl command.
pg_result -oid returns oid of the last tuple
inserted. If the
last command was not an INSERT, then pg_result
-oid returns "".
* the large object interface is available as pg_lo*
tcl commands:
pg_lo_open, pg_lo_close, pg_lo_creat, etc.
Portability enhancements and New Ports:
* flex/lex problems have been cleared up. Now, you
should be able to use
flex instead of lex on any platforms. We no
longer make assumptions of
what lexer you use based on the platform you use.
* The Linux-ELF port is now supported. Various
configuration have been
tested: The following configuration is known to
work:
kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex
2.5.2, bison 1.24
with everything in ELF format,
New utilities:
* ipcclean added to the distribution
ipcclean usually does not need to be run, but if
your backend crashes
and leaves shared memory segments hanging around,
ipcclean will
clean them up for you.
New documentation:
* the user manual has been revised and libpq
documentation added.
Postgres95 Beta 0.02
Detailed Change List
Incompatible changes:
* The SQL statement for creating a database is
'CREATE DATABASE' instead
of 'CREATEDB'. Similarly, dropping a database is
'DROP DATABASE' instead
of 'DESTROYDB'. However, the names of the
executables 'createdb' and
'destroydb' remain the same.
New tools:
* pgperl - a Perl (4.036) interface to Postgres95
* pg_dump - a utility for dumping out a postgres
database into a
script file containing query commands. The
script files are in a ASCII
format and can be used to reconstruct the
database, even on other
machines and other architectures. (Also good
for converting
a Postgres 4.2 database to Postgres95
database.)
The following ports have been incorporated into
postgres95-beta-0.02:
* the NetBSD port by Alistair Crooks
* the AIX port by Mike Tung
* the Windows NT port by Jon Forrest (more stuff but
not done yet)
* the Linux ELF port by Brian Gallew
The following bugs have been fixed in
postgres95-beta-0.02:
* new lines not escaped in COPY OUT and problem with
COPY OUT when first
attribute is a '.'
* cannot type return to use the default user id in
createuser
* SELECT DISTINCT on big tables crashes
* Linux installation problems
* monitor doesn't allow use of 'localhost' as PGHOST
* psql core dumps when doing \c or \l
* the "pgtclsh" target missing from
src/bin/pgtclsh/Makefile
* libpgtcl has a hard-wired default port number
* SELECT DISTINCT INTO TABLE hangs
* CREATE TYPE doesn't accept 'variable' as the
internallength
* wrong result using more than 1 aggregate in a
SELECT
Postgres95 Beta 0.01
Initial release.
Timing Results
These timing results are from running the regression
test with the commands
% cd src/test/regress
% make all
% time make runtest
Timing under Linux 2.0.27 seems to have a roughly 5%
variation from run to run, presumably due to the
scheduling vagaries of multitasking systems.
v6.4beta
The times for this release are not directly
comparable to those for previous releases since some
additional regression tests have been included. In
general, however, v6.4 should be slightly faster than
the previous release (thanks, Bruce!).
Time System
02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux
2.0.30, gcc 2.7.2.1 -O2 -m486
v6.3
The times for this release are not directly
comparable to those for previous releases since some
additional regression tests have been included and
some obsolete tests involving time travel have been
removed. In general, however, v6.3 is substantially
faster than previous releases (thanks, Bruce!).
Time System
02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux
2.0.30, gcc 2.7.2.1 -O2 -m486
04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux
2.0.30, gcc 2.7.2.1 -O2 -m486
v6.1
Time System
06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30,
gcc 2.7.2 -O2 -m486
12:06 P-100, 48MB, Linux 2.0.29, gcc
39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O
-g
Index