Fix SGML sect1-3 alignment in the 8.0.X series.
authorBruce Momjian
Tue, 23 Aug 2005 01:22:53 +0000 (01:22 +0000)
committerBruce Momjian
Tue, 23 Aug 2005 01:22:53 +0000 (01:22 +0000)
doc/src/sgml/release.sgml

index 345a5b3404226a9e36e718ae36051c615ee5f8ab..fb3dec68d34075e82a3ce83467589c1d2bfd53de 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -275,8 +275,8 @@ statistics collector
  addresses in INET data types (Tom)
 
 
-  
+   
 
 
   
    Release 8.0.1
@@ -342,2354 +342,2354 @@ pg_dump/pg_restore
 typedefs (Michael)
 
 
-  
-
-  Release 8.0
-
-  
-   Release date
-   2005-01-19
-  
-
-  
-   Overview
-
-   
-    Major changes in this release:
+   
+  
 
-    
-     
-      
-       Microsoft Windows Native Server
-      
+  
+   Release 8.0
 
+   
+    Release date
+    2005-01-19
+   
+   
+    Overview
+    
+     Major changes in this release:
+     
+      
+       
+        Microsoft Windows Native Server
+       
+       
+        
+         This is the first PostgreSQL release
+         to run natively on Microsoft Windows as
+         a server. It can run as a Windows service. This
+         release supports NT-based Windows releases like
+         Windows 2000, Windows XP, and
+         Windows 2003. Older releases like
+         Windows 95, Windows 98, and
+         Windows ME are not supported because these operating
+         systems do not have the infrastructure to support
+         PostgreSQL. A separate installer
+         project has been created to ease installation on
+         Windows — see 
+         url="http://www.postgresql.org/ftp/win32/">.
+        
+        
+         Although tested throughout our release cycle, the Windows port
+         does not have the benefit of years of use in production
+         environments that PostgreSQL has on
+         Unix platforms.  Therefore it should be treated with the same
+         level of caution as you would a new product.
+        
+        
+         Previous releases required the Unix emulation toolkit
+         Cygwin in order to run the server on Windows
+         operating systems.  PostgreSQL has
+         supported native clients on Windows for many years.
+        
+       
+      
+      
+       
+        Savepoints
+       
+       
+        
+         Savepoints allow specific parts of a transaction to be aborted
+         without affecting the remainder of the transaction. Prior
+         releases had no such capability; there was no way to recover
+         from a statement failure within a transaction except by
+         aborting the whole transaction. This feature is valuable for
+         application writers who require error recovery within a
+         complex transaction.
+        
+       
+      
+      
+       
+        Point-In-Time Recovery
+       
+       
+        
+         In previous releases there was no way to recover from disk
+         drive failure except to restore from a previous backup or use
+         a standby replication server.  Point-in-time recovery allows
+         continuous backup of the server.  You can recover either to
+         the point of failure or to some transaction in the past.
+        
+       
+      
+      
+       
+        Tablespaces
+       
+       
+        
+         Tablespaces allow administrators to select different file systems
+         for storage of individual tables, indexes, and databases.
+         This improves performance and control over disk space
+         usage. Prior releases used initlocation and
+         manual symlink management for such tasks.
+        
+       
+      
+      
+       
+        Improved Buffer Management, CHECKPOINT,
+        VACUUM
+       
+       
+        
+         This release has a more intelligent buffer replacement strategy,
+         which will make better use of available shared buffers and
+         improve performance. The performance impact of vacuum and
+         checkpoints is also lessened.
+        
+       
+      
+      
+       
+        Change Column Types
+       
+       
+        
+         A column's data type can now be changed with ALTER
+         TABLE.
+        
+       
+      
+      
+       
+        New Perl Server-Side Language
+       
+       
+        
+         A new version of the plperl server-side language now
+         supports a persistent shared storage area, triggers, returning records
+         and arrays of records, and SPI calls to access the database.
+        
+       
+      
+      
+       
+         Comma-separated-value (CSV) support in COPY
+       
+       
+        
+         COPY can now read and write
+         comma-separated-value files. It has the flexibility to
+         interpret non-standard quoting and separation characters too.
+        
+       
+      
+     
+    
+   
+   
+    Migration to version 8.0
+                                       
+    
+     A dump/restore using pg_dump is
+     required for those wishing to migrate data from any previous
+     release.
+    
+    
+    
+     Observe the following incompatibilities:
+     
       
        
-        This is the first PostgreSQL release
-        to run natively on Microsoft Windows as
-        a server. It can run as a Windows service. This
-        release supports NT-based Windows releases like
-        Windows 2000, Windows XP, and
-        Windows 2003. Older releases like
-        Windows 95, Windows 98, and
-        Windows ME are not supported because these operating
-        systems do not have the infrastructure to support
-        PostgreSQL. A separate installer
-        project has been created to ease installation on
-        Windows — see 
-        url="http://www.postgresql.org/ftp/win32/">.
+        In 
+        now see the results of concurrent transactions committed up to the
+        beginning of each statement within the function, rather than up to the
+        beginning of the interactive command that called the function.
        
-
+      
+      
        
-        Although tested throughout our release cycle, the Windows port
-        does not have the benefit of years of use in production
-        environments that PostgreSQL has on
-        Unix platforms.  Therefore it should be treated with the same
-        level of caution as you would a new product.
+        Functions declared 
+        use the snapshot of the calling query, and therefore do not see the
+        effects of actions taken after the calling query starts, whether in
+        their own transaction or other transactions.  Such a function must be
+        read-only, too, meaning that it cannot use any SQL commands other than
+        SELECT.
        
-
+      
+      
        
-        Previous releases required the Unix emulation toolkit
-        Cygwin in order to run the server on Windows
-        operating systems.  PostgreSQL has
-        supported native clients on Windows for many years.
+        Non-deferred 
+        after completion of the triggering query, rather than upon
+        finishing the current interactive command. This makes a
+        difference when the triggering query occurred within a function:
+        the trigger is invoked before the function proceeds to its next
+        operation.
        
       
-     
-
-     
-      
-       Savepoints
-      
-
       
        
-        Savepoints allow specific parts of a transaction to be aborted
-        without affecting the remainder of the transaction. Prior
-        releases had no such capability; there was no way to recover
-        from a statement failure within a transaction except by
-        aborting the whole transaction. This feature is valuable for
-        application writers who require error recovery within a
-        complex transaction.
+        Server configuration parameters virtual_host and
+        tcpip_socket have been replaced with a more general
+        parameter listen_addresses. Also, the server now listens on
+        localhost by default, which eliminates the need for the
+        -i postmaster switch in many scenarios.
        
       
-     
-
-     
-      
-       Point-In-Time Recovery
-      
-
       
        
-        In previous releases there was no way to recover from disk
-        drive failure except to restore from a previous backup or use
-        a standby replication server.  Point-in-time recovery allows
-        continuous backup of the server.  You can recover either to
-        the point of failure or to some transaction in the past.
+        Server configuration parameters SortMem and
+        VacuumMem have been renamed to work_mem
+        and maintenance_work_mem to better reflect their
+        use. The original names are still supported in
+        SET and SHOW.
        
       
-     
-
-     
-      
-       Tablespaces
-      
-
       
        
-        Tablespaces allow administrators to select different file systems
-        for storage of individual tables, indexes, and databases.
-        This improves performance and control over disk space
-        usage. Prior releases used initlocation and
-        manual symlink management for such tasks.
+        Server configuration parameters log_pid,
+        log_timestamp, and log_source_port have been
+        replaced with a more general parameter log_line_prefix.
        
       
-     
-
-     
-      
-       Improved Buffer Management, CHECKPOINT,
-       VACUUM
-      
-
       
        
-        This release has a more intelligent buffer replacement strategy,
-        which will make better use of available shared buffers and
-        improve performance. The performance impact of vacuum and
-        checkpoints is also lessened.
+        Server configuration parameter syslog has been
+        replaced with a more logical log_destination variable to
+        control the log output destination.
        
       
-     
-
-     
-      
-       Change Column Types
-      
-
       
        
-        A column's data type can now be changed with ALTER
-        TABLE.
+        Server configuration parameter log_statement has been
+        changed so it can selectively log just database modification or
+        data definition statements.  Server configuration parameter
+        log_duration now prints only when log_statement
+        prints the query.
        
       
-     
-
-     
-      
-       New Perl Server-Side Language
-      
-
       
        
-        A new version of the plperl server-side language now
-        supports a persistent shared storage area, triggers, returning records
-        and arrays of records, and SPI calls to access the database.
+        Server configuration parameter max_expr_depth parameter has
+        been replaced with max_stack_depth which measures the
+        physical stack size rather than the expression nesting depth. This
+        helps prevent session termination due to stack overflow caused by
+        recursive functions.
        
       
-     
-
-     
-      
-        Comma-separated-value (CSV) support in COPY
-      
-
       
        
-        COPY can now read and write
-        comma-separated-value files. It has the flexibility to
-        interpret non-standard quoting and separation characters too.
+        The length() function no longer counts trailing spaces in
+        CHAR(n) values.
        
       
-     
-
-    
-   
-  
-
-  
-   Migration to version 8.0
-                                      
-   
-    A dump/restore using pg_dump is
-    required for those wishing to migrate data from any previous
-    release.
-   
-   
-   
-    Observe the following incompatibilities:
-
-    
-
-     
-      
-       In 
-       now see the results of concurrent transactions committed up to the
-       beginning of each statement within the function, rather than up to the
-       beginning of the interactive command that called the function.
-      
-     
-
-     
-      
-       Functions declared 
-       use the snapshot of the calling query, and therefore do not see the
-       effects of actions taken after the calling query starts, whether in
-       their own transaction or other transactions.  Such a function must be
-       read-only, too, meaning that it cannot use any SQL commands other than
-       SELECT.
-      
-     
-
-     
-      
-       Non-deferred 
-       after completion of the triggering query, rather than upon
-       finishing the current interactive command. This makes a
-       difference when the triggering query occurred within a function:
-       the trigger is invoked before the function proceeds to its next
-       operation.
-      
-     
-
-     
-      
-       Server configuration parameters virtual_host and
-       tcpip_socket have been replaced with a more general
-       parameter listen_addresses. Also, the server now listens on
-       localhost by default, which eliminates the need for the
-       -i postmaster switch in many scenarios.
-      
-     
-
-     
-      
-       Server configuration parameters SortMem and
-       VacuumMem have been renamed to work_mem
-       and maintenance_work_mem to better reflect their
-       use. The original names are still supported in
-       SET and SHOW.
-      
-     
-
      
       
-       Server configuration parameters log_pid,
-       log_timestamp, and log_source_port have been
-       replaced with a more general parameter log_line_prefix.
+       Casting an integer to BIT(N) selects the rightmost N bits of the
+       integer, not the leftmost N bits as before.
       
      
-
      
       
-       Server configuration parameter syslog has been
-       replaced with a more logical log_destination variable to
-       control the log output destination.
+       Updating an element or slice of a NULL array value now produces
+       a non-NULL array result, namely an array containing
+       just the assigned-to positions.
       
      
-
+      
+       
+        Syntax checking of array input values has been tightened up
+        considerably. Junk that was previously allowed in odd places with
+        odd results now causes an error. Empty-string element values
+        must now be written as "", rather than writing nothing.
+        Also changed behavior with respect to whitespace surrounding
+        array elements: trailing whitespace is now ignored, for symmetry
+        with leading whitespace (which has always been ignored).
+       
+      
+      
+       
+        Overflow in integer arithmetic operations is now detected and
+        reported as an error.
+       
+      
+      
+       
+        The arithmetic operators associated with the single-byte
+        "char" data type have been removed.
+       
+      
+      
+       
+        The extract() function (also called
+        date_part) now returns the proper year for BC dates.
+        It previously returned one less than the correct year. The
+        function now also returns the proper values for millennium and
+        century.
+       
+      
      
       
-       Server configuration parameter log_statement has been
-       changed so it can selectively log just database modification or
-       data definition statements.  Server configuration parameter
-       log_duration now prints only when log_statement
-       prints the query.
+       CIDR values now must have their non-masked bits be zero.
+       For example, we no longer allow
+       204.248.199.1/31 as a CIDR value. Such
+       values should never have been accepted by
+       PostgreSQL and will now be rejected.
       
      
-
+      
+       
+        EXECUTE now returns a completion tag that
+        matches the executed statement.
+       
+      
+      
+       
+        psql's \copy command now reads or
+        writes to the query's stdin/stdout, rather than
+        psql's stdin/stdout. The previous
+        behavior can be accessed via new
+        
+       
+      
+      
+       
+       The JDBC client interface has been removed from the core
+       distribution, and is now hosted at 
+       "http://jdbc.postgresql.org">.
+       
+      
+      
+       
+       The Tcl client interface has also been removed. There are several
+       Tcl interfaces now hosted at 
+       "http://gborg.postgresql.org">.
+       
+      
+      
+       
+        The server now uses its own time zone database, rather than the
+        one supplied by the operating system. This will provide consistent
+        behavior across all platforms.  In most cases, there should be
+        little noticeable difference in time zone behavior, except that
+        the time zone names used by SET/SHOW
+        TimeZone may
+        be different from what your platform provides.
+       
+      
+      
+       
+        Configure's threading option no longer requires
+        users to run tests or edit configuration files; threading options
+        are now detected automatically.
+       
+      
+      
+       
+        Now that tablespaces have been implemented,
+        initlocation has been removed.
+       
+      
+      
+       
+        The API for user-defined GiST indexes has been changed. The
+        Union and PickSplit methods are now passed a pointer to a
+        special GistEntryVector structure,
+        rather than a bytea.
+       
+      
+     
+    
+   
+   
+    Deprecated Features
+    
+     Some aspects of PostgreSQL's behavior
+     have been determined to be suboptimal. For the sake of backward
+     compatibility these have not been removed in 8.0, but they are
+     considered deprecated and will be removed in the next major
+     release.
+     
+    
      
       
-       Server configuration parameter max_expr_depth parameter has
-       been replaced with max_stack_depth which measures the
-       physical stack size rather than the expression nesting depth. This
-       helps prevent session termination due to stack overflow caused by
-       recursive functions.
+       The 8.1 release will remove the to_char() function
+       for intervals.
       
      
-
+      
+       
+        The server now warns of empty strings passed to
+        oid/float4/float8 data
+        types, but continues to interpret them as zeroes as before.
+        In the next major release, empty strings will be considered
+        invalid input for these data types.
+       
+      
      
       
-       The length() function no longer counts trailing spaces in
-       CHAR(n) values.
+       By default, tables in PostgreSQL 8.0
+       and earlier are created with OIDs. In the next release,
+       this will not be the case: to create a table
+       that contains OIDs, the 
+       be specified or the default_with_oids
+       configuration parameter must be set. Users are encouraged to
+       explicitly specify 
+       require OIDs for compatibility with future releases of
+       PostgreSQL.
       
      
-
-    
-     
-      Casting an integer to BIT(N) selects the rightmost N bits of the
-      integer, not the leftmost N bits as before.
-     
-    
-
-    
-     
-      Updating an element or slice of a NULL array value now produces
-      a non-NULL array result, namely an array containing
-      just the assigned-to positions.
-     
-    
-
-     
-      
-       Syntax checking of array input values has been tightened up
-       considerably. Junk that was previously allowed in odd places with
-       odd results now causes an error. Empty-string element values
-       must now be written as "", rather than writing nothing.
-       Also changed behavior with respect to whitespace surrounding
-       array elements: trailing whitespace is now ignored, for symmetry
-       with leading whitespace (which has always been ignored).
-      
-     
-
-     
-      
-       Overflow in integer arithmetic operations is now detected and
-       reported as an error.
-      
-     
-
-     
-      
-       The arithmetic operators associated with the single-byte
-       "char" data type have been removed.
-      
-     
-
-     
-      
-       The extract() function (also called
-       date_part) now returns the proper year for BC dates.
-       It previously returned one less than the correct year. The
-       function now also returns the proper values for millennium and
-       century.
-      
-     
-
-    
-     
-      CIDR values now must have their non-masked bits be zero.
-      For example, we no longer allow
-      204.248.199.1/31 as a CIDR value. Such
-      values should never have been accepted by
-      PostgreSQL and will now be rejected.
-     
-    
-
-     
-      
-       EXECUTE now returns a completion tag that
-       matches the executed statement.
-      
-     
-
-     
-      
-       psql's \copy command now reads or
-       writes to the query's stdin/stdout, rather than
-       psql's stdin/stdout. The previous
-       behavior can be accessed via new
-       
-      
-     
-
-     
-      
-      The JDBC client interface has been removed from the core
-      distribution, and is now hosted at 
-      "http://jdbc.postgresql.org">.
-      
-     
-
-     
-      
-      The Tcl client interface has also been removed. There are several
-      Tcl interfaces now hosted at 
-      "http://gborg.postgresql.org">.
-      
-     
-
-     
-      
-       The server now uses its own time zone database, rather than the
-       one supplied by the operating system. This will provide consistent
-       behavior across all platforms.  In most cases, there should be
-       little noticeable difference in time zone behavior, except that
-       the time zone names used by SET/SHOW
-       TimeZone may
-       be different from what your platform provides.
-      
-     
-
-     
-      
-       Configure's threading option no longer requires
-       users to run tests or edit configuration files; threading options
-       are now detected automatically.
-      
-     
-
-     
-      
-       Now that tablespaces have been implemented,
-       initlocation has been removed.
-      
-     
-
-     
-      
-       The API for user-defined GiST indexes has been changed. The
-       Union and PickSplit methods are now passed a pointer to a
-       special GistEntryVector structure,
-       rather than a bytea.
-      
-     
-
     
-   
-  
-
-  
-   Deprecated Features
-
-   
-    Some aspects of PostgreSQL's behavior
-    have been determined to be suboptimal. For the sake of backward
-    compatibility these have not been removed in 8.0, but they are
-    considered deprecated and will be removed in the next major
-    release.
+   
+   
+    Changes
+    
+     Below you will find a detailed account of the changes between
+     release 8.0 and the previous major release.
     
-
-   
-    
-     
-      The 8.1 release will remove the to_char() function
-      for intervals.
-     
-    
-
-     
-      
-       The server now warns of empty strings passed to
-       oid/float4/float8 data
-       types, but continues to interpret them as zeroes as before.
-       In the next major release, empty strings will be considered
-       invalid input for these data types.
-      
-     
-
-    
-     
-      By default, tables in PostgreSQL 8.0
-      and earlier are created with OIDs. In the next release,
-      this will not be the case: to create a table
-      that contains OIDs, the 
-      be specified or the default_with_oids
-      configuration parameter must be set. Users are encouraged to
-      explicitly specify 
-      require OIDs for compatibility with future releases of
-      PostgreSQL.
-     
-    
-   
-  
-
-  
-   Changes
-
-   
-    Below you will find a detailed account of the changes between
-    release 8.0 and the previous major release.
-   
-
-  
-   Performance Improvements
-   
-
-    
-     
-      Support cross-data-type index usage (Tom)
-     
-     
-      Before this change, many queries would not use an index if the data
-      types did not match exactly. This improvement makes index usage more
-      intuitive and consistent.
-     
-    
-
-    
-     
-      New buffer replacement strategy that improves caching (Jan)
-     
-     
-      Prior releases used a least-recently-used (LRU) cache to keep
-      recently referenced pages in memory. The LRU algorithm
-      did not consider the number of times a specific cache entry was
-      accessed, so large table scans could force out useful cache pages.
-      The new cache algorithm uses four separate lists to track most
-      recently used and most frequently used cache pages and dynamically 
-      optimize their replacement based on the work load. This should
-      lead to much more efficient use of the shared buffer cache.
-      Administrators who have tested shared buffer sizes in the past
-      should retest with this new cache replacement policy.
-     
-    
-
-    
-     
-      Add subprocess to write dirty buffers periodically to reduce
-      checkpoint writes (Jan)
-     
-     
-      In previous releases, the checkpoint process, which runs every few
-      minutes, would write all dirty buffers to the operating system's
-      buffer cache then flush all dirty operating system buffers to
-      disk. This resulted in a periodic spike in disk usage that often
-      hurt performance. The new code uses a background writer to trickle
-      disk writes at a steady pace so checkpoints have far fewer dirty
-      pages to write to disk. Also, the new code does not issue a global
-      sync() call, but instead fsync()s just
-      the files written since the last checkpoint. This should improve
-      performance and minimize degradation during checkpoints.
-     
-    
-
-    
-     
-      Add ability to prolong vacuum to reduce performance impact (Jan)
-     
-     
-      On busy systems, VACUUM performs many I/O
-      requests which can hurt performance for other users. This
-      release allows you to slow down VACUUM to
-      reduce its impact on other users, though this increases the
-      total duration of VACUUM.
-     
-    
-
-    
-     
-      Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
-     
-     
-      This improves the way indexes are scanned when many duplicate
-      values exist in the index.
-     
-    
-
-    
-     
-      Use dynamically-generated table size estimates while planning (Tom)
-     
-     
-      Formerly the planner estimated table sizes using the values seen
-      by the last VACUUM or ANALYZE,
-      both as to physical table size (number of pages) and number of rows.
-      Now, the current physical table size is obtained from the kernel,
-      and the number of rows is estimated by multiplying the table size
-      by the row density (rows per page) seen by the last
-      VACUUM or ANALYZE.  This should
-      produce more reliable estimates in cases where the table size has
-      changed significantly since the last housekeeping command.
-     
-    
-
-    
-     
-      Improved index usage with OR clauses (Tom)
-     
-     
-      This allows the optimizer to use indexes in statements with many OR
-      clauses that would not have been indexed in the past.  It can also use
-      multi-column indexes where the first column is specified and the second
-      column is part of an OR clause.
-     
-    
-
-    
-     
-      Improve matching of partial index clauses (Tom)
-     
-     
-      The server is now smarter about using partial indexes in queries
-      involving complex 
-     
-    
-
-    
-     
-      Improve performance of the GEQO optimizer (Tom)
-     
-     
-      The GEQO optimizer is used to plan queries involving many tables (by
-      default, twelve or more). This release speeds up the way queries are
-      analyzed to decrease time spent in optimization.
-     
-    
-
-    
-     
-      Miscellaneous optimizer improvements
-     
-     
-      There is not room here to list all the minor improvements made, but
-      numerous special cases work better than in prior releases.
-     
-    
-
-    
-     
-      Improve lookup speed for C functions (Tom)
-     
-     
-      This release uses a hash table to lookup information for dynamically
-      loaded C functions. This improves their speed so they perform nearly as
-      quickly as functions that are built into the server executable.
-     
-    
-
-    
-     
-      Add type-specific ANALYZE statistics
-      capability (Mark Cave-Ayland)
-     
-     
-      This feature allows more flexibility in generating statistics
-      for non-standard data types.
-     
-    
-
-    
-     
-      ANALYZE now collects statistics for
-      expression indexes (Tom)
-     
-     
-      Expression indexes (also called functional indexes) allow users to
-      index not just columns but the results of expressions and function
-      calls. With this release, the optimizer can gather and use statistics
-      about the contents of expression indexes.  This will greatly improve
-      the quality of planning for queries in which an expression index is
-      relevant.
-     
-    
-
-    
-     
-      New two-stage sampling method for ANALYZE
-      (Manfred Koizar)
-     
-     
-      This gives better statistics when the density of valid rows is very
-      different in different regions of a table.
-     
-    
-
-    
-     
-      Speed up TRUNCATE (Tom)
-     
-     
-      This buys back some of the performance loss observed in 7.4, while still
-      keeping TRUNCATE transaction-safe.
-     
-    
-
-   
-  
-
-
-  
-   Server Changes
-   
-
-    
-     
-      Add WAL file archiving and point-in-time recovery (Simon Riggs)
-     
-    
-
-    
-     
-      Add tablespaces so admins can control disk layout (Gavin)
-     
-    
-
-    
-     
-      Add a built-in log rotation program (Andreas Pflug)
-     
-     
-      It is now possible to log server messages conveniently without
-      relying on either syslog or an external log
-      rotation program.
-     
-    
-
-    
-     
-      Add new read-only server configuration parameters to show server
-      compile-time settings: block_size,
-      integer_datetimes, max_function_args,
-      max_identifier_length, max_index_keys  (Joe)
-     
-    
-
-    
-     
-      Make quoting of sameuser, samegroup, and
-      all remove special meaning of these terms in
-      pg_hba.conf (Andrew)
-     
-    
-
-    
-     
-      Use clearer IPv6 name ::1/128 for
-      localhost in default pg_hba.conf (Andrew)
-     
-    
-
-    
-     
-      Use CIDR format in pg_hba.conf examples (Andrew)
-     
-    
-
-    
-     
-      Rename server configuration parameters SortMem and
-      VacuumMem to work_mem and
-      maintenance_work_mem (Old names still supported) (Tom)
-     
-     
-      This change was made to clarify that bulk operations such as index and
-      foreign key creation use maintenance_work_mem, while
-      work_mem is for workspaces used during query execution.
-     
-    
-
-    
-     
-      Allow logging of session disconnections using server configuration
-      log_disconnections (Andrew)
-     
-    
-
-    
-     
-      Add new server configuration parameter log_line_prefix to
-      allow control of information emitted in each log line (Andrew)
-     
-     
-      Available information includes user name, database name, remote IP
-      address, and session start time.
-     
-    
-
-    
-     
-      Remove server configuration parameters log_pid,
-      log_timestamp, log_source_port; functionality
-      superseded by log_line_prefix (Andrew)
-     
-    
-
-    
-     
-      Replace the virtual_host and tcpip_socket
-      parameters with a unified listen_addresses parameter
-      (Andrew, Tom)
-     
-     
-      virtual_host could only specify a single IP address to
-      listen on.  listen_addresses allows multiple addresses
-      to be specified.
-     
-    
-
-    
-     
-      Listen on localhost by default, which eliminates the need for the
-      
-     
-     
-      Listening on localhost (127.0.0.1) opens no new
-      security holes but allows configurations like Windows and JDBC,
-      which do not support local sockets, to work without special
-      adjustments.
-     
-    
-
-    
-     
-      Remove syslog server configuration parameter, and add more
-      logical log_destination variable to control log output
-      location (Magnus)
-     
-    
-
-    
-     
-      Change server configuration parameter log_statement to take
-      values all, mod, ddl, or
-      none to select which queries are logged (Bruce)
-     
-     
-      This allows administrators to log only data definition changes or
-      only data modification statements.
-     
-    
-
-    
-     
-      Some logging-related configuration parameters could formerly be adjusted
-      by ordinary users, but only in the more verbose direction.
-      They are now treated more strictly: only superusers can set them.
-      However, a superuser may use ALTER USER to provide per-user
-      settings of these values for non-superusers.  Also, it is now possible
-      for superusers to set values of superuser-only configuration parameters
-      via PGOPTIONS.
-     
-    
-
-    
-     
-      Allow configuration files to be placed outside the data directory (mlw)
-     
-     
-      By default, configuration files are kept in the cluster's top directory.
-      With this addition, configuration files can be placed outside the
-      data directory, easing administration.
-     
-    
-
-    
-     
-      Plan prepared queries only when first executed so constants can be
-      used for statistics (Oliver Jowett)
-     
-     
-      Prepared statements plan queries once and execute them many
-      times. While prepared queries avoid the overhead of re-planning
-      on each use, the quality of the plan suffers from not knowing the exact
-      parameters to be used in the query.  In this release, planning of
-      unnamed prepared statements is delayed until the first execution,
-      and the actual parameter values of that execution are used as
-      optimization hints.  This allows use of out-of-line parameter passing
-      without incurring a performance penalty.
-     
-    
-
-    
-     
-      Allow DECLARE CURSOR to take parameters
-      (Oliver Jowett)
-     
-     
-      It is now useful to issue DECLARE CURSOR in a
-      Parse message with parameters. The parameter values
-      sent at Bind time will be substituted into the
-      execution of the cursor's query.
-     
-    
-
-    
-     
-      Fix hash joins and aggregates of inet and
-      cidr data types (Tom)
-     
-     
-      Release 7.4 handled hashing of mixed inet and
-      cidr values incorrectly.  (This bug did not exist
-      in prior releases because they wouldn't try to hash either
-      data type.)
-     
-    
-
-    
-     
-      Make log_duration print only when log_statement
-      prints the query (Ed L.)
-     
-    
-
-   
-  
-
-
-  
-   Query Changes
-   
-
-    
-     
-      Add savepoints (nested transactions) (Alvaro)
-     
-    
-
-    
-     
-      Unsupported isolation levels are now accepted and promoted to the
-      nearest supported level (Peter)
-     
-     
-      The SQL specification states that if a database doesn't support a
-      specific isolation level, it should use the next more restrictive level.
-      This change complies with that recommendation.
-     
-    
-
-    
-     
-      Allow BEGIN WORK to specify transaction
-      isolation levels like START TRANSACTION does
-      (Bruce)
-     
-    
-
-    
-     
-      Fix table permission checking for cases in which rules generate
-      a query type different from the originally submitted query (Tom)
-     
-    
-
-    
-     
-      Implement dollar quoting to simplify single-quote usage (Andrew, Tom, 
-      David Fetter)
-     
-     
-      In previous releases, because single quotes had to be used to
-      quote a function's body, the use of single quotes inside the
-      function text required use of two single quotes or other error-prone
-      notations. With this release we add the ability to use "dollar
-      quoting" to quote a block of text.  The ability to use different
-      quoting delimiters at different nesting levels greatly simplifies
-      the task of quoting correctly, especially in complex functions.
-      Dollar quoting can be used anywhere quoted text is needed.
-     
-    
-
-    
-     
-      Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom)
-     
-     
-      
-      times. This has benefits when the expression is complex or is
-      volatile.
-     
-    
-
-    
-     
-      Test 
-      aggregate query (Tom)
-     
-     
-      Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose)
-      ... GROUP BY ... HAVING SUM(lose) > 0.  This should work but formerly
-      could fail with divide-by-zero.
-     
-    
-
-    
-     
-      Replace max_expr_depth parameter with
-      max_stack_depth parameter, measured in kilobytes of stack
-      size (Tom)
-     
-     
-     This gives us a fairly bulletproof defense against crashing due to 
-     runaway recursive functions. Instead of measuring the depth of expression
-     nesting, we now directly measure the size of the execution stack.
-     
-    
-
-    
-     
-      Allow arbitrary row expressions (Tom)
-     
-     
-      This release allows SQL expressions to contain arbitrary composite
-      types, that is, row values. It also allows functions to more easily
-      take rows as arguments and return row values.
-     
-    
-      
-    
-     
-      Allow 
-      in row and subselect comparisons (Fabien Coelho)
-     
-    
-      
-    
-     
-      Avoid locale-specific case conversion of basic ASCII letters in
-      identifiers and keywords (Tom)
-     
-     
-      This solves the Turkish problem with mangling of words
-      containing I and  i.  Folding of characters
-      outside the 7-bit-ASCII set is still locale-aware.
-     
-    
-      
-    
-     
-      Improve syntax error reporting (Fabien, Tom)
-     
-     
-      Syntax error reports are more useful than before.
-     
-    
-
-    
-     
-      Change EXECUTE to return a completion tag
-      matching the executed statement (Kris Jurka)
-     
-     
-      Previous releases return an EXECUTE tag for
-      any EXECUTE call. In this release, the tag
-      returned will reflect the command executed.
-     
-    
-
-    
-     
-      Avoid emitting 
-     
-     
-      Such a clause makes no logical sense, but in some cases the rule
-      decompiler formerly produced this syntax.
-     
-    
-
-   
-  
-
-
-  
-   Object Manipulation Changes
-   
-
-    
-     
-      Add COMMENT ON for casts, conversions, languages,
-      operator classes, and large objects (Christopher)
-     
-    
-
-    
-     
-      Add new server configuration parameter default_with_oids to
-      control whether tables are created with OIDs by default (Neil)
-     
-     
-      This allows administrators to control whether CREATE
-      TABLE commands create tables with or without OID
-      columns by default.  (Note: the current factory default setting for
-      default_with_oids is TRUE, but the default
-      will become FALSE in future releases.)
-     
-    
-
-    
-     
-      Add 
-      CREATE TABLE AS (Neil)
-     
-    
-
-    
-     
-      Allow ALTER TABLE DROP COLUMN to drop an OID
-      column (ALTER TABLE SET WITHOUT OIDS still works)
-      (Tom)
-     
-    
-
-    
-     
-      Allow composite types as table columns (Tom)
-     
-    
-
-    
-     
-      Allow ALTER ... ADD COLUMN with defaults and
-      
-     
-     
-      It is now possible for 
-      that is not initially filled with NULLs, but with a specified
-      default value.
-     
-    
-
-    
-     
-      Add ALTER COLUMN TYPE to change column's type (Rod)
-     
-     
-      It is now possible to alter a column's data type without dropping
-      and re-adding the column.
-     
-    
-
-    
-     
-      Allow multiple ALTER actions in a single ALTER
-      TABLE command (Rod)
-     
-     
-      This is particularly useful for ALTER commands that
-      rewrite the table (which include 
-      
-      ALTER commands together, the table need be rewritten
-      only once.
-     
-    
-
-    
-     
-      Allow ALTER TABLE to add SERIAL
-      columns (Tom)
-     
-     
-      This falls out from the new capability of specifying defaults for new
-      columns.
-     
-    
-
-    
-     
-      Allow changing the owners of aggregates, conversions, databases,
-      functions, operators, operator classes, schemas, types, and tablespaces
-      (Christopher, Euler Taveira de Oliveira)
-     
-     
-      Previously this required modifying the system tables directly.
-     
-    
-
-    
-     
-      Allow temporary object creation to be limited to 
-      DEFINER functions (Sean Chittenden)
-     
-    
-
-    
-     
-      Add 
-     
-     
-      Prior to this release, there was no way to clear an auto-cluster
-      specification except to modify the system tables.
-     
-    
-
-    
-     
-      Constraint/Index/SERIAL names are now
-      table_column_type
-      with numbers appended to guarantee uniqueness within the schema
-      (Tom)
-     
-     
-      The SQL specification states that such names should be unique
-      within a schema.
-     
-    
-
-    
-     
-      Add pg_get_serial_sequence() to return a
-      SERIAL column's sequence name (Christopher)
-     
-     
-      This allows automated scripts to reliably find the SERIAL
-      sequence name.
-     
-    
-
-    
-     
-      Warn when primary/foreign key data type mismatch requires costly lookup
-     
-    
-
-    
-     
-      New ALTER INDEX command to allow moving of indexes
-      between tablespaces (Gavin)
-     
-    
-
-    
-     
-      Make ALTER TABLE OWNER change dependent sequence
-      ownership too (Alvaro)
-     
-    
-
-
-   
-  
-
-
-  
-   Utility Command Changes
-   
-
-    
-     
-      Allow CREATE SCHEMA to create triggers,
-      indexes, and sequences (Neil)
-     
-    
-
-    
-     
-      Add 
-      Coelho)
-     
-     
-      This allows 
-      
-     
-    
-
-    
-     
-      Add 
-     
-     
-      This allows the LOCK command to fail if it
-      would have to wait for the requested lock.
-     
-    
-
-    
-     
-      Allow COPY to read and write
-      comma-separated-value (CSV) files (Andrew, Bruce)
-     
-    
-
-    
-     
-      Generate error if the COPY delimiter and NULL
-      string conflict (Bruce)
-     
-    
-
-    
-     
-      GRANT/REVOKE behavior
-      follows the SQL spec more closely
-     
-    
-
-    
-     
-      Avoid locking conflict between CREATE INDEX
-      and CHECKPOINT (Tom)
-     
-     
-      In 7.3 and 7.4, a long-running B-tree index build could block concurrent
-      CHECKPOINTs from completing, thereby causing WAL bloat because the
-      WAL log could not be recycled.
-     
-    
-
-    
-     
-      Database-wide ANALYZE does not hold locks
-      across tables (Tom)
-     
-     
-      This reduces the potential for deadlocks against other backends
-      that want exclusive locks on tables.  To get the benefit of this
-      change, do not execute database-wide ANALYZE
-      inside a transaction block (BEGIN block); it
-      must be able to commit and start a new transaction for each
-      table.
-     
-    
-
-    
-     
-      REINDEX does not exclusively lock the index's
-      parent table anymore
-     
-     
-      The index itself is still exclusively locked, but readers of the
-      table can continue if they are not using the particular index
-      being rebuilt.
-     
-    
-
-    
-     
-      Erase MD5 user passwords when a user is renamed (Bruce)
-     
-     
-      PostgreSQL uses the user name as salt
-      when encrypting passwords via MD5. When a user's name is changed,
-      the salt will no longer match the stored MD5 password, so the
-      stored password becomes useless.  In this release a notice is
-      generated and the password is cleared.  A new password must then
-      be assigned if the user is to be able to log in with a password.
-     
-    
-
-    
-     
-      New pg_ctl 
-     
-     
-      Windows does not have a kill command to send signals to
-      backends so this capability was added to pg_ctl.
-     
-    
-
-    
-     
-      Information schema improvements
-     
-    
-
-    
-     
-      Add 
-      initdb so the initial password can be
-      set by GUI tools (Magnus)
-     
-    
-
-    
-     
-      Detect locale/encoding mismatch in
-      initdb (Peter)
-     
-    
-
-    
-     
-      Add 
-      register Windows operating system service (Dave Page)
-     
-    
-
-   
-  
-
-
-  
-   Data Type and Function Changes
-   
-
-    
-     
-      More complete support for composite types (row types)  (Tom)
-     
-     
-      Composite values can be used in many places where only scalar values
-      worked before.
-     
-    
-
-    
-     
-      Reject non-rectangular array values as erroneous (Joe)
-     
-     
-      Formerly, array_in would silently build a
-      surprising result.
-     
-    
-
-     
-      
-       Overflow in integer arithmetic operations is now detected (Tom)
-      
-     
-
-     
-      
-       The arithmetic operators associated with the single-byte
-       "char" data type have been removed.
-      
-      
-       Formerly, the parser would select these operators in many situations
-       where an unable to select an operator error would be more
-       appropriate, such as null * null.  If you actually want
-       to do arithmetic on a "char" column, you can cast it to
-       integer explicitly.
-      
-     
-
-    
-      
-       Syntax checking of array input values considerably tightened up (Joe)
-      
-     
-       Junk that was previously allowed in odd places with odd results
-       now causes an ERROR, for example, non-whitespace
-       after the closing right brace.
-      
-    
-
-    
-      
-       Empty-string array element values must now be written as
-       "", rather than writing nothing (Joe)
-      
-     
-       Formerly, both ways of writing an empty-string element value were
-       allowed, but now a quoted empty string is required.  The case where
-       nothing at all appears will probably be considered to be a NULL
-       element value in some future release.
-      
-    
-
-    
-      
-       Array element trailing whitespace is now ignored (Joe)
-      
-     
-       Formerly leading whitespace was ignored, but trailing whitespace
-       between an element value and the delimiter or right brace was
-       significant.  Now trailing whitespace is also ignored.
-      
-    
-
-    
-     
-      Emit array values with explicit array bounds when lower bound is not one
-      (Joe)
-     
-    
-
-    
-     
-      Accept YYYY-monthname-DD as a date string (Tom)
-     
-    
-
-    
-     
-      Make netmask and hostmask functions
-      return maximum-length mask length (Tom)
-     
-    
-
-    
-     
-      Change factorial function to return numeric (Gavin)
-     
-     
-      Returning numeric allows the factorial function to
-      work for a wider range of input values.
-     
-    
-
-    
-     
-      to_char/to_date() date conversion
-      improvements (Kurt Roeckx, Fabien Coelho)
-     
-    
-
-    
-     
-      Make length() disregard trailing spaces in
-      CHAR(n) (Gavin)
-     
-     
-      This change was made to improve consistency: trailing spaces are
-      semantically insignificant in CHAR(n) data, so they
-      should not be counted by length().
-     
-    
-
-    
-     
-      Warn about empty string being passed to
-      OID/float4/float8 data types (Neil)
-     
-     
-      8.1 will throw an error instead.
-     
-    
-
-    
-     
-      Allow leading or trailing whitespace in
-      int2/int4/int8/float4/float8
-      input routines
-      (Neil)
-     
-    
-
-    
-     
-      Better support for IEEE Infinity and NaN
-      values in float4/float8 (Neil)
-     
-     
-      These should now work on all platforms that support IEEE-compliant
-      floating point arithmetic.
-     
-    
-
-    
-     
-      Add 
-     
-    
-
-    
-     
-      Fix to_char for 1 BC
-      (previously it returned 1 AD) (Bruce)
-     
-    
-
-    
-     
-      Fix date_part(year) for BC dates (previously it
-      returned one less than the correct year) (Bruce)
-     
-    
-
-    
-     
-      Fix date_part() to return the proper millennium and
-      century (Fabien Coelho)
-     
-     
-      In previous versions, the century and millennium results had a wrong
-      number and started in the wrong year, as compared to standard
-      reckoning of such things.
-     
-    
-
-    
-     
-      Add ceiling() as an alias for ceil(),
-      and power() as an alias for pow() for
-      standards compliance (Neil)
-     
-    
-
-    
-     
-      Change ln(), log(),
-      power(), and sqrt() to emit the correct
-      SQLSTATE error codes for certain error conditions, as
-      specified by SQL:2003 (Neil)
-     
-    
-
-    
-     
-      Add width_bucket() function as defined by SQL:2003 (Neil)
-     
-    
-
-    
-     
-      Add generate_series() functions to simplify working
-      with numeric sets (Joe)
-     
-    
-
-    
-     
-      Fix upper/lower/initcap() functions to work with
-      multibyte encodings (Tom)
-     
-    
-
-    
-     
-      Add boolean and bitwise integer 
-      aggregates (Fabien Coelho)
-     
-    
-
-    
-     
-      New session information functions to return network addresses for client
-      and server (Sean Chittenden)
-     
-    
-
-    
-     
-      Add function to determine the area of a closed path (Sean Chittenden)
-     
-    
-
-    
-     
-      Add function to send cancel request to other backends (Magnus)
-     
-    
-
-    
-     
-      Add interval plus datetime operators (Tom)
-     
-     
-      The reverse ordering, datetime plus interval,
-      was already supported, but both are required by the SQL standard.
-     
-    
-
-    
-     
-      Casting an integer to BIT(N) selects the rightmost N bits
-      of the integer
-      (Tom)
-     
-     
-      In prior releases, the leftmost N bits were selected, but this was
-      deemed unhelpful, not to mention inconsistent with casting from bit
-      to int.
-     
-    
-
-    
-     
-      Require CIDR values to have all non-masked bits be zero
-      (Kevin Brintnall)
-     
-    
-
-   
-  
-
-
-  
-   Server-Side Language Changes
-   
-
-    
-     
-      In READ COMMITTED serialization mode, volatile functions
-      now see the results of concurrent transactions committed up to the
-      beginning of each statement within the function, rather than up to the
-      beginning of the interactive command that called the function.
-     
-    
-
-    
-     
-      Functions declared STABLE or IMMUTABLE always
-      use the snapshot of the calling query, and therefore do not see the
-      effects of actions taken after the calling query starts, whether in
-      their own transaction or other transactions.  Such a function must be
-      read-only, too, meaning that it cannot use any SQL commands other than
-      SELECT.  There is a considerable performance gain from
-      declaring a function STABLE or IMMUTABLE
-      rather than VOLATILE.
-     
-    
-
-    
-     
-      Non-deferred 
-      after completion of the triggering query, rather than upon
-      finishing the current interactive command. This makes a difference
-      when the triggering query occurred within a function: the trigger
-      is invoked before the function proceeds to its next operation. For
-      example, if a function inserts a new row into a table, any
-      non-deferred foreign key checks occur before proceeding with the
-      function.
-     
-    
-
-    
-     
-      Allow function parameters to be declared with names (Dennis Bjorklund)
-     
-     
-      This allows better documentation of functions.  Whether the names
-      actually do anything depends on the specific function language
-      being used.
-     
-    
-
-    
-     
-      Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bjorklund)
-     
-     
-      This basically creates an automatic alias for each named parameter.
-     
-    
-
-    
-     
-      Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
-     
-     
-      This allows us to catch simple syntax errors sooner.
-     
-    
-
-    
-     
-      More support for composite types (row and record variables) in PL/pgSQL
-     
-     
-      For example, it now works to pass a rowtype variable to another function
-      as a single variable.
-     
-    
-
-    
-     
-      Default values for PL/pgSQL variables can now reference previously
-      declared variables
-     
-    
-
-    
-     
-      Improve parsing of PL/pgSQL FOR loops (Tom)
-     
-     
-      Parsing is now driven by presence of ".." rather than
-      data type of 
-      correct functions, but should result in more understandable error
-      messages when a mistake is made.
-     
-    
-
-    
-     
-      Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
-     
-    
-
-    
-     
-      In PL/Tcl, SPI commands are now run in subtransactions.  If an error
-      occurs, the subtransaction is cleaned up and the error is reported
-      as an ordinary Tcl error, which can be trapped with catch.
-      Formerly, it was not possible to catch such errors.
-     
-    
-
-    
-     
-      Accept ELSEIF in PL/pgSQL (Neil)
-     
-     
-      Previously PL/pgSQL only allowed ELSIF, but many people
-      are accustomed to spelling this keyword ELSEIF.
-     
-    
-
-   
-  
-
-
-  
-   <application>psql</> Changes
-   
-
-    
-     
-      Improve psql information display about database
-      objects (Christopher)
-     
-    
-
-    
-     
-      Allow psql to display group membership in
-      \du and \dg (Markus Bertheau)
-     
-    
-
-    
-     
-      Prevent psql \dn from showing
-      temporary schemas (Bruce)
-     
-    
-
-    
-     
-      Allow psql to handle tilde user expansion for file
-      names (Zach Irmen)
-     
-    
-
-    
-     
-      Allow psql to display fancy prompts, including
-      color, via readline (Reece Hart, Chet Ramey)
-     
-    
-
-    
-     
-      Make psql \copy match COPY command syntax
-      fully (Tom)
-     
-    
-
-    
-     
-      Show the location of syntax errors (Fabien Coelho, Tom)
-     
-    
-
-    
-     
-      Add CLUSTER information to psql
-      \d display
-      (Bruce)
-     
-    
-
-    
-     
-      Change psql \copy stdin/stdout to read
-      from command input/output (Bruce)
-     
-    
-
-    
-     
-      Add 
-      psql's stdin/stdout (Mark
-      Feit)
-     
-    
-
-    
-     
-      Add global psql configuration file, psqlrc.sample
-      (Bruce)
-     
-     
-      This allows a central file where global psql startup commands can
-      be stored.
-     
-    
-
-    
-     
-      Have psql \d+ indicate if the table
-      has an OID column (Neil)
-     
-    
-
-    
-     
-      On Windows, use binary mode in psql when reading files so control-Z
-      is not seen as end-of-file
-     
-    
-
-    
-     
-      Have \dn+ show permissions and description for schemas (Dennis
-      Bjorklund)
-     
-    
-
-    
-     
-      Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
-     
-    
-
-    
-     
-      Allow boolean settings to be set using upper or lower case (Michael Paesold)
-     
-    
-
-   
-  
-
-
-  
-   <application>pg_dump</> Changes
-   
-
-    
-     
-      Use dependency information to improve the reliability of
-      pg_dump (Tom)
-     
-     
-      This should solve the longstanding problems with related objects
-      sometimes being dumped in the wrong order.
-     
-    
-
-    
-     
-      Have pg_dump output objects in alphabetical order if possible (Tom)
-     
-     
-      This should make it easier to identify changes between
-      dump files.
-     
-    
-
-    
-     
-      Allow pg_restore to ignore some SQL errors (Fabien Coelho)
-     
-     
-      This makes pg_restore's behavior similar to the
-      results of feeding a pg_dump output script to
-      psql. In most cases, ignoring errors and plowing
-      ahead is the most useful thing to do. Also added was a pg_restore
-      option to give the old behavior of exiting on an error.
-     
-    
-
-    
-     
-      pg_restore 
-      objects' schema names
-     
-    
-
-    
-     
-      New begin/end markers in pg_dump text output (Bruce)
-     
-    
-
-    
-     
-      Add start/stop times for
-      pg_dump/pg_dumpall in verbose mode
-      (Bruce)
-     
-    
-
-    
-     
-      Allow most pg_dump options in
-      pg_dumpall (Christopher)
-     
-    
-
-    
-     
-      Have pg_dump use ALTER OWNER rather
-      than SET SESSION AUTHORIZATION by default
-      (Christopher)
-     
-    
-
-   
-  
-
-
-  
-   libpq Changes
-   
-
-    
-     
-      Make libpq's 
-     
-    
-
-    
-     
-      Add PQmbdsplen() which returns the display length
-      of a character (Tatsuo)
-     
-    
-
-    
-     
-      Add thread locking to SSL and
-      Kerberos connections (Manfred Spraul)
-     
-    
-
-    
-     
-      Allow PQoidValue(), PQcmdTuples(), and
-      PQoidStatus() to work on EXECUTE
-      commands (Neil)
-     
-    
-
-    
-     
-      Add PQserverVersion() to provide more convenient
-      access to the server version number (Greg Sabino Mullane)
-     
-    
-
-    
-     
-      Add PQprepare/PQsendPrepared() functions to support
-      preparing statements without necessarily specifying the data types
-      of their parameters (Abhijit Menon-Sen)
-     
-    
-
-    
-     
-      Many ECPG improvements, including SET DESCRIPTOR (Michael)
-     
-    
-
-   
-  
-
-
-  
-   Source Code Changes
-   
-
-    
-     
-      Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
-     
-    
-
-    
-     
-      Shell script commands converted to C versions for Windows support (Andrew)
-     
-    
-
-    
-     
-      Create an extension makefile framework (Fabien Coelho, Peter)
-     
-     
-      This simplifies the task of building extensions outside the original
-      source tree.
-     
-    
-
-    
-     
-      Support relocatable installations (Bruce)
-     
-     
-      Directory paths for installed files (such as the
-      /share directory) are now computed relative to the
-      actual location of the executables, so that an installation tree
-      can be moved to another place without reconfiguring and
-      rebuilding.
-     
-    
-
-    
-     
-      Use 
-      allow 
-     
-    
-
-    
-     
-      Add 
-     
-    
-
-    
-     
-      Upgrade to DocBook V4.2 SGML (Peter)
-     
-    
-
-    
-     
-      New PostgreSQL CVS tag (Marc)
-     
-     
-      This was done to make it easier for organizations to manage their
-      own copies of the PostgreSQL
-      CVS repository. File version stamps from the master
-      repository will not get munged by checking into or out of a copied
-      repository.
-     
-    
-
-    
-     
-      Clarify locking code (Manfred Koizar)
-     
-    
-
-    
-     
-      Buffer manager cleanup (Neil)
-     
-    
-
-    
-     
-      Decouple platform tests from CPU spinlock code (Bruce, Tom)
-     
-    
-
-    
-     
-      Add inlined test-and-set code on PA-RISC for gcc
-      (ViSolve, Tom)
-     
-    
-
-    
-     
-      Improve i386 spinlock code (Manfred Spraul)
-     
-    
-
-    
-     
-      Clean up spinlock assembly code to avoid warnings from newer
-      gcc releases (Tom)
-     
-    
-
-    
-     
-      Remove JDBC from source tree; now a separate project
-     
-    
-
-    
-     
-      Remove the libpgtcl client interface; now a separate project
-     
-    
-
-    
-     
-      More accurately estimate memory and file descriptor usage (Tom)
-     
-    
-
-    
-     
-      Improvements to the Mac OS X startup scripts (Ray A.)
-     
-    
-
-    
-     
-      New fsync() test program (Bruce)
-     
-    
-
-    
-     
-      Major documentation improvements (Neil, Peter)
-     
-    
-
-    
-     
-      Remove pg_encoding; not needed
-      anymore
-     
-    
-
-    
-     
-      Remove pg_id; not needed anymore
-     
-    
-
-    
-     
-      Remove initlocation; not needed
-      anymore
-     
-    
-
-    
-     
-      Auto-detect thread flags (no more manual testing) (Bruce)
-     
-    
-
-    
-     
-      Use Olson's public domain timezone library (Magnus)
-     
-    
-
-    
-     
-      With threading enabled, use thread flags on Unixware for 
-      backend executables too (Bruce)
-     
-     
-      Unixware cannot mix threaded and non-threaded object files in the
-      same executable, so everything must be compiled as threaded.
-     
-    
-
-    
-     
-      psql now uses a flex-generated
-      lexical analyzer to process command strings
-     
-    
-
-    
-     
-      Reimplement the linked list data structure used throughout the
-      backend (Neil)
-     
-     
-      This improves performance by allowing list append and length
-      operations to be more efficient.
-     
-    
-
-    
-     
-      Allow dynamically loaded modules to create their own server configuration
-      parameters (Thomas Hallgren)
-     
-    
-
-    
-     
-      New Brazilian version of FAQ (Euler Taveira de Oliveira)
-     
-    
-
-    
-     
-      Add French FAQ (Guillaume Lelarge)
-     
-    
-
-    
-     
-      New pgevent for Windows logging
-     
-    
-
-    
-     
-      Make libpq and ECPG build as proper shared libraries on OS X (Tom)
-     
-    
-
-   
-  
-
-
-  
-   Contrib Changes
-   
-
-    
-     
-      Overhaul of contrib/dblink (Joe)
-     
-    
-
-    
-     
-      contrib/dbmirror improvements (Steven Singer)
-     
-    
-
-    
-     
-      New contrib/xml2 (John Gray, Torchbox)
-     
-    
-
-    
-     
-      Updated contrib/mysql
-     
-    
-
-    
-     
-      New version of contrib/btree_gist (Teodor)
-     
-    
-
-    
-     
-      New contrib/trgm, trigram matching for
-      PostgreSQL (Teodor)
-     
-    
-
-    
-     
-      Many contrib/tsearch2 improvements (Teodor)
-     
-    
-
-    
-     
-      Add double metaphone to contrib/fuzzystrmatch (Andrew)
-     
-    
-
-    
-     
-      Allow contrib/pg_autovacuum to run as a Windows service (Dave Page)
-     
-    
-
-    
-     
-      Add functions to contrib/dbsize (Andreas Pflug)
-     
-    
-
-    
-     
-      Removed contrib/pg_logger: obsoleted by integrated logging
-      subprocess
-     
-    
-
-    
-     
-      Removed contrib/rserv: obsoleted by various separate projects
-     
-    
-
-   
-  
-
-  
-
+    
+     Performance Improvements
+     
+  
+      
+       
+        Support cross-data-type index usage (Tom)
+       
+       
+        Before this change, many queries would not use an index if the data
+        types did not match exactly. This improvement makes index usage more
+        intuitive and consistent.
+       
+      
+  
+      
+       
+        New buffer replacement strategy that improves caching (Jan)
+       
+       
+        Prior releases used a least-recently-used (LRU) cache to keep
+        recently referenced pages in memory. The LRU algorithm
+        did not consider the number of times a specific cache entry was
+        accessed, so large table scans could force out useful cache pages.
+        The new cache algorithm uses four separate lists to track most
+        recently used and most frequently used cache pages and dynamically 
+        optimize their replacement based on the work load. This should
+        lead to much more efficient use of the shared buffer cache.
+        Administrators who have tested shared buffer sizes in the past
+        should retest with this new cache replacement policy.
+       
+      
+  
+      
+       
+        Add subprocess to write dirty buffers periodically to reduce
+        checkpoint writes (Jan)
+       
+       
+        In previous releases, the checkpoint process, which runs every few
+        minutes, would write all dirty buffers to the operating system's
+        buffer cache then flush all dirty operating system buffers to
+        disk. This resulted in a periodic spike in disk usage that often
+        hurt performance. The new code uses a background writer to trickle
+        disk writes at a steady pace so checkpoints have far fewer dirty
+        pages to write to disk. Also, the new code does not issue a global
+        sync() call, but instead fsync()s just
+        the files written since the last checkpoint. This should improve
+        performance and minimize degradation during checkpoints.
+       
+      
+  
+      
+       
+        Add ability to prolong vacuum to reduce performance impact (Jan)
+       
+       
+        On busy systems, VACUUM performs many I/O
+        requests which can hurt performance for other users. This
+        release allows you to slow down VACUUM to
+        reduce its impact on other users, though this increases the
+        total duration of VACUUM.
+       
+      
+  
+      
+       
+        Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
+       
+       
+        This improves the way indexes are scanned when many duplicate
+        values exist in the index.
+       
+      
+  
+      
+       
+        Use dynamically-generated table size estimates while planning (Tom)
+       
+       
+        Formerly the planner estimated table sizes using the values seen
+        by the last VACUUM or ANALYZE,
+        both as to physical table size (number of pages) and number of rows.
+        Now, the current physical table size is obtained from the kernel,
+        and the number of rows is estimated by multiplying the table size
+        by the row density (rows per page) seen by the last
+        VACUUM or ANALYZE.  This should
+        produce more reliable estimates in cases where the table size has
+        changed significantly since the last housekeeping command.
+       
+      
+  
+      
+       
+        Improved index usage with OR clauses (Tom)
+       
+       
+        This allows the optimizer to use indexes in statements with many OR
+        clauses that would not have been indexed in the past.  It can also use
+        multi-column indexes where the first column is specified and the second
+        column is part of an OR clause.
+       
+      
+  
+      
+       
+        Improve matching of partial index clauses (Tom)
+       
+       
+        The server is now smarter about using partial indexes in queries
+        involving complex 
+       
+      
+  
+      
+       
+        Improve performance of the GEQO optimizer (Tom)
+       
+       
+        The GEQO optimizer is used to plan queries involving many tables (by
+        default, twelve or more). This release speeds up the way queries are
+        analyzed to decrease time spent in optimization.
+       
+      
+  
+      
+       
+        Miscellaneous optimizer improvements
+       
+       
+        There is not room here to list all the minor improvements made, but
+        numerous special cases work better than in prior releases.
+       
+      
+  
+      
+       
+        Improve lookup speed for C functions (Tom)
+       
+       
+        This release uses a hash table to lookup information for dynamically
+        loaded C functions. This improves their speed so they perform nearly as
+        quickly as functions that are built into the server executable.
+       
+      
+  
+      
+       
+        Add type-specific ANALYZE statistics
+        capability (Mark Cave-Ayland)
+       
+       
+        This feature allows more flexibility in generating statistics
+        for non-standard data types.
+       
+      
+  
+      
+       
+        ANALYZE now collects statistics for
+        expression indexes (Tom)
+       
+       
+        Expression indexes (also called functional indexes) allow users to
+        index not just columns but the results of expressions and function
+        calls. With this release, the optimizer can gather and use statistics
+        about the contents of expression indexes.  This will greatly improve
+        the quality of planning for queries in which an expression index is
+        relevant.
+       
+      
+  
+      
+       
+        New two-stage sampling method for ANALYZE
+        (Manfred Koizar)
+       
+       
+        This gives better statistics when the density of valid rows is very
+        different in different regions of a table.
+       
+      
+  
+      
+       
+        Speed up TRUNCATE (Tom)
+       
+       
+        This buys back some of the performance loss observed in 7.4, while still
+        keeping TRUNCATE transaction-safe.
+       
+      
+  
+     
+    
+  
+  
+    
+     Server Changes
+     
+  
+      
+       
+        Add WAL file archiving and point-in-time recovery (Simon Riggs)
+       
+      
+  
+      
+       
+        Add tablespaces so admins can control disk layout (Gavin)
+       
+      
+  
+      
+       
+        Add a built-in log rotation program (Andreas Pflug)
+       
+       
+        It is now possible to log server messages conveniently without
+        relying on either syslog or an external log
+        rotation program.
+       
+      
+  
+      
+       
+        Add new read-only server configuration parameters to show server
+        compile-time settings: block_size,
+        integer_datetimes, max_function_args,
+        max_identifier_length, max_index_keys  (Joe)
+       
+      
+  
+      
+       
+        Make quoting of sameuser, samegroup, and
+        all remove special meaning of these terms in
+        pg_hba.conf (Andrew)
+       
+      
+  
+      
+       
+        Use clearer IPv6 name ::1/128 for
+        localhost in default pg_hba.conf (Andrew)
+       
+      
+  
+      
+       
+        Use CIDR format in pg_hba.conf examples (Andrew)
+       
+      
+  
+      
+       
+        Rename server configuration parameters SortMem and
+        VacuumMem to work_mem and
+        maintenance_work_mem (Old names still supported) (Tom)
+       
+       
+        This change was made to clarify that bulk operations such as index and
+        foreign key creation use maintenance_work_mem, while
+        work_mem is for workspaces used during query execution.
+       
+      
+  
+      
+       
+        Allow logging of session disconnections using server configuration
+        log_disconnections (Andrew)
+       
+      
+  
+      
+       
+        Add new server configuration parameter log_line_prefix to
+        allow control of information emitted in each log line (Andrew)
+       
+       
+        Available information includes user name, database name, remote IP
+        address, and session start time.
+       
+      
+  
+      
+       
+        Remove server configuration parameters log_pid,
+        log_timestamp, log_source_port; functionality
+        superseded by log_line_prefix (Andrew)
+       
+      
+  
+      
+       
+        Replace the virtual_host and tcpip_socket
+        parameters with a unified listen_addresses parameter
+        (Andrew, Tom)
+       
+       
+        virtual_host could only specify a single IP address to
+        listen on.  listen_addresses allows multiple addresses
+        to be specified.
+       
+      
+  
+      
+       
+        Listen on localhost by default, which eliminates the need for the
+        
+       
+       
+        Listening on localhost (127.0.0.1) opens no new
+        security holes but allows configurations like Windows and JDBC,
+        which do not support local sockets, to work without special
+        adjustments.
+       
+      
+  
+      
+       
+        Remove syslog server configuration parameter, and add more
+        logical log_destination variable to control log output
+        location (Magnus)
+       
+      
+  
+      
+       
+        Change server configuration parameter log_statement to take
+        values all, mod, ddl, or
+        none to select which queries are logged (Bruce)
+       
+       
+        This allows administrators to log only data definition changes or
+        only data modification statements.
+       
+      
+  
+      
+       
+        Some logging-related configuration parameters could formerly be adjusted
+        by ordinary users, but only in the more verbose direction.
+        They are now treated more strictly: only superusers can set them.
+        However, a superuser may use ALTER USER to provide per-user
+        settings of these values for non-superusers.  Also, it is now possible
+        for superusers to set values of superuser-only configuration parameters
+        via PGOPTIONS.
+       
+      
+  
+      
+       
+        Allow configuration files to be placed outside the data directory (mlw)
+       
+       
+        By default, configuration files are kept in the cluster's top directory.
+        With this addition, configuration files can be placed outside the
+        data directory, easing administration.
+       
+      
+  
+      
+       
+        Plan prepared queries only when first executed so constants can be
+        used for statistics (Oliver Jowett)
+       
+       
+        Prepared statements plan queries once and execute them many
+        times. While prepared queries avoid the overhead of re-planning
+        on each use, the quality of the plan suffers from not knowing the exact
+        parameters to be used in the query.  In this release, planning of
+        unnamed prepared statements is delayed until the first execution,
+        and the actual parameter values of that execution are used as
+        optimization hints.  This allows use of out-of-line parameter passing
+        without incurring a performance penalty.
+       
+      
+  
+      
+       
+        Allow DECLARE CURSOR to take parameters
+        (Oliver Jowett)
+       
+       
+        It is now useful to issue DECLARE CURSOR in a
+        Parse message with parameters. The parameter values
+        sent at Bind time will be substituted into the
+        execution of the cursor's query.
+       
+      
+  
+      
+       
+        Fix hash joins and aggregates of inet and
+        cidr data types (Tom)
+       
+       
+        Release 7.4 handled hashing of mixed inet and
+        cidr values incorrectly.  (This bug did not exist
+        in prior releases because they wouldn't try to hash either
+        data type.)
+       
+      
+  
+      
+       
+        Make log_duration print only when log_statement
+        prints the query (Ed L.)
+       
+      
+  
+     
+    
+  
+  
+    
+     Query Changes
+     
+  
+      
+       
+        Add savepoints (nested transactions) (Alvaro)
+       
+      
+  
+      
+       
+        Unsupported isolation levels are now accepted and promoted to the
+        nearest supported level (Peter)
+       
+       
+        The SQL specification states that if a database doesn't support a
+        specific isolation level, it should use the next more restrictive level.
+        This change complies with that recommendation.
+       
+      
+  
+      
+       
+        Allow BEGIN WORK to specify transaction
+        isolation levels like START TRANSACTION does
+        (Bruce)
+       
+      
+  
+      
+       
+        Fix table permission checking for cases in which rules generate
+        a query type different from the originally submitted query (Tom)
+       
+      
+  
+      
+       
+        Implement dollar quoting to simplify single-quote usage (Andrew, Tom, 
+        David Fetter)
+       
+       
+        In previous releases, because single quotes had to be used to
+        quote a function's body, the use of single quotes inside the
+        function text required use of two single quotes or other error-prone
+        notations. With this release we add the ability to use "dollar
+        quoting" to quote a block of text.  The ability to use different
+        quoting delimiters at different nesting levels greatly simplifies
+        the task of quoting correctly, especially in complex functions.
+        Dollar quoting can be used anywhere quoted text is needed.
+       
+      
+  
+      
+       
+        Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom)
+       
+       
+        
+        times. This has benefits when the expression is complex or is
+        volatile.
+       
+      
+  
+      
+       
+        Test 
+        aggregate query (Tom)
+       
+       
+        Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose)
+        ... GROUP BY ... HAVING SUM(lose) > 0.  This should work but formerly
+        could fail with divide-by-zero.
+       
+      
+  
+      
+       
+        Replace max_expr_depth parameter with
+        max_stack_depth parameter, measured in kilobytes of stack
+        size (Tom)
+       
+       
+       This gives us a fairly bulletproof defense against crashing due to 
+       runaway recursive functions. Instead of measuring the depth of expression
+       nesting, we now directly measure the size of the execution stack.
+       
+      
+  
+      
+       
+        Allow arbitrary row expressions (Tom)
+       
+       
+        This release allows SQL expressions to contain arbitrary composite
+        types, that is, row values. It also allows functions to more easily
+        take rows as arguments and return row values.
+       
+      
+        
+      
+       
+        Allow 
+        in row and subselect comparisons (Fabien Coelho)
+       
+      
+        
+      
+       
+        Avoid locale-specific case conversion of basic ASCII letters in
+        identifiers and keywords (Tom)
+       
+       
+        This solves the Turkish problem with mangling of words
+        containing I and  i.  Folding of characters
+        outside the 7-bit-ASCII set is still locale-aware.
+       
+      
+        
+      
+       
+        Improve syntax error reporting (Fabien, Tom)
+       
+       
+        Syntax error reports are more useful than before.
+       
+      
+  
+      
+       
+        Change EXECUTE to return a completion tag
+        matching the executed statement (Kris Jurka)
+       
+       
+        Previous releases return an EXECUTE tag for
+        any EXECUTE call. In this release, the tag
+        returned will reflect the command executed.
+       
+      
+  
+      
+       
+        Avoid emitting 
+       
+       
+        Such a clause makes no logical sense, but in some cases the rule
+        decompiler formerly produced this syntax.
+       
+      
+  
+     
+    
+  
+  
+    
+     Object Manipulation Changes
+     
+  
+      
+       
+        Add COMMENT ON for casts, conversions, languages,
+        operator classes, and large objects (Christopher)
+       
+      
+  
+      
+       
+        Add new server configuration parameter default_with_oids to
+        control whether tables are created with OIDs by default (Neil)
+       
+       
+        This allows administrators to control whether CREATE
+        TABLE commands create tables with or without OID
+        columns by default.  (Note: the current factory default setting for
+        default_with_oids is TRUE, but the default
+        will become FALSE in future releases.)
+       
+      
+  
+      
+       
+        Add 
+        CREATE TABLE AS (Neil)
+       
+      
+  
+      
+       
+        Allow ALTER TABLE DROP COLUMN to drop an OID
+        column (ALTER TABLE SET WITHOUT OIDS still works)
+        (Tom)
+       
+      
+  
+      
+       
+        Allow composite types as table columns (Tom)
+       
+      
+  
+      
+       
+        Allow ALTER ... ADD COLUMN with defaults and
+        
+       
+       
+        It is now possible for 
+        that is not initially filled with NULLs, but with a specified
+        default value.
+       
+      
+  
+      
+       
+        Add ALTER COLUMN TYPE to change column's type (Rod)
+       
+       
+        It is now possible to alter a column's data type without dropping
+        and re-adding the column.
+       
+      
+  
+      
+       
+        Allow multiple ALTER actions in a single ALTER
+        TABLE command (Rod)
+       
+       
+        This is particularly useful for ALTER commands that
+        rewrite the table (which include 
+        
+        ALTER commands together, the table need be rewritten
+        only once.
+       
+      
+  
+      
+       
+        Allow ALTER TABLE to add SERIAL
+        columns (Tom)
+       
+       
+        This falls out from the new capability of specifying defaults for new
+        columns.
+       
+      
+  
+      
+       
+        Allow changing the owners of aggregates, conversions, databases,
+        functions, operators, operator classes, schemas, types, and tablespaces
+        (Christopher, Euler Taveira de Oliveira)
+       
+       
+        Previously this required modifying the system tables directly.
+       
+      
+  
+      
+       
+        Allow temporary object creation to be limited to 
+        DEFINER functions (Sean Chittenden)
+       
+      
+  
+      
+       
+        Add 
+       
+       
+        Prior to this release, there was no way to clear an auto-cluster
+        specification except to modify the system tables.
+       
+      
+  
+      
+       
+        Constraint/Index/SERIAL names are now
+        table_column_type
+        with numbers appended to guarantee uniqueness within the schema
+        (Tom)
+       
+       
+        The SQL specification states that such names should be unique
+        within a schema.
+       
+      
+  
+      
+       
+        Add pg_get_serial_sequence() to return a
+        SERIAL column's sequence name (Christopher)
+       
+       
+        This allows automated scripts to reliably find the SERIAL
+        sequence name.
+       
+      
+  
+      
+       
+        Warn when primary/foreign key data type mismatch requires costly lookup
+       
+      
+  
+      
+       
+        New ALTER INDEX command to allow moving of indexes
+        between tablespaces (Gavin)
+       
+      
+  
+      
+       
+        Make ALTER TABLE OWNER change dependent sequence
+        ownership too (Alvaro)
+       
+      
+  
+  
+     
+    
+  
+  
+    
+     Utility Command Changes
+     
+  
+      
+       
+        Allow CREATE SCHEMA to create triggers,
+        indexes, and sequences (Neil)
+       
+      
+  
+      
+       
+        Add 
+        Coelho)
+       
+       
+        This allows 
+        
+       
+      
+  
+      
+       
+        Add 
+       
+       
+        This allows the LOCK command to fail if it
+        would have to wait for the requested lock.
+       
+      
+  
+      
+       
+        Allow COPY to read and write
+        comma-separated-value (CSV) files (Andrew, Bruce)
+       
+      
+  
+      
+       
+        Generate error if the COPY delimiter and NULL
+        string conflict (Bruce)
+       
+      
+  
+      
+       
+        GRANT/REVOKE behavior
+        follows the SQL spec more closely
+       
+      
+  
+      
+       
+        Avoid locking conflict between CREATE INDEX
+        and CHECKPOINT (Tom)
+       
+       
+        In 7.3 and 7.4, a long-running B-tree index build could block concurrent
+        CHECKPOINTs from completing, thereby causing WAL bloat because the
+        WAL log could not be recycled.
+       
+      
+  
+      
+       
+        Database-wide ANALYZE does not hold locks
+        across tables (Tom)
+       
+       
+        This reduces the potential for deadlocks against other backends
+        that want exclusive locks on tables.  To get the benefit of this
+        change, do not execute database-wide ANALYZE
+        inside a transaction block (BEGIN block); it
+        must be able to commit and start a new transaction for each
+        table.
+       
+      
+  
+      
+       
+        REINDEX does not exclusively lock the index's
+        parent table anymore
+       
+       
+        The index itself is still exclusively locked, but readers of the
+        table can continue if they are not using the particular index
+        being rebuilt.
+       
+      
+  
+      
+       
+        Erase MD5 user passwords when a user is renamed (Bruce)
+       
+       
+        PostgreSQL uses the user name as salt
+        when encrypting passwords via MD5. When a user's name is changed,
+        the salt will no longer match the stored MD5 password, so the
+        stored password becomes useless.  In this release a notice is
+        generated and the password is cleared.  A new password must then
+        be assigned if the user is to be able to log in with a password.
+       
+      
+  
+      
+       
+        New pg_ctl 
+       
+       
+        Windows does not have a kill command to send signals to
+        backends so this capability was added to pg_ctl.
+       
+      
+  
+      
+       
+        Information schema improvements
+       
+      
+  
+      
+       
+        Add 
+        initdb so the initial password can be
+        set by GUI tools (Magnus)
+       
+      
+  
+      
+       
+        Detect locale/encoding mismatch in
+        initdb (Peter)
+       
+      
+  
+      
+       
+        Add 
+        register Windows operating system service (Dave Page)
+       
+      
+  
+     
+    
+  
+  
+    
+     Data Type and Function Changes
+     
+  
+      
+       
+        More complete support for composite types (row types)  (Tom)
+       
+       
+        Composite values can be used in many places where only scalar values
+        worked before.
+       
+      
+  
+      
+       
+        Reject non-rectangular array values as erroneous (Joe)
+       
+       
+        Formerly, array_in would silently build a
+        surprising result.
+       
+      
+  
+       
+        
+         Overflow in integer arithmetic operations is now detected (Tom)
+        
+       
+  
+       
+        
+         The arithmetic operators associated with the single-byte
+         "char" data type have been removed.
+        
+        
+         Formerly, the parser would select these operators in many situations
+         where an unable to select an operator error would be more
+         appropriate, such as null * null.  If you actually want
+         to do arithmetic on a "char" column, you can cast it to
+         integer explicitly.
+        
+       
+  
+      
+        
+         Syntax checking of array input values considerably tightened up (Joe)
+        
+       
+         Junk that was previously allowed in odd places with odd results
+         now causes an ERROR, for example, non-whitespace
+         after the closing right brace.
+        
+      
+  
+      
+        
+         Empty-string array element values must now be written as
+         "", rather than writing nothing (Joe)
+        
+       
+         Formerly, both ways of writing an empty-string element value were
+         allowed, but now a quoted empty string is required.  The case where
+         nothing at all appears will probably be considered to be a NULL
+         element value in some future release.
+        
+      
+  
+      
+        
+         Array element trailing whitespace is now ignored (Joe)
+        
+       
+         Formerly leading whitespace was ignored, but trailing whitespace
+         between an element value and the delimiter or right brace was
+         significant.  Now trailing whitespace is also ignored.
+        
+      
+  
+      
+       
+        Emit array values with explicit array bounds when lower bound is not one
+        (Joe)
+       
+      
+  
+      
+       
+        Accept YYYY-monthname-DD as a date string (Tom)
+       
+      
+  
+      
+       
+        Make netmask and hostmask functions
+        return maximum-length mask length (Tom)
+       
+      
+  
+      
+       
+        Change factorial function to return numeric (Gavin)
+       
+       
+        Returning numeric allows the factorial function to
+        work for a wider range of input values.
+       
+      
+  
+      
+       
+        to_char/to_date() date conversion
+        improvements (Kurt Roeckx, Fabien Coelho)
+       
+      
+  
+      
+       
+        Make length() disregard trailing spaces in
+        CHAR(n) (Gavin)
+       
+       
+        This change was made to improve consistency: trailing spaces are
+        semantically insignificant in CHAR(n) data, so they
+        should not be counted by length().
+       
+      
+  
+      
+       
+        Warn about empty string being passed to
+        OID/float4/float8 data types (Neil)
+       
+       
+        8.1 will throw an error instead.
+       
+      
+  
+      
+       
+        Allow leading or trailing whitespace in
+        int2/int4/int8/float4/float8
+        input routines
+        (Neil)
+       
+      
+  
+      
+       
+        Better support for IEEE Infinity and NaN
+        values in float4/float8 (Neil)
+       
+       
+        These should now work on all platforms that support IEEE-compliant
+        floating point arithmetic.
+       
+      
+  
+      
+       
+        Add 
+       
+      
+  
+      
+       
+        Fix to_char for 1 BC
+        (previously it returned 1 AD) (Bruce)
+       
+      
+  
+      
+       
+        Fix date_part(year) for BC dates (previously it
+        returned one less than the correct year) (Bruce)
+       
+      
+  
+      
+       
+        Fix date_part() to return the proper millennium and
+        century (Fabien Coelho)
+       
+       
+        In previous versions, the century and millennium results had a wrong
+        number and started in the wrong year, as compared to standard
+        reckoning of such things.
+       
+      
+  
+      
+       
+        Add ceiling() as an alias for ceil(),
+        and power() as an alias for pow() for
+        standards compliance (Neil)
+       
+      
+  
+      
+       
+        Change ln(), log(),
+        power(), and sqrt() to emit the correct
+        SQLSTATE error codes for certain error conditions, as
+        specified by SQL:2003 (Neil)
+       
+      
+  
+      
+       
+        Add width_bucket() function as defined by SQL:2003 (Neil)
+       
+      
+  
+      
+       
+        Add generate_series() functions to simplify working
+        with numeric sets (Joe)
+       
+      
+  
+      
+       
+        Fix upper/lower/initcap() functions to work with
+        multibyte encodings (Tom)
+       
+      
+  
+      
+       
+        Add boolean and bitwise integer 
+        aggregates (Fabien Coelho)
+       
+      
+  
+      
+       
+        New session information functions to return network addresses for client
+        and server (Sean Chittenden)
+       
+      
+  
+      
+       
+        Add function to determine the area of a closed path (Sean Chittenden)
+       
+      
+  
+      
+       
+        Add function to send cancel request to other backends (Magnus)
+       
+      
+  
+      
+       
+        Add interval plus datetime operators (Tom)
+       
+       
+        The reverse ordering, datetime plus interval,
+        was already supported, but both are required by the SQL standard.
+       
+      
+  
+      
+       
+        Casting an integer to BIT(N) selects the rightmost N bits
+        of the integer
+        (Tom)
+       
+       
+        In prior releases, the leftmost N bits were selected, but this was
+        deemed unhelpful, not to mention inconsistent with casting from bit
+        to int.
+       
+      
+  
+      
+       
+        Require CIDR values to have all non-masked bits be zero
+        (Kevin Brintnall)
+       
+      
+  
+     
+    
+  
+  
+    
+     Server-Side Language Changes
+     
+  
+      
+       
+        In READ COMMITTED serialization mode, volatile functions
+        now see the results of concurrent transactions committed up to the
+        beginning of each statement within the function, rather than up to the
+        beginning of the interactive command that called the function.
+       
+      
+  
+      
+       
+        Functions declared STABLE or IMMUTABLE always
+        use the snapshot of the calling query, and therefore do not see the
+        effects of actions taken after the calling query starts, whether in
+        their own transaction or other transactions.  Such a function must be
+        read-only, too, meaning that it cannot use any SQL commands other than
+        SELECT.  There is a considerable performance gain from
+        declaring a function STABLE or IMMUTABLE
+        rather than VOLATILE.
+       
+      
+  
+      
+       
+        Non-deferred 
+        after completion of the triggering query, rather than upon
+        finishing the current interactive command. This makes a difference
+        when the triggering query occurred within a function: the trigger
+        is invoked before the function proceeds to its next operation. For
+        example, if a function inserts a new row into a table, any
+        non-deferred foreign key checks occur before proceeding with the
+        function.
+       
+      
+  
+      
+       
+        Allow function parameters to be declared with names (Dennis Bjorklund)
+       
+       
+        This allows better documentation of functions.  Whether the names
+        actually do anything depends on the specific function language
+        being used.
+       
+      
+  
+      
+       
+        Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bjorklund)
+       
+       
+        This basically creates an automatic alias for each named parameter.
+       
+      
+  
+      
+       
+        Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
+       
+       
+        This allows us to catch simple syntax errors sooner.
+       
+      
+  
+      
+       
+        More support for composite types (row and record variables) in PL/pgSQL
+       
+       
+        For example, it now works to pass a rowtype variable to another function
+        as a single variable.
+       
+      
+  
+      
+       
+        Default values for PL/pgSQL variables can now reference previously
+        declared variables
+       
+      
+  
+      
+       
+        Improve parsing of PL/pgSQL FOR loops (Tom)
+       
+       
+        Parsing is now driven by presence of ".." rather than
+        data type of 
+        correct functions, but should result in more understandable error
+        messages when a mistake is made.
+       
+      
+  
+      
+       
+        Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
+       
+      
+  
+      
+       
+        In PL/Tcl, SPI commands are now run in subtransactions.  If an error
+        occurs, the subtransaction is cleaned up and the error is reported
+        as an ordinary Tcl error, which can be trapped with catch.
+        Formerly, it was not possible to catch such errors.
+       
+      
+  
+      
+       
+        Accept ELSEIF in PL/pgSQL (Neil)
+       
+       
+        Previously PL/pgSQL only allowed ELSIF, but many people
+        are accustomed to spelling this keyword ELSEIF.
+       
+      
+  
+     
+    
+  
+  
+    
+     <application>psql</> Changes
+     
+  
+      
+       
+        Improve psql information display about database
+        objects (Christopher)
+       
+      
+  
+      
+       
+        Allow psql to display group membership in
+        \du and \dg (Markus Bertheau)
+       
+      
+  
+      
+       
+        Prevent psql \dn from showing
+        temporary schemas (Bruce)
+       
+      
+  
+      
+       
+        Allow psql to handle tilde user expansion for file
+        names (Zach Irmen)
+       
+      
+  
+      
+       
+        Allow psql to display fancy prompts, including
+        color, via readline (Reece Hart, Chet Ramey)
+       
+      
+  
+      
+       
+        Make psql \copy match COPY command syntax
+        fully (Tom)
+       
+      
+  
+      
+       
+        Show the location of syntax errors (Fabien Coelho, Tom)
+       
+      
+  
+      
+       
+        Add CLUSTER information to psql
+        \d display
+        (Bruce)
+       
+      
+  
+      
+       
+        Change psql \copy stdin/stdout to read
+        from command input/output (Bruce)
+       
+      
+  
+      
+       
+        Add 
+        psql's stdin/stdout (Mark
+        Feit)
+       
+      
+  
+      
+       
+        Add global psql configuration file, psqlrc.sample
+        (Bruce)
+       
+       
+        This allows a central file where global psql startup commands can
+        be stored.
+       
+      
+  
+      
+       
+        Have psql \d+ indicate if the table
+        has an OID column (Neil)
+       
+      
+  
+      
+       
+        On Windows, use binary mode in psql when reading files so control-Z
+        is not seen as end-of-file
+       
+      
+  
+      
+       
+        Have \dn+ show permissions and description for schemas (Dennis
+        Bjorklund)
+       
+      
+  
+      
+       
+        Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
+       
+      
+  
+      
+       
+        Allow boolean settings to be set using upper or lower case (Michael Paesold)
+       
+      
+  
+     
+    
+  
+  
+    
+     <application>pg_dump</> Changes
+     
+  
+      
+       
+        Use dependency information to improve the reliability of
+        pg_dump (Tom)
+       
+       
+        This should solve the longstanding problems with related objects
+        sometimes being dumped in the wrong order.
+       
+      
+  
+      
+       
+        Have pg_dump output objects in alphabetical order if possible (Tom)
+       
+       
+        This should make it easier to identify changes between
+        dump files.
+       
+      
+  
+      
+       
+        Allow pg_restore to ignore some SQL errors (Fabien Coelho)
+       
+       
+        This makes pg_restore's behavior similar to the
+        results of feeding a pg_dump output script to
+        psql. In most cases, ignoring errors and plowing
+        ahead is the most useful thing to do. Also added was a pg_restore
+        option to give the old behavior of exiting on an error.
+       
+      
+  
+      
+       
+        pg_restore 
+        objects' schema names
+       
+      
+  
+      
+       
+        New begin/end markers in pg_dump text output (Bruce)
+       
+      
+  
+      
+       
+        Add start/stop times for
+        pg_dump/pg_dumpall in verbose mode
+        (Bruce)
+       
+      
+  
+      
+       
+        Allow most pg_dump options in
+        pg_dumpall (Christopher)
+       
+      
+  
+      
+       
+        Have pg_dump use ALTER OWNER rather
+        than SET SESSION AUTHORIZATION by default
+        (Christopher)
+       
+      
+  
+     
+    
+  
+  
+    
+     libpq Changes
+     
+  
+      
+       
+        Make libpq's 
+       
+      
+  
+      
+       
+        Add PQmbdsplen() which returns the display length
+        of a character (Tatsuo)
+       
+      
+  
+      
+       
+        Add thread locking to SSL and
+        Kerberos connections (Manfred Spraul)
+       
+      
+  
+      
+       
+        Allow PQoidValue(), PQcmdTuples(), and
+        PQoidStatus() to work on EXECUTE
+        commands (Neil)
+       
+      
+  
+      
+       
+        Add PQserverVersion() to provide more convenient
+        access to the server version number (Greg Sabino Mullane)
+       
+      
+  
+      
+       
+        Add PQprepare/PQsendPrepared() functions to support
+        preparing statements without necessarily specifying the data types
+        of their parameters (Abhijit Menon-Sen)
+       
+      
+  
+      
+       
+        Many ECPG improvements, including SET DESCRIPTOR (Michael)
+       
+      
+  
+     
+    
+  
+  
+    
+     Source Code Changes
+     
+  
+      
+       
+        Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
+       
+      
+  
+      
+       
+        Shell script commands converted to C versions for Windows support (Andrew)
+       
+      
+  
+      
+       
+        Create an extension makefile framework (Fabien Coelho, Peter)
+       
+       
+        This simplifies the task of building extensions outside the original
+        source tree.
+       
+      
+  
+      
+       
+        Support relocatable installations (Bruce)
+       
+       
+        Directory paths for installed files (such as the
+        /share directory) are now computed relative to the
+        actual location of the executables, so that an installation tree
+        can be moved to another place without reconfiguring and
+        rebuilding.
+       
+      
+  
+      
+       
+        Use 
+        allow 
+       
+      
+  
+      
+       
+        Add 
+       
+      
+  
+      
+       
+        Upgrade to DocBook V4.2 SGML (Peter)
+       
+      
+  
+      
+       
+        New PostgreSQL CVS tag (Marc)
+       
+       
+        This was done to make it easier for organizations to manage their
+        own copies of the PostgreSQL
+        CVS repository. File version stamps from the master
+        repository will not get munged by checking into or out of a copied
+        repository.
+       
+      
+  
+      
+       
+        Clarify locking code (Manfred Koizar)
+       
+      
+  
+      
+       
+        Buffer manager cleanup (Neil)
+       
+      
+  
+      
+       
+        Decouple platform tests from CPU spinlock code (Bruce, Tom)
+       
+      
+  
+      
+       
+        Add inlined test-and-set code on PA-RISC for gcc
+        (ViSolve, Tom)
+       
+      
+  
+      
+       
+        Improve i386 spinlock code (Manfred Spraul)
+       
+      
+  
+      
+       
+        Clean up spinlock assembly code to avoid warnings from newer
+        gcc releases (Tom)
+       
+      
+  
+      
+       
+        Remove JDBC from source tree; now a separate project
+       
+      
+  
+      
+       
+        Remove the libpgtcl client interface; now a separate project
+       
+      
+  
+      
+       
+        More accurately estimate memory and file descriptor usage (Tom)
+       
+      
+  
+      
+       
+        Improvements to the Mac OS X startup scripts (Ray A.)
+       
+      
+  
+      
+       
+        New fsync() test program (Bruce)
+       
+      
+  
+      
+       
+        Major documentation improvements (Neil, Peter)
+       
+      
+  
+      
+       
+        Remove pg_encoding; not needed
+        anymore
+       
+      
+  
+      
+       
+        Remove pg_id; not needed anymore
+       
+      
+  
+      
+       
+        Remove initlocation; not needed
+        anymore
+       
+      
+  
+      
+       
+        Auto-detect thread flags (no more manual testing) (Bruce)
+       
+      
+  
+      
+       
+        Use Olson's public domain timezone library (Magnus)
+       
+      
+  
+      
+       
+        With threading enabled, use thread flags on Unixware for 
+        backend executables too (Bruce)
+       
+       
+        Unixware cannot mix threaded and non-threaded object files in the
+        same executable, so everything must be compiled as threaded.
+       
+      
+  
+      
+       
+        psql now uses a flex-generated
+        lexical analyzer to process command strings
+       
+      
+  
+      
+       
+        Reimplement the linked list data structure used throughout the
+        backend (Neil)
+       
+       
+        This improves performance by allowing list append and length
+        operations to be more efficient.
+       
+      
+  
+      
+       
+        Allow dynamically loaded modules to create their own server configuration
+        parameters (Thomas Hallgren)
+       
+      
+  
+      
+       
+        New Brazilian version of FAQ (Euler Taveira de Oliveira)
+       
+      
+  
+      
+       
+        Add French FAQ (Guillaume Lelarge)
+       
+      
+  
+      
+       
+        New pgevent for Windows logging
+       
+      
+  
+      
+       
+        Make libpq and ECPG build as proper shared libraries on OS X (Tom)
+       
+      
+  
+     
+    
+  
+  
+    
+     Contrib Changes
+     
+  
+      
+       
+        Overhaul of contrib/dblink (Joe)
+       
+      
+  
+      
+       
+        contrib/dbmirror improvements (Steven Singer)
+       
+      
+  
+      
+       
+        New contrib/xml2 (John Gray, Torchbox)
+       
+      
+  
+      
+       
+        Updated contrib/mysql
+       
+      
+  
+      
+       
+        New version of contrib/btree_gist (Teodor)
+       
+      
+  
+      
+       
+        New contrib/trgm, trigram matching for
+        PostgreSQL (Teodor)
+       
+      
+  
+      
+       
+        Many contrib/tsearch2 improvements (Teodor)
+       
+      
+  
+      
+       
+        Add double metaphone to contrib/fuzzystrmatch (Andrew)
+       
+      
+  
+      
+       
+        Allow contrib/pg_autovacuum to run as a Windows service (Dave Page)
+       
+      
+  
+      
+       
+        Add functions to contrib/dbsize (Andreas Pflug)
+       
+      
+  
+      
+       
+        Removed contrib/pg_logger: obsoleted by integrated logging
+        subprocess
+       
+      
+  
+      
+       
+        Removed contrib/rserv: obsoleted by various separate projects
+       
+      
+  
+     
+    
+  
+   
+  
   
    Release 7.4.8
 
@@ -2869,8 +2869,8 @@ holder of the lock released it within a very narrow window.
 ALTER TABLE SET WITHOUT OIDS
 
 
-  
+   
 
 
   
    Release 7.4.7
@@ -2927,8 +2927,8 @@ datestyles
 GMT
 
 
-  
+   
 
 
   
    Release 7.4.6
@@ -2997,8 +2997,8 @@ This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
 ECPG prepare statement
 
 
-  
+   
 
 
   
    Release 7.4.5
@@ -3033,8 +3033,8 @@ still worth a re-release.  The bug does not exist in pre-7.4 releases.
 
 
 
-  
+   
 
 
   
    Release 7.4.4
@@ -3083,8 +3083,8 @@ aggregate plan
 Translation updates (various contributors)
 
 
-  
+   
 
 
   
    Release 7.4.3
@@ -3139,8 +3139,8 @@ names from outer query levels.
 Numerous translation updates (various contributors)
 
 
-  
+   
 
 
   
    Release 7.4.2
@@ -3280,8 +3280,8 @@ inconveniences associated with the i/I problem.
 Various JDBC fixes
 
 
-  
+   
 
 
   
    Release 7.4.1
@@ -11226,4 +11226,3 @@ sgml-local-catalogs:("/usr/lib/sgml/catalog")
 sgml-local-ecat-files:nil
 End:
 -->
-