Commit 88057d0c authored by Bruce Momjian's avatar Bruce Momjian

Update migration changes, more cleanups.

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