From 7dc04cd204786c0289727287285b9ac8113ba8d2 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 24 Aug 2010 23:45:32 +0000 Subject: [PATCH] Further editing of release notes. --- doc/src/sgml/release-9.0.sgml | 465 +++++++++++++++++++++------------- 1 file changed, 291 insertions(+), 174 deletions(-) diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml index e4618d2678c..f13eb03c771 100644 --- a/doc/src/sgml/release-9.0.sgml +++ b/doc/src/sgml/release-9.0.sgml @@ -1,4 +1,4 @@ - + Release 9.0 @@ -43,50 +43,48 @@ Easier database object permissions management. 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. - - - - - - Add support for compiling on 64-bit - Windows and running in 64-bit - mode. + 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. 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. + 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 PL/Python have been enhanced in several ways, + including support for Python3. - More advanced reporting queries with additional window functions - (PRECEDING and FOLLOWING) and the ability - to ORDER BY - inside aggregate functions. + Full support for 64-bit + Windows. - Triggers now support two new features, - SQL-compliant per-column triggers, and + 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. + + + + + + New trigger features, including + SQL-standard-compliant per-column triggers and conditional trigger execution. @@ -101,26 +99,46 @@ - New and enhanced security features, including RADIUS authentication, - LDAP authentication improvements, and the new passwordcheck optional module + Exclusion constraints. + These provide a generalized version of unique constraints, allowing + enforcement of complex conditions. + + + + + + New and enhanced security features, including RADIUS authentication, + LDAP authentication improvements, and a new contrib module + passwordcheck for testing password strength. - The LISTEN/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 high-performance implementation of the + LISTEN/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. - Add /contrib/pg_upgrade + 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. + + + + + + New contrib module + pg_upgrade to support in-place upgrades from 8.3 or 8.4 to 9.0. @@ -128,41 +146,24 @@ 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). + including elimination of unnecessary joins. This helps optimize some + automatically-generated queries, such as those produced by + object-relational mappers (ORMs). - Exclusion constraints - let database designers define uniqueness based on complex - criteria, including for non-scalar data such as time periods, - ranges and arrays. - - - - - - 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. - - - - - - EXPLAIN - plans are now available in JSON, XML and YAML format, and include + 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. @@ -216,9 +217,9 @@ - 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) @@ -252,18 +253,6 @@ - - - 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. - - - @@ -316,6 +305,18 @@ + + + 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. + + + @@ -550,11 +551,25 @@ + + + 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 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) @@ -580,8 +595,8 @@ - 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). @@ -599,6 +614,14 @@ + + + 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 @@ -634,7 +657,8 @@ - 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. @@ -823,7 +847,7 @@ Add 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) @@ -849,9 +873,11 @@ 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. - @@ -884,6 +910,19 @@ + + + Change server parameter 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 @@ -895,36 +934,24 @@ 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 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. - - - @@ -957,7 +984,7 @@ Allow mixing of traditional and SQL-standard LIMIT/OFFSET - syntax in the same query (Tom Lane) + syntax (Tom Lane) @@ -1063,29 +1090,14 @@ - <command>ALTER</> + <command>ALTER TABLE</> - 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) @@ -1223,7 +1235,21 @@ 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. + @@ -1235,7 +1261,7 @@ 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. @@ -1285,7 +1311,7 @@ - Global catalogs still cannot be clustered. + Shared catalogs still cannot be clustered. @@ -1429,6 +1455,14 @@ + + + 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 @@ -1521,7 +1555,7 @@ - Tighten input requirements for int2vector input (Caleb + Tighten input checking for int2vector values (Caleb Welton) @@ -1630,9 +1664,9 @@ - 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) @@ -1654,8 +1688,7 @@ Allow aggregate functions to use ORDER BY (Andrew - Gierth) + linkend="syntax-aggregates">ORDER BY (Andrew Gierth) @@ -1666,6 +1699,13 @@ + + + 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) - Speed up information_schema privilege views (Joachim Wieland) + 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) @@ -1889,6 +1937,23 @@ + + + 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 @@ -2057,22 +2122,23 @@ 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) @@ -2330,10 +2396,10 @@ - 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. + Previously, pg_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. @@ -2417,6 +2483,14 @@ + + + Avoid extra system calls to block and unblock SIGPIPE + in libpq, on platforms that offer alternative methods + (Jeremy Kerr) + + + When a .pgpass-supplied @@ -2517,20 +2591,20 @@ - 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) @@ -2601,15 +2675,15 @@ 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 PGXS Makefiles (Mark Cave-Ayland) @@ -2617,8 +2691,9 @@ - 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) @@ -2652,13 +2727,6 @@ - - - Support multiprocessor compilation using Microsoft Visual - C (Magnus Hagander) - - - @@ -2757,14 +2825,39 @@ - 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) @@ -2803,15 +2896,20 @@ - 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. @@ -2823,7 +2921,7 @@ - Improve error context support in PL/Perl (Alexey Klyukin) + Improve error context reports in PL/Perl (Alexey Klyukin) @@ -2906,6 +3004,12 @@ 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. + @@ -2919,8 +3023,8 @@ - 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) @@ -2942,10 +3046,23 @@ + + + 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) @@ -2961,8 +3078,8 @@ - Add parser hooks to access column and parameter references in - queries (Tom Lane) + Add parser hooks for processing ColumnRef and ParamRef nodes + (Tom Lane) @@ -3085,7 +3202,7 @@ - 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.