From 0caae99f58df4465647a333793c4adedd569c2e7 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 11 Oct 2007 19:46:21 +0000 Subject: [PATCH] Update release notes in "major" and "migration" sections. Still have remainder of release notes to review. --- doc/src/sgml/release.sgml | 306 ++++++++++++++++++++++++-------------- 1 file changed, 198 insertions(+), 108 deletions(-) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 6ef797d447..2dde1386c7 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -40,7 +40,7 @@ do it for earlier branch release files. Release date - 2007-??-?? + 2007-12-?? CURRENT AS OF 2007-10-03 @@ -48,33 +48,48 @@ do it for earlier branch release files. Overview - 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 + PostgreSQL. Many complex ideas that normally take + years to implement were added rapidly to this release by our + development team. This release starts PostgreSQL on + a trajectory moving beyond feature-parity with other database + systems to a time when PostgreSQL will be a + technology leader in the database field. Major new capabilities + this release include: - Full text search is now a built-in feature + Full text search now fully integrated into the core database + system - Support for the SQL/XML standard, including a new xml builtin + Support for the SQL/XML standard, including a new XML builtin data type - enum data types + Enumerated (ENUM) data type support + + + + This is accomplished by creating a new data type with an + ENUM clause, e.g. + CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'). - UUID data type, similar to that defined by RFC 4122 + Universally Unique Identifier (UUID) data type, similar to that + defined by RFC 4122 @@ -86,52 +101,68 @@ do it for earlier branch release files. + Control of whether NULLs sort first or last, using ORDER BY ... NULLS FIRST/LAST - Updatable cursors - (UPDATE/DELETE WHERE CURRENT OF - cursor_name) + Updatable cursors using UPDATE/DELETE WHERE CURRENT OF + + + + This eliminates the need to reference a primary key to update or + delete rows returned by a cursor. - Per-function parameter settings + Server configuration parameters can now be set on a per-function + basis + + + + For example, functions can now set their own + search_path to prevent unexpected behavior if a + different search_path exists at run-time. - User-defined types can now have type modifiers (parameters) + User-defined types can now have type modifiers - Declarations such as varchar(42) 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. SSNUM(7). Previously only + predefined system data types would allow this, e.g. + CHAR(4). - Automatic plan invalidation when table definitions change + Automatically invalidate cached function code when table + definitions change - 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 EXECUTE was + used. - 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 + CSV format, which can be loaded into a database + table for analysis @@ -139,6 +170,11 @@ do it for earlier branch release files. SSPI/GSSAPI authentication support + + + This adds native Security Service Provider Interface (SSPI) for + Windows. + @@ -147,58 +183,81 @@ do it for earlier branch release files. - 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. - The entire PostgreSQL system can - now be compiled with Microsoft Visual C++ + The backend database server can now be compiled with + Microsoft Visual C++ - 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. - 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: - 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 - 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 fsync, 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 fsync, 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. - Distributed checkpoints to spread out the I/O load of a - checkpoint + Distributed checkpoints prevent I/O spikes during + checkpoints + + + + 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. - Heap-Only Tuples (HOT) to reduce overhead of updates + Heap-Only Tuples (HOT) improves UPDATE + space usage + + + + To allow high concurrency PostgreSQL retains old + versions of updated rows. Previously only VACUUM + could reuse space taken by dead rows. With HOT dead + row space can be reused at the time of UPDATE or + INSERT. This allows for more consistent performance. + HOT also improved deleted row space reuse. @@ -207,41 +266,66 @@ do it for earlier branch release files. Just-in-time background writer strategy to improve disk write efficiency + + + This basically makes the background writer self-tuning. + + - 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 + + + + Variable-length data types with data values less then 128 bytes + will see a decrease of 3-6 bytes. For example, two + CHAR(1) fields now take 4 bytes instead of 16. Rows + are also 4 bytes shorter. - Efficiency improvements for large sequential scans, including - prevention of cache flushing and piggybacking to let - concurrent scans read the table only once + Prevent large sequential scans from forcing out more frequently + used cached pages - Top-N sorting + Allow large sequential scans to use cached pages from other + concurrent sequential scans + + + + 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. - Lazy XID assignment to reduce the cost of read-only transactions + Allow ORDER BY ... LIMIT to be done without sorting - 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. + + + + + + Use pseudo-transaction ids in read-only transactions + + + + This reduces transaction overhead for read-only transactions, + and reduces the need for vacuuming for transaction id + wrap-around. @@ -268,8 +352,8 @@ do it for earlier branch release files. - contrib/tsearch2 features have been absorbed into - the core, with some syntax changes + contrib/tsearch2 features have been moved into + the core server, with some minor syntax changes @@ -279,23 +363,23 @@ do it for earlier branch release files. - Casts to text that formerly occurred implicitly may now - need to be written explicitly + Queries that previously automatically cast values to + TEXT might now need explicit casts - Data types other than char and varchar are no - longer implicitly castable to text, except in the limited - case of a || (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 CHAR and VARCHAR no + longer automatically cast to TEXT, except in the + limited case of concatenation (||) where the other + input is textual. While this change will require additional + casts for some queries it also eliminates some unusual + behavior. - Numerous changes in administrator-only configuration parameters + Numerous changes in administrative server parameters @@ -310,9 +394,10 @@ do it for earlier branch release files. track_activities. stats_block_level and stats_row_level are merged into track_counts. - archive_command changed meaning slightly: you must now set - archive_mode to on as well to enable archiving. - The default autovacuum-related settings changed. + Previously archive_command controlled whether + archiving was performed. Now a new boolean configuration + parameter, archive_mode, controls this. Autovacuum's + default settings have changed. @@ -321,121 +406,126 @@ do it for earlier branch release files. Commenting out a parameter in postgresql.conf now causes it to revert to its default value + + + Previously commenting out a value kept the value unchanged until + the next server restart. + - ARRAY(SELECT ...) now returns an empty array, - rather than a NULL, when the sub-select returns zero rows + ARRAY(SELECT ...), where SELECT + returns no rows, now returns an empty array, rather than NULL - ORDER BY ... USING operator - will now be rejected if the operator is not a - less-than or greater-than member of some btree operator class + ORDER BY ... USING operator now must + use a less-than or greater-than operator that is + defined in a btree operator class - 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. - The array type associated with a type named foo - is not necessarily named _foo anymore + The array name for a base data type is no longer required to + be the data type name with an underscore prefix 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. - 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 While this is reasonably safe, some administrators may wish to - revoke the privilege. + revoke the privilege. It is controlled by + pg_pltemplate.tmpldbacreate. - The effects of SET LOCAL now persist until - the end of the current top transaction, unless rolled back + SET LOCAL changes now persist until + the end of the top-most transaction, unless rolled back - In 8.0 through 8.2, SET LOCAL's - effects disappeared at subtransaction commit, leading to behavior - that made little sense at the SQL level (one would not normally - expect RELEASE to do such a thing). + Previously SET LOCAL's effects reverted + during subtransaction commit and RELEASE. - 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 For example, BEGIN; DROP DATABASE; COMMIT will now be - rejected even if submitted as a single Query message. This was always - quite unsafe, but the PreventTransactionChain - test failed to detect it. + rejected even if submitted as a single query message. - Additional checks for invalidly-encoded multibyte strings + Add additional checks for invalidly-encoded multibyte strings - Some cases that might formerly have allowed invalid data to - enter the database will now be rejected. In particular, the - chr() function changed behavior. + For example, chr() has additional checks. - convert() family of functions changed behavior + convert() encoding has changed behavior - Strings that are not in the database's native encoding are now - represented as type bytea rather than type text. + bytea is now used for strings that do not match the + server encoding, and convert_from and + convert_to have been added for consistency. - 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 + + + + For example, database size now requires CONNECT + permission, and tablespaces size requires CREATE + permission. - C code that manipulates variable-length datums will need changes + New C macros for handling variable-length data values - The new SET_VARSIZE() macro must be used - to set the length word of a generated datum. Also, it may be - necessary to detoast input varlena datums in cases - where no toasting could have happened before. + The new SET_VARSIZE() macro must be + used to set the length of generated values. Also, it might be + necessary to expand (de-TOAST) input values in + additional places. -- 2.39.5