From 1a61554b59bce00c80d7d3318057d45e14ce8c2b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 4 Nov 2003 20:54:13 +0000 Subject: [PATCH] Some copy-editing for 7.4 release notes. --- doc/src/sgml/release.sgml | 176 ++++++++++++++++++++------------------ 1 file changed, 93 insertions(+), 83 deletions(-) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 88523c1287..a02cd68107 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -17,9 +17,9 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.235 2003/11/01 01:56:29 pe In previous releases, IN/NOT IN subqueries were joined to the upper query by sequentially scanning the subquery looking for - a join. The 7.4 code uses the same sophisticated techniques + a match. The 7.4 code uses the same sophisticated techniques used by ordinary joins and so is much faster. An IN - will now usually as fast as or faster than an equivalent EXISTS + will now usually be as fast as or faster than an equivalent EXISTS subquery; this reverses the conventional wisdom that applied to previous releases. @@ -27,24 +27,25 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.235 2003/11/01 01:56:29 pe Improved GROUP BY processing by using hash buckets - In previous releases, GROUP BY values were accumulated and sorted - to obtain group-by counts; the 7.4 code places GROUP BY values in - hash buckets so sorting is not required, or reverts to the old - behavior if the group-by buckets will not fit in memory. + In previous releases, rows to be grouped had to be sorted first. + The 7.4 code can do GROUP BY without sorting, by accumulating results + into a hash table with one entry per group. It will still use the sort + technique if the hash table is estimated to be too large to fit in + sort_mem, however. New multi-key hash join capability - In previous releases, hash joins could only occur on single-column - joins. This release allows multi-column hash joins. + In previous releases, hash joins could only occur on single keys. + This release allows multi-column hash joins. ANSI joins are now better optimized Prior releases evaluated ANSI join syntax only in the order - specified by the query; 7.4 allows full optimization of + implied by the syntax. 7.4 allows full optimization of queries using ANSI join syntax, meaning the optimizer considers all possible join orderings and chooses the most efficient. Outer joins, however, must still follow the declared ordering. @@ -64,16 +65,16 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.235 2003/11/01 01:56:29 pe Function-inlining for simple SQL functions Simple SQL functions can now be inlined by including their SQL - in the main query. This improves performance by preventing - repeated calls to the SQL function --- this allows simple - SQL functions to behave like macros. + in the main query. This improves performance by eliminating + per-call overhead --- that is, simple SQL functions now behave + like macros. Full support for IPv6 connections and IPv6 address data types - Prior releases allowed only IPv4 connections and IP data types only + Prior releases allowed only IPv4 connections, and the IP data types only supported IPv4 addresses. This release adds full IPv6 support in both of these areas. @@ -88,46 +89,47 @@ reliability Allow free space map to efficiently reuse empty index -pages, and other free space management improvements. +pages, and other free space management improvements - In prior releases, index pages that were left empty because of + In prior releases, B-tree index pages that were left empty because of deleted rows could only be reused by rows with index values similar to the original rows indexed on that page. In 7.4, VACUUM records - empty index pages and allows them to be used for any future index + empty index pages and allows them to be reused for any future index rows. -Implement information schema +Implement SQL-standard information schema -Support for read-only transactions +Support read-only transactions Make cursors comply more closely with the SQL standard - - New client-to-server protocol adds error codes, more status -information, faster startup, better support for binary data transmission, parameter -values separated from SQL commands, prepared statements available at the -protocol level, clean recovery from COPY failures, and cleaner startup -packets. The older protocol is still supported by both servers and -clients. - - Allow cursors to exist outside transactions, also called holdable cursors + New client-to-server protocol + + The new protocol adds error codes, more status information, faster + startup, better support for binary data transmission, parameter values + separated from SQL commands, prepared statements available at the + protocol level, and cleaner recovery from COPY failures. + The older protocol is still supported by both servers and clients. + + + libpq and ecpg are now fully thread-safe with --enable-thread-safety While prior libpq releases already supported threads, this release improves thread safety by fixing some non-thread-safe code that - was used in the database connection routines. + was used during database connection startup. @@ -163,12 +165,17 @@ required for those wishing to migrate data from any previous release. Server-side autocommit was causing too many problems with languages and applications that wanted to control their own - autocommit behavior so autocommit was removed from the server - and added to individual client API's as appropriate. + autocommit behavior, so autocommit was removed from the server + and added to individual client APIs as appropriate. Error message wording has changed substantially in this release, - and error codes have been added. + and error codes have been added. + + Significant effort was invested to make the messages more + consistent and user-oriented. + + ANSI inner joins may behave differently because they are now better optimized A number of server variables have been renamed for clarity, primarily those related to logging @@ -185,10 +192,10 @@ required for those wishing to migrate data from any previous release. command, not the actual number of rows FETCHed or MOVEd. - COPY now can process carriage-return and - carriage-return/line-feed end-of-line terminated files. + COPY now can process files that use carriage-return or + carriage-return/line-feed end-of-line sequences. Literal carriage-returns and line-feeds are no - longer accepted as data values; use \r and \n instead. + longer accepted in data values; use \r and \n instead. Trailing spaces are now trimmed when converting from CHAR(n) to VARCHAR(n) / TEXT @@ -197,9 +204,8 @@ required for those wishing to migrate data from any previous release. In prior releases, a date of 10/20/03 was interpreted as a date in October even if the - DateStyle specified the day should be first. In - 7.4, DateStyle is honored when converting such - values and will throw an error if the date is invalid for the + DateStyle specified the day should be first. + 7.4 will throw an error if the date is invalid for the current DateStyle. @@ -216,8 +222,8 @@ required for those wishing to migrate data from any previous release. 'now' was interpreted at INSERT time and not at table creation time, but this work around didn't cover all cases. Release 7.4 - now requires that defaults be defined properly using the - now() or the special value + now requires that defaults be defined properly using + now() or CURRENT_TIMESTAMP. These will work in all situations. @@ -232,10 +238,10 @@ required for those wishing to migrate data from any previous release. Dollar sign ($) can be a non-first character in identifiers This was done to improve compatibility with other database - systems. + systems, and to avoid syntax problems when parameter placeholders + ($n) are written adjacent to operators. - Syntax errors now reported as 'syntax error' rather than 'parse error' (Tom) Server Operation Changes @@ -244,9 +250,8 @@ required for those wishing to migrate data from any previous release. Roeckx, Andrew Dunstan) Fix SSL to handle errors cleanly (Nathan Mueller) - In prior releases, certain rare SSL API error reports were not + In prior releases, certain SSL API error reports were not handled correctly. This release fixes those problems. - gracefully. SSL protocol security and performance improvements (Sean Chittenden) @@ -260,7 +265,8 @@ required for those wishing to migrate data from any previous release. This allows easier debugging of deadlock situations. -Update /tmp socket mod. times regularly to avoid their removal (Tom) +Update /tmp socket modification times +regularly to avoid their removal (Tom) This should help prevent /tmp directory cleaner administration scripts from removing server socket files. @@ -277,18 +283,17 @@ required for those wishing to migrate data from any previous release. Allow btree index compaction and empty page reuse (Tom) Fix inconsistent index lookups during split of first root page (Tom) - In prior releases, when a single-page index split into two page, - there was a brief period when another database session would miss - seeing an index entry. This failure was possible primarly on - multi-cpu machines. This release fixes that rare failure case. + In prior releases, when a single-page index split into two pages, + there was a brief period when another database session could miss + seeing an index entry. This release fixes that rare failure case. Improve free space map allocation logic (Tom) Preserve free space information between postmaster restarts (Tom) In prior releases, the free space map was not saved when the - postmaster was stopped, so newly started servers has no free space - information. This release saves the free space map, which is loaded + postmaster was stopped, so newly started servers had no free space + information. This release saves the free space map, and reloads it when the server is restarted. @@ -300,7 +305,8 @@ required for those wishing to migrate data from any previous release. Add transaction status, tableid, columnid to backend protocol (Tom) Add new binary I/O protocol (Tom) Remove autocommit server setting; move to client applications (Tom) -New error message wording, error codes, and three levels of error detail (Tom) +New error message wording, error codes, and three levels of +error detail (Tom, Joe, Peter) Performance Changes @@ -338,7 +344,7 @@ required for those wishing to migrate data from any previous release. Improve optimizer cost computations, particularly for subqueries (Tom) Avoid sort when subquery ORDER BY matches upper query (Tom) -Assume WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom) +Deduce that WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom) Allow hash/merge joins on complex joins (Tom) Allow hash joins for more data types (Tom) Allow join optimization of ANSI inner joins, disable with join_collapse_limit (Tom) @@ -347,7 +353,7 @@ required for those wishing to migrate data from any previous release. Use bit-mapped relation sets in the optimizer (Tom) Improve backend startup time (Tom) - The new network protocol requires fewer network packets to start a + The new client/server protocol requires fewer network packets to start a database session. @@ -381,7 +387,7 @@ required for those wishing to migrate data from any previous release. Rename server parameter server_min_messages to log_min_messages (Bruce) - This was done so most parameters that control the server logs being + This was done so most parameters that control the server logs begin with log_. @@ -438,20 +444,20 @@ required for those wishing to migrate data from any previous release. postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter) This option is useful for administration tools that need to know the - configuration variable names and their minimum, maximums, defaults, + configuration variable names and their minimums, maximums, defaults, and descriptions. +Add new columns in pg_settings: context, type, source, min_val, max_val (Joe) Make default shared_buffers 1000 and max_connections 100, if possible (Tom) Prior versions defaulted to 64 shared buffers so PostgreSQL would - start on even old computers. This release tests the amount of shared - memory supported by the hardware and sizes it accordingly. Of - course, users are still encouraged to evaluate their resource load - and size shared_buffers accordingly. + start on even very old systems. This release tests the amount of shared + memory allowed by the platform and selects more reasonable default values + if possible. Of course, users are still encouraged to evaluate their + resource load and size shared_buffers accordingly. -Add new columns in pg_settings: context, type, source, min_val, max_val (Joe) New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen) In prior releases, there was no way to prevent SSL connections if @@ -466,9 +472,6 @@ required for those wishing to migrate data from any previous release. New SQL-standard information schema (Peter) - - bjm - Add read-only transactions (Peter) Add server variable regex_flavor to control regular expression @@ -500,7 +503,7 @@ required for those wishing to migrate data from any previous release. Allow UPDATE ... SET col = DEFAULT (Rod) - This allows UPDATE to set a column to its default value. + This allows UPDATE to set a column to its declared default value. Allow expressions to be used in LIMIT/OFFSET (Tom) @@ -593,14 +596,14 @@ required for those wishing to migrate data from any previous release. Allow cursors outside transactions using WITH HOLD (Neil) In previous releases, cursors were removed at the end of the - transaction. Using WITH HOLD, the current release allows transaction - to remain outside their own transaction. + transaction. Using WITH HOLD, the current release allows cursors + to remain readable after the creating transaction. MOVE/FETCH 0 now does nothing (Bruce) In previous releases, MOVE 0 moved to the end of the cursor, and - FETCH 0 fetched all remaning rows. + FETCH 0 fetched all remaining rows. Cause MOVE/FETCH to return the number of rows moved/fetched, or zero if at the beginning/end of cursor, @@ -663,11 +666,11 @@ required for those wishing to migrate data from any previous release. Allow pg_ctl to better handle non-standard ports (Greg) Functional indexes have been generalized into expressional indexes (Tom) - In prior releases, only columns could be used in functional indexes. - This release allows any type of expression. + In prior releases, functional indexes only supported a simple function + applied to one or more column names. + This release allows any type of scalar expression. -Syntax errors now reported as 'syntax error' rather than 'parse error' (Tom) Have SHOW TRANSACTION_ISOLATION match input to SET TRANSACTION_ISOLATION (Tom) Have COMMENT ON DATABASE on non-local database generate a warning (Rod) @@ -687,7 +690,7 @@ required for those wishing to migrate data from any previous release. pg_dump --use-set-session-authorization and --no-reconnect now do nothing, all dumps use SET SESSION AUTHORIZATION - pg_dump now no longer reconnects to switch users, but instead uses + pg_dump no longer reconnects to switch users, but instead always uses SET SESSION AUTHORIZATION. This should reduce password prompting during restores. @@ -705,7 +708,7 @@ required for those wishing to migrate data from any previous release. New extra_float_digits server parameter to control float precision display (Pedro Ferreira, Tom) - This controls precision output which was causing regression + This controls output precision which was causing regression testing problems. @@ -727,7 +730,7 @@ required for those wishing to migrate data from any previous release. Trap division by zero in case the operating system doesn't prevent it (Tom) Change the NUMERIC data type internally to base 10000 (Tom) New hostmask() function (Greg Wickham) -Fixes for to_char() (Karel) +Fixes for to_char() and to_timestamp() (Karel) Allow functions that can take any argument data type and return any data type, using ANYELEMENT and ANYARRAY (Joe) @@ -737,12 +740,13 @@ required for those wishing to migrate data from any previous release. Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe) -Allow proper comparisons for arrays (Joe) +Allow proper comparisons for arrays, including ORDER BY and +DISTINCT support (Joe) +Allow indexes on array columns (Joe) Allow array concatenation with '||' (Joe) -Allow indexes on array columns, and used in ORDER BY and DISTINCT (Joe) -Allow WHERE qualification 'expr >oper< ANY/SOME/ALL (array-expr)' (Joe) +Allow WHERE qualification 'expr <oper> ANY/SOME/ALL (array-expr)' (Joe) - This allows arrays to behave like subqueries or a list of values: + This allows arrays to behave like a list of values, for purposes like SELECT * FROM tab WHERE col IN array_val @@ -778,7 +782,8 @@ required for those wishing to migrate data from any previous release. Make initcap() more compatible with Oracle (Mike Nolan) - bjm ?? + initcap() now uppercases a letter appearing after any non-alphanumeric + character, rather than only after whitespace. Allow only DateStyle field order for date values not in ISO format (Greg) @@ -786,7 +791,12 @@ required for those wishing to migrate data from any previous release. backward compatibility (Tom) 'now' will no longer work as a column default, use now() (change required for prepared statements) (Tom) -Assume NaN value to be larger than any other value in MIN()/MAX() (Tom) +Treat NaN as larger than any other value in MIN()/MAX() (Tom) + + NaN was already sorted after ordinary numeric values for most purposes, + but MIN() and MAX() didn't get this right. + + Prevent interval from suppressing ':00' seconds display New pg_get_triggerdef(prettyprint) and pg_constraint_is_visible() functions Allow time to be specified as '040506' or '0405' (Tom) @@ -818,7 +828,7 @@ zero-row record variable (Tom) support for polymorphism (Joe) Add new $0 parameter in PL/pgSQL representing the function's actual return type (Joe) -Allow pltcl and plpython use the same trigger on multiple tables (Tom) +Allow pltcl and plpython to use the same trigger on multiple tables (Tom) Fixed PL/Tcl's spi_prepare to accept full qualified type names in the parameter type list (Jan) @@ -852,7 +862,7 @@ zero-row record variable (Tom) Enhance HTML mode to be more standards-compliant (Greg) New '\set AUTOCOMMIT off' capability (Tom) - This takes the place of the remove server variable 'autocommit'. + This takes the place of the removed server variable 'autocommit'. New '\set VERBOSITY' to control error detail (Tom) @@ -889,7 +899,7 @@ zero-row record variable (Tom) Allow thread-safe libpq with --enable-thread-safety (Lee Kindness, Philip Yarra) Allow pqInternalNotice() to accept a format string and args instead of just a preformatted message (Tom, Sean Chittenden) -Allow control SSL negotiation with sslmode values "disable", "allow", +Control SSL negotiation with sslmode values "disable", "allow", "prefer", and "require" (Jon Jensen) Allow new error codes and levels of text (Tom) Allow access to the underlying table and column of a query result (Tom)