Further editing of release notes.
authorTom Lane
Tue, 24 Aug 2010 23:45:37 +0000 (23:45 +0000)
committerTom Lane
Tue, 24 Aug 2010 23:45:37 +0000 (23:45 +0000)
doc/src/sgml/release-9.0.sgml

index 71b0f06322fbe9af66cd4dd7216e7bd79045947c..8218566fe4d2c3ee171202dd54b1fcfe7aee1abc 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
  
   Release 9.0
     
      
       Easier database object permissions management. 
-      linkend="SQL-GRANT">GRANT/REVOKE
-      IN SCHEMA supports mass permissions changes, and
-      the ALTER
-      DEFAULT PRIVILEGES command controls privileges
-      of all newly-created objects.  Large object permissions now
-      support GRANT/REVOKE as well.
+      linkend="SQL-GRANT">GRANT/REVOKE IN
+      SCHEMA supports mass permissions changes on existing objects,
+      while ALTER DEFAULT
+      PRIVILEGES allows control of privileges for objects created in
+      the future.  Large objects (BLOBs) now support privilege management as
+      well.
      
     
 
     
      
-      Add support for compiling on 
-      linkend="install-win32-full">64-bit
-      Windows and running in 64-bit
-      mode.
+      Broadly enhanced stored procedure support.
+      The DO statement supports
+      ad-hoc or anonymous code blocks.
+      Functions can now be called using named parameters.
+      PL/pgSQL is now installed by default, and
+      PL/Perl and 
+      linkend="plpython">PL/Python have been enhanced in several ways,
+      including support for Python3.
      
     
 
     
      
-      Broadly enhanced stored procedure support.
-      The DO statement permits
-      ad-hoc or anonymous code blocks.  Functions can now be called using named
-      parameters.  PL/pgSQL is now installed by default,
-      and PL/Perl and PL/Python
-      have been enhanced in several ways, including support for Python3.
+      Full support for 64-bit
+      Windows.
      
     
 
     
      
-      More advanced reporting queries with additional 
-      linkend="functions-window">window functions
-      (PRECEDING and FOLLOWING) and the ability
-      to ORDER BY
-      inside aggregate functions.
+      More advanced reporting queries, including additional windowing options
+      (PRECEDING and FOLLOWING) and the ability to
+      control the order in which values are fed to aggregate functions.
      
     
 
     
      
-      Triggers now support two new features,
-      SQL-compliant 
-      linkend="SQL-CREATETRIGGER">per-column triggers, and
+      New trigger features, including
+      SQL-standard-compliant 
+      linkend="SQL-CREATETRIGGER">per-column triggers and
       conditional trigger execution.
      
     
 
     
      
-      New and enhanced security features, including RADIUS authentication,
-      LDAP authentication improvements, and the new passwordcheck optional module
-      for testing password strength.
+      Exclusion constraints.
+      These provide a generalized version of unique constraints, allowing
+      enforcement of complex conditions.
      
     
 
     
      
-      The LISTEN/
-      linkend="SQL-NOTIFY">NOTIFY
-      feature has been overhauled to make it into
-      a high-performance event queuing system.  It now stores
-      events in a memory-based queue, and it now allows delivery
-      of a string payload to listeners with each event.
+      New and enhanced security features, including RADIUS authentication,
+      LDAP authentication improvements, and a new contrib module
+      passwordcheck
+      for testing password strength.
      
     
 
     
      
-      Add /contrib/pg_upgrade
-      to support in-place upgrades from 8.3 or 8.4 to 9.0.
+      New high-performance implementation of the
+      LISTEN/
+      linkend="SQL-NOTIFY">NOTIFY feature.
+      Pending events are now stored in a memory-based queue rather than
+      a table.  Also, a payload string can be sent with each
+      event, rather than transmitting just an event name as before.
      
     
 
     
      
-      Multiple performance enhancements for specific types of queries,
-      including join elimination, which optimizes automatically generated
-      queries, such as those produced by object-relational mappers (ORMs).
+      New implementation of
+      VACUUM FULL.
+      This command now rewrites the entire table and indexes, rather than
+      moving individual rows to compact space.  It is substantially faster
+      in most cases, and no longer results in index bloat.
      
     
 
     
      
-      Exclusion constraints
-      let database designers define uniqueness based on complex
-      criteria, including for non-scalar data such as time periods,
-      ranges and arrays.
+      New contrib module
+      pg_upgrade
+      to support in-place upgrades from 8.3 or 8.4 to 9.0.
      
     
 
     
      
-      As part of our decade-long effort to eliminate the pain of VACUUM,
-      VACUUM FULL
-      is now substantially faster by rewriting the entire table and
-      indexes, rather than moving around single rows to compact space.
+      Multiple performance enhancements for specific types of queries,
+      including elimination of unnecessary joins.  This helps optimize some
+      automatically-generated queries, such as those produced by
+      object-relational mappers (ORMs).
      
     
 
     
      
-      using-explain">EXPLAIN
-      plans are now available in JSON, XML and YAML format, and include
+      SQL-EXPLAIN ">EXPLAIN enhancements.
+      The output is now available in JSON, XML, or YAML format, and includes
       buffer utilization and other data not previously available.
      
     
 
     
      
-      The HStore optional module has been improved with new functions and greater
-      data capacity to make it a high-performance key-value store.
+      hstore improvements,
+      including new functions and greater data capacity.
      
     
 
 
     
      
-      wal_level should now be
-      set to archive, not on, to do continuous
-      archiving (Heikki Linnakangas)
+      Replace server parameter archive_mode with
+      wal_level
+      (Heikki Linnakangas)
      
     
 
     
    
 
-   
-    
-     Make date_trunc truncate rather than round when reducing
-     fractional-seconds precision (Tom Lane)
-    
-
-    
-     The code always acted this way for integer-based dates/times.
-     Now float-based dates/times behave similarly.
-    
-   
-
    
 
   
     
    
 
+   
+    
+     Make date_trunc truncate rather than round when reducing
+     precision of fractional seconds (Tom Lane)
+    
+
+    
+     The code always acted this way for integer-based dates/times.
+     Now float-based dates/times behave similarly.
+    
+   
+
   
 
   
       
      
 
+     
+      
+       Improve performance and reliability of EvalPlanQual rechecks in join
+       queries (Tom Lane)
+      
+
+      
+       UPDATE, DELETE, and SELECT FOR
+       UPDATE/SHARE queries that involve joins will now behave much better
+       when encountering freshly-updated rows.
+      
+     
+
      
       
        Improve performance of 
        linkend="SQL-TRUNCATE">TRUNCATE when
-       used in the same transaction as table creation (Tom Lane)
+       the table was created or truncated earlier in the same transaction
+       (Tom Lane)
       
      
 
       
 
       
-       Outer joins where the inner side is unique and not referenced in
-       the query are unnecessary and are therefore now removed.  This will
+       Outer joins where the inner side is unique and not referenced above
+       the join are unnecessary and are therefore now removed.  This will
        accelerate many automatically generated queries, such as those created
        by object-relational mappers (ORMs).
       
       
      
 
+     
+      
+       Improve the optimizer's choices about when to use materialize nodes,
+       and when to use sorting versus hashing for DISTINCT
+       (Tom Lane)
+      
+     
+
      
       
        Improve the optimizer's equivalence detection for expressions involving
       
 
       
-       This avoids the rare error failed to make a valid plan.
+       This avoids the rare error failed to make a valid plan,
+       and should also improve planning speed.
       
      
 
        Add 
        linkend="monitoring-stats-funcs-table">pg_stat_reset_single_table_counters()
        and pg_stat_reset_single_function_counters()
-       to allow resetting of the statistics counters for individual
+       to allow resetting the statistics counters for individual
        tables and indexes (Magnus Hagander)
       
      
        not combinations. All role and database settings are now stored
        in the new pg_db_role_setting system table. A new
        psql command \drds shows these settings.
-       Backwards-compatible system views do not show combination settings.
+       The legacy system views pg_roles,
+       pg_shadow, and pg_user
+       do not show combination settings, and therefore no longer
+       completely represent the configuration for a user or database.
       
-
      
 
      
       
      
 
+     
+      
+       Change server parameter 
+       linkend="guc-log-temp-files">log_temp_files to
+       use default file size units of kilobytes (Robert Haas)
+      
+
+      
+       Previously this setting was interpreted in bytes if no units were
+       specified.
+      
+     
+
      
       
        Log changes of parameter values when postgresql.conf is
        settings, and is also very convenient for checking the effects of
        postgresql.conf edits.
       
-
      
 
      
       
-       Add proper permissions for custom server parameters (Tom Lane)
+       Properly enforce superuser permissions for custom server parameters
+       (Tom Lane)
       
 
       
-       Custom parameters can now only be created by super-users,
-       but then can be modified by ordinary users if the parameter's
-       permissions allow it. This makes custom parameters
-       appropriate for security-related settings. Previously, any user
-       could create or modify custom parameters.
+       Non-superusers can no longer issue ALTER
+       ROLE/DATABASE SET for parameters that are not currently
+       known to the server.  This allows the server to correctly check that
+       superuser-only parameters are only set by superusers.  Previously,
+       the SET would be allowed and then ignored at session start,
+       making superuser-only custom parameters practically useless.
       
      
 
-    
-     
-      Change server parameter 
-      linkend="guc-log-temp-files">log_temp_files to
-      use default file size units of kilobytes (Robert Haas)
-     
-
-     
-      Previously this setting was interpreted in bytes if no units were
-      specified.
-     
-    
-
     
 
    
      
       Allow mixing of traditional and SQL-standard 
       linkend="SQL-LIMIT">LIMIT/OFFSET
-      syntax in the same query (Tom Lane)
+      syntax (Tom Lane)
      
     
 
    
 
    
-    <command>ALTER</>
+    <command>ALTER<span class="marked"> TABLE</span></>
 
     
 
      
       
-       Add ALTER
-       DEFAULT PRIVILEGES command to control privileges
-       of objects created later (Petr Jelinek)
-      
-
-      
-       This greatly simplifies the assignment of object privileges in a
-       complex database application.  Default privileges can be set for
-       tables, views, sequences, and functions. Defaults may be assigned on a
-       per-schema basis, or database-wide.
-      
-     
-
-     
-      
-       Implement IF EXISTS for DROP COLUMN and
-       DROP CONSTRAINT  (Andres Freund)
+       Implement IF EXISTS for ALTER TABLE DROP COLUMN
+       and ALTER TABLE DROP CONSTRAINT  (Andres Freund)
       
      
 
        and makes it easier to utilize database roles for application
        data security.
       
+     
 
+     
+      
+       Add ALTER
+       DEFAULT PRIVILEGES command to control privileges
+       of objects created later (Petr Jelinek)
+      
+
+      
+       This greatly simplifies the assignment of object privileges in a
+       complex database application.  Default privileges can be set for
+       tables, views, sequences, and functions. Defaults may be assigned on a
+       per-schema basis, or database-wide.
+      
      
 
      
       
        Formerly, any database user could read or modify any large object.
        Read and write permissions can now be granted and revoked per
-       large object.
+       large object, and the ownership of large objects is tracked.
       
      
 
      
 
      
-      Global catalogs still cannot be clustered.
+      Shared catalogs still cannot be clustered.
      
     
 
       
      
 
+     
+      
+       By default, multicolumn indexes are now named after all their columns;
+       and index expression columns are now named based on their expressions
+       (Tom Lane)
+      
+     
+
      
       
        Reindexing shared system catalogs is now fully transactional
 
     
      
-      Tighten input requirements for int2vector input (Caleb
+      Tighten input checking for int2vector values (Caleb
       Welton)
      
     
 
     
      
-      Fix to_char() to output the proper localized
-      numeric and monetary characters on Windows
-      (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
+      Fix to_char() to output localized numeric and monetary
+      strings in the correct encoding on Windows
+      (Hiroshi Inoue, Itagaki Takahiro, Bruce Momjian)
      
     
 
      
       
        Allow aggregate functions to use 
-       linkend="syntax-aggregates">ORDER BY (Andrew
-       Gierth)
+       linkend="syntax-aggregates">ORDER BY (Andrew Gierth)
       
 
       
       
      
 
+     
+      
+       Multi-argument aggregate functions can now use DISTINCT
+       (Andrew Gierth)
+      
+     
+
      
       
        Add the 
 
      
       
-       Make the information_schema
-       views properly display maximum octet lengths for char and
-       varchar columns, as well as the proper precision for datetime
-       columns (Peter Eisentraut)
+       Update the information_schema
+       views to conform to SQL:2008
+       (Peter Eisentraut)
+      
+     
+
+     
+      
+       Make the information_schema views correctly display maximum
+       octet lengths for char and varchar columns (Peter
+       Eisentraut)
       
      
 
      
       
-       Speed up information_schema privilege views (Joachim Wieland)
+       Speed up information_schema privilege views
+       (Joachim Wieland)
       
      
 
       
      
 
+     
+      
+       Avoid throwing an unnecessary error for an invalid record reference
+       (Tom Lane)
+      
+
+      
+       An error is now thrown only if the reference is actually fetched,
+       rather than whenever the enclosing expression is reached.  For
+       example, many people have tried to do this in triggers:
+
+if TG_OP = 'INSERT' AND NEW.col1 = ... then
+
+       This will now actually work as expected.
+      
+     
+
      
       
        Improve PL/pgSQL's ability to handle row types with dropped columns
 
       
        Bytea values passed into PL/Python are now represented as
-       binary, rather than the PostgreSQL bytea text format. Null
-       bytes are now also output properly from PL/Python. boolean
-       and numeric value passing in PL/Python was also improved.
+       binary, rather than the PostgreSQL bytea text format.
+       Bytea values containing null bytes are now also output
+       properly from PL/Python.  Passing of boolean, integer, and float
+       values was also improved.
       
      
 
      
       
-       Add array parameter/return
-       support to PL/Python (Peter Eisentraut)
+       Support arrays as parameters and
+       return values in PL/Python (Peter Eisentraut)
       
      
 
      
       
-       Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
+       Improve mapping of SQL domains to Python types (Peter Eisentraut)
       
      
 
       
 
       
-       Previously the pg_ctl process could have been mistakenly
-       identified as a running postmaster based on a stale
-       postmaster lock file, resulting in a transient failure
-       to start the database.
+       Previouslypg_ctl's parent process could have been
+       mistakenly identified as a running postmaster based on
+       a stale postmaster lock file, resulting in a transient
+       failure to start the database.
       
      
 
       
      
 
+     
+      
+       Avoid extra system calls to block and unblock SIGPIPE
+       in libpq, on platforms that offer alternative methods
+       (Jeremy Kerr)
+      
+     
+
      
       
        When a .pgpass-supplied
 
       
        
-        Add ecpg out-of-scope cursor support in native mode
+        Add out-of-scope cursor support in ecpg's native mode
         (Boszormenyi Zoltan)
        
 
        
         This allows DECLARE to use variables that are not in
         scope when OPEN is called. This facility already existed
-        in ecpg Informix-compatibility mode.
+        in ecpg's Informix-compatibility mode.
        
       
 
       
        
-        Allow dynamic ecpg cursor names (Boszormenyi Zoltan)
+        Allow dynamic cursor names in ecpg (Boszormenyi Zoltan)
        
       
 
 
       
        These are similar to the existing all, install,
-       and installcheck targets, but they build HTML
-       documentation, build and test contrib, and test
-       server-side languages and ecpg.
+       and installcheck targets, but they also build
+       HTML documentation, build and test contrib,
+       and test server-side languages and ecpg.
       
      
 
      
       
-       Add data and documentation location control to 
+       Add data and documentation installation location control to 
        linkend="xfunc-c-pgxs">PGXS Makefiles
        (Mark Cave-Ayland)
       
 
     
      
-      Add a Makefile rule to build documentation as a single text file
-      (Bruce Momjian)
+      Add Makefile rules to build documentation as a single HTML
+      file or as a single plain-text file
+      (Peter Eisentraut, Bruce Momjian)
      
     
 
       
      
 
-     
-      
-       Support multiprocessor compilation using Microsoft Visual
-       C (Magnus Hagander)
-      
-     
-
     
 
    
 
     
      
-      Improve the ability to translate psql strings
+      Automatically generate the initial contents of
+      pg_attribute for bootstrapped catalogs
+      (John Naylor)
+     
+
+     
+      This greatly simplifies changes to these catalogs.
+     
+    
+
+    
+     
+      Split the processing of
+      INSERT/UPDATE/DELETE operations out
+      of execMain.c (Marko Tiikkaja)
+     
+
+     
+      Updates are now executed in a separate ModifyTable node.  This change is
+      necessary infrastructure for future improvements.
+     
+    
+
+    
+     
+      Simplify translation of psql's SQL help text
       (Peter Eisentraut)
      
     
 
     
      
-      Reduce the length of some file names so that all file paths in the
+      Reduce the lengths of some file names so that all file paths in the
       distribution tarball are less than 100 characters (Tom Lane)
      
 
 
     
      
-      Restructure the HTML documentation build
-      Makefile rules (Peter Eisentraut)
+      Restructure the HTML documentation
+      Makefile rules to make their dependency checks work
+      correctly, avoiding unnecessary rebuilds (Peter Eisentraut)
      
     
 
     
      
       Use DocBook XSL stylesheets for man page
-      building (Peter Eisentraut)
+      building, rather than Docbook2X (Peter Eisentraut)
+     
+
+     
+      This changes the set of tools needed to build the man pages.
      
     
 
 
     
      
-      Improve error context support in PL/Perl (Alexey Klyukin)
+      Improve error context reports in PL/Perl (Alexey Klyukin)
      
     
 
        Restructure use of LDFLAGS to be more consistent
        across platforms (Tom Lane)
       
+
+      
+       LDFLAGS is now used for linking both executables and shared
+       libraries, and we add on LDFLAGS_EX when linking
+       executables, or LDFLAGS_SL when linking shared libraries.
+      
      
 
     
 
      
       
-       Simplify use of C++ functions in backend code (Kurt
-       Harriman, Peter Eisentraut)
+       Make backend header files safe to include in C++
+       (Kurt Harriman, Peter Eisentraut)
       
 
       
       
      
 
+     
+      
+       Change calling convention for SearchSysCache() and related
+       functions to avoid hard-wiring the maximum number of cache keys
+       (Robert Haas)
+      
+
+      
+       Existing calls will still work for the moment, but can be expected to
+       break in 9.1 or later if not converted.
+      
+     
+
      
       
        Require calls of fastgetattr() and
-       heap_getattr() backend macros to use a non-NULL fourth
+       heap_getattr() backend macros to provide a non-NULL fourth
        argument (Robert Haas)
       
      
 
      
       
-       Add parser hooks to access column and parameter references in
-       queries (Tom Lane)
+       Add parser hooks for processing ColumnRef and ParamRef nodes
+       (Tom Lane)
       
      
 
      
 
      
-      This filter dictionary removes accents from letters, which
+      This filtering dictionary removes accents from letters, which
       makes full-text searches over multiple languages much easier.