diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 7fc4b07245..94a445938e 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -18,21 +18,78 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.339 2005/08/23 11:32:33 momjian Major changes in this release: - - - - - - - - - - - - - - + + + + + + Improve concurrent access to the shared buffer cache (Tom) + + + + + This was accomplished by eliminating global locks and using a clock + sweep algorithm to find free buffers. + + + + + + + Allow indexes to be used for MIN/MAX (Tom) + + + + + In previous releases, the only way to use index for MIN/MAX was to rewrite + the query as SELECT col FROM tab ORDER BY col LIMIT 1. This now happens + automatically. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -140,16 +197,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.339 2005/08/23 11:32:33 momjian Improve rtree index capabilities and performance (Neil) - - - - - - Improve concurrent access to the shared buffer cache (Tom) - - - This was accomplished by eliminating global locks and using a clock - sweep algorithm to find free buffers. + Replaced by contrib? @@ -165,17 +213,6 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.339 2005/08/23 11:32:33 momjian - - - Allow indexes to be used for MIN/MAX (Tom) - - - In previous releases, the only way to use index for MIN/MAX was to rewrite - the query as SELECT col FROM tab ORDER BY col LIMIT 1. This now happens - automatically. - - - Add in-memory bitmaps which allows multiple indexes to be merged in a @@ -1839,156 +1876,156 @@ typedefs (Michael) Major changes in this release: - - - - - Microsoft Windows Native Server - - - - - This is the first PostgreSQL release - to run natively on Microsoft Windows as - a server. It can run as a Windows service. This - release supports NT-based Windows releases like - Windows 2000, Windows XP, and - Windows 2003. Older releases like - Windows 95, Windows 98, and - Windows ME are not supported because these operating - systems do not have the infrastructure to support - PostgreSQL. A separate installer - project has been created to ease installation on - Windows — see . - - - - Although tested throughout our release cycle, the Windows port - does not have the benefit of years of use in production - environments that PostgreSQL has on - Unix platforms. Therefore it should be treated with the same - level of caution as you would a new product. - - - - Previous releases required the Unix emulation toolkit - Cygwin in order to run the server on Windows - operating systems. PostgreSQL has - supported native clients on Windows for many years. - - - - - - - Savepoints - - - - - Savepoints allow specific parts of a transaction to be aborted - without affecting the remainder of the transaction. Prior - releases had no such capability; there was no way to recover - from a statement failure within a transaction except by - aborting the whole transaction. This feature is valuable for - application writers who require error recovery within a - complex transaction. - - - - - - - Point-In-Time Recovery - - - - - In previous releases there was no way to recover from disk - drive failure except to restore from a previous backup or use - a standby replication server. Point-in-time recovery allows - continuous backup of the server. You can recover either to - the point of failure or to some transaction in the past. - - - - - - - Tablespaces - - - - - Tablespaces allow administrators to select different file systems - for storage of individual tables, indexes, and databases. - This improves performance and control over disk space - usage. Prior releases used initlocation and - manual symlink management for such tasks. - - - - - - - Improved Buffer Management, CHECKPOINT, - VACUUM - - - - - This release has a more intelligent buffer replacement strategy, - which will make better use of available shared buffers and - improve performance. The performance impact of vacuum and - checkpoints is also lessened. - - - - - - - Change Column Types - - - - - A column's data type can now be changed with ALTER - TABLE. - - - - - - - New Perl Server-Side Language - - - - - A new version of the plperl server-side language now - supports a persistent shared storage area, triggers, returning records - and arrays of records, and SPI calls to access the database. - - - - - - - Comma-separated-value (CSV) support in COPY - - - - - COPY can now read and write - comma-separated-value files. It has the flexibility to - interpret non-standard quoting and separation characters too. - - - - - + + + + + Microsoft Windows Native Server + + + + + This is the first PostgreSQL release + to run natively on Microsoft Windows as + a server. It can run as a Windows service. This + release supports NT-based Windows releases like + Windows 2000, Windows XP, and + Windows 2003. Older releases like + Windows 95, Windows 98, and + Windows ME are not supported because these operating + systems do not have the infrastructure to support + PostgreSQL. A separate installer + project has been created to ease installation on + Windows — see . + + + + Although tested throughout our release cycle, the Windows port + does not have the benefit of years of use in production + environments that PostgreSQL has on + Unix platforms. Therefore it should be treated with the same + level of caution as you would a new product. + + + + Previous releases required the Unix emulation toolkit + Cygwin in order to run the server on Windows + operating systems. PostgreSQL has + supported native clients on Windows for many years. + + + + + + + Savepoints + + + + + Savepoints allow specific parts of a transaction to be aborted + without affecting the remainder of the transaction. Prior + releases had no such capability; there was no way to recover + from a statement failure within a transaction except by + aborting the whole transaction. This feature is valuable for + application writers who require error recovery within a + complex transaction. + + + + + + + Point-In-Time Recovery + + + + + In previous releases there was no way to recover from disk + drive failure except to restore from a previous backup or use + a standby replication server. Point-in-time recovery allows + continuous backup of the server. You can recover either to + the point of failure or to some transaction in the past. + + + + + + + Tablespaces + + + + + Tablespaces allow administrators to select different file systems + for storage of individual tables, indexes, and databases. + This improves performance and control over disk space + usage. Prior releases used initlocation and + manual symlink management for such tasks. + + + + + + + Improved Buffer Management, CHECKPOINT, + VACUUM + + + + + This release has a more intelligent buffer replacement strategy, + which will make better use of available shared buffers and + improve performance. The performance impact of vacuum and + checkpoints is also lessened. + + + + + + + Change Column Types + + + + + A column's data type can now be changed with ALTER + TABLE. + + + + + + + New Perl Server-Side Language + + + + + A new version of the plperl server-side language now + supports a persistent shared storage area, triggers, returning records + and arrays of records, and SPI calls to access the database. + + + + + + + Comma-separated-value (CSV) support in COPY + + + + + COPY can now read and write + comma-separated-value files. It has the flexibility to + interpret non-standard quoting and separation characters too. + + + + + @@ -4889,271 +4926,272 @@ DROP SCHEMA information_schema CASCADE; Major changes in this release: - - - - - 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 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 be as fast as or faster - than an equivalent EXISTS subquery; this - reverses the conventional wisdom that applied to previous - releases. - - - - - - - Improved GROUP BY processing by using hash buckets - - - - - 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, however, if the hash table is estimated to be too - large to fit in sort_mem. - - - - - - - New multikey hash join capability - - - - - In previous releases, hash joins could only occur on single - keys. This release allows multicolumn hash joins. - - - - - - - Queries using the explicit JOIN syntax are - now better optimized - - - - - Prior releases evaluated queries using the explicit - JOIN syntax only in the order implied by - the syntax. 7.4 allows full optimization of these queries, - meaning the optimizer considers all possible join orderings - and chooses the most efficient. Outer joins, however, must - still follow the declared ordering. - - - - - - - Faster and more powerful regular expression code - - - - - The entire regular expression module has been replaced with a - new version by Henry Spencer, originally written for Tcl. The - code greatly improves performance and supports several flavors - of regular expressions. - - - - - - - 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 eliminating - per-call overhead. That means simple SQL functions now - behave like macros. - - - - - - - Full support for IPv6 connections and IPv6 address data types - - - - - Previous 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. - - - - - - - Major improvements in SSL performance and reliability - - - - - Several people very familiar with the SSL API have overhauled - our SSL code to improve SSL key negotiation and error - recovery. - - - - - - - Make free space map efficiently reuse empty index pages, - and other free space management improvements - - - - - In previous 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 rows originally indexed on that - page. In 7.4, VACUUM records empty index - pages and allows them to be reused for any future index rows. - - - - - - - SQL-standard information schema - - - - - The information schema provides a standardized and stable way - to access information about the schema objects defined in a - database. - - - - - - - Cursors conform more closely to the SQL standard - - - - - The commands FETCH and - MOVE have been overhauled to conform more - closely to the SQL standard. - - - - - - - Cursors can exist outside transactions - - - - - These cursors are 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 server and clients. - - - - - - - libpq and - ECPG applications are now fully - thread-safe - - - - - While previous libpq releases - already supported threads, this release improves thread safety - by fixing some non-thread-safe code that was used during - database connection startup. The configure - option must be used to - enable this feature. - - - - - - - New version of full-text indexing - - - - - A new full-text indexing suite is available in - contrib/tsearch2. - - - - - - - New autovacuum tool - - - - - The new autovacuum tool in - contrib/autovacuum monitors the database - statistics tables for - INSERT/UPDATE/DELETE - activity and automatically vacuums tables when needed. - - - - - - - Array handling has been improved and moved into the server core - - - - - Many array limitations have been removed, and arrays behave - more like fully-supported data types. - - - - + + + + + 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 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 be as fast as or faster + than an equivalent EXISTS subquery; this + reverses the conventional wisdom that applied to previous + releases. + + + + + + + Improved GROUP BY processing by using hash buckets + + + + + 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, however, if the hash table is estimated to be too + large to fit in sort_mem. + + + + + + + New multikey hash join capability + + + + + In previous releases, hash joins could only occur on single + keys. This release allows multicolumn hash joins. + + + + + + + Queries using the explicit JOIN syntax are + now better optimized + + + + + Prior releases evaluated queries using the explicit + JOIN syntax only in the order implied by + the syntax. 7.4 allows full optimization of these queries, + meaning the optimizer considers all possible join orderings + and chooses the most efficient. Outer joins, however, must + still follow the declared ordering. + + + + + + + Faster and more powerful regular expression code + + + + + The entire regular expression module has been replaced with a + new version by Henry Spencer, originally written for Tcl. The + code greatly improves performance and supports several flavors + of regular expressions. + + + + + + + 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 eliminating + per-call overhead. That means simple SQL functions now + behave like macros. + + + + + + + Full support for IPv6 connections and IPv6 address data types + + + + + Previous 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. + + + + + + + Major improvements in SSL performance and reliability + + + + + Several people very familiar with the SSL API have overhauled + our SSL code to improve SSL key negotiation and error + recovery. + + + + + + + Make free space map efficiently reuse empty index pages, + and other free space management improvements + + + + + In previous 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 rows originally indexed on that + page. In 7.4, VACUUM records empty index + pages and allows them to be reused for any future index rows. + + + + + + + SQL-standard information schema + + + + + The information schema provides a standardized and stable way + to access information about the schema objects defined in a + database. + + + + + + + Cursors conform more closely to the SQL standard + + + + + The commands FETCH and + MOVE have been overhauled to conform more + closely to the SQL standard. + + + + + + + Cursors can exist outside transactions + + + + + These cursors are 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 server and clients. + + + + + + + libpq and + ECPG applications are now fully + thread-safe + + + + + While previous libpq releases + already supported threads, this release improves thread safety + by fixing some non-thread-safe code that was used during + database connection startup. The configure + option must be used to + enable this feature. + + + + + + + New version of full-text indexing + + + + + A new full-text indexing suite is available in + contrib/tsearch2. + + + + + + + New autovacuum tool + + + + + The new autovacuum tool in + contrib/autovacuum monitors the database + statistics tables for + INSERT/UPDATE/DELETE + activity and automatically vacuums tables when needed. + + + + + + + Array handling has been improved and moved into the server core + + + + + Many array limitations have been removed, and arrays behave + more like fully-supported data types. + + + + + @@ -7396,123 +7434,123 @@ operations on bytea columns (Joe) Major changes in this release: - - - - Schemas - - - Schemas allow users to create objects in separate namespaces, - so two people or applications can have tables with the same - name. There is also a public schema for shared tables. - Table/index creation can be restricted by removing privileges - on the public schema. - - - - - - Drop Column - - - PostgreSQL now supports the - ALTER TABLE ... DROP COLUMN functionality. - - - - - - Table Functions - - - Functions returning multiple rows and/or multiple columns are - now much easier to use than before. You can call such a - table function in the SELECT - FROM clause, treating its output like a - table. Also, PL/pgSQL functions can - now return sets. - - - - - - Prepared Queries - - - PostgreSQL now supports prepared - queries, for improved performance. - - - - - - Dependency Tracking - - - PostgreSQL now records object - dependencies, which allows improvements in many areas. - DROP statements now take either - CASCADE or RESTRICT to control whether - dependent objects are also dropped. - - - - - - Privileges - - - Functions and procedural languages now have privileges, and - functions can be defined to run with the privileges of their - creator. - - - - - - Internationalization - - - Both multibyte and locale support are now always enabled. - - - - - - Logging - - - A variety of logging options have been enhanced. - - - - - - Interfaces - - - A large number of interfaces have been moved to http://gborg.postgresql.org - where they can be developed and released independently. - - - - - - Functions/Identifiers - - - By default, functions can now take up to 32 parameters, and - identifiers can be up to 63 bytes long. Also, OPAQUE - is now deprecated: there are specific pseudo-datatypes - to represent each of the former meanings of OPAQUE - in function argument and result types. - - - - - + + + + Schemas + + + Schemas allow users to create objects in separate namespaces, + so two people or applications can have tables with the same + name. There is also a public schema for shared tables. + Table/index creation can be restricted by removing privileges + on the public schema. + + + + + + Drop Column + + + PostgreSQL now supports the + ALTER TABLE ... DROP COLUMN functionality. + + + + + + Table Functions + + + Functions returning multiple rows and/or multiple columns are + now much easier to use than before. You can call such a + table function in the SELECT + FROM clause, treating its output like a + table. Also, PL/pgSQL functions can + now return sets. + + + + + + Prepared Queries + + + PostgreSQL now supports prepared + queries, for improved performance. + + + + + + Dependency Tracking + + + PostgreSQL now records object + dependencies, which allows improvements in many areas. + DROP statements now take either + CASCADE or RESTRICT to control whether + dependent objects are also dropped. + + + + + + Privileges + + + Functions and procedural languages now have privileges, and + functions can be defined to run with the privileges of their + creator. + + + + + + Internationalization + + + Both multibyte and locale support are now always enabled. + + + + + + Logging + + + A variety of logging options have been enhanced. + + + + + + Interfaces + + + A large number of interfaces have been moved to http://gborg.postgresql.org + where they can be developed and released independently. + + + + + + Functions/Identifiers + + + By default, functions can now take up to 32 parameters, and + identifiers can be up to 63 bytes long. Also, OPAQUE + is now deprecated: there are specific pseudo-datatypes + to represent each of the former meanings of OPAQUE + in function argument and result types. + + + + + @@ -8396,82 +8434,83 @@ since PostgreSQL 7.1. Major changes in this release: - - - - VACUUM - - - Vacuuming no longer locks tables, thus allowing normal user - access during the vacuum. A new VACUUM FULL - command does old-style vacuum by locking the table and - shrinking the on-disk copy of the table. - - - - - - Transactions - - - There is no longer a problem with installations that exceed - four billion transactions. - - - - - - OIDs - - - OIDs are now optional. Users can now create tables without - OIDs for cases where OID usage is excessive. - - - - - - Optimizer - - - The system now computes histogram column statistics during - ANALYZE, allowing much better optimizer choices. - - - - - - Security - - - A new MD5 encryption option allows more secure storage and - transfer of passwords. A new Unix-domain socket - authentication option is available on Linux and BSD systems. - - - - - - Statistics - - - Administrators can use the new table access statistics module - to get fine-grained information about table and index usage. - - - - - - Internationalization - - - Program and library messages can now be displayed in several - languages. - - - - + + + + VACUUM + + + Vacuuming no longer locks tables, thus allowing normal user + access during the vacuum. A new VACUUM FULL + command does old-style vacuum by locking the table and + shrinking the on-disk copy of the table. + + + + + + Transactions + + + There is no longer a problem with installations that exceed + four billion transactions. + + + + + + OIDs + + + OIDs are now optional. Users can now create tables without + OIDs for cases where OID usage is excessive. + + + + + + Optimizer + + + The system now computes histogram column statistics during + ANALYZE, allowing much better optimizer choices. + + + + + + Security + + + A new MD5 encryption option allows more secure storage and + transfer of passwords. A new Unix-domain socket + authentication option is available on Linux and BSD systems. + + + + + + Statistics + + + Administrators can use the new table access statistics module + to get fine-grained information about table and index usage. + + + + + + Internationalization + + + Program and library messages can now be displayed in several + languages. + + + + + @@ -9070,83 +9109,84 @@ Python fixes (Darcy) Major changes in this release: + - - - - Write-ahead Log (WAL) - - - + + + + Write-ahead Log (WAL) + + + To maintain database consistency in case of an operating system crash, previous releases of PostgreSQL have forced all data modifications to disk before each transaction commit. With WAL, only one log file must be flushed to disk, greatly improving performance. If you have been using -F in previous releases to disable disk flushes, you may want to consider discontinuing its use. - - - + + + - - - TOAST - - - - TOAST - Previous releases had a compiled-in row length limit, + + + TOAST + + + + TOAST - Previous releases had a compiled-in row length limit, typically 8k - 32k. This limit made storage of long text fields difficult. With TOAST, long rows of any length can be stored with good performance. - - - + + + - - - Outer Joins - - - + + + Outer Joins + + + We now support outer joins. The UNION/NOT IN workaround for outer joins is no longer required. We use the SQL92 outer join syntax. - - - + + + - - - Function Manager - - - + + + Function Manager + + + The previous C function manager did not handle null values properly, nor did it support 64-bit CPU's (Alpha). The new function manager does. You can continue using your old custom functions, but you may want to rewrite them in the future to use the new function manager call interface. - - - + + + - - - Complex Queries - - - + + + Complex Queries + + + A large number of complex queries that were unsupported in previous releases now work. Many combinations of views, aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables now work properly. Inherited tables are now accessed by default. Subqueries in FROM are now supported. - - - + + + - - + + Migration to version 7.1 @@ -9533,63 +9573,64 @@ ecpg changes (Michael) Major changes in this release: - - - - - Foreign Keys - - - - Foreign keys are now implemented, with the exception of PARTIAL MATCH - foreign keys. Many users have been asking for this feature, and we are - pleased to offer it. - - - - - - - Optimizer Overhaul - - - - Continuing on work started a year ago, the optimizer has been - improved, allowing better query plan selection and faster performance - with less memory usage. - - - - - - - Updated psql - - - - psql, our interactive terminal monitor, has been - updated with a variety of new features. See the psql manual page for details. - - - - - - - Join Syntax - - - - SQL92 join syntax is now supported, though only as - INNER JOIN for this release. JOIN, - NATURAL JOIN, JOIN/USING, - and JOIN/ON are available, as are - column correlation names. - - - - + + + + Foreign Keys + + + + Foreign keys are now implemented, with the exception of PARTIAL MATCH + foreign keys. Many users have been asking for this feature, and we are + pleased to offer it. + + + + + + + Optimizer Overhaul + + + + Continuing on work started a year ago, the optimizer has been + improved, allowing better query plan selection and faster performance + with less memory usage. + + + + + + + Updated psql + + + + psql, our interactive terminal monitor, has been + updated with a variety of new features. See the psql manual page for details. + + + + + + + Join Syntax + + + + SQL92 join syntax is now supported, though only as + INNER JOIN for this release. JOIN, + NATURAL JOIN, JOIN/USING, + and JOIN/ON are available, as are + column correlation names. + + + + + + Migration to version 7.0 @@ -9606,54 +9647,53 @@ ecpg changes (Michael) Interface and compatibility issues to consider for the new release include: - - - - - The date/time types datetime and - timespan have been superseded by the - SQL92-defined types timestamp and - interval. Although there has been some effort to - ease the transition by allowing - PostgreSQL to recognize - the deprecated type names and translate them to the new type - names, this mechanism may not be completely transparent to - your existing application. - - - - - - The optimizer has been substantially improved in the area of - query cost estimation. In some cases, this will result in - decreased query times as the optimizer makes a better choice - for the preferred plan. However, in a small number of cases, - usually involving pathological distributions of data, your - query times may go up. If you are dealing with large amounts - of data, you may want to check your queries to verify - performance. - - - - - - The JDBC and ODBC - interfaces have been upgraded and extended. - - - - - - The string function CHAR_LENGTH is now a - native function. Previous versions translated this into a call - to LENGTH, which could result in - ambiguity with other types implementing - LENGTH such as the geometric types. - - - + + + + The date/time types datetime and + timespan have been superseded by the + SQL92-defined types timestamp and + interval. Although there has been some effort to + ease the transition by allowing + PostgreSQL to recognize + the deprecated type names and translate them to the new type + names, this mechanism may not be completely transparent to + your existing application. + + + + + + The optimizer has been substantially improved in the area of + query cost estimation. In some cases, this will result in + decreased query times as the optimizer makes a better choice + for the preferred plan. However, in a small number of cases, + usually involving pathological distributions of data, your + query times may go up. If you are dealing with large amounts + of data, you may want to check your queries to verify + performance. + + + + + + The JDBC and ODBC + interfaces have been upgraded and extended. + + + + + + The string function CHAR_LENGTH is now a + native function. Previous versions translated this into a call + to LENGTH, which could result in + ambiguity with other types implementing + LENGTH such as the geometric types. + + +