> Attached is the up-to-date 6.4 features list.
> I will keep this up-to-date, until the final release.
Hi Bruce. I had converted all of the previous entries (v6.3 and before)
to sgml to allow inclusion in the Admin Guide. The conversion was really
easy in that I just laid the entire summary as you have it into a
<programlisting> markup block.
The nice thing is that we have a prose summary of the most visible or
important changes just above that, with full markup. If we could do the
same for your v6.4 list, then we can include it in the full docs and
also have the shorter plain-text version.
Take a look in the new html Admin Guide to see the results.
I'm starting on repackaging the ports and installation info from the
Admin Guide into a replacement for INSTALL. Included is an early sample
of the results for your comments and suggestions (there are a few things
which need to be fixed up). So for v6.4, plain-text INSTALL and HISTORY
should be able to be easily generated from sgml sources (I generate RTF
and then save as formatted text from ApplixWare, roughly the same way I
do the Postscript docs).
Do you know if install.sgml and INSTALL are in sync?
btw, a rough page count shows over 500 pages of docs for this upcoming
release, with some significant new stuff. That's not even counting the
~100 flat files elsewhere in the source tree :*O
- TomPostgreSQL 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-relationalconcepts now becoming available in some commercial databases. It provides SQL92/SQL3
languagesupport, transaction integrity, and type extensibility. PostgreSQL is a public-domain, open source
descendantof 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
noticeand this paragraph and the following two paragraphs appear in all copies. In no event shall the
Universityof 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
Universityof California has been advised of the possibility of such damage. The University of
Californiaspecifically disclaims any warranties, including, but not limited to, the implied warranties of
merchantabilityand 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
trademarksof Sun Microsystems, Inc. DEC, DECstation, Alpha AXP and ULTRIX are trademarks of Digital
EquipmentCorp. PA-RISC and HP-UX are trademarks of Hewlett-Packard Co. OSF/1 is a trademark of the Open
SoftwareFoundation.
Chapter 2. Ports
Currently Supported Platforms
Postgres is available free of charge. This manual describes version 6.4 of Postgres. The authors have
compiledand 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
standarddistribution. 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
andlibraries.
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
atwww.postgresql.org. The installation notes below assume the following (except where noted): o
Commandsare Unix-compatible. See note below. o Defaults are used except where noted. o User postgres is the
Postgressuperuser. 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
thetcsh shell. Except where noted, they will probably work on most systems. Commands like ps and tar vary
wildlyon 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
Systemdistribution).
Requirements to Run Postgres
Information on supported platforms is another chapter. In general, most Unix-compatible platforms
withmodern libraries should be able to run Postgres. You should have at least 8 MB of memory and at least 45
MBof disk space to hold the source, binaries, and user databases. After installation you may reduce this to
about3 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
filesin 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
containthe latest installation information. Please note that a "tested" platform in the list
givenearlier simply means that someone went to the effort at some point of making sure that a Postgres
distributionwould compile and run on this platform without modifying the code. Since the current
developerswill not have access to all of these platforms, some of them may not compile cleanly and pass
theregression tests in the current release due to minor problems. Any such known problems and their
solutionswill 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
(excludingyour database) and 1 Mbyte for an empty database. The database will temporarily
growto 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
youhave 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
flatfile. 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
is2.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
upgradeflex. You may get it at ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz. If you need flex
anddon'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
toldto 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
commentin the HACKERS mailing list. Full releases always require a dump/reload from previous releases.
Itis therefore a bad idea to skip this step. Also, do not use the pg_dumpall script from v6.0 or
everythingwill be owned by the Postgres super user. Type (with the gunzip line and the following line
typedas 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
runningpg_dumpall. However, unless you have a special reason for doing this, don't do it. If the
pg_dumpallcommand 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
youare upgrading from a version prior to Postgres95 v1.09 then you must back up your database, install
Postgres95v1.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.confto allow only you on, then bring postmaster back up. 7. If you are
upgradingan existing system then kill the postmaster. Type ps -ax | grep postmaster This
shouldlist the process numbers for a number of processes. Type the following line, with "???" replaced
bythe 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
directoriesout of the way. If you are short of disk space then you may have to back up and delete the
directoriesinstead. If you do this, save the old database in the /usr/local/pgsql/data directory tree.
Ata 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
willalso 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
thenew 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
sourcepath 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
andask you to choose one. A lot of times, an appropriate template file is chosen for you, and you can
justpress Enter to accept the default. If the default is not appropriate, then type in the appropriate
templatefile and press Enter. (If you do this, then send email to scrappy@hub.org stating the output of
theprogram './config.guess' and what the template file should be.) Once you have entered the
templatefile, you will be asked a number of questions about your particular configuration. These can be
skippedby 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
forthe 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
listensfor 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
Thelast line displayed will hopefully be "All of PostgreSQL is successfully made. Ready to install." At
thispoint, or earlier if you wish, type control-C to get out of tail. (If you have problems later on
youmay 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
thatyou will probably find a number of warning messages in make.log. Unless you have problems later on,
thesemessages may be safely ignored. If the compiler fails with an error stating that the flex
commandcannot 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.infor further details. 13. Install the program. Type cd
/usr/src/pgsql/src gmake install >& make.install.log & tail -f make.install.log The last
linedisplayed will be "gmake[1]: Leaving directory `/usr/src/pgsql/src/man'". At this point, or earlier
ifyou 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.
Ina csh shell, type setenv LD_LIBRARY_PATH /usr/local/pgsql/lib Please note that
theabove commands may vary wildly for different operating systems. Check the platform specific notes,
suchas 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,
thentry to create the database again. 15. If it has not already been done, then prepare account
postgresfor using Postgres. Any account that will use Postgres must be similarily prepared. (The
followinginstructions are for a bash shell. Adapt accordingly for other shells.) Add the following lines
toyour 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
withthe remaining steps. The easiest way to do this is to type: source ~/.bash_profile 16.
Createthe 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
locatedin the default location, i.e. if PGDATA is set to point elsewhere, then the location of this
filewill change accordingly.) This file should be made read only again once you are finsihed. If you
areupgrading from v6.0 you can copy file pg_hba.conf from your old database on top of the one in your
newdatabase, 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
followshere: Start the postmaster daemon running in the background by typing cd
nohuppostmaster > regress.log 2>&1 & Run postmaster from your Postgres super user account (typically
accountpostgres). 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
donot need to type "gmake clean" if this is the first time you are running the tests. You should get on
thescreen (and also written to file ./regress.out) a series of statements stating which tests passed
andwhich tests failed. Please note that it can be normal for some of the tests to "fail". For the
failedtests, use diff to compare the files in directories ./results and ./expected. If float8 failed,
typesomething 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
setthe timezone correctly for your platform, etc. "Failures" of this type do not indicate a problem
withPostgres. 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.2the following tests "failed": float8 and geometry "failed" due to minor precision differences in
floatingpoint 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
natureof 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,
incorporatingmany bug fixes from v6.2.1, and that previous versions of Postgres have been in use
successfullyfor 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
variableTZ then one way to do this is to log out of, then back into, account postgres. 21. Start the
postmasterdaemon running. Type cd nohup postmaster > server.log 2>&1 & Run postmaster
fromyour 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
postgresAND 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
maynot be set properly. The examples are as follows. Use them with extreme caution. a) Edit file
rc.localon 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
RedHatv4.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.log2>&1" /dev/null (The author of this example says this example will revive
thepostmaster if it dies, but he doesn't know if there are other side effects.) d) The contrib/linux
areaof the Postgres distribution has an example init.d script compatible with and tested using recent
RedHatpackages. 23. If you haven't already done so, this would be a good time to modify your computer
todo 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
crontabfor 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
systemthen install your old database. Type cd psql -e template1 < db.out If your
pre-v6.2database uses either path or polygon geometric data types, then you will need to upgrade any
columnscontaining 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
factfrom 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
afteryourself. Type rm -rf /usr/src/pgsql_6_0 rm -rf /usr/local/pgsql_6_0 # Also
deleteold 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
mightdo 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.hpmanpage.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
ImplementionGuide, 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
thesupported platforms. We therefore ask you to let us know if you did or did not get Postgres to work
onyou system. Please send a mail message to pgsql-ports@postgresql.org telling us the following: - The
versionof 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
testscleanly? 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
reportthese. 29. Now create, access and manipulate databases as desired. Write client programs to
accessthe 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
regressiontests have passed, you'll want to see Postgres do something. That's easy. Invoke the interactive
interfaceto 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
semicolonor 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
directorymay be particularly useful. If Postgres failed to compile on your computer then fill out the form
infile /usr/src/pgsql/doc/bug.template and mail it to the location indicated at the top of the form.
Mailquestions to pgsql-questions@postgresql.org. For more information on the various mailing lists, see
http://www.postgresql.organd 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
availablein 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
enablesdynamic link loading capability to the Postgres port. The dld library can be obtained from the
sunsitelinux 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
headerfiles for shared libary and semaphore stuff. Tom just happens to sell such a product so contact him
forinformation. He has also indicated that binary releases of Postgres for NEXTSTEP will be made available
tothe 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,
frombreakage 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
postmasteris not running. You should re-link any custom applications that use Postgres libraries. For
upgradesfrom 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
pageimprovements(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
forbuffer over-runs detected(Maurice Gittens) fix for buffer overrun in libpgtcl(Randy Kunkee) fix for UNION
withDISTINCT 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)
RemoveDISTDIR(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
clientsand servers. o Minor updates to allowed SQL syntax. o Improvements to the configuration
autodetectionfor 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
postmasteris not running. You should re-link any custom applications that use Postgres libraries. For
upgradesfrom 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)
largeobject fix for pg_dump and tclsh (alvin) LIKE fix for multiple adjacent underscores fix for redefining
builtinfunctions(Thomas) ultrix4 cleanup upgrade to pg_access 0.83 updated CLUSTER manual page
multi-bytecharacter 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
optionalTABLE 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
compilefix(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
Manynew 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
Socketinterface for client/server connection. This is the default now so you may need to start postmaster
withthe ?-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
providea better solution for your queries. I think you will find that there are more uses for subselects
thanyou may think. Vadim has put us on the big SQL map with subselects, and fully functional ones too. The
onlything you can't do with subselects is to use them in the target list. Second, 6.3 uses unix domain
socketsrather 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
alsohave 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
otherchanges 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
isa new table, pg_shadow, which is used to store user information and user passwords, and it by default
onlySELECT-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
haveSELECT 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
complaintshave been made about inadequate documenation in previous releases. Thomas has put much effort
intomany 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
\dcommand for types, operators, etc. Also, views have their own permissions now, not based on the
underlyingtables, so permissions on them have to be set separately. Check /pgsql/interfaces for some new
waysto talk to Postgres. This is the first release that really required an explanation for existing users.
Inmany ways, this was necessary because the new release removes many limitations, and the work-arounds
peoplewere 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
previousrelease of Postgres.
Detailed Change List
Bug Fixes --------- Fix binary cursors broken by MOVE implementation(Vadim) Fix for tcl
librarycrash(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
select1=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
problemslike newer lock waiters getting lock before older waiters, and having readlock people
notshare locks if a writer is waiting for a lock, and waiting writers not getting
priorityover 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
correcthash 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)
Generateelog(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)
Fixfor 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
PRIMARYKEY 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-stylecasting ("::") 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
shorterstrings 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)
SupportSQL92 syntax for type coercion of literal strings (e.g. "DATETIME 'now'")(Thomas) Add
conversionsfor 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
isdone, was turned off in <= 6.2.1(Vadim) New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) New
PostgresProcedural Language (PL) backend interface(Jan) Rename pg_dump -H option to -h(Bruce) Add Java
supportfor passwords, European dates(Peter) Use indices for LIKE and ~, !~ operations(Bruce) Add hash
functionsfor 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/WITHLOCATION 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
TZbackend 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
variableto frontend and backend initialization(Thomas) Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
frontend library initialization environment variables(Thomas) Regression tests time zone
automaticallyset 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
32characters(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
dayof 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
separatefrom 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
toINSERT(Bruce) varchar() stores only necessary bytes on disk(Bruce) Fix for BLOBs(Peter) Mega-Patch for
JDBC...seeREADME_6.3 for list of changes(Peter) Remove unused "option" from PQconnectdb() New LOCK
commandand 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
typesin 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
separatelyfrom 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
suchpermissions. 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)
Fixfor libptcl make(Tatsuo) AIX patch(Darren) Change IS TRUE, IS FALSE, ... to expressions using "="
ratherthan function calls to istrue() or isfalse() to allow optimization(Thomas) Various fixes
NetBSD/Sparcrelated(TomH) Alpha linux locking(Travis,Ryan) Change elog(WARN) to elog(ERROR)(Bruce) FAQ
forFreeBSD(Marc) Bring in the PostODBC source tree as part of our standard distribution(Marc) A minor
patchfor 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
releaseon v6.2. For upgrades from pre-v6.2 systems, a full dump/reload is required. Refer to the v6.2
releasenotes 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
avoiddump/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
largerrange of true/false as boolean values(Thomas) Support output of "now" and "current"(Thomas)
HandleDEFAULT 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
newlibpq 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
thatthe 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
wasimproved 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
geometricintersections 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(MichaelReifenberg) Fix very old bug which made tuples changed/inserted by a commnd
visibleto the command itself (so we had multiple update of updated tuples, etc)(Vadim) Fix for
SELECTnull, 'fail' FROM pg_am (Patrick) SELECT NULL as EMPTY_FIELD now allowed(Patrick) Remove un-needed
signalstuff 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
parametersin 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
extendedcomments ("/* ... */") using exclusive states(Thomas) Add "//" single-line comments(Bruce)
Removesome restrictions on characters in operator names(Thomas) DEFAULT and CONSTRAINT for tables
implemented (SQL92)(Vadim & Thomas) Add text concatenation operator and function (SQL92)(Thomas)
SupportWITH TIME ZONE syntax (SQL92)(Thomas) Support INTERVAL unit TO unit syntax (SQL92)(Thomas) Define
typesDOUBLE 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
reservedwords, 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
conflictingoperators for different geometric data types(Thomas) Replace distance operator "<===>" with
"<->"(Thomas) Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas) Add
routinesfor 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
upbackend 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
whenno 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,
(DanielHarris) mkLinux patches (Tatsuo Ishii) Change geometric box terminology from "length" to
"width"(Thomas) Deprecate temporary unstored slope fields in geometric code(Thomas) Remove restart
instructionsfrom 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.attnvalsto attdisbursion(Bruce) "intro/unix" manual page now "pgintro"(Bruce) "built-in" manual
pagenow "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_dumpallto preserve ownership of all tables/objects(Bruce) new psql \connect option allows
changingusernames 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
handlingfor 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
commandscan now have trailing semicolon(Bruce) fix memory leak in psql when using \g(Bruce) major fix
forendian 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
polygonoutput 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
ormultiple tables (giving the optimizer a choice on order of evaluation). Several regression tests have
beenmodified to explicitly order the results, and hence are insensitive to optimizer choices. A few
regressiontests are for data types which are inherently unordered (e.g. points and time intervals) and
testsinvolving those types are explicitly bracketed with set geqo to 'off' and reset geqo. The
interpretationof array specifiers (the curly braces around atomic values) appears to have changed sometime
afterthe 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
isdue to differences in implementations of pow() and exp() and the signaling mechanisms used for overflow
andunderflow 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
producerandom 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.
Thosemigrating from earlier 1.* releases should first upgrade to 1.09 because the COPY output format was
improvedfrom the 1.02 release.
Detailed Change List
Bug Fixes --------- packet length checking in library routines lock manager priority patch
checkfor under/over flow of float8(Bruce) multi-table join fix(Vadim) SIGPIPE crash fix(Darren) large
objectfixes(Sven) allow btree indexes to handle NULLs(Vadim) timezone fixes(D'Arcy) select SUM(x) can
returnNULL 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
foruse 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
deletedtuples re-incarnation caused by vacuum (Vadim) fix SELECT varchar()/char() INTO TABLE made
zero-lengthfields(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-uniqueinsert 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
largechunks 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
numbergenerator(Vadim) GROUP BY function now possible(Vadim) re-organize regression test(Thomas,Marc)
newoptimizer 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,
andfor 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-sidedplans (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
psqlcommands (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
optionadded(Marc) OS-specific configuration options removed(Marc) new OS-specific template files(Marc)
nomore 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)
mergeduplicate 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
wasimproved 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
memorywrites(Kurt) Fix elusive btree range/non-range bug(Dan) Fix for hash indexes on some types like time
anddate 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
handlingof options and changed full_path option name Fixed output of group acl permissions Memory leaks
(huntand destroy with tools like Purify(Kurt) Minor improvements to rules system NOTIFY fixes New
assertsfor 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
errorswhen 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
withmultiple outputs Removed duplicate system oid's SELECT * INTO TABLE . GROUP/ORDER BY gives unlink
errorif table exists(Bruce) Several fixes for queries that crashed the backend Starting quote in insert
stringerrors(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/userlevel 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)
Allowactual 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)
Allownon-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)
Changedefault decimal constant representation from float4 to float8(Bruce) European date format now set when
postmasteris started Execute lowercase function names if not found with exact case Fixes for
aggregate/GROUPprocessing, 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)
ImplementIN 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,
semicolonsanywhere 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)
Speedup vacuum(Vadim) Vacuum now had VERBOSE option(Bruce)
Source tree changes ------------------- All functions now have prototypes that are compared
againstthe calls Allow asserts to be disabled easly from Makefile.global(Bruce) Change oid constants
usedin code to #define names Decoupled sparc and solaris defines(Kurt) Gcc -Wall compiles cleanly with
warningsonly from unfixable constructs Major include file reorganization/reduction(Marc) Make now stops
oncompile failure(Bryan) Makefile restructuring(Bryan, Marc) Merge bsdi_2_1 to bsdi(Bruce) Monitor
programremoved Name change from Postgres95 to PostgreSQL New config.h file(Marc, Bryan) PG_VERSION now
setto 6.0 and used by postmaster Portability additions, including Ultrix, DG/UX, AIX, and Solaris
Reducedthe number of #define's, centeralized #define's Remove duplicate OIDS in system tables(Dan)
Removeduplicate system catalog info or report mismatches(Dan) Removed many os-specific #define's
Restructuredobject 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
actuallyincluded 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
postgres951.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.01or 1.02 databases. This is done by running the new 1.02.1 server against your own 1.01 or 1.02
databaseand 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
fileand saved them in addfunc.sql: % psql testdb -f addfunc.sql Those upgrading 1.02 databases
willget a warning when executing the last two statements in the file because they are already present
in1.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
stringsare 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);
createoperator ~* (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
atftp.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
depreciatedin 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
pointerbefore 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
postgres951.01. If you are starting afresh with postgres95 1.01 and do not need to migrate old databases,
youdo not need to read any further. In order to postgres95 version 1.01 with databases created with
postgres95version 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
whetheryou 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_hbashows an example syntax. b. If you do not want host-based authentication, you
cancomment out the line HBA = 1 in src/Makefile.global Note that
host-basedauthentication is turned on by default, and if you do not take steps A or B above,
theout-of-the-box 1.01 will not allow you to connect to 1.0 databases. 3. Compile and install 1.01,
butDO NOT do the initdb step. 4. Before doing anything else, terminate your 1.0 postmaster, and
backupyour 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
from5.0 to 5.1 7. Start up a new 1.01 postmaster 8. Add the new built-in functions and operators of
1.01to 1.0 databases. This is done by running the new 1.01 server against your own 1.0 database and
applyingthe 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
thefollowing 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
functionoideqint4 (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
thesteps outlined in the MIGRATION_from_1.0_to_1.01 file. If those steps are not taken, 1.01 is not
compatiblewith 1.0 database.
Enhancements: * added PQdisplayTuples() to libpq and changed monitor and psql to use it * added
NeXTport (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
havebeen 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
ofname is set by the NAMEDATALEN #define in src/Makefile.global * a readable reference manual that
describesthe 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'sregex code regardless of platform. The regex code is included in the distribution * added
functionsand operators for case-insensitive regular expressions. The operators are ~* and !~*. *
pg_dumpuses COPY instead of SELECT loop for better performance
Bug fixes: * fixed an optimizer bug that was causing core dumps when functions calls were
usedin comparisons in the WHERE clause * changed all uses of getuid to geteuid so that effective uids
areused * 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
andmodifiable for any purpose. Please read the COPYRIGHT file. Thanks to Professor Michael Stonebraker
formaking this possible.
Incompatibilities: * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
EUROPEANSTYLE). This follows SQL-92 specs. * "delimiters" is now a keyword
Enhancements: * sql LIKE syntax has been added * copy command now takes an optional USING
DELIMITERspecification. 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
otherdatabases in psql now works. * bad pg_proc entry for float4inc() is fixed * users with
usecreatedbfield set can now create databases without having to be usesuper * remove access
controlentries 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 *
typographicerrors 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
syntaxis replaced by GRANT/REVOKE syntax. * float literals (eg. 3.14) are now of type float4 (instead
offloat8 in previous releases); you might have to do typecasting if you depend on it being of
typefloat8. 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
int2to int4 to allow wider range of Unix user ids. * the netbsd/freebsd/bsd o/s ports have been
consolidatedinto a single BSD44_derived port. (thanks to Alistair Crooks)
SQL standard-compliance (the following details changes that makes postgres95 more compliant to the
SQL-92standard): * 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
quotingstring literals; '' (in addition to \') is supported as means of inserting a single quote in
astring * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used (Also, aggregates can
nowbe overloaded, i.e. you can define your own MAX aggregate to take in a user-defined type.) *
CHANGEACL 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/updateaccess 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,
aggregatesrun 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
mechanismnow 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,
uncommentthe line in src/backend/utils/elog.h: /* define ELOG_TIMESTAMPS */ * On an
accesscontrol violation, the message "Either no such class or insufficient privilege" will
begiven. This is the same message that is returned when a class is not found. This dissuades
non-privilegedusers from guessing the existence of privileged classes. * some additional system catalog
changeshave 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
-oidreturns oid of the last tuple inserted. If the last command was not an INSERT, then pg_result
-oidreturns "". * 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
ableto use flex instead of lex on any platforms. We no longer make assumptions of what lexer you
usebased 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
cleanthem 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
namesof 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
intoa script file containing query commands. The script files are in a ASCII format and
canbe 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
problemwith 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'tallow use of 'localhost' as PGHOST * psql core dumps when doing \c or \l * the "pgtclsh" target
missingfrom src/bin/pgtclsh/Makefile * libpgtcl has a hard-wired default port number * SELECT
DISTINCTINTO TABLE hangs * CREATE TYPE doesn't accept 'variable' as the internallength * wrong result
usingmore 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
schedulingvagaries of multitasking systems.
v6.4beta
The times for this release are not directly comparable to those for previous releases since some
additionalregression tests have been included. In general, however, v6.4 should be slightly faster than the
previousrelease (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
additionalregression 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