From 2692274dd94e860403679d0d0e5c14f64ae3499c Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter_e@gmx.net> Date: Fri, 18 Dec 2009 22:11:09 +0000 Subject: [PATCH] 8.5alpha3 release notes up to Fri Dec 18 21:37:38 2009 +0000 --- doc/src/sgml/release-8.5.sgml | 464 ++++++++++++++++++++++++++++------ 1 file changed, 381 insertions(+), 83 deletions(-) diff --git a/doc/src/sgml/release-8.5.sgml b/doc/src/sgml/release-8.5.sgml index f95b35505c3..73ad960fa2d 100644 --- a/doc/src/sgml/release-8.5.sgml +++ b/doc/src/sgml/release-8.5.sgml @@ -1,7 +1,7 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.5.sgml,v 1.9 2009/12/11 01:33:35 adunstan Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.5.sgml,v 1.10 2009/12/18 22:11:09 petere Exp $ --> <sect1 id="release-8-5"> - <title>Release 8.5alpha2</title> + <title>Release 8.5alpha3</title> <sect2> <title>Overview</title> <para> @@ -69,45 +69,105 @@ <itemizedlist> <listitem> <para> - <emphasis>Add SQL-compliant triggers on columns, which fire only if - certain columns are named in the UPDATE's SET list.</> + <emphasis>Remove previously deprecated configuration + parameter add_missing_from. The system now always behaves as + though add_missing_from were off.</emphasis> </para> </listitem> <listitem> <para> - <emphasis>Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING + <emphasis>Performance and behavioral improvements in UPDATE, + DELETE, and SELECT FOR UPDATE/SHARE queries with + joins. Various corner-cases could result in duplicated output + rows. Set-returning functions are now prohibited in the + target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not + propagate into a WITH query anymore.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Fixed for SELECT FOR UPDATE/SHARE in conjuction with LIMIT. + Previously, it could return fewer rows than the limit specified.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression + to be checked to determine whether the trigger should be fired.</emphasis> + </para> + <para> + <emphasis>For BEFORE triggers this is mostly a matter of spec compliance; but + for AFTER triggers it can provide a noticeable performance + improvement, since queuing of a deferred trigger event and + re-fetching of the row(s) at end of statement can be + short-circuited if the trigger does not need to be fired.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add exclusion constraints, which generalize the concept of + uniqueness to support any indexable commutative operator, not just + equality. Two rows violate the exclusion constraint if + "row1.col OP row2.col" is TRUE for each of the columns in + the constraint.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Support ORDER BY within aggregate function calls, at long last + providing a non-kluge method for controlling the order in which + values are fed to an aggregate function. At the same time eliminate + the old implementation restriction that DISTINCT was only supported + for single-argument aggregates.</emphasis> + </para> + <para> + <emphasis>Behavioral change: formerly, agg(DISTINCT x) dropped null values of + x unconditionally. Now, it does so only if the agg transition + function is strict; otherwise nulls are treated as DISTINCT + normally would, i.e., you get one copy.</emphasis> + </para> + </listitem> + <listitem> + <para> + Add SQL-compliant triggers on columns, which fire only if + certain columns are named in the UPDATE's SET list. + </para> + </listitem> + <listitem> + <para> + Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING ALL shortcut to allow users to make an exact copy of a table including - all options and features.</> + all options and features. </para> </listitem> <listitem> <para> - <emphasis>Define a new, more extensible syntax for COPY options - in order to support additional COPY options in the future.</> + Define a new, more extensible syntax for COPY options + in order to support additional COPY options in the future. </para> </listitem> <listitem> <para> - <emphasis>Modify the definition of window-function PARTITION + Modify the definition of window-function PARTITION BY and ORDER BY clauses so that their elements are always taken as simple expressions over the query's input - columns. This fixes a bug.</> + columns. This fixes a bug. </para> </listitem> <listitem> <para> - <emphasis>Fix bug with nested WITH RECURSIVE statements.</> + Fix bug with nested WITH RECURSIVE statements. </para> </listitem> <listitem> <para> - <emphasis>Add surrogate pair support for U& string and identifier - syntax.</> + Add surrogate pair support for U& string and identifier + syntax. </para> </listitem> <listitem> <para> - <emphasis>Add Unicode escapes in E'...' strings.</> + Add Unicode escapes in E'...' strings. </para> </listitem> <listitem> @@ -154,24 +214,34 @@ <itemizedlist> <listitem> <para> - <emphasis>Make TRUNCATE do truncate-in-place when processing + <emphasis>Allow rewriting ALTER TABLE to skip WAL logging.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Speed up information schema privilege views.</emphasis> + </para> + </listitem> + <listitem> + <para> + Make TRUNCATE do truncate-in-place when processing a relation that was created or previously truncated in the - current (sub)transaction.</> + current (sub)transaction. </para> </listitem> <listitem> <para> - <emphasis>Implement "join removal" for cases where the inner side + Implement "join removal" for cases where the inner side of a left join is unique and is not referenced above the join. This should - speed up many ORM-generated and reporting tool queries.</emphasis> + speed up many ORM-generated and reporting tool queries. </para> </listitem> <listitem> <para> - <emphasis>Remove the use of the flat files pg_auth and + Remove the use of the flat files pg_auth and pg_database in order to improve performance. (Warning: pgbouncer and possibly other tools currently suggest referring to the pg_auth - file for its user database. Such schemes will no longer work.)</emphasis> + file for its user database. Such schemes will no longer work.) </para> </listitem> <listitem> @@ -235,35 +305,79 @@ <itemizedlist> <listitem> <para> - <emphasis>Add a Boolean server configuration parameter + <emphasis>Provide a parenthesized-options syntax for VACUUM, analogous to + that recently adopted for EXPLAIN. This will allow additional + options to be implemented in future without having to make them + fully-reserved keywords. The old syntax remains available for + existing options, however.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add support for an application_name parameter, which is displayed + in pg_stat_activity and recorded in log entries.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Fix longstanding problems in VACUUM caused by untimely + interruptions.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Error when a specified connection service is not found in + pg_service.conf, instead of ignoring it.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add YAML to list of EXPLAIN formats.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add a hook to let loadable modules get control at ProcessUtility + execution, and use it to extend contrib/pg_stat_statements to track + utility commands.</emphasis> + </para> + </listitem> + <listitem> + <para> + Add a Boolean server configuration parameter "bonjour" to control whether a Bonjour-enabled - build actually attempts to advertise itself via Bonjour.</> + build actually attempts to advertise itself via Bonjour. </para> </listitem> <listitem> <para> - <emphasis>When reloading postgresql.conf, log what parameters actually - changed.</> + When reloading postgresql.conf, log what parameters actually + changed. </para> </listitem> <listitem> <para> - <emphasis>Make it possibly to specify server configuration parameters + Make it possibly to specify server configuration parameters per user-database combination. Add a \drds command to psql to - display the settings.</> + display the settings. </para> </listitem> <listitem> <para> - <emphasis>Allow the collection of statistics on sequences.</> + Allow the collection of statistics on sequences. </para> </listitem> <listitem> <para> - <emphasis>Increase the maximum value of extra_float_digits to + Increase the maximum value of extra_float_digits to 3, and have pg_dump use that value when the backend is new enough to allow it, because it is possible to need 3 extra - digits for float4 values (but not for float8 values).</> + digits for float4 values (but not for float8 values). </para> </listitem> <listitem> @@ -287,22 +401,55 @@ <itemizedlist> <listitem> <para> - <emphasis>Add ALTER DEFAULT PRIVILEGES command, which allows + <emphasis>When querying a table with child tables, do not check permissions + on the child tables, only on the parent table. The old behavior was + found to be useless and confusing in virtually all cases, and also + contrary to the SQL standard.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add a hook to CREATE/ALTER ROLE to allow an external module to + check the strength of database passwords, and create a sample + implementation of such a hook as a new contrib module + "passwordcheck".</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add large object access control.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Allow LDAP authentication to operate in search+bind + mode, meaning it does a search for the user in the directory + first, and then binds with the DN found for this user. This + allows for LDAP logins in scenarios where the DN of the user + cannot be determined simply by prefix and suffix, such as the + case where different users are located in different + containers. The old way of authentication can be + significantly faster, so it's kept as an option.</emphasis> + </para> + </listitem> + <listitem> + <para> + Add ALTER DEFAULT PRIVILEGES command, which allows users to adjust the privileges that will be applied to - subsequently-created objects.</> + subsequently-created objects. </para> </listitem> <listitem> <para> - <emphasis>Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA. - This makes it easier to manage permissions on database objects.</emphasis> + Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA. + This makes it easier to manage permissions on database objects. </para> </listitem> <listitem> <para> - <emphasis>Support "samehost" and "samenet" specifications + Support "samehost" and "samenet" specifications in pg_hba.conf. This allows users with dynamic server addresses to run - PostgreSQL without frequently modifying pg_hba.conf</emphasis> + PostgreSQL without frequently modifying pg_hba.conf. </para> </listitem> <listitem> @@ -318,8 +465,23 @@ <itemizedlist> <listitem> <para> - <emphasis>Support POSIX-compatible interpretation of ? as well as {m,n} - and related constructs in SIMILAR TO, per SQL:2008.</> + <emphasis>Remove configuration parameter regex_flavor. It is now always + "advanced".</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Teach the regular expression functions to do case-insensitive + matching and locale-dependent character classification properly + when the database encoding is UTF8. This previously only worked + correct for single-byte encodings and is still broken for other + multibyte encodings.</emphasis> + </para> + </listitem> + <listitem> + <para> + Support POSIX-compatible interpretation of ? as well as {m,n} + and related constructs in SIMILAR TO, per SQL:2008. </para> </listitem> <listitem> @@ -349,13 +511,27 @@ <itemizedlist> <listitem> <para> - <emphasis>Fix encoding handling in binary input function of xml type.</> + <emphasis>When doing "ARRAY[...]::domain", where domain is a domain + over an array type, we need to check domain constraints. Regression + introduced in 8.4.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Fix integer-to-bit-string conversions to handle the first + fractional byte correctly when the output bit width is wider than + the given integer by something other than a multiple of 8 bits.</emphasis> </para> </listitem> <listitem> <para> - <emphasis>Tighten binary receive functions so that they reject values - that the text input functions don't accept either.</> + Fix encoding handling in binary input function of xml type. + </para> + </listitem> + <listitem> + <para> + Tighten binary receive functions so that they reject values + that the text input functions don't accept either. </para> </listitem> <listitem> @@ -379,8 +555,19 @@ <itemizedlist> <listitem> <para> - <emphasis>It is now reasonably safe to use pg_ctl to start - the postmaster from a boot-time script.</emphasis> + <emphasis>initdb now selects the encoding SQL_ASCII when the locale specifies + US-ASCII. This case previously failed.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add init[db] option to pg_ctl.</emphasis> + </para> + </listitem> + <listitem> + <para> + It is now reasonably safe to use pg_ctl to start + the postmaster from a boot-time script. </para> </listitem> <listitem> @@ -401,16 +588,42 @@ <itemizedlist> <listitem> <para> - <emphasis>Implement significantly saner behavior when two or - more psql sessions overlap in their use of the history file.</> + <emphasis>In psql, show view definition only with \d+, not with \d.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>In psql, ignore UTF-8-encoded Unicode byte-order mark at the + beginning of a file if the client encoding is UTF-8.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Improve psql's tabular display of wrapped-around data by inserting + markers in the formerly-always-blank columns just to left and right + of the data. "pset linestyle old-ascii" is added to make + the previous behavior available if anyone really wants it.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Simplify psql's new linestyle behavior to default to + linestyle=ascii all the time, rather than hoping we can tell + whether the terminal supports UTF-8 characters.</emphasis> + </para> + </listitem> + <listitem> + <para> + Implement significantly saner behavior when two or + more psql sessions overlap in their use of the history file. </para> </listitem> <listitem> <para> - <emphasis>Add "pset linestyle ascii/unicode" option to psql, + Add "pset linestyle ascii/unicode" option to psql, allowing our traditional ASCII-art style of table output to be upgraded to use Unicode box drawing characters if - desired.</> + desired. </para> </listitem> <listitem> @@ -430,56 +643,114 @@ <itemizedlist> <listitem> <para> - <emphasis>Add DO statement to support execution of procedural language - code without having to create a function for it.</> + <emphasis>PL/pgSQL is installed by default.</emphasis> </para> </listitem> <listitem> <para> - <emphasis>Support use of function argument names to identify which + <emphasis>Remove PL/pgSQL's RENAME declaration, which has + bizarre and mostly nonfunctional behavior, and is so little + used that no one has been interested in fixing it. To ensure + that possible uses are covered, remove the ALIAS declaration's + arbitrary restriction that only $n identifiers can be + aliased.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>The PL/pgSQL parser and scanner were reworked to behave much more + sanely:</emphasis> + </para> + <para> + <emphasis>A variable reference will only be recognized where it can validly + go, ie, a place where a column value or parameter would be legal, + instead of the former behavior that would replace any textual match + including table names and column aliases (leading to syntax errors + later on). PL/pgSQL variable names that match fully-reserved words + will now need to be quoted. An the other hand, a number of + PL/pgSQL-specific words were de-reserved.</emphasis> + </para> + <para> + <emphasis>The variable resolution behavior is by default not backward + compatible, but can be configured; see documentation.</emphasis> + </para> + <para> + <emphasis>Error reporting is much nicer and accurate.</emphasis> + </para> + <para> + <emphasis>The argument of WHERE CURRENT OF can be a PL/pgSQL cursor variable.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Add support for anonymous code blocks (DO blocks) to PL/Perl.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Support arrays as parameters and return values of PL/Python + functions.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Python 3 support in PL/Python; behaves more or less unchanged + compared to Python 2, but the new language variant is called + plpython3u.</emphasis> + </para> + </listitem> + <listitem> + <para> + Add DO statement to support execution of procedural language + code without having to create a function for it. + </para> + </listitem> + <listitem> + <para> + Support use of function argument names to identify which actual arguments match which function parameters. The syntax uses AS, for example funcname(value AS arg1, anothervalue AS - arg2).</> + arg2). </para> </listitem> <listitem> <para> - <emphasis>Fix/improve bytea and boolean support in PL/Python. Data type + Fix/improve bytea and boolean support in PL/Python. Data type conversion into and out of PL/Python previously went through an intermediate string representation, which caused various discrepancies especially with bytea and boolean data. This is - now fixed by converting the values directly.</> + now fixed by converting the values directly. </para> </listitem> <listitem> <para> - <emphasis>PL/Python now accepts Unicode objects where it previously + PL/Python now accepts Unicode objects where it previously only accepted string objects (for example, as return value). Unicode objects are converted to the PostgreSQL - server encoding as necessary.</> + server encoding as necessary. </para> </listitem> <listitem> <para> - <emphasis>Improve error context reporting in PL/Perl, for - easier debugging.</> + Improve error context reporting in PL/Perl, for + easier debugging. </para> </listitem> <listitem> <para> - <emphasis>PL/pgSQL IN parameters now accept value assignments.</> + PL/pgSQL IN parameters now accept value assignments. </para> </listitem> <listitem> <para> - <emphasis>Convert a Perl array to a PostgreSQL array when returned by - set-returning functions as well as non-SRFs.</> + Convert a Perl array to a PostgreSQL array when returned by + set-returning functions as well as non-SRFs. </para> </listitem> <listitem> <para> - <emphasis>Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n, - MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.</> + Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n, + MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL. </para> </listitem> <listitem> @@ -506,9 +777,18 @@ <itemizedlist> <listitem> <para> - <emphasis>Multiple improvements in contrib/hstore, including + <emphasis>Add \shell and \setshell meta commands to pgbench.</emphasis> + </para> + <para> + <emphasis>\shell command runs an external shell command. \setshell also does + the same and sets the result to a variable.</emphasis> + </para> + </listitem> + <listitem> + <para> + Multiple improvements in contrib/hstore, including raising limits on keys and values, conversions to and from - records and arrays, and support for GROUP BY and DISTINCT.</emphasis> + records and arrays, and support for GROUP BY and DISTINCT. </para> </listitem> <listitem> @@ -540,20 +820,32 @@ <sect3> <title>Development</title> <itemizedlist> + <listitem> + <para> + <emphasis>Refactor ECPG grammar so that it uses the core grammar's + unreserved_keyword list, minus a few specific words that have to be + treated specially. This de-reserves a number of works in ECPG.</emphasis> + </para> + </listitem> + <listitem> + <para> + <emphasis>Added dynamic cursor names to ECPG.</emphasis> + </para> + </listitem> <listitem> <para> - <emphasis>Add ECPG function that returns the current transaction status.</> + Add ECPG function that returns the current transaction status. </para> </listitem> <listitem> <para> - <emphasis>Make ECPG more robust against applications freeing strings.</> + Make ECPG more robust against applications freeing strings. </para> </listitem> <listitem> <para> - <emphasis>Make libpq reject non-numeric and out-of-range port numbers with a - suitable error message.</emphasis> + Make libpq reject non-numeric and out-of-range port numbers with a + suitable error message. </para> </listitem> <listitem> @@ -580,28 +872,28 @@ <itemizedlist> <listitem> <para> - <emphasis>Change the WIN32 API version to be 5.01 (Windows XP), to - bring in the proper IPv6 headers in newer SDKs.</> + <emphasis>Disable triggering failover with a signal in pg_standby on Windows. + It never really worked before anyway.</emphasis> </para> </listitem> <listitem> <para> - <emphasis>Write to the Windows eventlog in UTF-16, converting the - message encoding as necessary.</> + Change the WIN32 API version to be 5.01 (Windows XP), to + bring in the proper IPv6 headers in newer SDKs. </para> </listitem> <listitem> <para> - <emphasis>Replace use of the long-deprecated Bonjour API - DNSServiceRegistrationCreate with the not-so-deprecated - DNSServiceRegister. The new code will fail on Mac OS X - releases before 10.3.</> + Write to the Windows eventlog in UTF-16, converting the + message encoding as necessary. </para> </listitem> <listitem> <para> - <emphasis>Install a hopefully-temporary workaround for Mac OS X Snow Leopard - readdir() bug.</> + Replace use of the long-deprecated Bonjour API + DNSServiceRegistrationCreate with the not-so-deprecated + DNSServiceRegister. The new code will fail on Mac OS X + releases before 10.3. </para> </listitem> <listitem> @@ -621,28 +913,34 @@ </itemizedlist> </sect3> <sect3> - <title>Source code, build options</title> + <title>Source Code, Build Options</title> <itemizedlist> <listitem> <para> - <emphasis>Fix inclusions of readline/editline header files so that we + <emphasis>configure --enable-thread-safety is now the default (but can still + be turned off).</emphasis> + </para> + </listitem> + <listitem> + <para> + Fix inclusions of readline/editline header files so that we only attempt to #include the version of history.h that is in the same directory as the readline.h we are using. This avoids problems in some scenarios where both readline and - editline are installed.</> + editline are installed. </para> </listitem> <listitem> <para> - <emphasis>Derived files that are shipped in the distribution used to be + Derived files that are shipped in the distribution used to be built in the source directory even for out-of-tree builds. They are now also built in the build tree. This - should be more convenient for certain developers' workflows.</> + should be more convenient for certain developers' workflows. </para> </listitem> <listitem> <para> - <emphasis>Translations were updated.</> + Translations were updated. </para> </listitem> <listitem> -- GitLab