From d6ad5375cbcc1748e07f159ec70d5af7f63a86a5 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 31 Oct 2003 04:30:22 +0000 Subject: [PATCH] Update with more comments. --- doc/src/sgml/release.sgml | 536 ++++++++++++++++++++++++++++++++------ 1 file changed, 457 insertions(+), 79 deletions(-) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 0ac4c8a31e..54a1ec0b5b 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -14,7 +14,6 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.227 2003/10/30 20:49:47 mo IN/NOT IN subqueries are now much more efficient - In previous releases, IN/NOT IN subqueries were joined to the upper query by sequentially scanning the subquery looking for @@ -22,7 +21,6 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.227 2003/10/30 20:49:47 mo used by ordinary joins and so is much faster, and is now faster than EXISTS subqueries. - Improved GROUP BY processing by using hash buckets @@ -180,12 +178,12 @@ required for those wishing to migrate data from any previous release. The server-side autocommit setting was removed and reimplemented in client applications and languages. - + 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. - + Error message wording has changed substantially in this release, @@ -195,19 +193,19 @@ required for those wishing to migrate data from any previous release. clarity, primarily those related to logging MOVE/FETCH 0 now does nothing - + In prior releases, FETCH 0 would fetch all remaining rows, and MOVE 0 would move to the end of the cursor. - + MOVE/FETCH now returns the actual number of rows moved/fetched, or zero if at the beginning/end of the cursor - + Prior releases would return the tuple count passed to the command, not the actual number of rows FETCHed or MOVEd. - + COPY now can process carriage-return and @@ -220,28 +218,28 @@ required for those wishing to migrate data from any previous release. FLOAT(p) now measures 'p' in bits, not digits Ambiguous date values now must match the ordering specified by DateStyle - + 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 current DateStyle. - + The oidrand(), oidsrand(), and userfntest() functions have been removed. - + These functions were determined to be no longer useful. - + 'now' will no longer work as a column default; now() or CURRENT_TIMESTAMP should be used instead - + In prior releases, there was special code so the string 'now' was interpreted at INSERT time and not at table creation time, but @@ -250,24 +248,24 @@ required for those wishing to migrate data from any previous release. now() or the special value CURRENT_TIMESTAMP. These will work in all situations. - + 'today' will no longer work as a column default; CURRENT_DATE should be used instead - + Same description as above. - + Dollar sign ($) is no longer allowed in operator names Dollar sign ($) can be a non-first character in identifiers - + This was done to improve compatibility with other database systems. - + @@ -534,7 +532,7 @@ required for those wishing to migrate data from any previous release. 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) +New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen) In prior releases, there was no way to prevent SSL connections if @@ -549,54 +547,214 @@ required for those wishing to migrate data from any previous release. Query Changes -New SQL-standard information schema (Peter) +New SQL-standard information schema (Peter) + + + bjm + + + Add read-only transactions (Peter) Add server variable regex_flavor to control regular expression processing (Tom) Print key name and value in foreign-key violation messages (Dmitry Tkach) -Allow users to see their own queries in pg_stat_activity (Kevin Brown) -Fix subquery aggregates of upper query columns to match SQL spec. (Tom) +Allow users to see their own queries in pg_stat_activity (Kevin Brown) + + + In prior releases, only the super-user could see query strings using + pg_stat_activity. Now ordinary users can see their own query + strings. + + + +Fix subquery aggregates of upper query columns to match SQL spec. (Tom) + + + bjm + + + Add option to prevent auto-addition of tables referenced in query (Nigel J. - Andrews) -Allow UPDATE ... SET col = DEFAULT (Rod) -Allow expressions to be used in LIMIT/OFFSET (Tom) -Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter) + Andrews) + + + By default, tables mentioned in the query are automatically added + to the FROM clause if they are not already there. This option + disabled that behavior. + + + +Allow UPDATE ... SET col = DEFAULT (Rod) + + + This allows UPDATE to set a column to its default value. + + + +Allow expressions to be used in LIMIT/OFFSET (Tom) + + + In prior releases, LIMIT/OFFSET could only use constants, not + expressions. + + + +Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter) + + + bjm ? + + + Object Manipulation Changes -Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil) -Add FOR EACH STATEMENT statement-level triggers (Neil) -Add DOMAIN CHECK constraints (Rod) +Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil) + + + bjm ? + + + +Add FOR EACH STATEMENT statement-level triggers (Neil) + + + While this allows a trigger to fire at the end of a statement, it + does not allow the trigger to access all rows modified by the + query. This capability is planned for a future release. + + + +Add DOMAIN CHECK constraints (Rod) + + + This greatly increases the usefulness of domains by allowing them to + use CHECK constraints. + + + Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / DROP - CONSTRAINT (Rod) -Fix several zero-column table bugs (Tom) -Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod) + CONSTRAINT (Rod) + + + This allows manipulation of existing domains. + + + +Fix several zero-column table bugs (Tom) + + + PostgreSQL supports zero-column tables. This fixes various bugs + that occur when using such tables. + + + +Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod) + + + In prior releases, ALTER TABLE ADD PRIMARY would add a unique index, + but not a NOT NULL constraint. That is fixed in this release. + + + Add ALTER DOMAIN OWNER (Rod) -Add ALTER TABLE ... WITHOUT OIDS (Rod) +Add ALTER TABLE ... WITHOUT OIDS (Rod) + + + This allows control over whether new and updated rows will have an + oid column. This is most useful for saving storage space. + + + Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values (Rod) -Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) +Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) + + + This command is used by pg_dump to record the CLUSTER column + for each table previously clustered. This information is used by database-wide + cluster to cluster all previously clustered tables. + + + Improve DOMAIN automatic type casting (Rod, Tom) Allow dollar signs in identifiers, except as first character (Tom) Disallow dollar signs in operator names, so x=$1 works (Tom) Allow SQL200X inheritance syntax LIKE subtable, INCLUDING DEFAULTS (Rod) -Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter) +Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter) + + + Allow GRANT to give other users the ability to grant permissions on + a object. + + + Utility Command Changes -Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) -Allow cursors outside transactions using WITH HOLD (Neil) -MOVE/FETCH 0 now does nothing (Bruce) +Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) + + + This adds the ability for a table to be dropped or all rows deleted + on transaction commit. + + + +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. + + + +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. + + + Cause MOVE/FETCH to return the number of rows moved/fetched, or zero if at the beginning/end of cursor, - per SQL spec (Bruce) -Properly handle SCROLL with cursors, or report an error (Neil) + per SQL spec (Bruce) + + + In prior releases, the row count returned by MOVE and FETCH did + not accurately reflect the number of rows processed. + + + +Properly handle SCROLL with cursors, or report an error (Neil) + + + Certain cursors can not be fetched backwards optimally. By specifying SCROLL, + extra work will be performed to guarantee that the cursor can be + fetched in reverse or random order. + + + Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options for FETCH and MOVE (Tom) -Allow EXPLAIN on DECLARE CURSOR (Tom) +Allow EXPLAIN on DECLARE CURSOR (Tom) + + + Prior versions would not allow EXPLAIN on a DECLARE statement. + + + Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera) -Allow CLUSTER to cluster all tables (Alvaro Herrera) +Allow CLUSTER to cluster all tables (Alvaro Herrera) + + + This allows all previously clustered tables in a database to be + reclustered with a single command. + + + Prevent CLUSTER on partial indexes (Tom) Allow \r and \r\n termination for COPY files (Bruce) Disallow literal carriage return as a data value, backslash-carriage-return @@ -604,10 +762,23 @@ required for those wishing to migrate data from any previous release. COPY changes (binary, \.)? (Tom) Recover from COPY IN/OUT failure cleanly (Tom) Prevent possible memory leaks in COPY (Tom) -Make TRUNCATE transaction-safe (Rod) -Multiple pg_dump fixes, including tar format and large objects +Make TRUNCATE transaction-safe (Rod) + + + Truncate can now be used inside a transaction, and rolled back if + the transaction aborts. + + + +Multiple pggla_dump fixes, including tar format and large objects Allow pg_dump to dump specific schemas (Neil) -Allow pg_dump to preserve column storage characteristics (Christopher) +Allow pg_dump to preserve column storage characteristics (Christopher) + + + This preserves ALTER TABLE ... SET STORAGE information. + + + Allow pg_dump to preserve CLUSTER characteristics (Christopher) Have pg_dumpall use GRANT/REVOKE to dump database-level permissions (Tom) Allow pg_dumpall to support the -a, -s, -x options of pg_dump (Tom) @@ -618,26 +789,83 @@ required for those wishing to migrate data from any previous release. CHECK constraints (Christopher) Improve VACUUM performance on indexes by reducing WAL traffic (Tom) Allow pg_ctl to better handle non-standard ports (Greg) -Functional indexes have been generalized into expressional indexes (Tom) +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. + + + 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) +Have COMMENT ON DATABASE on non-local database generate a warning (Rod) + + + Database comments are stored in database-local tables so comments on + a database have to be stored in each database. + + + Improve reliability of LISTEN/NOTIFY (Tom) -Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom) +Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom) + + + This allows system tables to be reindexed without the requirement of + a standalone backend, which was necessary in previous releases. The + only tables that now require a standalone backend for reindex are + the global system tables pg_database, pg_shadow, and pg_group. + + + pg_dump --use-set-session-authorization and --no-reconnect now do nothing, - all dumps use SET SESSION AUTHORIZATION -Long options for pg_dump are now available on all platforms + all dumps use SET SESSION AUTHORIZATION + + + pg_dump now no longer reconnects to switch users, but instead uses + SET SESSION AUTHORIZATION. This should reduce password prompting + during restores. + + + +Long options for pg_dump are now available on all platforms + + + We now include our own long option processing routines. + + + Data Type and Function Changes New extra_float_digits server parameter to control float precision display - (Pedro Ferreira, Tom) + (Pedro Ferreira, Tom) + + + This controls precision output which was causing regression + testing problems. + + + Allow +1300 as a numeric timezone specifier, for FJST (Tom) Remove rarely used oidrand(), oidsrand(), and userfntest() functions (Neil) -Add md5() function to main server, already in /contrib/pgcrypto (Joe) -Increase date range of timestamp (John Cochran) +Add md5() function to main server, already in /contrib/pgcrypto (Joe) + + + An md5 function was frequently requested. For more complex + encryption capabilities, use /contrib/pgcrypto. + + + +Increase date range of timestamp (John Cochran) + + + bjm ?? + + + Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone is assumed to be in local time, not GMT (Tom) Trap division by zero in case the operating system doesn't prevent it (Tom) @@ -645,22 +873,62 @@ required for those wishing to migrate data from any previous release. New hostmask() function (Greg Wickham) Fixes for to_char() (Karel) Allow functions that can take any argument data type and return - any data type, using ANYELEMENT and ANYARRAY (Joe) + any data type, using ANYELEMENT and ANYARRAY (Joe) + + + This allows the creation of functions that can work with any data + type. + + + 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 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 polymorphic SQL functions (Joe) +Allow WHERE qualification 'expr >oper< ANY/SOME/ALL (array-expr)' (Joe) + + + This allows arrays to behave like subqueries or a list of values: + SELECT * FROM tab WHERE col IN array_val + + + +Allow polymorphic SQL functions (Joe) + + + bjm ?? + + + New array functions array_append(), array_cat(), array_lower(), array_prepend(), array_to_string(), array_upper(), string_to_array() (Joe) -Allow user defined aggregates to use polymorphic functions (Joe) +Allow user defined aggregates to use polymorphic functions (Joe) + + + bjm ?? + + + Allow polymorphic user defined aggregates (Joe) Allow assignments to empty arrays (Joe) -Allow 60 in seconds fields of timestamp, time, interval input values (Tom) +Allow 60 in seconds fields of timestamp, time, interval input values (Tom) + + + Sixty-second values are needed for leap seconds. + + + Allow CIDR data type to be cast to text (Tom) -Allow the creation of special LIKE indexes for non-C locales (Peter) +Allow the creation of special LIKE indexes for non-C locales (Peter) + + + There is no way for non-ASCII locales to use indexes for LIKE + comparisons. However, this release adds a way to create a special + index for LIKE. bjm ?? + + + Disallow invalid timezone names (Tom) Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom) Make FLOAT(p) measure the precision p in bits, not decimal digits (Tom) @@ -669,10 +937,22 @@ required for those wishing to migrate data from any previous release. Have SHOW DATESTYLE generate output similar to that used by SET DATESTYLE (Tom) Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention for the sign of timezone offsets, ie, positive is east from UTC (Tom) -Fix date_trunc('quarter',...) (B?jthe Zolt?n) -Make initcap() more compatible with Oracle (Mike Nolan) +Fix date_trunc('quarter',...) (B?jthe Zolt?n) + + + Prior releases returned an incorrect value for this function call. + + + +Make initcap() more compatible with Oracle (Mike Nolan) + + + bjm ?? + + + Allow only DateStyle field order for date values not in ISO format (Greg) -Add new DateStyle values MDY, DMY, and YMD, honor US and European for +Add new DateStyle values MDY, DMY, and YMD; honor US and European for backward compatibility (Tom) 'now' will no longer work as a column default, use now() (change required for prepared statements) (Tom) @@ -685,11 +965,21 @@ required for those wishing to migrate data from any previous release. Server-side Language Changes -Prevent PL/pgSQL crash when RETURN NEXT is used on a zero-row record var. (Tom) +Prevent PL/pgSQL crash when RETURN NEXT is used on a +zero-row record variable (Tom) Make PL/python's spi_execute interface handle NULLs properly (Andrew Bosma) Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom) Fix PL/python _quote() function to handle big integers (?) -Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) +Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) + + + The Python language no longer supports a restricted execution + environment, so we removed the trusted version of PL/python. If this + situation changes, we will re-add a version of PL/python that can be + used by non-super users. + + + Allow polymorphic PL/pgSQL functions (Tom, Joe) Improved compiled function caching mechanism in PL/pgSQL with full support for polymorphism (Joe) @@ -703,16 +993,50 @@ required for those wishing to migrate data from any previous release. Psql Changes -Add "\pset pager always" to always use pager (Greg) +Add "\pset pager always" to always use pager (Greg) + + + This forces the pager to be used even if the number of rows is less + than the screen height --- this is valuable for rows that wrap + across several screen rows. + + + Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) Reorder \? help into groupings (Harald Armin Massa, Bruce) Add backslash commands for listing schemas, casts, and conversions (Christopher) -\encoding now changes based on client_encoding server variable (Tom) -Save edit history into readline history (Ross) +\encoding now changes based on the client_encoding server variable (Tom) + + + In previous versions, \encoding was not aware of encoding changes + made using SET CLIENT_ENCODING. + + + +Save edit history into readline history (Ross) + + + When \e is used to edit a query, the result is saved in the readline + history for retrieval using the up arrow. + + + Improve \d display (Christopher) Enhance HTML mode to be more standards-compliant (Greg) -New '\set AUTOCOMMIT off' capability (Tom) -New '\set VERBOSITY' to control error detail (Tom) +New '\set AUTOCOMMIT off' capability (Tom) + + + This takes the place of the remove server variable 'autocommit'. + + + +New '\set VERBOSITY' to control error detail (Tom) + + + This controls the new error reporting details. + + + New %T prompt string to show transaction status (Tom) Long options for psql are now available on all platforms @@ -721,8 +1045,25 @@ required for those wishing to migrate data from any previous release. Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil) -Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY (Bruce) -Document service capability, and add sample file (Bruce) +Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY (Bruce) + + + Win32 requires that memory allocated in a library be freed by a + function in the same library, hence free() doesn't work for freeing + memory allocated by libpq. PQfreemem() is the proper way to free + libpq memory, especially on Win32, and is recommended for other + platforms as well. + + + +Document service capability, and add sample file (Bruce) + + + This allows clients to look up connection information in a central + file on the client machine. + + + Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom) Allow libpq to cleanly fail when result sets are too large (Tom) Improve performance of PGunescapeBytea() (Ben Lamb) @@ -730,9 +1071,17 @@ required for those wishing to migrate data from any previous release. 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", - "Prefer", and "require" (Jon Jensen) + "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) +Allow access to the underlying table and column of a query result (Tom) + + + This is helpful for query-builder applications that want to know the + underlying table and column names associated with a specific result + set. + + + Allow access to the current transaction status (Tom) Add ability to pass binary data directly to the backend (Tom) Add PQexecPrepared() and PQsendQueryPrepared() functions which @@ -752,9 +1101,23 @@ required for those wishing to migrate data from any previous release. Miscellaneous Interface Changes Prevent possible memory leak or core dump during libpgtcl shutdown (Tom) -Add ecpg Informix compatibility (Michael) +Add ecpg Informix compatibility (Michael) + + + This allows ecpg to process embedded C programs that were written + using certain Informix extensions. + + + Add ecpg DECIMAL type that is fixed length, for Informix (Michael) -Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce) +Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce) + + + This allows multiple ecpg threads to access the database at the same + time. + + + Move python client interface to http://www.pygresql.org (Marc) @@ -781,8 +1144,22 @@ required for those wishing to migrate data from any previous release. Support Intel Linux compiler (Peter) Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) -Remove --enable-recode option to configure -Generate a compile error if spinlock code is not found (Bruce) +Remove --enable-recode option to configure + + + This was no longer needed now that we have CREATE CONVERSION. + + + +Generate a compile error if spinlock code is not found (Bruce) + + + Platforms without spinlock code will now fail to compile, rather + than silently using semaphores. This failure can be disabled with a + new configure option. + + + Contrib Changes @@ -817,7 +1194,8 @@ required for those wishing to migrate data from any previous release. DATESTYLE can now be set to DMY, YMD, or MDY to specify input field order Input date order must now be YYYY-MM-DD (with 4-digit year) or match DATESTYLE -Pattern matching operations can use indexes regardless of locale +Pattern matching operations can use indexes regardless +of locale?