OSDN Git Service

Update release notes in "major" and "migration" sections. Still have
authorBruce Momjian <bruce@momjian.us>
Thu, 11 Oct 2007 19:46:21 +0000 (19:46 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 11 Oct 2007 19:46:21 +0000 (19:46 +0000)
remainder of release notes to review.

doc/src/sgml/release.sgml

index 83d831c..f488228 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.517 2007/10/10 14:09:49 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.518 2007/10/11 19:46:21 momjian Exp $ -->
 <!--
 
 Typical markup:
@@ -40,7 +40,7 @@ do it for earlier branch release files.
 
    <note>
     <title>Release date</title>
-    <simpara>2007-??-??</simpara>
+    <simpara>2007-12-??</simpara>
     <para>CURRENT AS OF 2007-10-03</>
    </note>
 
@@ -48,33 +48,48 @@ do it for earlier branch release files.
     <title>Overview</title>
 
     <para>
-     This release adds many improvements that were requested by users,
-     including:
+     This release represents a major leap forward by adding significant
+     new functionality and performance enhancements to
+     <productname>PostgreSQL</>. Many complex ideas that normally take
+     years to implement were added rapidly to this release by our
+     development team. This release starts <productname>PostgreSQL</> on
+     a trajectory moving beyond feature-parity with other database
+     systems to a time when <productname>PostgreSQL</> will be a
+     technology leader in the database field. Major new capabilities
+     this release include:
 
     <itemizedlist>
 
       <listitem>
        <para>
-        Full text search is now a built-in feature
+        Full text search now fully integrated into the core database
+        system
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Support for the SQL/XML standard, including a new <type>xml</type> builtin
+        Support for the SQL/XML standard, including a new <type>XML</type> builtin
         data type
        </para>
       </listitem>
 
       <listitem>
        <para>
-        enum data types
+        Enumerated (<type>ENUM</>) data type support
+       </para>
+
+       <para>
+        This is accomplished by creating a new data type with an
+        <literal>ENUM</> clause, e.g.
+        <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        UUID data type, similar to that defined by RFC 4122
+        Universally Unique Identifier (UUID) data type, similar to that
+        defined by RFC 4122
        </para>
       </listitem>
 
@@ -86,52 +101,68 @@ do it for earlier branch release files.
 
       <listitem>
        <para>
+        Control of whether <literal>NULL</>s sort first or last, using
         <literal>ORDER BY ... NULLS FIRST/LAST</>
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Updatable cursors
-        (<literal>UPDATE/DELETE WHERE CURRENT OF</>
-        <replaceable>cursor_name</>)
+        Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT OF</>
+       </para>
+
+       <para>
+        This eliminates the need to reference a primary key to update or
+        delete rows returned by a cursor.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Per-function parameter settings
+        Server configuration parameters can now be set on a per-function
+        basis
+       </para>
+
+       <para>
+        For example, functions can now set their own
+        <varname>search_path</> to prevent unexpected behavior if a
+        different <varname>search_path</> exists at run-time.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        User-defined types can now have type modifiers (parameters)
+        User-defined types can now have type modifiers
        </para>
 
        <para>
-        Declarations such as <type>varchar(42)</type> are no longer
-        restricted to use by built-in data types.
+        This allows a user type to take a modifier when
+        being referenced, e.g. <type>SSNUM(7)</>.  Previously only
+        predefined system data types would allow this, e.g.
+        <type>CHAR(4)</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Automatic plan invalidation when table definitions change
+        Automatically invalidate cached function code when table
+        definitions change
        </para>
 
        <para>
-        This will particularly ease usage of temporary tables in
-        PL/PgSQL functions.
+        Previously PL/pgSQL functions that referenced temporary tables
+        would fail if the temporary table was dropped and recreated
+        between function invocations, unless <literal>EXECUTE</> was
+        used.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Numerous improvements in logging and statistics collection
-        capabilities, including the ability to emit postmaster log messages
-        in CSV format that can be directly loaded into a database table
-        for analysis
+        Numerous improvements in logging and statistics collection,
+        including the ability to emit postmaster log messages in
+        <acronym>CSV</> format, which can be loaded into a database
+        table for analysis
        </para>
       </listitem>
 
@@ -139,6 +170,11 @@ do it for earlier branch release files.
        <para>
         SSPI/GSSAPI authentication support
        </para>
+
+       <para>
+        This adds native Security Service Provider Interface (SSPI) for
+        Windows.
+       </para>
       </listitem>
 
       <listitem>
@@ -147,58 +183,81 @@ do it for earlier branch release files.
        </para>
 
        <para>
-        Autovacuum is now considered mature enough to be enabled by default.
+        This allows multiple vacuums to run concurrently, meaning
+        vacuuming of a large table will not prevent smaller tables from
+        being vacuumed at the same time. Autovacuum is now considered
+        mature and thus enabled by default.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        The entire <productname>PostgreSQL</productname> system can
-        now be compiled with Microsoft Visual C++
+        The backend database server can now be compiled with
+        <productname>Microsoft Visual C++</>
        </para>
 
        <para>
-        This will improve the ability of Windows-based developers to
-        contribute to the project.  Windows executables made with Visual C++
-        may also have better stability and performance than those made with
-        other tool sets.
+         Windows executables made with Visual C++ might have better
+         stability and performance than those made with other tool sets.
+         Development and debugging tools familiar to Windows developers
+         will also work.
        </para>
       </listitem>
 
     </itemizedlist>
 
-    Major performance improvements in this release include:
+    Major performance improvements are listed below. Fortunately, most
+    of these enhancements are automatic and require user changes or
+    tuning:
 
     <itemizedlist>
 
       <listitem>
        <para>
-        Asynchronous commit option to allow transactions to be reported
-        committed before they have actually been flushed to disk
+        Asynchronous commit option allows transactions to be committed
+        but on-disk changes to be delayed
        </para>
 
        <para>
-        This would not, of course, be acceptable if the client takes some
-        critical external action on the assumption that the transaction
-        will be remembered; but for certain applications, it is an acceptable
-        risk for some or all transactions to use this mode.  Unlike existing
-        options such as <varname>fsync</varname>, asynchronous commit does
-        not risk database corruption; the worst case is that after a crash,
-        the last few reportedly-committed transactions will not have
-        taken effect.
+        This feature dramatically increases performance for data
+        modification queries. The disadvantage is that because on-disk
+        changes are delayed, if the operating system crashes before data
+        is written to the disk, committed data will be lost. This is
+        useful only for applications that can accept some data loss.
+        Unlike <varname>fsync</varname>, asynchronous commit does not
+        risk database corruption; the worst case is that after an
+        operating system crash the last few reportedly-committed
+        transactions will be missing.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        <quote>Distributed</> checkpoints to spread out the I/O load of a
-        checkpoint
+        <quote>Distributed</> checkpoints prevent I/O spikes during
+        checkpoints
+       </para>
+
+       <para>
+        Previously all modified buffers were forced to disk at
+        checkpoint time, causing an I/O spike and decreasing server
+        performance. This new capability spreads checkpoint activity out
+        between checkpoints, reducing peak I/O usage.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Heap-Only Tuples (HOT) to reduce overhead of updates
+        Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</>
+        space usage
+       </para>
+
+       <para>
+        To allow high concurrency <productname>PostgreSQL</> retains old
+        versions of updated rows. Previously only <command>VACUUM</>
+        could reuse space taken by dead rows. With <acronym>HOT</> dead
+        row space can be reused at the time of <command>UPDATE</> or
+        <command>INSERT</>. This allows for more consistent performance.
+        <acronym>HOT</> also improved deleted row space reuse.
        </para>
       </listitem>
 
@@ -207,41 +266,66 @@ do it for earlier branch release files.
         Just-in-time background writer strategy to improve disk write
         efficiency
        </para>
+
+       <para>
+        This basically makes the background writer self-tuning.
+       </para>
+
       </listitem>
 
       <listitem>
        <para>
-        Reduction of on-disk data size through reducing both per-tuple
-        and per-field overheads
+        Reduction of both per-field and per-row storage requirements
+       </para>
+
+       <para>
+        Variable-length data types with data values less then 128 bytes
+        will see a decrease of 3-6 bytes. For example, two
+        <type>CHAR(1)</type> fields now take 4 bytes instead of 16. Rows
+        are also 4 bytes shorter.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Efficiency improvements for large sequential scans, including
-        prevention of cache flushing and <quote>piggybacking</quote> to let
-        concurrent scans read the table only once
+        Prevent large sequential scans from forcing out more frequently
+        used cached pages
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Top-N sorting
+        Allow large sequential scans to use cached pages from other
+        concurrent sequential scans
+       </para>
+
+       <para>
+        This is accomplished by starting the new sequential scan in the
+        middle of the table (where the other sequential scan is already
+        in-progress) and wrapping around to the beginning to finish.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Lazy XID assignment to reduce the cost of read-only transactions
+        Allow <literal>ORDER BY ... LIMIT</> to be done without sorting
        </para>
 
        <para>
-        For applications in which there are a large number of read-only
-        transactions, this helps not only by reducing overhead for the
-        transactions themselves, but by reducing overhead that's driven
-        by the rate of XID consumption; notably, reducing contention for
-        transaction log buffers and reducing the frequency of
-        anti-wraparound vacuuming.
+        This is done by scanning the table and using a filter to find
+        the few requested rows, rather than sorting the entire table.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Use pseudo-transaction ids in read-only transactions
+       </para>
+
+       <para>
+        This reduces transaction overhead for read-only transactions,
+        and reduces the need for vacuuming for transaction id
+        wrap-around.
        </para>
       </listitem>
 
@@ -268,8 +352,8 @@ do it for earlier branch release files.
 
       <listitem>
        <para>
-        <filename>contrib/tsearch2</> features have been absorbed into
-        the core, with some syntax changes
+        <filename>contrib/tsearch2</> features have been moved into
+        the core server, with some minor syntax changes
        </para>
 
        <para>
@@ -279,23 +363,23 @@ do it for earlier branch release files.
 
       <listitem>
        <para>
-        Casts to <type>text</type> that formerly occurred implicitly may now
-        need to be written explicitly
+        Queries that previously automatically cast values to
+        <type>TEXT</type> might now need explicit casts
        </para>
 
        <para>
-        Data types other than <type>char</> and <type>varchar</> are no
-        longer implicitly castable to <type>text</>, except in the limited
-        case of a <literal>||</> (concatenation) operator whose other
-        input is textual.  While this will require explicit casts in a
-        few queries that didn't need them before, the elimination of
-        surprising interpretations justifies it.
+        Data types other than <type>CHAR</> and <type>VARCHAR</> no
+        longer automatically cast to <type>TEXT</>, except in the
+        limited case of concatenation (<literal>||</>) where the other
+        input is textual. While this change will require additional
+        casts for some queries it also eliminates some unusual
+        behavior.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Numerous changes in administrator-only configuration parameters
+        Numerous changes in administrative server parameters
        </para>
 
        <para>
@@ -310,9 +394,10 @@ do it for earlier branch release files.
         <varname>track_activities</>.
         <varname>stats_block_level</> and <varname>stats_row_level</>
         are merged into <varname>track_counts</>.
-        <varname>archive_command</> changed meaning slightly: you must now set
-        <varname>archive_mode</> to <literal>on</> as well to enable archiving.
-        The default autovacuum-related settings changed.
+        Previously <varname>archive_command</> controlled whether
+        archiving was performed. Now a new boolean configuration
+        parameter, <varname>archive_mode</>, controls this. Autovacuum's
+        default settings have changed.
        </para>
       </listitem>
 
@@ -321,121 +406,126 @@ do it for earlier branch release files.
         Commenting out a parameter in <filename>postgresql.conf</> now
         causes it to revert to its default value
        </para>
+
+       <para>
+        Previously commenting out a value kept the value unchanged until
+        the next server restart.
+       </para>
       </listitem>
 
       <listitem>
        <para>
-        <literal>ARRAY(SELECT ...)</literal> now returns an empty array,
-        rather than a NULL, when the sub-select returns zero rows
+        <literal>ARRAY(SELECT ...)</literal>, where <command>SELECT</>
+        returns no rows, now returns an empty array, rather than NULL
        </para>
       </listitem>
 
       <listitem>
        <para>
-        <literal>ORDER BY ... USING</> <replaceable>operator</>
-        will now be rejected if the <replaceable>operator</> is not a
-        less-than or greater-than member of some btree operator class
+        <literal>ORDER BY ... USING</> <replaceable>operator</> now must
+        use a less-than or greater-than <replaceable>operator</> that is
+        defined in a btree operator class
        </para>
 
        <para>
-        This prevents less-than-sane behavior that formerly ensued if an
-        operator that doesn't actually define a proper sort ordering was
-        specified.
+        This restriction was added to prevent unexpected results.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        The array type associated with a type named <quote>foo</quote>
-        is not necessarily named <quote>_foo</quote> anymore
+        The array name for a base data type is no longer required to
+        be the data type name with an underscore prefix
        </para>
 
        <para>
         The old naming convention is still honored when possible, but
-        client code should migrate away from depending on it.
+        client code should no longer depending on it.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        By default, non-superuser database owners can now instantiate trusted
-        procedural languages in their databases
+        Non-superuser database owners now have privileges to add trusted
+        procedural languages in their databases by default
        </para>
 
        <para>
         While this is reasonably safe, some administrators may wish to
-        revoke the privilege.
+        revoke the privilege. It is controlled by
+        <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        The effects of <command>SET LOCAL</command> now persist until
-        the end of the current top transaction, unless rolled back
+        <command>SET LOCAL</command> changes now persist until
+        the end of the top-most transaction, unless rolled back
        </para>
 
        <para>
-        In 8.0 through 8.2, <command>SET LOCAL</command>'s
-        effects disappeared at subtransaction commit, leading to behavior
-        that made little sense at the SQL level (one would not normally
-        expect <command>RELEASE</> to do such a thing).
+        Previously <command>SET LOCAL</command>'s effects reverted
+        during subtransaction commit and <command>RELEASE</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Commands that are disallowed in transaction blocks are now disallowed
-        in multiple-statement query strings, too
+        Commands that are disallowed in transaction blocks are now also
+        disallowed in multiple-statement query strings
        </para>
 
        <para>
         For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be
-        rejected even if submitted as a single Query message.  This was always
-        quite unsafe, but the <function>PreventTransactionChain</function>
-        test failed to detect it.
+        rejected even if submitted as a single query message.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Additional checks for invalidly-encoded multibyte strings
+        Add additional checks for invalidly-encoded multibyte strings
        </para>
 
        <para>
-        Some cases that might formerly have allowed invalid data to
-        enter the database will now be rejected.  In particular, the
-        <function>chr()</function> function changed behavior.
+        For example, <function>chr()</function> has additional checks.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        <function>convert()</function> family of functions changed behavior
+        <function>convert()</function> encoding has changed behavior
        </para>
 
        <para>
-        Strings that are not in the database's native encoding are now
-        represented as type <type>bytea</> rather than type <type>text</>.
+        <type>bytea</> is now used for strings that do not match the
+        server encoding, and <function>convert_from</> and
+        <function>convert_to</> have been added for consistency.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Minor security restrictions added to database-size inquiry functions
-        and some contrib functions
+        Restrict object size functions to users who have reasonable
+        permissions to view such information
+       </para>
+
+       <para>
+        For example, database size now requires <literal>CONNECT</>
+        permission, and tablespaces size requires <literal>CREATE</>
+        permission.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        C code that manipulates variable-length datums will need changes
+        New C macros for handling variable-length data values
        </para>
 
        <para>
-        The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
-        to set the length word of a generated datum.  Also, it may be
-        necessary to <quote>detoast</quote> input varlena datums in cases
-        where no toasting could have happened before.
+        The new <function>SET_VARSIZE()</> macro <emphasis>must</> be
+        used to set the length of generated values. Also, it might be
+        necessary to expand (<quote>de-TOAST</quote>) input values in
+        additional places.
        </para>
       </listitem>