Thread: Features list

Features list

From
Bruce Momjian
Date:
Attached is the up-to-date 6.4 features list.

I will keep this up-to-date, until the final release.


---------------------------------------------------------------------------


CHANGES IN THE 6.4 RELEASE
--------------------------

Bug Fixes
---------
Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
Remove char2-16 data types, use char/varchar(Darren)
Pqfn not handles a NOTICE message(Anders)
Short-term locks now retry locking at random times(David)
Fix up "ISO-style" timespan decoding and encoding(Thomas)
Fix problem with table drop after rollback of transaction(Vadim)
Change error message and remove non-functional update message(Vadim)
Fix for COPY array checking
Fix for SELECT 1 UNION SELECT NULL
Fix for buffer leaks in large object calls(Pascal)
Change owner from oid to int4 type(Bruce)
Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
Fix for usernames longer than eight characters(Tom)
Fix for shared invalidation cache overflow(Massimo)
Prevent file descriptor leaks in failed COPY's(Bruce)
Fix problem with username/passwords over 8 characters(Tom)

Enhancements
------------
Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
Show the index used in an explain(Zeugswetter)
Multi-byte awareness of many data types and functions, via configure(Tatsuo)
New configure --with-mb option(Tatsuo)
New initdb --pgencoding option(Tatsuo)
New createdb -E multibyte option(Tatsuo)
Select version(); now returns PostgreSQL version(Jeroen)
Libpq now allows asynchronous clients(Tom)
Allow cancel from client of backend query(Tom)
Psql now cancels query with Control-C(Tom)
Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
Add routines to convert between varchar and bpchar(Thomas)
Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
Add bit flags to support timezonehour and minute in data retrieval(Thomas)
Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
Fixes for unary minus parsing with leading spaces(Thomas)
Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
Check for and properly ignore FOREIGN KEY column constraints(Thomas)
Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
Enable HAVING clause but no fixes elsewhere yet.
Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
Save string type if specified for DEFAULT clause handling(Thomas)
Coerce operations involving different data types(Thomas)
Allow some index use for columns of different types(Thomas)
Add capabilities for automatic type conversion(Thomas)
Cleanups for large objects, so file is truncated on open(Peter)
Readline cleanups(Tom)
Allow psql  \f \ to make spaces as delimiter(Bruce)
Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
Msql compatibility library in /contrib(Aldrin)
Remove the requirement that ORDER/GROUP BY clause identifiers be 
included in the target list(David)
Convert columns to match columns in UNION clauses(Thomas)
Remove fork()/exec() and only do fork()(Bruce)
Jdbc cleanups(Peter)
Show backend status on ps command line(only works on some platforms)(Bruce)
Pg_hba.conf now has a sameuser option in the database field
Make lo_unlink take oid param, not int4
New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
Libpgtcl now gets async notifies from libpq(Tom)
libpgtcl cleanups(Tom)
New locale patch, see docs/README/locale(Oleg)
Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
New contrib/lo code for large object orphan removal(Peter)
New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes
feature, see /doc/README.mb(Tatsuo)
/contrib/noupdate code to revoke update permission on a column
Libpq can now be compiled on win32(Magnus)
Add PQsetdbLogin() in libpq
Two styles we agreed upon for database descriptors(Thomas)
New 8-byte integer type, checked by configure for OS support(Thomas)
Better support for quited table/column names(Thomas)
Surround table and column names with double-quotes(Thomas) in generated sql code to preserve case (SQL92
syntax)(Thomas)
New libpqrequestCancel(Tom)
PQreset() now works with passwords(Tom)
Handle case of GROUP BY target list column number out of range(David)
Allow UNION in subselects
Add auto-size to screen to \d? commands(Bruce)
Use UNION to show all \d? results in one query(Bruce)
Add \d? field search feature(Bruce)
Pg_dump issues fewer \connect requests(Tom)
Document pg_dump -z flag in manual page(Tom)
Add HAVING clause with full support for subselects and unions(Stephan)
Full text indexing routines in contrib/fulltextindex(Marteen)
Transaction ids now stored in shared memory(Vadim)
New PGCLIENTENCODING when issuing COPY command(Tatsuo)
Support for SQL92 syntax "SET NAMES"(Tatsuo)
Support for LATIN2-5(Tatsuo)
Add UNICODE regression test case(Tatsuo)
Lock manager cleanup, new locking modes for LLL(Vadim)
Allow index use with OR clauses(Bruce)
Allows "SELECT NULL ORDER BY 1;"
Explain VERBOSE prints the plan, and now pretty-prints the plan to
the postmaster log file(Bruce)
Add Indices display to \d command(Bruce)
Allow GROUP BY on functions(David)
New pg_class.relkind for large objects(Bruce)
New way to send libpq NOTICE messages to a different location(Tom)
New \w write command to psql(Bruce)
New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
Allow binary-compatible indices to be considered when checking for valid
indices for restriction clauses containing a constant(Thomas)
New ISBN/ISSN code in /contrib/isbn_issn
Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
New rewrite system fixes many problems with rules and views(Jan)* Rules on relations work* Event qualifications on
insert/update/deletework* New OLD variable to reference CURRENT, CURRENT will be remove in future* Update rules can
referenceNEW and OLD in rule qualifications/actions* Insert/update/delete rules on views work* Multiple rule actions
arenow supported, surrounded by parentheses* Regular users can create views/rules on tables they have RULE permits*
Rulesand views inherit the permissions on the creator* No rules at the column level* No UPDATE NEW/OLD rules* New
pg_tables,pg_indexes, pg_rules and pg_views system views* Only a single action on SELECT rules* Total rewrite overhaul,
perhapsfor 6.5* handle subselects* handle aggregates on views* handle insert into select from view works* 
 

System indexes are now multi-key(Bruce)
Oidint2, oidint4, and oidname types are removed(Bruce)
Use system cache for more system table lookups(Bruce)
New backend programming language PL/pgSQL in backend/pl(Jan)
New SERIAL data type, auto-creates sequence/index(Thomas)
Enable assert checking without a recompile(Massimo)
User lock enhancements(Massimo)
New setval() command to set sequence value(Massimo)
Auto-remove unix socket file on startup if no postmaster running(Massimo)
Conditional trace package(Massimo)
New UNLISTEN command(Massimo)
Psql and libpq now compile under win32 using win32.mak(Magnus)
Lo_read no longer stores trailing NULL(Bruce)
Identifiers are now truncated to 31 characters internally(Bruce)
Createuser options now availble on the command line
PL/pgSQL backend programming language(Jan)
Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
Prevent file descriptor leaf from failed COPY(Bruce)
New pg_upgrade command(Bruce)
Updated /contrib directories(Massimo)
New CREATE TABLE DEFAULT VALUES statement available(Thomas)
New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
New DECLARE and FETCH feature(Thomas)
libpq's internal structures now not exported(Tom)
Allow up to 8 key indexes(Bruce)
Remove ARCHIVE keyword, that is no longer used(Thomas)
pg_dump -n flag to supress quotes around indentifiers
disable system columns for views(Jan)
net INET and CIDR types for network addresses(TomH, Paul)
no more double quotes in psql output
pg_dump now dumps views(Terry)
new SET QUERY_LIMIT(Tatsuo,Jan)

Source Tree Changes
-------------------
/contrib cleanup(Jun)
Inline some small functions called for every row(Bruce)
Alpha/linux fixes
Hp/UX cleanups(Tom)
Multi-byte regression tests(Soonmyung.)
Remove --disabled options from configure
Define PGDOC to use POSTGRESDIR by default
Make regression optional
Remove extra braces code to pgindent(Bruce)
Add bsdi shared library support(Bruce)
New --without-CXX support configure option(Brook)
New FAQ_CVS
Update backend flowchart in tools/backend(Bruce)
Change atttypmod from int16 to int32(Bruce, Tom)
Getrusage() fix for platforms that do not have it(Tom)
Add PGUSER to libpq man page
NS32K platform fixes(Phil Nelson, John Buller)
Sco 7/UnixWare 2.x fixes(Billy,others)
Sparc/Solaris 2.5 fixes(Ryan)
Pgbuiltin.3 is obsolete, move to doc files(Thomas)
Even more documention(Thomas)
Nextstep support(Jacek)
Aix support(David)
pginterface manual page(Bruce)
shared libraries all have version numbers
merged all OS-specific shared library defines into one file
smarter TCL/TK configuration checking(Billy)
smarter perl configuration(Brook)


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


RE: [HACKERS] Features list

From
"Taral"
Date:
> Attached is the up-to-date 6.4 features list.

This is *impressive*... I think everyone deserves a round of applause...
Feature improvement lists like this I've seen cause increases in *major*
version number :)

Thanks a lot :)

Taral



Re: [HACKERS] Features list

From
Bruce Momjian
Date:
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> > Attached is the up-to-date 6.4 features list.
> 
> This is *impressive*... I think everyone deserves a round of applause...
> Feature improvement lists like this I've seen cause increases in *major*
> version number :)
> 
> Thanks a lot :)

This is the usual size for our changes list, ~185 lines.  If you look in
the HISTORY file, you will see previous releases had a similar list of
features.

However, it does impress me with every release.


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [HACKERS] Features list

From
"Thomas G. Lockhart"
Date:
> 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

Re: [HACKERS] Features list

From
Marc Howard Zuckman
Date:
On Sat, 24 Oct 1998, Bruce Momjian wrote, in part:

> CHANGES IN THE 6.4 RELEASE
> --------------------------
> 
> Bug Fixes
> ---------
> 
> Enhancements
> ------------
> Enable HAVING clause but no fixes elsewhere yet.
> Add HAVING clause with full support for subselects and unions(Stephan)

These two comments raise a question as to whether the having clause
is fully functional.  Is it thought to be fully implemented and bug
free?

Marc Zuckman



Re: [HACKERS] Features list

From
Bruce Momjian
Date:
> On Sat, 24 Oct 1998, Bruce Momjian wrote, in part:
> 
> > CHANGES IN THE 6.4 RELEASE
> > --------------------------
> > 
> > Bug Fixes
> > ---------
> > 
> > Enhancements
> > ------------
> > Enable HAVING clause but no fixes elsewhere yet.
> > Add HAVING clause with full support for subselects and unions(Stephan)
> 
> These two comments raise a question as to whether the having clause
> is fully functional.  Is it thought to be fully implemented and bug
> free?

Yes.  Bug free.  It was even available in 6.3.2, but considered buggy.

--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [HACKERS] Features list

From
Bruce Momjian
Date:
> On Sat, 24 Oct 1998, Bruce Momjian wrote, in part:
> 
> > CHANGES IN THE 6.4 RELEASE
> > --------------------------
> > 
> > Bug Fixes
> > ---------
> > 
> > Enhancements
> > ------------
> > Enable HAVING clause but no fixes elsewhere yet.
> > Add HAVING clause with full support for subselects and unions(Stephan)
> 
> These two comments raise a question as to whether the having clause
> is fully functional.  Is it thought to be fully implemented and bug
> free?

Full functional.

--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [HACKERS] Features list

From
jwieck@debis.com (Jan Wieck)
Date:
Bruce Momjian wrote:

>
> Attached is the up-to-date 6.4 features list.
>
> I will keep this up-to-date, until the final release.
>
> Enhancements
> ------------
> Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
> Show the index used in an explain(Zeugswetter)

    EXPLAIN  invokes  rule system and shows plan(s) for rewritten
    queries.

> New backend programming language PL/pgSQL in backend/pl(Jan)
> [...]
> PL/pgSQL backend programming language(Jan)

    No need to mention it twice.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #

Re: [HACKERS] Features list

From
Bruce Momjian
Date:
Done.



> Bruce Momjian wrote:
> 
> >
> > Attached is the up-to-date 6.4 features list.
> >
> > I will keep this up-to-date, until the final release.
> >
> > Enhancements
> > ------------
> > Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
> > Show the index used in an explain(Zeugswetter)
> 
>     EXPLAIN  invokes  rule system and shows plan(s) for rewritten
>     queries.
> 
> > New backend programming language PL/pgSQL in backend/pl(Jan)
> > [...]
> > PL/pgSQL backend programming language(Jan)
> 
>     No need to mention it twice.


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026