diff options
-rw-r--r-- | doc/src/sgml/release.sgml | 1557 |
1 files changed, 784 insertions, 773 deletions
diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index ad2e10935bb..6dd6f739ab1 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.438 2006/09/18 23:19:50 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.439 2006/09/19 00:57:07 momjian Exp $ --> <!-- Typical markup: @@ -11,9 +11,9 @@ PostgreSQL <productname> pg_[A-Za-z0-9_] <application> [A-Z][A-Z] <type>, <envar>, <literal> non-ascii convert to & escapes - http://www.mountaindragon.com/html/iso.htm - encode multibytes as UTF8 - http://www.pemberley.com/janeinfo/latin1.html#latexta + http://www.mountaindragon.com/html/iso.htm + encode multibytes as UTF8 + http://www.pemberley.com/janeinfo/latin1.html#latexta wrap long lines For new features, add links to the documentation sections. @@ -36,24 +36,19 @@ For new features, add links to the documentation sections. <title>Overview</title> <para> - Major changes in this release: + This release adds many improvements to commands and database + facilities that were requested by users. Rather than add a + few large new features, this release makes many features from + previous releases easier to use. For example, it is now much + easier to create standby point-in-time-recovery (PITR) servers. + Many performance bottlenecks have been eliminated, allowing + more functionality to be enabled by default. Various additions + will make porting from other databases easier. The changes + in this release continue the <productname>PostgreSQL</> + tradition of not only being the most advanced open source + database, but also the easiest to use. </para> - <variablelist> - - <varlistentry> - <term> - XX - </term> - - <listitem> - <para> - XX - </para> - </listitem> - </varlistentry> - - </variablelist> </sect2> <sect2> @@ -71,1193 +66,1277 @@ For new features, add links to the documentation sections. <itemizedlist> - <listitem> - <para> - XX - </para> - <para> - YYY - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Additional Changes</title> - - <para> - Below you will find a detailed account of the additional - changes between <productname>PostgreSQL</productname> 8.2 and - the previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - <listitem> <para> - Improve efficiency of <literal>IN</> (list-of-expressions) - clauses (Tom) + Improve cost estimation for nestloop index scans (Tom) </para> - </listitem> - <listitem> <para> - Reduce locking requirements of sequential scans (Qingqing - Zhou) + This may eliminate the need to set unrealistically small + values of <envar>random_page_cost</>. If you have been + using a very small <envar>random_page_cost</>, please + recheck your test cases. </para> </listitem> <listitem> <para> - Improve subtransaction performance (Alvaro, Itagaki Takahiro, - Tom) + Deprecate use of <application>postmaster</> symlink (Peter) + </para> + + <para> + <application>postmaster</> and <application>postgres</> + commands now act identically, with the behavior determined + by switches. The <application>postmaster</> symlink is + kept for compatibility, but is not really needed. </para> </listitem> <listitem> <para> - Improve locking performance by breaking locks into sections - (Tom) + Change <envar>log_duration</> to output even if the query + is not output (Tom) </para> <para> - This allows locking to be more fine-grained, reducing - contention. + In prior releases, <envar>log_duration</> only printed if + the query appeared earlier in the logs. </para> </listitem> <listitem> <para> - Allow the planner to re-order <literal>OUTER JOIN</>s when - possible (Tom) + Make row comparisons follow <acronym>SQL</> standard + semantics and allow them to be used in index scans (Tom) </para> <para> - This makes a considerable difference for queries involving - multiple outer joins. + Previously, row = and <> comparisons followed the + standard but < <= > >= did not. A row comparison + can now be used as an index constraint for a multicolumn + index matching the row value. </para> </listitem> <listitem> <para> - Improve planning of joins to inherited tables and <literal>UNION - ALL</> views (Tom) + Set <envar>escape_string_warning</> to <literal>on</> by + default (Bruce) + </para> + + <para> + This issues a warning if backslash escapes are used in + non-escape (non-<literal>E''</>) strings. </para> </listitem> <listitem> <para> - Improve cost estimation for nestloop index scans (Tom) + Disallow aggregate functions in <command>UPDATE</> commands + (unless within a subquery) (Tom) </para> <para> - This may eliminate the need to set unrealistically small - values of <envar>random_page_cost</>. If you have been - using a very small <envar>random_page_cost</>, please - recheck your test cases. + The standard disallows this, and it leads to unpredictable + results. </para> </listitem> <listitem> <para> - Increase default values for <envar>shared_buffers</> and - <envar>max_fsm_pages</>(Andrew) + Change the row constructor syntax (<literal>ROW(...)</>) + so that list elements <literal>foo.*</> will be expanded + to a list of their member fields, rather than creating a + nested rowtype field as formerly (Tom) </para> - </listitem> - <listitem> <para> - Improve the optimizer statistics used by <literal>LIKE</>, - <literal>ILIKE</>, and regular expression operations (Tom) + The new behavior is substantially more useful since it + allows, for example, triggers to check for data changes + with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>. + The old behavior is still available by omitting <literal>.*</>. </para> </listitem> <listitem> <para> - Allow constraint exclusion to be applied to inherited - <command>UPDATE</>/<command>DELETE</> queries (Tom) + Have <command>SET CONSTRAINT</> affect only one constraint + (Kris Jurka) </para> <para> - <command>SELECT</> already honored constraint exclusion. + In previous releases, <command>SET CONSTRAINT</> modified + all constraints with a matching name. In this release, + the schema search path is used to modify only the first + matching constraint. A schema specification is also + supported. </para> </listitem> <listitem> <para> - Improve sorting speed and reduce memory usage (Simon, Tom) + Remove rule permission for tables, for security reasons + (Tom) </para> - </listitem> - <listitem> <para> - <function>MIN()</>/<function>MAX()</> can now use indexes - in more cases (Tom) + In this release, only a table's owner can create or modify + rules for the table. For backwards compatibility, + <command>GRANT</>/<command>REVOKE RULE</> is still accepted, + but it does nothing. </para> </listitem> <listitem> <para> - Improve concurrency for database creation and destruction - (Tom) + Array comparison improvements (Tom) </para> - </listitem> - <listitem> <para> - Speed up vacuuming of btree indexes (Heikki Linnakangas, - Tom) + Now array dimensions are also compared. </para> </listitem> <listitem> <para> - Improve <command>COPY</> performance (Alon Goldshuv, Tom) + Change array concatenation to match documented behavior + (Tom) + </para> + + <para> + This changes the previous behavior where concatenation + would adjust the lower array dimensions. </para> </listitem> <listitem> <para> - Add <literal>FILLFACTOR</> to table and index creation - (ITAGAKI Takahiro) - </para> + Have <function>to_char(time)</> and <function>to_char(interval)</> + treat <literal>'HH'</> and <literal>'HH12'</> as 12-hour + intervals. <para> - This adds extra free space to each heap or index page, - allowing improved performance as the database grows. This - is particularly valuable to maintain <command>CLUSTER</>ing. + Most applications should use <literal>'HH24'</> unless they + want a 12-hour display. </para> </listitem> <listitem> <para> - Remove dead index entries before btree page split (Junji - Teramoto) + Zero unmasked bits in conversion from <type>INET</> to + <type>CIDR</> (Tom) </para> </listitem> - </sect3> - - <sect3> - <title>Server Changes</title> - <itemizedlist> <listitem> <para> - Improve performance of statistics monitoring, especially - <literal>stats_command_string</> (Tom, Bruce) + Remove <envar>australian_timezones</> configuration variable + (Joachim Wieland) </para> <para> - This release sets <envar>stats_command_string</> to - <literal>on</> by default, now that its overhead is minimal. - This means <literal>pg_stat_activity</> now will show all - active queries by default. + No longer needed now that timezone abbreviations are + configurable. </para> </listitem> <listitem> <para> - Add support for include directives in <filename>postgresql.conf</> - (Joachim Wieland) + Change <application>libpq</> <function>PQdsplen()</> to + return a useful value (Martijn van Oosterhout) </para> </listitem> <listitem> <para> - Add native <acronym>LDAP</> authentication (Magnus Hagander) + Change <application>libpq</> <function>PQgetssl()</> to + return a <literal>void*</>, rather than <literal>SSL*</> + (Martijn van Oosterhout) </para> <para> - This is particularly useful for platforms that do not - support <acronym>PAM</>, such as Win32. + This allows applications to use the function without + <acronym>SSL</> headers. </para> </listitem> <listitem> <para> - Re-enable <envar>full_page_writes</> (Tom) + Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce) </para> <para> - This flag can now be used even with <acronym>PITR</>. It - is turned on automatically between <function>pg_start_backup()</> - and <function>pg_stop_backup()</> calls. + These ports no longer had active maintainers. </para> </listitem> <listitem> <para> - Add support for <acronym>SSL</> Certificate Revocation List - (<acronym>CRL</>) files, <filename>root.crl</> (Libor - Hohoš) + Make command-line options of postmaster and postgres + identical (Peter) </para> <para> - This was added to <application>libpq</> as well. + This allows the postmaster to pass arguments to each backend + without using <literal>-o</>. </para> </listitem> <listitem> <para> - Remove routine autovacuum server log entries (Bruce) - </para> - - <para> - <literal>pg_stat_activity</> now shows autovacuum activity. + Remove /contrib/ora2pg, now at <ulink + url="http://www.samse.fr/GPL/ora2pg"></ulink> </para> </listitem> <listitem> <para> - Add <literal>GRANT CONNECT ON DATABASE</>, to be used in - addition to <filename>pg_hba.conf</> (Gevik Babakhani) + Remove contrib modules that have been migrated to pgfoundry: + adddepend, dbase, dbmirror, fulltextindex, mac, userlock </para> + </listitem> + <listitem> <para> - This gives SQL-control over database access, and works in - combination with the existing <filename>pg_hba.conf</> - controls. + Remove contrib abandoned modules: mSQL-interface, ips </para> </listitem> <listitem> <para> - Add last vacuum and analyze timestamp columns to the stats - collector (Larry Rosenman) + In /contrib/xml2, rename <function>xml_valid()</> to + <function>xml_is_well_formed()</> (Tom) </para> <para> - These values now appear in the <literal>pg_stat_*_tables</> - system views, and are used by autovacuum. ? + <function>xml_valid()</> will remain for backward compability, + but its behavior will change to do schema checks in future + releases. </para> </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + Below you will find a detailed account of the additional + changes between <productname>PostgreSQL</productname> 8.2 and + the previous major release. + </para> + + <sect3> + <title>Performance Improvements</title> + <itemizedlist> + <listitem> <para> - Deprecate use of <application>postmaster</> symlink (Peter) + Improve efficiency of <literal>IN</> (list-of-expressions) + clauses (Tom) </para> + </listitem> + <listitem> <para> - <application>postmaster</> and <application>postgres</> - commands now act identically, with the behavior determined - by switches. The <application>postmaster</> symlink is - kept for compatibility, but is not really needed. + Reduce locking requirements of sequential scans (Qingqing + Zhou) </para> </listitem> <listitem> <para> - Add <acronym>GUC</> <envar>update_process_title</> to - control whether the <application>ps</> display is updated - for every command, default to <literal>on</> (Bruce) + Improve subtransaction performance (Alvaro, Itagaki Takahiro, + Tom) </para> </listitem> <listitem> <para> - Track tables needing vacuum with more accuracy (Alvaro) + Improve locking performance by breaking locks into sections + (Tom) </para> <para> - This reduces the overhead involved in preventing transaction - ID wraparound. + This allows locking to be more fine-grained, reducing + contention. </para> </listitem> <listitem> <para> - Allow units to be specified in configuration settings - (Peter) + Allow the planner to re-order <literal>OUTER JOIN</>s when + possible (Tom) </para> <para> - You can now set <envar>shared_buffer</> to <literal>32000kB</>, - for example. + This makes a considerable difference for queries involving + multiple outer joins. </para> </listitem> <listitem> <para> - Improve logging of protocol-level prepare/bind/execute - messages (Bruce, Tom) + Improve planning of joins to inherited tables and <literal>UNION + ALL</> views (Tom) </para> + </listitem> + <listitem> <para> - Such logging now shows statement names, bind parameter - values, and the text of the query being executed. + Increase default values for <envar>shared_buffers</> and + <envar>max_fsm_pages</>(Andrew) </para> </listitem> <listitem> <para> - Change <envar>log_duration</> to output even if the query - is not output (Tom) + Improve the optimizer statistics used by <literal>LIKE</>, + <literal>ILIKE</>, and regular expression operations (Tom) </para> + </listitem> + <listitem> <para> - In prior releases, <envar>log_duration</> only printed if - the query appeared earlier in the logs. + Allow constraint exclusion to be applied to inherited + <command>UPDATE</>/<command>DELETE</> queries (Tom) </para> - </listitem> - <listitem> <para> - Allow a forced switch to a new xlog file (Simon Riggs, Tom) + <command>SELECT</> already honored constraint exclusion. </para> + </listitem> + <listitem> <para> - This is valuable for keeping <acronym>PITR</> standby - servers in sync with the master. xlog file switching also - happens automatically during <function>pg_stop_backup()</>. - This ensures that <acronym>PITR</> servers have all xlog - files needed for recovery. + Improve sorting speed and reduce memory usage (Simon, Tom) </para> </listitem> <listitem> <para> - Add <acronym>WAL</> informational functions (Simon Riggs) + <function>MIN()</>/<function>MAX()</> can now use indexes + in more cases (Tom) </para> + </listitem> + <listitem> <para> - Add functions for interrogating the current xlog insertion - point and determining <acronym>WAL</> filenames from the - hex <acronym>WAL</> locations displayed by - <function>pg_stop_backup()</> and friends. + Improve concurrency for database creation and destruction + (Tom) </para> </listitem> <listitem> <para> - Allow <acronym>WAL</> replay to be restored quicker in case - of a crash (Simon Riggs) + Speed up vacuuming of btree indexes (Heikki Linnakangas, + Tom) </para> + </listitem> + <listitem> <para> - The server now does periodic checkpoints during <acronym>WAL</> - recovery, so if there is a crash, future <acronym>WAL</> - recovery is shortened. This also eliminates the need for - <acronym>PITR</> standby servers to replay the entire log - since the base backup if they crash. + Improve <command>COPY</> performance (Alon Goldshuv, Tom) </para> </listitem> <listitem> <para> - Add <envar>archive_timeout</> to force xlog file switches - at a given interval (Simon Riggs) + Add <literal>FILLFACTOR</> to table and index creation + (ITAGAKI Takahiro) + </para> + + <para> + This adds extra free space to each heap or index page, + allowing improved performance as the database grows. This + is particularly valuable to maintain <command>CLUSTER</>ing. </para> + </listitem> + <listitem> <para> - This enforces a maximum delay for <acronym>PITR</> standby - servers. + Improve multicolumn <acronym>GIST</> indexing (Oleg, Teodor) </para> </listitem> <listitem> <para> - Add a <literal>waiting</> column to <literal>pg_stat_activity</> - (Tom) + <acronym>GIST</> indexes now are clusterable (Teodor) </para> + </listitem> + <listitem> <para> - This allows <literal>pg_stat_activity</> to show the same - information as the <literal>ps</> display. + Remove dead index entries before btree page split (Junji + Teramoto) </para> + </listitem> </sect3> <sect3> - <title>Query Changes</title> + <title>Server Changes</title> <itemizedlist> <listitem> <para> - Support portal parameters in <command>EXPLAIN</> and - <command>EXECUTE</> (Tom) + Improve performance of statistics monitoring, especially + <literal>stats_command_string</> (Tom, Bruce) </para> <para> - This allows, for example, <literal>?</> parameters to work - in these commands in <acronym>JDBC</>. + This release sets <envar>stats_command_string</> to + <literal>on</> by default, now that its overhead is minimal. + This means <literal>pg_stat_activity</> now will show all + active queries by default. </para> </listitem> <listitem> <para> - Add <literal>IS NOT DISTINCT FROM</> (Pavel Stehule) + Add support for include directives in <filename>postgresql.conf</> + (Joachim Wieland) + </para> + </listitem> + + <listitem> + <para> + Add native <acronym>LDAP</> authentication (Magnus Hagander) </para> <para> - It is similar to equals (<literal>=</>), but is true when - both left and right arguments are <literal>NULL</>, and - false when just one is, rather than yielding <literal>NULL</> - in these cases. + This is particularly useful for platforms that do not + support <acronym>PAM</>, such as Win32. </para> </listitem> <listitem> <para> - Make row comparisons follow <acronym>SQL</> standard - semantics and allow them to be used in index scans (Tom) + Allow <envar>full_page_writes</> to be turned <literal>off</> + again (Tom) </para> <para> - Previously, row = and <> comparisons followed the - standard but < <= > >= did not. A row comparison - can now be used as an index constraint for a multicolumn - index matching the row value. + This flag can now be used even with <acronym>PITR</>. It + is turned on automatically between <function>pg_start_backup()</> + and <function>pg_stop_backup()</> calls. </para> </listitem> <listitem> <para> - Allow additional row values comparison (Tom) + Add support for <acronym>SSL</> Certificate Revocation List + (<acronym>CRL</>) files, <filename>root.crl</> (Libor + Hohoš) </para> <para> - Add <, <=, >, >=. + This was added to <application>libpq</> as well. </para> </listitem> <listitem> <para> - Add system view <literal>pg_prepared_statements</> to show - prepared statements (Joachim Wieland) + Remove routine autovacuum server log entries (Bruce) + </para> + + <para> + <literal>pg_stat_activity</> now shows autovacuum activity. </para> </listitem> <listitem> <para> - Add system view <literal>pg_cursors</> to show open cursors - (Joachim Wieland) + Add <literal>GRANT CONNECT ON DATABASE</>, to be used in + addition to <filename>pg_hba.conf</> (Gevik Babakhani) </para> <para> - Both this and <literal>pg_prepared_statements</> are very - useful for pooled connection setups. + This gives SQL-control over database access, and works in + combination with the existing <filename>pg_hba.conf</> + controls. </para> </listitem> <listitem> <para> - If <acronym>SQL</>-level <command>PREPARE</> parameters - are unknown, infer their types from the context of the - query (Neil) + Add last vacuum and analyze timestamp columns to the stats + collector (Larry Rosenman) + </para> + + <para> + These values now appear in the <literal>pg_stat_*_tables</> + system views, and are used by autovacuum. ? </para> + </listitem> + <listitem> <para> - Protocol-level <command>PREPARE</> already did this. + Add <acronym>GUC</> <envar>update_process_title</> to + control whether the <application>ps</> display is updated + for every command, default to <literal>on</> (Bruce) </para> </listitem> <listitem> <para> - Allow <command>UPDATE</> and <command>DELETE</> to use an - alias for the target table (Atsushi Ogawa) + Track tables needing vacuum with more accuracy (Alvaro) </para> <para> - This allows these statements to support self-joins more - conveniently. <command>UPDATE</> already supported as - <literal>FROM</> clause, but <command>DELETE</> did not. + This reduces the overhead involved in preventing transaction + ID wraparound. </para> </listitem> <listitem> <para> - Add <literal>CASCADE</> option to <command>TRUNCATE</> - (Joachim Wieland) + Allow units to be specified in configuration settings + (Peter) </para> <para> - This allows <command>TRUNCATE</> also to automatically - truncate all foreign-key referencing tables. + You can now set <envar>shared_buffer</> to <literal>32000kB</>, + for example. </para> </listitem> <listitem> <para> - Enable <envar>standard_conforming_strings</> to be turned - <literal>on</> (Kevin Grittner) + Improve logging of protocol-level prepare/bind/execute + messages (Bruce, Tom) </para> <para> - This allow special backslash escaping in strings to be - turned off so <productname>PostgreSQL</> is more - standards-compliant. The default is <literal>off</>, but - future releases will default this to <literal>on</>. + Such logging now shows statement names, bind parameter + values, and the text of the query being executed. </para> </listitem> <listitem> <para> - Set <envar>escape_string_warning</> to <literal>on</> by - default (Bruce) + Allow a forced switch to a new xlog file (Simon Riggs, Tom) </para> <para> - This issues a warning if backslash escapes are used in - non-escape (non-<literal>E''</>) strings. + This is valuable for keeping <acronym>PITR</> standby + servers in sync with the master. xlog file switching also + happens automatically during <function>pg_stop_backup()</>. + This ensures that <acronym>PITR</> servers have all xlog + files needed for recovery. </para> </listitem> <listitem> <para> - Support <literal>FOR UPDATE</> and <literal>FOR SHARE</> - in the same command (Tom) + Add <acronym>WAL</> informational functions (Simon Riggs) + </para> + + <para> + Add functions for interrogating the current xlog insertion + point and determining <acronym>WAL</> filenames from the + hex <acronym>WAL</> locations displayed by + <function>pg_stop_backup()</> and friends. </para> </listitem> <listitem> <para> - Disallow aggregate functions in <command>UPDATE</> commands - (unless within a subquery) (Tom) + Allow <acronym>WAL</> replay to be restored quicker in case + of a crash (Simon Riggs) </para> <para> - The standard disallows this, and it leads to unpredictable - results. + The server now does periodic checkpoints during <acronym>WAL</> + recovery, so if there is a crash, future <acronym>WAL</> + recovery is shortened. This also eliminates the need for + <acronym>PITR</> standby servers to replay the entire log + since the base backup if they crash. </para> </listitem> <listitem> <para> - Change the row constructor syntax (<literal>ROW(...)</>) - so that list elements <literal>foo.*</> will be expanded - to a list of their member fields, rather than creating a - nested rowtype field as formerly (Tom) + Add <envar>archive_timeout</> to force xlog file switches + at a given interval (Simon Riggs) </para> <para> - The new behavior is substantially more useful since it - allows, for example, triggers to check for data changes - with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>. - The old behavior is still available by omitting <literal>.*</>. + This enforces a maximum delay for <acronym>PITR</> standby + servers. </para> </listitem> <listitem> <para> - Change <literal>LIMIT</>/<literal>OFFSET</> to use - <type>int8</> (Dhanaraj M) + Add a <literal>waiting</> column to <literal>pg_stat_activity</> + (Tom) </para> <para> - This allows <literal>LIMIT</>/<literal>OFFSET</> over - two-billion. + This allows <literal>pg_stat_activity</> to show the same + information as the <literal>ps</> display. </para> </listitem> + </sect3> + + <sect3> + <title>Query Changes</title> + <itemizedlist> + <listitem> <para> - Add support for multi-row <literal>VALUES</> clauses as - part of <command>INSERT</> and <command>SELECT</> statements - (Joe, Tom) + Support portal parameters in <command>EXPLAIN</> and + <command>EXECUTE</> (Tom) </para> <para> - This allows <command>INSERT</> to insert multiple rows of - constants, or queries to generate result sets using constants. - For example, <literal>INSERT ... VALUES (...), (...), - ....</>, and <literal>SELECT * FROM (VALUES (...), (...), - ....) AS alias(f1, ...)</>. + This allows, for example, <literal>?</> parameters to work + in these commands in <acronym>JDBC</>. </para> </listitem> <listitem> <para> - Improve the length output used by - <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> - (Tom) + Add <literal>IS NOT DISTINCT FROM</> (Pavel Stehule) </para> <para> - When all columns are of the same defined length, that length - is used for output, rather than a generic length. + It is similar to equals (<literal>=</>), but is true when + both left and right arguments are <literal>NULL</>, and + false when just one is, rather than yielding <literal>NULL</> + in these cases. </para> </listitem> <listitem> <para> - Add <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> - <literal>RETURNING</> (Jonah Harris, Tom) + Allow additional row value comparisons (Tom) </para> <para> - This allows these commands to return values, such as the - computed serial key for a new row. In the <command>UPDATE</> - case, values from the new state of the row are returned. + Add <, <=, >, >=. + </para> + </listitem> + + <listitem> + <para> + Add system view <literal>pg_prepared_statements</> to show + prepared statements (Joachim Wieland) </para> </listitem> <listitem> <para> - Allow <command>UPDATE</> to set multiple columns with a - list of values (Susanne Ebrecht) + Add system view <literal>pg_cursors</> to show open cursors + (Joachim Wieland) </para> <para> - This is basically as short-hand for assigning the columns - and values in pairs. The syntax is <literal>UPDATE tab - SET (col, ...) = (val, ...)</>. + Both this and <literal>pg_prepared_statements</> are very + useful for pooled connection setups. </para> </listitem> <listitem> <para> - Allow <literal>ILIKE</> to work for multi-byte encodings - (Tom) + If <acronym>SQL</>-level <command>PREPARE</> parameters + are unknown, infer their types from the context of the + query (Neil) </para> <para> - Internally, <literal>ILIKE</> now calls <function>lower()</> - and then uses <literal>LIKE</>. Locale-specific regular - expression operations still do not work in these encodings. + Protocol-level <command>PREPARE</> already did this. ? </para> </listitem> <listitem> <para> - Protocol-level unnamed prepared statements are re-planned - for each set of <literal>BIND</> values (Tom) + Allow <command>UPDATE</> and <command>DELETE</> to use an + alias for the target table (Atsushi Ogawa) </para> <para> - This improves performance because the exact parameter values - can be used in the plan. + This allows these statements to support self-joins more + conveniently. <command>UPDATE</> already supported as + <literal>FROM</> clause, but <command>DELETE</> did not. </para> </listitem> <listitem> <para> - Do not flatten subqueries that contain <literal>VOLATILE</> - functions in their target lists (Jaime Casanova) + Add <literal>CASCADE</> option to <command>TRUNCATE</> + (Joachim Wieland) </para> <para> - This prevents surprising behavior due to multiple evaluation - of a <literal>volatile</> function (such as <function>random()</> - or <function>nextval()</>). It may cause performance - degradation in the presence of functions that are unnecessarily - marked as <literal>volatile</>. + This allows <command>TRUNCATE</> also to automatically + truncate all foreign-key referencing tables. </para> - </sect3> - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> + </listitem> <listitem> <para> - Add <command>DROP</> object <literal>IF EXISTS</> for many - object types (Andrew) + Enable <envar>standard_conforming_strings</> to be turned + <literal>on</> (Kevin Grittner) </para> <para> - This allows <command>DROP</> operations on non-existent - objects without generating an error. + This allow special backslash escaping in strings to be + turned off so <productname>PostgreSQL</> is more + standards-compliant. The default is <literal>off</>, but + future releases will default this to <literal>on</>. </para> </listitem> <listitem> <para> - Add <literal>DROP OWNED</> to drop all objects owned by a - role (Alvaro) + Support <literal>FOR UPDATE</> and <literal>FOR SHARE</> + in the same command (Tom) </para> </listitem> <listitem> <para> - Add <literal>REASSIGN OWNED</> to reassign ownership of - all objects owned by a role (Alvaro) + Change <literal>LIMIT</>/<literal>OFFSET</> to exceed + two billion</> (Dhanaraj M) </para> + </listitem> + <listitem> <para> - This, and <literal>DROP OWNED</> above, facilitate dropping - roles. + Add support for multi-row <literal>VALUES</> clauses as + part of <command>INSERT</> and <command>SELECT</> statements + (Joe, Tom) </para> - </listitem> - <listitem> <para> - Add <command>CREATE</>/<command>ALTER ROLE PASSWORD NULL</>, - which removes the role's password (Peter) + This allows <command>INSERT</> to insert multiple rows of + constants, or queries to generate result sets using constants. + For example, <literal>INSERT ... VALUES (...), (...), + ....</>, and <literal>SELECT * FROM (VALUES (...), (...), + ....) AS alias(f1, ...)</>. </para> </listitem> <listitem> <para> - Properly enforce <literal>DOMAIN</> check constraints - everywhere (Neil, Tom) + Improve the length output used by + <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> + (Tom) </para> <para> - For example, the result of a user-defined function that is - declared to return a domain type is now checked against - the constraints. + When all columns are of the same defined length, that length + is used for output, rather than a generic length. </para> </listitem> <listitem> <para> - Add <command>GRANT ON SEQUENCE</> syntax (Bruce) + Add <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> + <literal>RETURNING</> (Jonah Harris, Tom) </para> <para> - This was added for setting sequence-specific permissions. - <literal>GRANT ON [TABLE]</> for sequences is still supported - for backward compatibility. + This allows these commands to return values, such as the + computed serial key for a new row. In the <command>UPDATE</> + case, values from the new state of the row are returned. </para> </listitem> <listitem> <para> - Add <literal>USAGE</> permission for sequences that allows - only <function>currval()</> and <function>nextval()</>, - not <function>setval()</> (Bruce) + Allow <command>UPDATE</> to set multiple columns with a + list of values (Susanne Ebrecht) </para> <para> - <literal>USAGE</> permission allows more find-grained - control over sequence access. It allows users to increment - a sequence, but prevents them from setting the sequence to - an arbitrary value using <function>setval()</>. + This is basically as short-hand for assigning the columns + and values in pairs. The syntax is <literal>UPDATE tab + SET (col, ...) = (val, ...)</>. </para> </listitem> <listitem> <para> - Allow comments on global objects to be stored globally - (Kris Jurka) + Allow <literal>ILIKE</> to work for multi-byte encodings + (Tom) </para> <para> - Previously, global object comments were stored in individual - databases, making them ineffective. This adds a new - <literal>pg_shdescription</> table. + Internally, <literal>ILIKE</> now calls <function>lower()</> + and then uses <literal>LIKE</>. Locale-specific regular + expression operations still do not work in these encodings. </para> </listitem> <listitem> <para> - Add <literal>ON COMMIT</> clauses to <command>CREATE TABLE - AS</> (Neil) + Protocol-level unnamed prepared statements are re-planned + for each set of <literal>BIND</> values (Tom) </para> <para> - This allows temporary tables to be truncated or dropped on - transaction commit. The default behavior is for the table - to remain until the session ends. + This improves performance because the exact parameter values + can be used in the plan. </para> </listitem> <listitem> <para> - Add <literal>TABLESPACE</> and <literal>ON COMMIT</> clauses - to <command>CREATE TABLE AS</> (Neil) + Do not flatten subqueries that contain <literal>VOLATILE</> + functions in their target lists (Jaime Casanova) </para> <para> - This allows the tablespace to be specified for the new - table. + This prevents surprising behavior due to multiple evaluation + of a <literal>volatile</> function (such as <function>random()</> + or <function>nextval()</>). It may cause performance + degradation in the presence of functions that are unnecessarily + marked as <literal>volatile</>. </para> </listitem> + </sect3> + + <sect3> + <title>Object Manipulation Changes</title> + <itemizedlist> + <listitem> <para> - Allow placeholder (shell) types to be created (Martijn van - Oosterhout) + Add <command>DROP</> object <literal>IF EXISTS</> for many + object types (Andrew) </para> <para> - Shell types create a type reference, without specifying - any of the aspects of the type. It is useful for creating - types with input/output functions that reference the data - type. The syntax is <command>CREATE TYPE typname</>. + This allows <command>DROP</> operations on non-existent + objects without generating an error. </para> </listitem> <listitem> <para> - Add new aggregate creation syntax (Tom) + Add <literal>DROP OWNED</> to drop all objects owned by a + role (Alvaro) </para> + </listitem> + <listitem> <para> - The new syntax is <command>CREATE AGGREGATE</> aggname - (input_type) (parameter_list). This more naturally supports - the new multi-parameter aggregate functionality. The - previous syntax is still supported. + Add <literal>REASSIGN OWNED</> to reassign ownership of + all objects owned by a role (Alvaro) + </para> + + <para> + This, and <literal>DROP OWNED</> above, facilitate dropping + roles. </para> </listitem> <listitem> <para> - Aggregate functions now support multiple input parameters - (Sergey Koposov, Tom) + Add <command>CREATE</>/<command>ALTER ROLE PASSWORD NULL</>, + which removes the role's password (Peter) </para> </listitem> <listitem> <para> - Have <command>SET CONSTRAINT</> affect only one constraint - (Kris Jurka) + Properly enforce <literal>DOMAIN</> check constraints + everywhere (Neil, Tom) </para> <para> - In previous releases, <command>SET CONSTRAINT</> modified - all constraints with a matching name. In this release, - the schema search path is used to modify only the first - matching constraint. A schema specification is also - supported. + For example, the result of a user-defined function that is + declared to return a domain type is now checked against + the constraints. </para> </listitem> <listitem> <para> - Add <literal>INCLUDING CONSTRAINTS</> to <command>CREATE - TABLE LIKE</> (Greg Stark) + Add <command>GRANT ON SEQUENCE</> syntax (Bruce) </para> <para> - This allows the new table to receive matching constraints. + This was added for setting sequence-specific permissions. + <literal>GRANT ON [TABLE]</> for sequences is still supported + for backward compatibility. </para> </listitem> <listitem> <para> - Add <literal>ALTER TABLE ... [NO] INHERIT</> (Greg Stark) + Add <literal>USAGE</> permission for sequences that allows + only <function>currval()</> and <function>nextval()</>, + not <function>setval()</> (Bruce) </para> <para> - This allow inheritance to be added and removed dynamically, - rather than just at table creation and destruction. This - is very valuable for table partitioning using constraint - exclusion. + <literal>USAGE</> permission allows more find-grained + control over sequence access. It allows users to increment + a sequence, but prevents them from setting the sequence to + an arbitrary value using <function>setval()</>. </para> </listitem> <listitem> <para> - Remove rule permission for tables, for security reasons - (Tom) + Allow comments on global objects to be stored globally + (Kris Jurka) </para> <para> - In this release, only a table's owner can create or modify - rules for the table. For backwards compatibility, - <command>GRANT</>/<command>REVOKE RULE</> is still accepted, - but it does nothing. + Previously, global object comments were stored in individual + databases, making them ineffective. This adds a new + <literal>pg_shdescription</> table. </para> - </sect3> - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> + </listitem> <listitem> <para> - Reduce progress messages displayed by initdb (Tom) + Add <literal>ON COMMIT</> clauses to <command>CREATE TABLE + AS</> (Neil) + </para> + + <para> + This allows temporary tables to be truncated or dropped on + transaction commit. The default behavior is for the table + to remain until the session ends. </para> </listitem> <listitem> <para> - Have initdb detect the operating system locale and set the - default <envar>DateStyle</> accordingly (Peter) + Add <literal>TABLESPACE</> and <literal>ON COMMIT</> clauses + to <command>CREATE TABLE AS</> (Neil) </para> <para> - This make it more likely that the installed - <filename>postgresql.conf</> <envar>DateStyle</> value will - be correct. + This allows the tablespace to be specified for the new + table. </para> </listitem> <listitem> <para> - Have the <command>COPY</> command return a command tag that - includes the number of rows copied (Volkan Yazıcı) + Allow placeholder (shell) types to be created (Martijn van + Oosterhout) + </para> + + <para> + Shell types create a type reference, without specifying + any of the aspects of the type. It is useful for creating + types with input/output functions that reference the data + type. The syntax is <command>CREATE TYPE typname</>. </para> </listitem> <listitem> <para> - Allow <command>VACUUM</> to expire rows without being - affected by other concurrent <command>VACUUM</>s (Hannu - Krossing, Alvaro, Tom) + Add new aggregate creation syntax (Tom) + </para> + + <para> + The new syntax is <command>CREATE AGGREGATE</> aggname + (input_type) (parameter_list). This more naturally supports + the new multi-parameter aggregate functionality. The + previous syntax is still supported. </para> </listitem> <listitem> <para> - Avoid extra scan of tables during <command>VACUUM</> of - index-less table (Greg Stark) + Aggregate functions now support multiple input parameters + (Sergey Koposov, Tom) </para> </listitem> <listitem> <para> - Add option to allow indexes to be created without blocking - concurrent writes to the table (Greg Stark) + Add <literal>INCLUDING CONSTRAINTS</> to <command>CREATE + TABLE LIKE</> (Greg Stark) </para> <para> - The new syntax is <command>CREATE INDEX CONCURRENTLY</>. - The default behavior is still to block table modification - while a index is being created. + This allows the new table to receive matching constraints. </para> </listitem> <listitem> <para> - Allow <command>COPY</> to dump a <command>SELECT</> query - (Zoltan Boszormenyi, Karel Zak) + Add <literal>ALTER TABLE ... [NO] INHERIT</> (Greg Stark) </para> <para> - This allows <command>COPY</> to dump arbitrary <acronym>SQL</> - queries. The syntax is <literal>COPY (SELECT ...) TO</>. + This allow inheritance to be added and removed dynamically, + rather than just at table creation and destruction. This + is very valuable for table partitioning using constraint + exclusion. </para> + </listitem> + </sect3> <sect3> - <title>Data Type and Function Changes</title> + <title>Utility Command Changes</title> <itemizedlist> <listitem> <para> - Allow arrays to contain <literal>NULL</> elements (Tom) + Reduce progress messages displayed by initdb (Tom) </para> </listitem> <listitem> <para> - Change array concatenation to match documented behavior - (Tom) + Have initdb detect the operating system locale and set the + default <envar>DateStyle</> accordingly (Peter) </para> <para> - This changes the previous behavior where concatenation - would adjust the lower array dimensions. + This make it more likely that the installed + <filename>postgresql.conf</> <envar>DateStyle</> value will + be correct. </para> </listitem> <listitem> <para> - Array comparison improvements (Tom) - </para> - - <para> - Now array dimensions are also compared. + Have the <command>COPY</> command return a command tag that + includes the number of rows copied (Volkan Yazıcı) </para> </listitem> <listitem> <para> - Allow <function>to_char(time)</> and <function>to_char(interval)</> - to output <acronym>AM</>/<acronym>PM</> specifications - (Bruce) + Allow <command>VACUUM</> to expire rows without being + affected by other concurrent <command>VACUUM</>s (Hannu + Krossing, Alvaro, Tom) </para> + </listitem> + <listitem> <para> - Intervals and times are treated as 24-hour periods, e.g. - <literal>25 hours</> is <acronym>AM</>. + Avoid extra scan of tables without indexes during <command>VACUUM</> + (Greg Stark) </para> </listitem> <listitem> <para> - Have <function>to_char(time)</> and <function>to_char(interval)</> - treat <literal>'HH'</> and <literal>'HH12'</> as 12-hour - intervals. + Add option to allow indexes to be created without blocking + concurrent writes to the table (Greg Stark) + </para> <para> - Most applications should use <literal>'HH24'</> unless they - want a 12-hour display. + The new syntax is <command>CREATE INDEX CONCURRENTLY</>. + The default behavior is still to block table modification + while a index is being created. </para> </listitem> <listitem> <para> - Add a server-side sleep function <function>pg_sleep()</> - (Joachim Wieland) + Allow <command>COPY</> to dump a <command>SELECT</> query + (Zoltan Boszormenyi, Karel Zak) + </para> + + <para> + This allows <command>COPY</> to dump arbitrary <acronym>SQL</> + queries. The syntax is <literal>COPY (SELECT ...) TO</>. </para> </listitem> + </sect3> + + <sect3> + <title>Data Type and Function Changes</title> + <itemizedlist> + <listitem> <para> - Zero unmasked bits in conversion from <type>INET</> to - <type>CIDR</> (Tom) + Allow arrays to contain <literal>NULL</> elements (Tom) </para> </listitem> <listitem> <para> - Add convenient arithmetic operations on <type>INET</>/<type>CIDR</> - values (Stephen R. van den Berg) + Allow <function>to_char(time)</> and <function>to_char(interval)</> + to output <acronym>AM</>/<acronym>PM</> specifications + (Bruce) </para> <para> - The new operators are <literal>&</> (and), <literal>|</> - (or), <literal>~</> (not), <literal>+</> <type>int8</>, - <literal>-</> <type>int8</>, and <type>inet</> <literal>-</> - <type>inet</>. + Intervals and times are treated as 24-hour periods, e.g. + <literal>25 hours</> is <acronym>AM</>. </para> </listitem> <listitem> <para> - Allow <function>to_char()</> to print localized month and - day names (Euler Taveira de Oliveira) + Add a server-side sleep function <function>pg_sleep()</> + (Joachim Wieland) </para> </listitem> <listitem> <para> - Add all comparison operators for the <type>tid</> data type - (Mark Kirkwood, Greg Stark, Tom) + Add convenient arithmetic operations on <type>INET</>/<type>CIDR</> + values (Stephen R. van den Berg) + </para> + + <para> + The new operators are <literal>&</> (and), <literal>|</> + (or), <literal>~</> (not), <literal>+</> <type>int8</>, + <literal>-</> <type>int8</>, and <type>inet</> <literal>-</> + <type>inet</>. </para> </listitem> <listitem> <para> - Add new function <function>justify_interval()</> to adjust - interval units (Mark Dilger) + Allow <function>to_char()</> to print localized month and + day names (Euler Taveira de Oliveira) </para> </listitem> <listitem> <para> - Add new aggregate functions from SQL2003 (Neil) + Add all comparison operators for the <type>tid</> data type + (Mark Kirkwood, Greg Stark, Tom) </para> + </listitem> + <listitem> <para> - The new functions are <function>var_pop()</>, - <function>var_samp()</>, <function>stddev_pop()</>, and - <function>stddev_samp()</>. <function>var_samp()</> and - <function>stddev_samp()</> are merely renamings of the - existing aggregates <function>variance()</> and - <function>stddev()</>. The latter names have been kept - for backward compatibility. + Add new function <function>justify_interval()</> to adjust + interval units (Mark Dilger) </para> </listitem> <listitem> <para> - New operators for array-subset comparisons (<literal>@></>, - <literal><@</>, <literal>&&</>) (Teodor, Tom) + Add new aggregate functions from SQL2003 (Neil) </para> <para> - The old operators were kept for backward compatibility. + The new functions are <function>var_pop()</>, + <function>var_samp()</>, <function>stddev_pop()</>, and + <function>stddev_samp()</>. <function>var_samp()</> and + <function>stddev_samp()</> are merely renamings of the + existing aggregates <function>variance()</> and + <function>stddev()</>. The latter names have been kept + for backward compatibility. </para> </listitem> <listitem> <para> - Allow domains to be created using other domains (Tom) + New operators for array-subset comparisons (<literal>@></>, + <literal><@</>, <literal>&&</>) (Teodor, Tom) </para> - </listitem> - <listitem> <para> - Add <function>clock_timestamp()</>, - <function>statement_timestamp()</>, and - <function>transaction_timestamp()</> (Bruce) + The old operators were kept for backward compatibility. </para> + </listitem> + <listitem> <para> - <function>clock_timestamp()</> is the true current time, - and <function>statement_timestamp()</> is the time the - current command arrived at the server. - <function>transaction_timestamp()</> is the same as - <function>now()</>. + Allow domains to be created using other domains (Tom) </para> </listitem> <listitem> <para> - Allow full timezone names in <type>timestamp</> values - (Joachim Wieland) + Add <function>clock_timestamp()</>, + <function>statement_timestamp()</>, and + <function>transaction_timestamp()</> (Bruce) </para> <para> - For example, <literal>'2006-05-24 21:11 - America/New_York'::timestamptz</>. + <function>clock_timestamp()</> is the true current time, + and <function>statement_timestamp()</> is the time the + current command arrived at the server. + <function>transaction_timestamp()</> is the same as + <function>now()</>. </para> </listitem> <listitem> <para> - Create a configuration file of timezone abbreviations - (Joachim Wieland) + Allow full timezone names in <type>timestamp</> values + (Joachim Wieland) </para> <para> - The file name is controlled by GUC variable - <envar>timezone_abbreviations</>. + For example, <literal>'2006-05-24 21:11 + America/New_York'::timestamptz</>. </para> </listitem> <listitem> <para> - Remove <envar>australian_timezones</> configuration variable - (Joachim Wieland) + Create a configuration file of timezone abbreviations + (Joachim Wieland) </para> <para> - No longer needed now that timezone abbreviations are - configurable. + The file name is controlled by GUC variable + <envar>timezone_abbreviations</>. </para> </listitem> <listitem> <para> - Add <envar>pg_timezone_abbrevs</> and <envar>pg_timezone_names</> - views to show supported timezones (Magnus Hagander) + Add <envar>pg_timezone_abbrevs</> and <envar>pg_timezone_names</> + views to show supported timezones (Magnus Hagander) </para> </listitem> <listitem> <para> - Add SQL2003-standard statistical aggregates (Sergey Koposov) + Add SQL2003-standard statistical aggregates (Sergey Koposov) </para> <para> - New functions: <function>regr_intercept()</>, - <function>regr_slope()</>, <function>regr_r2()</>, - <function>corr()</>, <function>covar_samp()</>, - <function>covar_pop()</>, <function>regr_avgx()</>, - <function>regr_avgy()</>, <function>regr_sxy()</>, - <function>regr_sxx()</>, <function>regr_syy()</>, - <function>regr_count()</> + New functions: <function>regr_intercept()</>, + <function>regr_slope()</>, <function>regr_r2()</>, + <function>corr()</>, <function>covar_samp()</>, + <function>covar_pop()</>, <function>regr_avgx()</>, + <function>regr_avgy()</>, <function>regr_sxy()</>, + <function>regr_sxx()</>, <function>regr_syy()</>, + <function>regr_count()</> </para> </listitem> <listitem> <para> - Fix problems with dumping renamed <type>SERIAL</> columns - (Tom) + Fix problems with dumping renamed <type>SERIAL</> columns + (Tom) </para> <para> - The fix is to dump a <type>SERIAL</> column by explicitly - specifying its <literal>DEFAULT</> and sequence elements, - and reconstructing the <type>SERIAL</> column on reload - using a new <command>ALTER SEQUENCE OWNED BY</> command. - This also allows dropping a <type>SERIAL</> column - specification. + The fix is to dump a <type>SERIAL</> column by explicitly + specifying its <literal>DEFAULT</> and sequence elements, + and reconstructing the <type>SERIAL</> column on reload + using a new <command>ALTER SEQUENCE OWNED BY</> command. + This also allows dropping a <type>SERIAL</> column + specification. </para> </listitem> <listitem> <para> - Interval computation improvements (Michael Glaesemann, - Bruce) + Interval computation improvements (Michael Glaesemann, + Bruce) </para> + </listitem> + </sect3> <sect3> @@ -1266,36 +1345,38 @@ For new features, add links to the documentation sections. <listitem> <para> - Allow <literal>FOR</> statements to return values to scalars - as well as records and row types (Pavel Stehule) + Allow <literal>FOR</> statements to return values to scalars + as well as records and row types (Pavel Stehule) </para> </listitem> <listitem> <para> - Add a <literal>BY</> clause to the <literal>FOR</> loop, - to control the iteration increment (Jaime Casanova) + Add a <literal>BY</> clause to the <literal>FOR</> loop, + to control the iteration increment (Jaime Casanova) </para> </listitem> <listitem> <para> - Add <literal>table_name</> and <literal>table_schema</> as - trigger data (Andrew) + Add <literal>table_name</> and <literal>table_schema</> as + trigger data (Andrew) </para> </listitem> <listitem> <para> - Add <literal>STRICT</> to <command>SELECT INTO</> (Matt - Miller) + Add <literal>STRICT</> to <command>SELECT INTO</> (Matt + Miller) </para> <para> - <literal>STRICT</> mode throws an exception if more or less - than one row is returned by the <command>SELECT</>, for - <productname>Oracle PL/SQL</> compatibility. + <literal>STRICT</> mode throws an exception if more or less + than one row is returned by the <command>SELECT</>, for + <productname>Oracle PL/SQL</> compatibility. </para> + </listitem> + </sect3> <sect3> @@ -1304,36 +1385,38 @@ For new features, add links to the documentation sections. <listitem> <para> - Honor <envar>check_function_bodies</> (Tom) + Honor <envar>check_function_bodies</> (Tom) </para> </listitem> <listitem> <para> - Add prepared queries (Dmitry Karasik) + Add prepared queries (Dmitry Karasik) </para> </listitem> <listitem> <para> - Add <literal>table_name</> and <literal>table_schema</> as - trigger data (Adam Sjøgren) + Add <literal>table_name</> and <literal>table_schema</> as + trigger data (Adam Sjøgren) </para> <para> - <literal>relname</> is kept but now deprecated + <literal>relname</> is kept but now deprecated </para> </listitem> <listitem> <para> - Make <literal>$_TD</> trigger data a global variable (Andrew) + Make <literal>$_TD</> trigger data a global variable (Andrew) </para> <para> - Previously, it was lexical, which caused unexpected sharing - violations. + Previously, it was lexical, which caused unexpected sharing + violations. </para> + </listitem> + </sect3> <sect3> @@ -1342,42 +1425,44 @@ For new features, add links to the documentation sections. <listitem> <para> - Allow functions to return <literal>void</> (Neil) + Allow functions to return <literal>void</> (Neil) </para> </listitem> <listitem> <para> - Add named parameters to the <literal>args[]</> array (Sven - Suursoho) + Add named parameters to the <literal>args[]</> array (Sven + Suursoho) </para> </listitem> <listitem> <para> - Return composite-types as dictionary (Sven Suursoho) + Return composite-types as dictionary (Sven Suursoho) </para> </listitem> <listitem> <para> - Return result-set as <literal>list</>, <literal>iterator</>, - or <literal>generator </>(Sven Suursoho) + Return result-set as <literal>list</>, <literal>iterator</>, + or <literal>generator </>(Sven Suursoho) </para> </listitem> <listitem> <para> - Allow returning of <literal>composite types</> and - <literal>result sets</> (Sven Suursoho) + Allow returning of <literal>composite types</> and + <literal>result sets</> (Sven Suursoho) </para> </listitem> <listitem> <para> - Add <literal>table_name</> and <literal>table_schema</> as - trigger data (Andrew) + Add <literal>table_name</> and <literal>table_schema</> as + trigger data (Andrew) </para> + </listitem> + </sect3> <sect3> @@ -1386,98 +1471,100 @@ For new features, add links to the documentation sections. <listitem> <para> - Add new command <literal>\password</> for changing role - password with client-side password encryption (Peter) + Add new command <literal>\password</> for changing role + password with client-side password encryption (Peter) </para> </listitem> <listitem> <para> - Allow multi-line values to align in the proper column - (Martijn van Oosterhout) + Allow multi-line values to align in the proper column + (Martijn van Oosterhout) </para> </listitem> <listitem> <para> - Save multi-line statements as a single entry, rather than - one line at a time (Sergey E. Koposov) + Save multi-line statements as a single entry, rather than + one line at a time (Sergey E. Koposov) </para> <para> - This makes up-arrow recall of queries easier. + This makes up-arrow recall of queries easier. </para> </listitem> <listitem> <para> - Allow <literal>\c</> to connect to a new host and port - number (David, Volkan Yazıcı) + Allow <literal>\c</> to connect to a new host and port + number (David, Volkan Yazıcı) </para> </listitem> <listitem> <para> - Add option to run the entire session in a single transaction - (Simon) + Add option to run the entire session in a single transaction + (Simon) </para> <para> - Use options <literal>-1</> or <literal>--single-transaction</>. + Use options <literal>-1</> or <literal>--single-transaction</>. </para> </listitem> <listitem> <para> - Improve highlighting of error location in query in more - cases (Tom) + Improve highlighting of error location in query in more + cases (Tom) </para> </listitem> <listitem> <para> - Add tablespace display to <literal>\l+</> (Philip Yarra) + Add tablespace display to <literal>\l+</> (Philip Yarra) </para> </listitem> <listitem> <para> - Support binary <command>COPY</> (Andreas Pflug) + Support binary <command>COPY</> (Andreas Pflug) </para> </listitem> <listitem> <para> - Improve <literal>\df</> slash command to include the argument - names and modes (<literal>OUT</> or <literal>INOUT</>) of - the function (David Fetter) + Improve <literal>\df</> slash command to include the argument + names and modes (<literal>OUT</> or <literal>INOUT</>) of + the function (David Fetter) </para> </listitem> <listitem> <para> - Make the line counter 64-bit so it can handle files over - two billion lines (David Fetter) + Make the line counter 64-bit so it can handle files over + two billion lines (David Fetter) </para> </listitem> <listitem> <para> - Report both the returned data and the command status tag - for <command>INSERT</>/<command>UPDATE</>/<command>DELETE - RETURNING</> (Tom) + Report both the returned data and the command status tag + for <command>INSERT</>/<command>UPDATE</>/<command>DELETE + RETURNING</> (Tom) </para> </listitem> <listitem> <para> - Support retrieving <command>SELECT</> results in batches - using a cursor (Chris Mair) + Support retrieving <command>SELECT</> results in batches + using a cursor (Chris Mair) </para> <para> - This is accomplished using <command>\set FETCH_COUNT</>. + This is accomplished using <command>\set FETCH_COUNT</>. </para> + </listitem> + </sect3> <sect3> @@ -1486,37 +1573,39 @@ For new features, add links to the documentation sections. <listitem> <para> - Allow complex selection of objects to be included or excluded - by <application>pg_dump</> (Greg Sabino Mullane) + Allow complex selection of objects to be included or excluded + by <application>pg_dump</> (Greg Sabino Mullane) </para> <para> - <application>pg_dump</> now supports multiple <literal>-n</> - (schema) and <literal>-t</> (table) options, and adds - <literal>-T</> and <literal>-N</> options to exclude objects. - Also adds support for regular expressions for object names - in these switches. + <application>pg_dump</> now supports multiple <literal>-n</> + (schema) and <literal>-t</> (table) options, and adds + <literal>-T</> and <literal>-N</> options to exclude objects. + Also adds support for regular expressions for object names + in these switches. </para> </listitem> <listitem> <para> - Add <application>pg_dump</> <literal>-X - no-data-for-failed-tables</> option to suppress loading - data if table creation failed (the table already exists) - (Martin Pitt) + Add <application>pg_dump</> <literal>-X + no-data-for-failed-tables</> option to suppress loading + data if table creation failed (the table already exists) + (Martin Pitt) </para> </listitem> <listitem> <para> - Add <application>pg_restore</> option to run the entire - session in a single transaction (Simon) + Add <application>pg_restore</> option to run the entire + session in a single transaction (Simon) </para> <para> - Use options <literal>-1</> or <literal>--single-transaction</>. + Use options <literal>-1</> or <literal>--single-transaction</>. </para> + </listitem> + </sect3> <sect3> @@ -1525,68 +1614,51 @@ For new features, add links to the documentation sections. <listitem> <para> - Add <function>PQencryptPassword()</> to encrypt passwords - (Tom) + Add <function>PQencryptPassword()</> to encrypt passwords + (Tom) </para> <para> - This allows passwords to be sent encrypted for commands - like <command>ALTER USER ... PASSWORD</>. + This allows passwords to be sent encrypted for commands + like <command>ALTER USER ... PASSWORD</>. </para> </listitem> <listitem> <para> - Change <function>PQdsplen()</> to return a useful value - (Martijn van Oosterhout) + Allow the <filename>.pgpass</> hostname to match the default + socket directory, as well as a blank <literal>pghost</> + (Bruce) </para> </listitem> <listitem> <para> - Change <function>PQgetssl()</> to return a <literal>void*</>, - rather than <literal>SSL*</> (Martijn van Oosterhout) + Add function <function>PQisthreadsafe()</> (Bruce) </para> <para> - This allows applications to use the function without - <acronym>SSL</> headers. + This allows applications to query the thread-safety status + of the library. </para> </listitem> <listitem> <para> - Allow the <filename>.pgpass</> hostname to match the default - socket directory, as well as a blank <literal>pghost</> - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add function <function>PQisthreadsafe()</> (Bruce) - </para> - - <para> - This allows applications to query the thread-safety status - of the library. + Allow <acronym>LDAP</> lookups from <filename>pg_service.conf</> + (Albe Laurenz) </para> </listitem> <listitem> <para> - Allow <acronym>LDAP</> lookups from <filename>pg_service.conf</> - (Albe Laurenz) + Add <function>PQdescribePrepared()</>, + <function>PQdescribePortal()</>, and related functions + return information about previously prepared statements + and open cursors (Volkan Yazıcı) </para> </listitem> - <listitem> - <para> - Add <function>PQdescribePrepared()</>, - <function>PQdescribePortal()</>, and related functions - return information about previously prepared statements - and open cursors (Volkan Yazıcı) - </para> </sect3> <sect3> @@ -1595,27 +1667,29 @@ For new features, add links to the documentation sections. <listitem> <para> - Allow <command>SHOW</> to put its result into a variable - (Joachim Wieland) + Allow <command>SHOW</> to put its result into a variable + (Joachim Wieland) </para> </listitem> <listitem> <para> - Add <command>COPY TO STDOUT</> (Joachim Wieland) + Add <command>COPY TO STDOUT</> (Joachim Wieland) </para> </listitem> <listitem> <para> - Add regression tests (Joachim Wieland, Michael) + Add regression tests (Joachim Wieland, Michael) </para> </listitem> <listitem> <para> - Major source code cleanups (Joachim Wieland, Michael) + Major source code cleanups (Joachim Wieland, Michael) </para> + </listitem> + </sect3> <sect3> @@ -1624,52 +1698,54 @@ For new features, add links to the documentation sections. <listitem> <para> - Improve handling of intermittent file system and resource - failures (Qingqing Zhou) + Improve handling of intermittent file system and resource + failures (Qingqing Zhou) </para> </listitem> <listitem> <para> - Stability fixes (Magnus) + Stability fixes (Magnus) </para> <para> - Particularly, prevent the postmaster from stopping if too - many connection requests arrive too rapidly. + Particularly, prevent the postmaster from stopping if too + many connection requests arrive too rapidly. </para> </listitem> <listitem> <para> - Add support for Windows code pages <literal>1253</>, - <literal>1254</>, <literal>1255</>, and <literal>1257</> - (Kris Jurka) + Add support for Windows code pages <literal>1253</>, + <literal>1254</>, <literal>1255</>, and <literal>1257</> + (Kris Jurka) </para> </listitem> <listitem> <para> - Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</> - server (Magnus, Hiroshi Saito) + Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</> + server (Magnus, Hiroshi Saito) </para> </listitem> <listitem> <para> - Add <acronym>MSVC</> support for utility commands and - <application>pg_dump </>(Hiroshi Saito) + Add <acronym>MSVC</> support for utility commands and + <application>pg_dump </>(Hiroshi Saito) </para> </listitem> <listitem> <para> - Add native semaphore implementation (Qingqing Zhou) + Add native semaphore implementation (Qingqing Zhou) </para> <para> - Previous implementations mimicked SysV semaphores. + Previous implementations mimicked SysV semaphores. </para> + </listitem> + </sect3> <sect3> @@ -1678,215 +1754,183 @@ For new features, add links to the documentation sections. <listitem> <para> - Remove R-tree indexing (Tom) + Remove R-tree indexing (Tom) </para> <para> - Rtree has been re-implemented using <acronym>GIST</>. + Rtree has been re-implemented using <acronym>GIST</>. </para> </listitem> <listitem> <para> - Reduce libraries linked into the backend needlessly (Martijn - van Oosterhout, Tom) + Reduce libraries linked into the backend needlessly (Martijn + van Oosterhout, Tom) </para> </listitem> <listitem> <para> - New macro <literal>PG_VERSION_NUM</> for use by third-party - applications wanting to test the backend version in C using - > and < comparisons (Bruce) - </para> - </listitem> - - <listitem> - <para> - Improve multicolumn <acronym>GIST</> indexing (Oleg, Teodor) - </para> - </listitem> - - <listitem> - <para> - <acronym>GIST</> indexes now are clusterable (Teodor) - </para> - </listitem> - - <listitem> - <para> - Add a configure flag to allow libedit to be preferred over - <acronym>GNU</> readline (Bruce) - </para> - - <para> - Use configure <literal>--with-libedit-preferred</>. + New macro <literal>PG_VERSION_NUM</> for use by third-party + applications wanting to test the backend version in C using + > and < comparisons (Bruce) </para> </listitem> <listitem> <para> - Allow installation into directories containing spaces - (Peter) + Add a configure flag to allow libedit to be preferred over + <acronym>GNU</> readline (Bruce) </para> - </listitem> - <listitem> <para> - Improve ability to relocate installs in more complex - configurations (Tom) + Use configure <literal>--with-libedit-preferred</>. </para> </listitem> <listitem> <para> - Add support for <productname>Solaris x86_64</> using the - <productname>Solaris</> compiler (Pierre Girard, Theo - Schlossnagle, Bruce) + Allow installation into directories containing spaces + (Peter) </para> </listitem> <listitem> <para> - Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce) - </para> - - <para> - These ports no longer had active maintainers. + Improve ability to relocate installs in more complex + configurations (Tom) </para> </listitem> <listitem> <para> - Make command-line options of postmaster and postgres - identical (Peter) - </para> - - <para> - This allows the postmaster to pass arguments to each backend - without using <literal>-o</>. + Add support for <productname>Solaris x86_64</> using the + <productname>Solaris</> compiler (Pierre Girard, Theo + Schlossnagle, Bruce) </para> </listitem> <listitem> <para> - Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</> - (Mark Wong) + Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</> + (Mark Wong) </para> </listitem> <listitem> <para> - Add <literal>LWLOCK_STATS</> define to report locking - activity (Tom) + Add <literal>LWLOCK_STATS</> define to report locking + activity (Tom) </para> </listitem> <listitem> <para> - Add <acronym>GIN</> (Generalized Inverted iNdex) index - access method (Teodor) + Add <acronym>GIN</> (Generalized Inverted iNdex) index + access method (Teodor) </para> </listitem> <listitem> <para> - Emit warnings for unknown <application>configure</> options - (Martijn van Oosterhout) + Emit warnings for unknown <application>configure</> options + (Martijn van Oosterhout) </para> </listitem> <listitem> <para> - Add <literal>PG_MODULE_MAGIC</> header block to all shared - object files (Martijn van Oosterhout) + Add <literal>PG_MODULE_MAGIC</> header block to all shared + object files (Martijn van Oosterhout) </para> <para> - The magic blocks prevent version mismatches between object - files and servers. + The magic blocks prevent version mismatches between object + files and servers. </para> </listitem> <listitem> <para> - Add a <acronym>GUC</> parameter <envar>seq_page_cost</> - (Tom) + Add a <acronym>GUC</> parameter <envar>seq_page_cost</> + (Tom) </para> </listitem> <listitem> <para> - Re-implement the regression test script as a C program - (Magnus, Tom) + Re-implement the regression test script as a C program + (Magnus, Tom) </para> </listitem> <listitem> <para> - Add <application>DTrace</> support (Robert Lor) + Add <application>DTrace</> support (Robert Lor) </para> </listitem> <listitem> <para> - Allow loadable modules to allocate shared memory and - lightweight locks (Marc Munro) + Allow loadable modules to allocate shared memory and + lightweight locks (Marc Munro) </para> </listitem> <listitem> <para> - Add automatic initialization and finalization of dynamically - loaded libraries (Ralf Engelschall, Tom) + Add automatic initialization and finalization of dynamically + loaded libraries (Ralf Engelschall, Tom) </para> <para> - New functions <function>_PG_init()</> and <function>_PG_fini()</> - are called if the library defines such symbols. Hence we - no longer need to specify an initialization function in - <envar>shared_preload_libraries</>; we can assume that the - library used the <function>_PG_init()</> convention instead. + New functions <function>_PG_init()</> and <function>_PG_fini()</> + are called if the library defines such symbols. Hence we + no longer need to specify an initialization function in + <envar>shared_preload_libraries</>; we can assume that the + library used the <function>_PG_init()</> convention instead. </para> </listitem> <listitem> <para> - Add support for libraries that enhance server-side languages - (Korry Douglas) + Add support for libraries that enhance server-side languages + (Korry Douglas) </para> <para> - Such libraries can be used for debugging or performance - measurement. + Such libraries can be used for debugging or performance + measurement. </para> </listitem> <listitem> <para> - Rename existing <acronym>GUC</> variable - <envar>preload_libraries</> to <envar>shared_preload_libraries</> - (Tom) + Rename existing <acronym>GUC</> variable + <envar>preload_libraries</> to <envar>shared_preload_libraries</> + (Tom) </para> </listitem> <listitem> <para> - Add new variable <envar>server_version_num</> (Greg Sabino - Mullane) + Add new variable <envar>server_version_num</> (Greg Sabino + Mullane) </para> <para> - This is like server_version, but is an integer, e.g. - <literal>80200</>. It allows easy applications version - checks. + This is like server_version, but is an integer, e.g. + <literal>80200</>. It allows easy applications version + checks. </para> </listitem> <listitem> <para> - New <acronym>XML</> documentation section (Bruce) + New <acronym>XML</> documentation section (Bruce) </para> + </listitem> + </sect3> <sect3> @@ -1895,40 +1939,40 @@ For new features, add links to the documentation sections. <listitem> <para> - Major tsearch2 improvements (Oleg, Teodor) + Major tsearch2 improvements (Oleg, Teodor) </para> <itemizedlist> <listitem> <para> - multibyte encoding support, including <acronym>UTF8</> + multibyte encoding support, including <acronym>UTF8</> </para> </listitem> <listitem> <para> - query rewriting support + query rewriting support </para> </listitem> <listitem> <para> - improved ranking functions + improved ranking functions </para> </listitem> <listitem> <para> - thesaurus dictionary support + thesaurus dictionary support </para> </listitem> <listitem> <para> - Ispell dictionaries now recognize <application>MySpell</> - format, used by <application>OpenOffice</>. + Ispell dictionaries now recognize <application>MySpell</> + format, used by <application>OpenOffice</>. </para> </listitem> <listitem> <para> - <acronym>GIN</> support + <acronym>GIN</> support </para> </listitem> @@ -1938,138 +1982,105 @@ For new features, add links to the documentation sections. <listitem> <para> - Add pg_freespacemap to display free space map information - (Mark Kirkwood) - </para> - </listitem> - - <listitem> - <para> - New uninstall scripts (David) + Add pg_freespacemap to display free space map information + (Mark Kirkwood) </para> </listitem> <listitem> <para> - Add pgrowlocks (Tatsuo) - </para> - - <para> - This shows row locking information for a specified table. + New uninstall scripts (David) </para> </listitem> <listitem> <para> - Add <application>Pgadmin</> administration functions to - adminpack (Dave) + Add pgrowlocks (Tatsuo) </para> <para> - These functions provide additional file system access - routines not present in the default <productname>PostgreSQL</> - server. + This shows row locking information for a specified table. </para> </listitem> <listitem> <para> - Add index information to pgstattuple (ITAGAKI Takahiro, - Satoshi Nagayasu) + Add <application>Pgadmin</> administration functions to + adminpack (Dave) </para> - </listitem> - <listitem> <para> - pgcrypto now has all planned functionality (Marko Kreen) + These functions provide additional file system access + routines not present in the default <productname>PostgreSQL</> + server. </para> </listitem> <listitem> <para> - Update cube (Joshua Reich) - </para> - - <para> - New functions are <function>cube(float[])</>, - <function>cube(float[], float[])</>, and - <function>cube_subset(cube, int4[])</>. + Add index information to pgstattuple (ITAGAKI Takahiro, + Satoshi Nagayasu) </para> </listitem> <listitem> <para> - Added async query capability to dblink (Kai Londenberg, - Joe Conway) + pgcrypto now has all planned functionality (Marko Kreen) </para> </listitem> <listitem> <para> - Add sslinfo (Victor Wagner) + Update cube (Joshua Reich) </para> <para> - Reports information about the current <acronym>SSL</> - certificate. + New functions are <function>cube(float[])</>, + <function>cube(float[], float[])</>, and + <function>cube_subset(cube, int4[])</>. </para> </listitem> <listitem> <para> - Remove ora2pg, now at <ulink - url="http://www.samse.fr/GPL/ora2pg"></ulink> + Added async query capability to dblink (Kai Londenberg, + Joe Conway) </para> </listitem> <listitem> <para> - Remove contrib modules that have been migrated to pgfoundry: - adddepend, dbase, dbmirror, fulltextindex, mac, userlock + Add sslinfo (Victor Wagner) </para> - </listitem> - <listitem> <para> - Remove abandoned modules: mSQL-interface, ips + Reports information about the current <acronym>SSL</> + certificate. </para> </listitem> <listitem> <para> - Add hstore module (Oleg, Teodor) + Add hstore module (Oleg, Teodor) </para> </listitem> <listitem> <para> - Add isn module, replacing isbn_issn (Jeremy Kronuz) + Add isn module, replacing isbn_issn (Jeremy Kronuz) </para> <para> - This now supports <acronym>EAN13</>, <acronym>UPC</>, - <acronym>ISBN</> (books), <acronym>ISMN</> (music), and - <acronym>ISSN</> (serials). + This now supports <acronym>EAN13</>, <acronym>UPC</>, + <acronym>ISBN</> (books), <acronym>ISMN</> (music), and + <acronym>ISSN</> (serials). </para> </listitem> <listitem> <para> - New operators for array-subset comparisons (<literal>@></>, - <literal><@</>, <literal>&&</>) (Tom) - </para> - </listitem> - - <listitem> - <para> - In xml, rename <function>xml_valid()</> to - <function>xml_is_well_formed()</> (Tom) - </para> - - <para> - <function>xml_valid()</> will remain for backward compability, - but its behavior will change to do schema checks in future - releases. + New operators for array-subset comparisons (<literal>@></>, + <literal><@</>, <literal>&&</>) (Tom) </para> </listitem> |