Skip to content
Snippets Groups Projects
HISTORY 142 KiB
Newer Older
     Release date: 2002-02-04

Overview

   This release improves PostgreSQL for use in high-volume applications.

   Major changes in this release:

   VACUUM

           Vacuuming no longer locks tables, thus allowing normal user access
           during the vacuum. A new "VACUUM FULL" command does old-style
           vacuum by locking the table and shrinking the on-disk copy of the
           table.

   Transactions

           There is no longer a problem with installations that exceed four
           billion transactions.

   OID's

           OID's are now optional. Users can now create tables without OID's
           for cases where OID usage is excessive.

   Optimizer

           The system now computes histogram column statistics during
           "ANALYZE", allowing much better optimizer choices.

   Security

           A new MD5 encryption option allows more secure storage and
           transfer of passwords. A new Unix-domain socket authentication
           option is available on Linux and BSD systems.

   Statistics

           Administrators can use the new table access statistics module to
           get fine-grained information about table and index usage.

   Internationalization

           Program and library messages can now be displayed in several
           languages.

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

Migration to version 7.2

   A dump/restore using "pg_dump" is required for those wishing to migrate
   data from any previous release.

   Observe the following incompatibilities:

     * The semantics of the "VACUUM" command have changed in this release.
       You may wish to update your maintenance procedures accordingly.

     * In this release, comparisons using = NULL will always return false (or
       NULL, more precisely). Previous releases automatically transformed
       this syntax to IS NULL. The old behavior can be re-enabled using a
       "postgresql.conf" parameter.

     * The "pg_hba.conf" and "pg_ident.conf" configuration is now only
       reloaded after receiving a SIGHUP signal, not with each connection.

     * The function "octet_length()" now returns the uncompressed data
       length.

Peter Eisentraut's avatar
Peter Eisentraut committed
     * The date/time value 'current' is no longer available. You will need to
     * The timestamp() function is no longer available.  Use timestamp
Peter Eisentraut's avatar
Peter Eisentraut committed
       'string' instead, or CAST.
   The SELECT ... LIMIT #,# syntax will be removed in the next release. You
   should change your queries to use separate LIMIT and OFFSET clauses, e.g.
   LIMIT 10 OFFSET 20.

     ----------------------------------------------------------------------
  Server Operation

   Create temporary files in a separate directory (Bruce)
   Delete orphanded temporary files on postmaster startup (Bruce)
   Added unique indexes to some system tables (Tom)
   System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
   Renamed pg_log to pg_clog (Tom)
   Enable SIGTERM, SIGQUIT to kill backends (Jan)
   Removed compile-time limit on number of backends (Tom)
   Better cleanup for semaphore resource failure (Tatsuo, Tom)
   Allow safe transaction ID wraparound (Tom)
   Removed OID's from some system tables (Tom)
   Removed "triggered data change violation" error check (Tom)
   SPI portal creation of prepared/saved plans (Jan)
   Allow SPI column functions to work for system columns (Tom)
   Long value compression improvement (Tom)
   Statistics collector for table, index access (Jan)
   Truncate extra-long sequence names to a reasonable value (Tom)
   Measure transaction times in milliseconds (Thomas)
   Fix TID sequential scans (Hiroshi)
   Superuser ID now fixed at 1 (Peter E)
   New pg_ctl "reload" option (Tom)

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

  Performance

   Optimizer improvements (Tom)
   New histogram column statistics for optimizer (Tom)
   Reuse write-ahead log files rather than discarding them (Tom)
   Cache improvements (Tom)
   IS NULL, IS NOT NULL optimizer improvement (Tom)
   Improve lock manager to reduce lock contention (Tom)
   Keep relcache entries for index access support functions (Tom)
   Allow better selectivity with NaN and infinities in NUMERIC (Tom)
   R-tree performance improvements (Kenneth Been)
   B-tree splits more efficient (Tom)

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

  Privileges

   Change UPDATE, DELETE permissions to be distinct (Peter E)
   New REFERENCES, TRIGGER privileges (Peter E)
   Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
   New has_table_privilege() function (Joe Conway)
   Allow non-superuser to vacuum database (Tom)
   New SET SESSION AUTHORIZATION command (Peter E)
   Fix bug in privilege modifications on newly created tables (Tom)
   Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)

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

  Client Authentication

   Fork postmaster before doing authentication to prevent hangs (Peter E)
   Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
   Add a password authentication method that uses MD5 encryption (Bruce)
   Allow encryption of stored passwords using MD5 (Bruce)
   PAM authentication (Dominic J. Eidson)
   Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)

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

  Server Configuration

   Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
   New parameter to set default transaction isolation level (Peter E)
   New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
   New parameter to control memory usage by VACUUM (Tom)
   New parameter to set client authentication timeout (Tom)
   New parameter to set maximum number of open files (Tom)

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

  Queries

   Statements added by INSERT rules now execute after the INSERT (Jan)
   Prevent unadorned relation names in target list (Bruce)
   NULLs now sort after all normal values in ORDER BY (Tom)
   New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
   New SHARE UPDATE EXCLUSIVE lock mode (Tom)
   New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
   Fix problem with LIMIT and subqueries (Tom)
   Fix for LIMIT, DISTINCT ON pushed into subqueryies (Tom)
   Fix nested EXCEPT/INTERSECT (Tom)

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

  Schema Manipulation

   Fix SERIAL in temporary tables (Bruce)
   Allow temporary sequences (Bruce)
   Sequences now use int8 internally (Tom)
   New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
   Make OIDs optional using WITHOUT OIDS (Tom)
   Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
   Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
   New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
   Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
   Allow column renaming in views
   Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
   Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
   ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
   DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
   Add automatic return type data casting for SQL functions (Tom)
   Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
   Enable partial indexes (Martijn van Oosterhout)

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

  Utility Commands

   Add RESET ALL, SHOW ALL (Marko Kreen)
   CREATE/ALTER USER/GROUP now allow options in any order (Vince)
   Add LOCK A, B, C functionality (Neil Padgett)
   New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
   New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
   Disable COPY TO/FROM on views (Bruce)
   COPY DELIMITERS string must be exactly one character (Tom)
   VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
   Fix permission checks for CREATE INDEX (Tom)
   Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)

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

  Data Types and Functions

   SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
   Add convert(), convert2() (Tatsuo)
   New function bit_length() (Peter E)
   Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
   CHAR(), VARCHAR() now reject strings that are too long (Peter E)
   BIT VARYING now rejects bit strings that are too long (Peter E)
   BIT now rejects bit strings that do not match declared size (Peter E)
   INET, CIDR text conversion functions (Alex Pilosov)
   INET, CIDR operators << and <<= indexable (Alex Pilosov)
   Bytea \### now requires valid three digit octal number
   Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
   Bytea now supports B-tree indexes
   Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
   Bytea now supports concatenation
   New bytea functions: position, substring, trim, btrim, and length
   New encode() function mode, "escaped", converts minimally escaped bytea to/from text
   Add pg_database_encoding_max_length() (Tatsuo)
   Add pg_client_encoding() function (Tatsuo)
   now() returns time with millisecond precision (Thomas)
   New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
   Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
   New xid/int comparison functions (Hiroshi)
   Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
   Modify type coersion logic to attempt binary-compatible functions first (Tom)
   New encode() function installed by default (Marko Kreen)
   Improved to_*() conversion functions (Karel Zak)
   Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
   New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
   Correct description of translate() function (Bruce)
   Add INTERVAL argument for SET TIME ZONE (Thomas)
   Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
   Optimize length functions when using single-byte encodings (Tatsuo)
   Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
   octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
   Handle "July" full name in date/time literals (Greg Sabino Mullane)
   Some datatype() function calls now evaluated differently
   Add support for Julian and ISO time specifications (Thomas)

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

  Internationalization

Peter Eisentraut's avatar
Peter Eisentraut committed
   National language support in psql, pg_dump, libpq, and server (Peter E)
   Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)
   Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
   Add LATIN5,6,7,8,9,10 support (Tatsuo)
   Add ISO 8859-5,6,7,8 support (Tatsuo)
   Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
   Make mic2ascii() non-ASCII aware (Tatsuo)
   Reject invalid multibyte character sequences (Tatsuo)

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

  PL/pgSQL

   Now uses portals for SELECT loops, allowing huge result sets (Jan)
   CURSOR and REFCURSOR support (Jan)
   Can now return open cursors (Jan)
   Add ELSEIF (Klaus Reger)
   Improve PL/pgSQL error reporting, including location of error (Tom)
   Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
   Fix for SELECT ... FOR UPDATE (Tom)
   Fix for PERFORM returning multiple rows (Tom)
   Make PL/PgSQL use the server's type coercion code (Tom)
   Memory leak fix (Jan, Tom)
   Make trailing semicolon optional (Tom)

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

  PL/Perl

   New untrusted PL/Perl (Alex Pilosov)
   PL/Perl is now built on some platforms even if libperl is not shared (Peter E)

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

  PL/Tcl

   Now reports errorInfo (Vsevolod Lobko)
   Add spi_lastoid function (bob@redivi.com)

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

  PL/Python

   ...is new (Andrew Bosma)

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

  Psql

   \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
   Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
   Read password from /dev/tty if possible
   Force new password prompt when changing user and database (Tatsuo, Tom)
   Format the correct number of columns for Unicode (Patrice)

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

  Libpq

   New function PQescapeString() to escape quotes in command strings (Florian Weimer)
   New function PQescapeBytea() escapes binary strings for use as SQL string literals

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

  JDBC

   Return OID of INSERT (Ken K)
   Handle more data types (Ken K)
   Handle single quotes and newlines in strings (Ken K)
   Handle NULL variables (Ken K)
   Fix for time zone handling (Barry Lind)
   Improved Druid support
   Allow eight-bit characters with non-multibyte server (Barry Lind)
   Support BIT, BINARY types (Ned Wolpert)
   Reduce memory usage (Michael Stephens, Dave Cramer)
   Update DatabaseMetaData (Peter E)
   Add DatabaseMetaData.getCatalogs() (Peter E)
   Encoding fixes (Anders Bengtsson)
   Get/setCatalog methods (Jason Davies)
   DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
   DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
   Some JDBC1 and JDBC2 merging (Anders Bengtsson)
   Transaction performance improvements (Barry Lind)
   Array fixes (Greg Zoller)
   Serialize addition 
   Fix batch processing (Rene Pijlman)
   ExecSQL method reorganization (Anders Bengtsson)
   GetColumn() fixes (Jeroen van Vianen)
   Fix isWriteable() function (Rene Pijlman)
   Improved passage of JDBC2 conformance tests (Rene Pijlman)
   Add bytea type capability (Barry Lind)
   Add isNullable() (Rene Pijlman)
   JDBC date/time test suite fixes (Liam Stewart)
   Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
   Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
   New getImported/getExported keys (Jason Davies)
   MD5 password encryption support (Jeremy Wohl)
   Fix to actually use type cache (Ned Wolpert)

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

  ODBC

   Remove query size limit (Hiroshi)
   Remove text field size limit (Hiroshi)
   Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
   Allow ODBC procedure calls (Hiroshi)
   Improve boolean handing (Aidan Mountford)
   Most configuration options on setable via DSN (Hiroshi)
   Multibyte, performance fixes (Hiroshi)
   Allow driver to be used with iODBC or unixODBC (Peter E)
   MD5 password encryption support (Bruce)
   Add more compatibility functions to odbc.sql (Peter E)

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

  ECPG

   EXECUTE ... INTO implemented (Christof Petig)
   Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
   Fix for GRANT parameters (Lee Kindness)
   Fix INITIALLY DEFERRED bug
   Various bug fixes (Michael, Christof Petig)
   Auto allocation for indicator variable arrays (int *ind_p=NULL)
   Auto allocation for string arrays (char **foo_pp=NULL)
   ECPGfree_auto_mem fixed
   All function names with external linkage are now prefixed by ECPG
   Fixes for arrays of structures (Michael)

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

  Misc. Interfaces
   Python fix fetchone() (Gerhard Haring)
   Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
   Add Tcl COPY TO/FROM (ljb)
   Prevent output of default index op class in pg_dump (Tom)
   Fix libpgeasy memory leak (Bruce)
     ----------------------------------------------------------------------
   Configure, dynamic loader, and shared library fixes (Peter E)
   Fixes in QNX 4 port (Bernd Tegge)
   Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
   Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
   Hurd compile fix (Oliver Elphick)
   BeOS fixes (Cyril Velter)
   Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
   AIX fixes (Tatsuo, Andreas)
   Fix parallel make (Peter E)
   Install SQL language manual pages into OS-specific directories (Peter E)
   Rename config.h to pg_config.h (Peter E)
   Reorganize installation layout of header files (Peter E)

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

  Source Code

   Remove SEP_CHAR (Bruce)
   New GUC hooks (Tom)
   Merge GUC and command line handling (Marko Kreen)
   Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
   New pgjindent utility to indent java code (Bruce)
   Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
   pgindent fixes (Bruce, Tom)
   Replace strcasecmp() with strcmp() where appropriate (Peter E)
   Dynahash portability improvements (Tom)
   Add 'volatile' usage in spinlock structures
   Improve signal handling logic (Tom)

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

  Contrib

   New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
   New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
   Add contrib/dblink for remote database access (Joe Conway)
   contrib/ora2pg Oracle conversion utility (Gilles Darold)
   contrib/xml XML conversion utility (John Gray)
   contrib/fulltextindex fixes (Christopher Kings-Lynne)
   New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
   Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
   New pg_upgrade utility (Bruce)
   Add new pg_resetxlog options (Bruce, Tom)
     ----------------------------------------------------------------------

                                 Release 7.1.3

     Release date: 2001-08-15

     ----------------------------------------------------------------------
   A dump/restore is *not* required for those running 7.1.X.
     ----------------------------------------------------------------------
 Remove unused WAL segements of large transactions (Tom)
 Multiaction rule fix (Tom)
 Pl/pgSQL memory allocation fix (Jan)
 VACUUM buffer fix (Tom)
 Regression test fixes (Tom)
 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
 Fix subselects with DISTINCT ON or LIMIT (Tom)
 BEOS fix
 Disable COPY TO/FROM a view (Tom)
 Cygwin build (Jason Tishler)
     
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
   A dump/restore is *not* required for those running 7.1.X.

     ----------------------------------------------------------------------
 Fix PL/PgSQL SELECTs when returning no rows
 Fix for psql backslash core dump
 Referential integrity permission fix
 Optimizer fixes
 pg_dump cleanups
     

     ----------------------------------------------------------------------
   This has a variety of fixes from 7.1.
     ----------------------------------------------------------------------
   A dump/restore is *not* required for those running 7.1.
     ----------------------------------------------------------------------
 Fix for numeric MODULO operator (Tom)
 pg_dump fixes (Philip)
 pg_dump can dump 7.0 databases (Philip)
 readline 4.2 fixes (Peter E)
 JOIN fixes (Tom)
 AIX, MSWIN, VAX,N32K fixes (Tom)
 Multibytes fixes (Tom)
 Unicode fixes (Tatsuo)
 Optimizer improvements (Tom)
 Fix for whole tuples in functions (Tom)
 Fix for pg_ctl and option strings with spaces (Peter E)
 ODBC fixes (Hiroshi)
 EXTRACT can now take string argument (Thomas)
 Python fixes (Darcy)
     
     ----------------------------------------------------------------------
   This release focuses on removing limitations that have existed in the
   PostgreSQL code for many years.
   Major changes in this release:

   Write-ahead Log (WAL)

           To maintain database consistency in case of an operating system
           crash, previous releases of PostgreSQL have forced all data
           modifications to disk before each transaction commit. With WAL,
           only one log file must be flushed to disk, greatly improving
           performance. If you have been using -F in previous releases to
           disable disk flushes, you may want to consider discontinuing its
           use.

   TOAST
           TOAST - Previous releases had a compiled-in row length limit,
           typically 8k - 32k. This limit made storage of long text fields
           difficult. With TOAST, long rows of any length can be stored with
           good performance.
           We now support outer joins. The UNION/NOT IN workaround for outer
           joins is no longer required. We use the SQL92 outer join syntax.

   Function Manager

           The previous C function manager did not handle NULLs properly, nor
           did it support 64-bit CPU's (Alpha). The new function manager
           does. You can continue using your old custom functions, but you
           may want to rewrite them in the future to use the new function
           manager call interface.

   Complex Queries

           A large number of complex queries that were unsupported in
           previous releases now work. Many combinations of views,
           aggregates, UNION, LIMIT, cursors, subqueries, and inherited
           tables now work properly. Inherited tables are now accessed by
           default. Subqueries in FROM are now supported.

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

Migration to version 7.1

   A dump/restore using pg_dump is required for those wishing to migrate data
   from any previous release.

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

 Bug Fixes
 ---------
 Many multi-byte/Unicode/locale fixes (Tatsuo and others)
 More reliable ALTER TABLE RENAME (Tom)
 Kerberos V fixes (David Wragg)
 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
 Prompt username/password on standard error (Bruce)
 Large objects inv_read/inv_write fixes (Tom)
 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
     Daniel Baldoni)
 Prevent query expressions from leaking memory (Tom)
 Allow UPDATE of arrays elements (Tom)
 Wake up lock waiters during cancel (Hiroshi)
 Fix rare cursor crash when using hash join (Tom)
 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
 Fix PL/perl (Alex Kapranoff)
 Disallow LOCK on views (Mark Hollomon)
 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
 Fix rare failure with TRUNCATE command (Tom)
 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
     DISTINCT, ORDER BY, SELECT...INTO (Tom)
 Fix parser failures during aborted transactions (Tom)
 Allow temporary relations to properly clean up indexes (Bruce)
 Fix VACUUM problem with moving rows in same page (Tom)
 Modify pg_dump to better handle user-defined items in template1 (Philip)
 Allow LIMIT in VIEW (Tom)
 Require cursor FETCH to honor LIMIT (Tom)
 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
 Allow ORDER BY, LIMIT in sub-selects (Tom)
 Allow UNION in CREATE RULE (Tom)
 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
 Store initdb collation in pg_control so collation cannot be changed (Tom)
 Fix INSERT...SELECT with rules (Tom)
 Fix FOR UPDATE inside views and subselects (Tom)
 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
 Fix lpad() and rpad() to handle length less than input string (Tom)
 Fix use of NOTIFY in some rules (Tom)
 Overhaul btree code (Tom)
 Fix NOT NULL use in Pl/PgSQL variables (Tom)
 Overhaul GIST code (Oleg)
 Fix CLUSTER to preserve constraints and column default (Tom)
 Improved deadlock detection handling (Tom)
 Allow multiple SERIAL columns in a table (Tom)
 Prevent occasional index corruption (Vadim)

 Enhancements
 ------------
 Add OUTER JOINs (Tom)
 Function manager overhaul (Tom)
 Allow ALTER TABLE RENAME on indexes (Tom)
 Improve CLUSTER (Tom)
 Improve ps status display for more platforms (Peter E, Marc)
 Improve CREATE FUNCTION failure message (Ross)
 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
     Gunnar)
 Grand Unified Configuration scheme/GUC.  Many options can now be set in
     data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
 Improved handling of file descriptor cache (Tom)
 New warning code about auto-created table alias entries (Bruce)
 Overhaul initdb process (Tom, Peter E)
 Overhaul of inherited tables; inherited tables now accessed by default;
    new ONLY keyword prevents it (Chris Bitmead, Tom)
 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
     Michael Fork)
 Allow renaming of temp tables (Tom)
 Overhaul memory manager contexts (Tom)
 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
 Overhaul pg_dump (Philip Warner)
 Allow pg_hba.conf secondary password file to specify only username (Peter E)
 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
 New memory leak checker (Karel)
 New SET SESSION CHARACTERISTICS (Thomas)
 Allow nested block comments (Thomas)
 Add WITHOUT TIME ZONE type qualifier (Thomas)
 New ALTER TABLE ADD CONSTRAINT (Stephan)
 Use NUMERIC accumulators for INTEGER aggregates (Tom)
 Overhaul aggregate code (Tom)
 New VARIANCE and STDDEV() aggregates
 Improve dependency ordering of pg_dump (Philip)
 New pg_restore command (Philip)
 New pg_dump tar output option (Philip)
 New pg_dump of large objects  (Philip)
 New ESCAPE option to LIKE (Thomas)
 New case-insensitive LIKE - ILIKE (Thomas)
 Allow functional indexes to use binary-compatible type (Tom)
 Allow SQL functions to be used in more contexts (Tom)
 New pg_config utility (Peter E)
 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
     (Jan)
 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
 New quote_identifiers() and quote_literal() functions (Jan)
 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
 Update PyGreSQL to version 3.1 (D'Arcy)
 Store tables as files named by OID (Vadim)
 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
 Require DROP VIEW to remove views, no DROP TABLE (Mark)
 Allow DROP VIEW view1, view2 (Mark)
 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
 New /contrib/pgcrypto hashing functions (Marko Kreen)
 New pg_dumpall --globals-only option (Peter E)
 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
 New AT TIME ZONE syntax (Thomas)
 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
 Allow socket path name to be specified in hostname by using leading slash
     (David J. MacKenzie)
 Allow CREATE DATABASE to specify template database (Tom)
 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
 New /contrib/rserv replication toolkit (Vadim)
 New file format for COPY BINARY (Tom)
 New /contrib/oid2name to map numeric files to table names (B Palmer)
 New "idle in transaction" ps status message (Marc)
 Update to pgaccess 0.98.7 (Constantin Teodorescu)
 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
 Add rudimentary dependency checking to pg_dump (Philip)

 Types
 -----
 Fix INET/CIDR type ordering and add new functions (Tom)
 Make OID behave as an unsigned type (Tom)
 Allow BIGINT as synonym for INT8 (Peter E)
 New int2 and int8 comparison operators (Tom)
 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
 New GIST seg/cube examples (Gene Selkov)
 Improved round(numeric) handling (Tom)
 Fix CIDR output formatting (Tom)
 New CIDR abbrev() function (Tom)

 Performance
 -----------
 Write-Ahead Log (WAL) to provide crash recovery with less performance
     overhead (Vadim)
 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
 Reduced file seeks (Denis Perchine)
 Improve BTREE code for duplicate keys (Tom)
 Store all large objects in a single table (Denis Perchine, Tom)
 Improve memory allocation performance (Karel, Tom)

 Source Code
 -----------
 New function manager call conventions (Tom)
 SGI portability fixes (David Kaelbling)
 New configure --enable-syslog option (Peter E)
 New BSDI README (Bruce)
 configure script moved to top level, not /src (Peter E)
 Makefile/configuration/compilation overhaul (Peter E)
 New configure --with-python option (Peter E)
 Solaris cleanups (Peter E)
 Overhaul /contrib Makefiles (Karel)
 New OpenSSL configuration option (Magnus, Peter E)
 AIX fixes (Andreas)
 QNX fixes (Maurizio)
 New heap_open(), heap_openr() API (Tom)
 Remove colon and semi-colon operators (Thomas)
 New pg_class.relkind value for views (Mark Hollomon)
 Rename ichar() to chr() (Karel)
 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
 Fixes for NT/Cygwin (Pete Forman)
 AIX port fixes (Andreas)
 New BeOS port (David Reid, Cyril Velter)
 Add proofreader's changes to docs (Addison-Wesley, Bruce)
 New Alpha spinlock code (Adriaan Joubert, Compaq)
 Unixware port overhaul (Peter E)
 New Darwin/Mac OSX port (Peter Bierman, Bruce Hartzler)
 New FreeBSD Alpha port (Alfred)
 Overhaul shared memory segments (Tom)
 Add IBM S/390 support (Neale Ferguson)
 Moved macmanuf to /contrib (Larry Rosenman)
 Syslog improvements (Larry Rosenman)
 New template0 database that contains no user additions (Tom)
 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
 Allow NetBSD's libedit instead of readline (Peter)
 Improved assembly language source code format (Bruce)
 New contrib/pg_logger
 New --template option to createdb
 New contrib/pg_control utility (Oliver)
 New FreeBSD tools ipc_check, start-scripts/freebsd
     

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

                                 Release 7.0.3

     Release date: 2000-11-11

   This has a variety of fixes from 7.0.2.

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

Migration to version 7.0.3

   A dump/restore is *not* required for those running 7.0.*.

     ----------------------------------------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed

Changes

 Jdbc fixes (Peter)
 Large object fix (Tom)
 Fix lean in COPY WITH OIDS leak (Tom)
 Fix backwards-index-scan (Tom)
 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
 Add --enable-syslog to configure (Marc)
 Fix abort transaction at backend exit in rare cases (Tom)
 Fix for psql \l+ when multi-byte enabled (Tatsuo)
 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
 Make vacuum always flush buffers (Tom)
 Fix to allow cancel while waiting for a lock (Hiroshi)
 Fix for memory aloocation problem in user authentication code (Tom)
 Remove bogus use of int4out() (Tom)
 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
 Fix for failure of triggers on heap open in certain cases (Jeroen van
     Vianen)
 Fix for erroneous selectivity of not-equals (Tom)
 Fix for erroneous use of strcmp() (Tom)
 Fix for bug where storage manager accesses items beyond end of file
     (Tom)
 Fix to include kernel errno message in all smgr elog messages (Tom)
 Fix for '.' not in PATH at build time (SL Baur)
 Fix for out-of-file-descriptors error (Tom)
 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
 Fix for subselect in targetlist of Append node (Tom)
 Fix for mergejoin plans (Tom)
 Fix TRUNCATE failure on relations with indexes (Tom)
 Avoid database-wide restart on write error (Hiroshi)
 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
 Fix VACUUM problem with moving chain of update tuples when source and
     destination of a tuple lie on the same page (Tom)
 Fix user.c CommandCounterIncrement (Tom)
 Fix for AM/PM boundary problem in to_char() (Karel Zak)
 Fix TIME aggregate handling (Tom)
 Fix to_char() to avoid coredump on NULL input (Tom)
 Buffer fix (Tom)
 Fix for inserting/copying longer multibyte strings into char() data
     types (Tatsuo)
 Fix for crash of backend, on abort (Tom)
     

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

                                 Release 7.0.2

     Release date: 2000-06-05

   This is a repackaging of 7.0.1 with added documentation.

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

Migration to version 7.0.2

   A dump/restore is *not* required for those running 7.*.

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

Changes

 Added documentation to tarball.
     

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

                                 Release 7.0.1
Bruce Momjian's avatar
Bruce Momjian committed

     ----------------------------------------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed

   A dump/restore is *not* required for those running 7.0.
Bruce Momjian's avatar
Bruce Momjian committed

     ----------------------------------------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed

Changes

 Fix many CLUSTER failures (Tom)
 Allow ALTER TABLE RENAME works on indexes (Tom)
 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
 Fix the off by one errors in ResultSet from 6.5.3, and more.
 jdbc ResultSet fixes (Joseph Shraibman)
 optimizer tunings (Tom)
 Fix create user for pgaccess
 Fix for UNLISTEN failure
 IRIX fixes (David Kaelbling)
 QNX fixes (Andreas Kardos)
 Reduce COPY IN lock level (Tom)
 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
 Fix pg_dump to handle OID indexes (Tom)
 Fix small memory leak (Tom)
 Solaris fix for createdb/dropdb (Tatsuo)
 Fix for non-blocking connections (Alfred Perlstein)
 Fix improper recovery after RENAME TABLE failures (Tom)
 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
 Fix too long syslog message (Tatsuo)
 Fix problem with quoted indexes that are too long (Tom)
 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
 ecpg changes (Michael)
     

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

                                  Release 7.0

     Release date: 2000-05-08

   This release contains improvements in many areas, demonstrating the
   continued growth of PostgreSQL. There are more improvements and fixes in
   7.0 than in any previous release. The developers have confidence that this
   is the best release yet; we do our best to put out only solid releases,
   and this one is no exception.
   Foreign Keys

           Foreign keys are now implemented, with the exception of PARTIAL
           MATCH foreign keys. Many users have been asking for this feature,
           and we are pleased to offer it.

   Optimizer Overhaul

           Continuing on work started a year ago, the optimizer has been
           improved, allowing better query plan selection and faster
           performance with less memory usage.

   Updated psql
           psql, our interactive terminal monitor, has been updated with a
           variety of new features. See the psql manual page for details.
Bruce Momjian's avatar
Bruce Momjian committed

           SQL92 join syntax is now supported, though only as INNER JOINs for
           this release. JOIN, NATURAL JOIN, JOIN/USING, JOIN/ON are
           available, as are column correlation names.
     ----------------------------------------------------------------------
   A dump/restore using pg_dump is required for those wishing to migrate data
   from any previous release of PostgreSQL. For those upgrading from 6.5.*,
   you may instead use pg_upgrade to upgrade to this release; however, a full
   dump/reload installation is always the most robust method for upgrades.
   Interface and compatibility issues to consider for the new release
   include:
     * The date/time types datetime and timespan have been superseded by the
       SQL92-defined types timestamp and interval. Although there has been
       some effort to ease the transition by allowing PostgreSQL to recognize
       the deprecated type names and translate them to the new type names,
       this mechanism may not be completely transparent to your existing
       application.
     * The optimizer has been substantially improved in the area of query
       cost estimation. In some cases, this will result in decreased query
       times as the optimizer makes a better choice for the preferred plan.
       However, in a small number of cases, usually involving pathological
       distributions of data, your query times may go up. If you are dealing
       with large amounts of data, you may want to check your queries to
       verify performance.

     * The JDBC and ODBC interfaces have been upgraded and extended.

     * The string function CHAR_LENGTH is now a native function. Previous
       versions translated this into a call to LENGTH, which could result in
       ambiguity with other types implementing LENGTH such as the geometric
       types.

     ----------------------------------------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed
Changes

 Bug Fixes
 ---------
 Prevent function calls exceeding maximum number of arguments (Tom)
 Improve CASE construct (Tom)
 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
 Fix GROUP BY scan bug (Tom)
 Improvements in SQL grammar processing (Tom)
 Fix for views involved in INSERT ... SELECT ... (Tom)
 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
 Fix for subselects in INSERT ... SELECT (Tom)
 Prevent INSERT ... SELECT ... ORDER BY (Tom)
 Fixes for relations greater than 2GB, including vacuum
 Improve propagating system table changes to other backends (Tom)
 Improve propagating user table changes to other backends (Tom)
 Fix handling of temp tables in complex situations (Bruce, Tom)
 Allow table locking at table open, improving concurrent reliability (Tom)
 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
 Prevent DROP DATABASE while others accessing
 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
 Fix pg_upgrade so it works for MVCC (Tom)
 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
 Fix for "f1 datetime DEFAULT 'now'"  (Tom)