-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.618 2009/03/30 20:32:49 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.619 2009/03/30 22:01:15 momjian Exp $ -->
<!--
Typical markup:
</itemizedlist>
- </sect3>
+ </sect3>
<sect3>
<title>Server Settings</title>
</itemizedlist>
- </sect3>
+ </sect3>
- <sect3>
- <title>Queries</title>
+ <sect3>
+ <title>Queries</title>
<itemizedlist>
</itemizedlist>
- </sect3>
+ </sect3>
- <sect3>
- <title>General Functions and Operators</title>
+ <sect3>
+ <title>Functions and Operators</title>
<itemizedlist>
</itemizedlist>
- </sect3>
-
- <sect3>
+ <sect4>
<title>Temporal Functions and Operators</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Have <function>to_char()</>'s localized month/day names depend
- on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
- Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <function>to_date()</> and <function>to_timestamp()</>
- to more consistently report errors on invalid input (Brendan
- Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide consistent rounding for fractional seconds (Ron Mayer)
- bjm: combine with another item?
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_timestamp()</> to not require upper/lower case
- matching for meridian (<literal>AM</>/<literal>PM</>) and era
- (<literal>BC</>/<literal>AD</>) format designations (Brendan
- Jurd)
- </para>
-
- <para>
- For example, input value <literal>ad</> now matches the format
- string <literal>AD</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require the existence of periods in <function>to_timestamp()</>
- meridian (<literal>AM</>/<literal>PM</>) and era
- (<literal>BC</>/<literal>AD</>) format designations to match
- (Brendan Jurd)
- </para>
-
- <para>
- For example, input value <literal>AD</> now does not match
- format string <literal>A.D.</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>DateStyle</> no longer controls <type>INTERVAL</>
- output (use new variable <varname>IntervalStyle</>)
- </para>
- </listitem>
-
- </itemizedlist>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have <function>to_char()</>'s localized month/day names depend
+ on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
+ Taveira de Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Cause <function>to_date()</> and <function>to_timestamp()</>
+ to more consistently report errors on invalid input (Brendan
+ Jurd)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Provide consistent rounding for fractional seconds (Ron Mayer)
+ bjm: combine with another item?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <function>to_timestamp()</> to not require upper/lower case
+ matching for meridian (<literal>AM</>/<literal>PM</>) and era
+ (<literal>BC</>/<literal>AD</>) format designations (Brendan
+ Jurd)
+ </para>
+
+ <para>
+ For example, input value <literal>ad</> now matches the format
+ string <literal>AD</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require the existence of periods in <function>to_timestamp()</>
+ meridian (<literal>AM</>/<literal>PM</>) and era
+ (<literal>BC</>/<literal>AD</>) format designations to match
+ (Brendan Jurd)
+ </para>
+
+ <para>
+ For example, input value <literal>AD</> now does not match
+ format string <literal>A.D.</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <varname>DateStyle</> no longer controls <type>INTERVAL</>
+ output (use new variable <varname>IntervalStyle</>)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
</sect3>
</sect3>
<sect3>
- <title>Server Settings</title>
- <itemizedlist>
+ <title>Server</title>
- <listitem>
- <para>
- Convert many <filename>postgresql.conf</> settings to enumerated
- values so <literal>pg_settings</> can easily display valid
- values (Magnus)
- </para>
- </listitem>
+ <sect4>
+ <title>Settings</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Convert many <filename>postgresql.conf</> settings to enumerated
+ values so <literal>pg_settings</> can easily display valid
+ values (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <varname>cursor_tuple_fraction</> parameter to control the
+ fraction of a cursor's rows expected to be requested by the
+ user (Robert Hell)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow underscores in <filename>postgresql.conf</> custom variable
+ classes (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Authentication</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Report appropriate error message for combination of <literal>MD5</>
+ authentication and <varname>db_user_namespace</> enabled (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support regular expressions in <filename>pg_ident.conf</>
+ (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
+ to be changed without restarting the postmaster (Magnus)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4 id="release-8-4-pg-hba-conf">
+ <title><filename>pg_hba.conf</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Parse <filename>pg_hba.conf</> in the postmaster so errors are
+ reported on reload (Magnus)
+ </para>
+
+ <para>
+ Previously errors in the file wouldn't be detected until clients
+ tried to connect, which could leave the system with a broken
+ file loaded.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove the <literal>sameuser</> option, making it the default
+ if no usermap is specified (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Change all authentication options to be <literal>name=value</>
+ settings (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow usermap parameter for all external authentication methods
+ (Magnus)
+ </para>
+
+ <para>
+ Previously this was only supported for <literal>ident</>
+ authentication.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <literal>ident</> authentication over Unix-domain sockets
+ on <productname>Solaris</> (Garick Hamlin)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>clientcert</> option to control requesting of a
+ client certificate (Magnus)
+ </para>
+
+ <para>
+ Previously this was controlled by the presence of a root
+ certificate file in the server's data directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>cert</> authentication method to allow user
+ authentication via <acronym>SSL</> certificates (Magnus)
+ </para>
+
+ <para>
+ Previously <acronym>SSL</> certificates could only verify that
+ the client had access to a certificate, not authenticate a
+ user.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
+ realm and <literal>krb5</> host settings to be specified in
+ <filename>pg_hba.conf</> (Magnus)
+ </para>
+
+ <para>
+ These override the settings in <filename>postgresql.conf</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>krb5</>, <literal>gssapi</>, and <literal>sspi</>
+ <varname>include_realm</> parameter (Magnus)
+ </para>
+
+ <para>
+ This allows identical usernames from different realms to be
+ authenticated as different database users using usermaps.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show all parsing errors instead of aborting after the first
+ one (Selena Deckelmann)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ <sect3>
+ <title>Continuous Archiving</title>
+ <itemizedlist>
<listitem>
<para>
- Add <varname>cursor_tuple_fraction</> parameter to control the
- fraction of a cursor's rows expected to be requested by the
- user (Robert Hell)
+ Have <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
+ files to be archived (Simon)
</para>
- </listitem>
- <listitem>
<para>
- Allow underscores in <filename>postgresql.conf</> custom variable
- classes (Tom)
+ This guarantees that the backup is valid at the time
+ <function>pg_stop_backup()</> completes.
</para>
</listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Authentication</title>
- <itemizedlist>
-
<listitem>
<para>
- Report appropriate error message for combination of <literal>MD5</>
- authentication and <varname>db_user_namespace</> enabled (Bruce)
+ Prevent normal shutdown if a continuous archiving base backup
+ is in progress (Laurenz Albe)
</para>
</listitem>
<listitem>
<para>
- Support regular expressions in <filename>pg_ident.conf</>
- (Magnus)
+ Cancel a continuous archiving base backup if a fast shutdown
+ is requested (Laurenz Albe)
</para>
</listitem>
<listitem>
<para>
- Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
- to be changed without restarting the postmaster (Magnus)
+ Allow <filename>recovery.conf</> boolean variables to take the
+ same range of string values as <filename>postgresql.conf</>
+ (Bruce)
</para>
</listitem>
</sect3>
- <sect3 id="release-8-4-pg-hba-conf">
- <title><filename>pg_hba.conf</></title>
+ <sect3>
+ <title>Monitoring</title>
<itemizedlist>
<listitem>
<para>
- Parse <filename>pg_hba.conf</> in the postmaster so errors are
- reported on reload (Magnus)
- </para>
-
- <para>
- Previously errors in the file wouldn't be detected until clients
- tried to connect, which could leave the system with a broken
- file loaded.
+ Add <function>pg_conf_load_time()</> to report when
+ the Postgres configuration files were last loaded (George
+ Gensure)
</para>
</listitem>
<listitem>
<para>
- Remove the <literal>sameuser</> option, making it the default
- if no usermap is specified (Magnus)
+ Add <function>pg_terminate_backend()</> to safely terminate a
+ backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
</para>
</listitem>
<listitem>
<para>
- Change all authentication options to be <literal>name=value</>
- settings (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow usermap parameter for all external authentication methods
- (Magnus)
+ Add ability to track user-defined functions call counts and
+ runtimes via parameter <varname>track_functions</> (Martin
+ Pihlak)
</para>
-
+
<para>
- Previously this was only supported for <literal>ident</>
- authentication.
+ Function statistics appear in a new system table,
+ <literal>pg_stat_user_functions</>. However, inlined
+ <acronym>SQL</> functions are not tracked.
</para>
</listitem>
<listitem>
<para>
- Allow <literal>ident</> authentication over Unix-domain sockets
- on <productname>Solaris</> (Garick Hamlin)
+ Allow specification of the maximum <literal>pg_stat_activity</>
+ query string size via <varname>track_activity_query_size</>
+ parameter (Thomas Lee)
</para>
</listitem>
<listitem>
<para>
- Add <literal>clientcert</> option to control requesting of a
- client certificate (Magnus)
- </para>
-
- <para>
- Previously this was controlled by the presence of a root
- certificate file in the server's data directory.
+ Improve syslog performance by increasing the maximum line length
+ (Tom)
</para>
</listitem>
<listitem>
<para>
- Add <literal>cert</> authentication method to allow user
- authentication via <acronym>SSL</> certificates (Magnus)
- </para>
-
- <para>
- Previously <acronym>SSL</> certificates could only verify that
- the client had access to a certificate, not authenticate a
- user.
+ Add read-only <filename>postgresql.conf</> variables <varname>segment_size</>,
+ <varname>wal_block_size</>, and <varname>wal_segment_size</> (Bernd Helmle)
</para>
</listitem>
<listitem>
<para>
- Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
- realm and <literal>krb5</> host settings to be specified in
- <filename>pg_hba.conf</> (Magnus)
+ When reporting a deadlock, report all session queries involved
+ in the deadlock to the server log (Itagaki Takahiro)
</para>
+ </listitem>
+ <listitem>
<para>
- These override the settings in <filename>postgresql.conf</>.
+ New <function>pg_stat_get_activity(pid)</> function to return
+ information about a specific process id (Magnus)
</para>
</listitem>
<listitem>
<para>
- Add <literal>krb5</>, <literal>gssapi</>, and <literal>sspi</>
- <varname>include_realm</> parameter (Magnus)
+ Move the server statistics file into the subdirectory
+ <filename>pg_stat_tmp</> and allow its location to be specified
+ via <varname>stats_temp_directory</> (Magnus)
</para>
<para>
- This allows identical usernames from different realms to be
- authenticated as different database users using usermaps.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show all parsing errors instead of aborting after the first
- one (Selena Deckelmann)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Continuous Archiving</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Have <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
- files to be archived (Simon)
- </para>
-
- <para>
- This guarantees that the backup is valid at the time
- <function>pg_stop_backup()</> completes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent normal shutdown if a continuous archiving base backup
- is in progress (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cancel a continuous archiving base backup if a fast shutdown
- is requested (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>recovery.conf</> boolean variables to take the
- same range of string values as <filename>postgresql.conf</>
- (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Monitoring</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <function>pg_conf_load_time()</> to report when
- the Postgres configuration files were last loaded (George
- Gensure)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_terminate_backend()</> to safely terminate a
- backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to track user-defined functions call counts and
- runtimes via parameter <varname>track_functions</> (Martin
- Pihlak)
- </para>
-
- <para>
- Function statistics appear in a new system table,
- <literal>pg_stat_user_functions</>. However, inlined
- <acronym>SQL</> functions are not tracked.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow specification of the maximum <literal>pg_stat_activity</>
- query string size via <varname>track_activity_query_size</>
- parameter (Thomas Lee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve syslog performance by increasing the maximum line length
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add read-only <filename>postgresql.conf</> variables <varname>segment_size</>,
- <varname>wal_block_size</>, and <varname>wal_segment_size</> (Bernd Helmle)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reporting a deadlock, report all session queries involved
- in the deadlock to the server log (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <function>pg_stat_get_activity(pid)</> function to return
- information about a specific process id (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move the server statistics file into the subdirectory
- <filename>pg_stat_tmp</> and allow its location to be specified
- via <varname>stats_temp_directory</> (Magnus)
- </para>
-
- <para>
- This allows the statistics file to be placed in a
- <acronym>RAM</>-resident directory to reduce I/O requirements.
- On startup/shutdown, the file is copied to the top-level
- <literal>$PGDATA</> directory so it is preserved between
- restarts.
+ This allows the statistics file to be placed in a
+ <acronym>RAM</>-resident directory to reduce I/O requirements.
+ On startup/shutdown, the file is copied to the top-level
+ <literal>$PGDATA</> directory so it is preserved between
+ restarts.
</para>
</listitem>
</itemizedlist>
+ <sect4>
+ <title><command>TRUNCATE</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <command>TRUNCATE TABLE</> ...
+ <literal>RESTART</>/<literal>CONTINUE IDENTITY</> clauses
+ (Zoltan Boszormenyi)
+ </para>
+
+ <para>
+ The start value of a sequence can be changed by <command>ALTER
+ SEQUENCE START WITH</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add a separate <command>TRUNCATE</> permission (Robert Haas)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><command>EXPLAIN</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have <command>EXPLAIN VERBOSE</> show the output columns of a
+ query (Tom)
+ </para>
+
+ <para>
+ Previously <command>EXPLAIN VERBOSE</> output an internal
+ representation of the query plan. (That behavior is now
+ available via <varname>debug_print_plan</>.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><literal>LIMIT</>/<literal>OFFSET</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Allow <literal>LIMIT</> and <literal>OFFSET</> to use subselects
+ as arguments (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Document that <literal>LIMIT NULL</> and <literal>OFFSET NULL</>
+ have no effect (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <acronym>SQL</>-standards syntax for
+ <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
+ </para>
+
+ <para>
+ <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
+ ONLY</>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
</sect3>
-
+
<sect3>
- <title><command>TRUNCATE</></title>
+ <title>Object Manipulation</title>
<itemizedlist>
<listitem>
<para>
- Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>TRUNCATE TABLE</> ...
- <literal>RESTART</>/<literal>CONTINUE IDENTITY</> clauses
- (Zoltan Boszormenyi)
- </para>
-
- <para>
- The start value of a sequence can be changed by <command>ALTER
- SEQUENCE START WITH</>.
+ Add support for column-level privileges (Stephen Frost, KaiGai
+ Kohei)
</para>
</listitem>
<listitem>
<para>
- Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
+ Improve reporting of dependencies during <command>DROP</>
+ commands (Alex Hunsaker)
</para>
</listitem>
<listitem>
<para>
- Add a separate <command>TRUNCATE</> permission (Robert Haas)
+ Refactor multi-object <command>DROP</> operations so conflicting
+ dependencies do not generate an error (Alex Hunsaker)
</para>
</listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><command>EXPLAIN</></title>
- <itemizedlist>
-
<listitem>
<para>
- Have <command>EXPLAIN VERBOSE</> show the output columns of a
- query (Tom)
- </para>
-
- <para>
- Previously <command>EXPLAIN VERBOSE</> output an internal
- representation of the query plan. (That behavior is now
- available via <varname>debug_print_plan</>.)
+ Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
+ AS</>, per the <acronym>SQL</> standard (Tom, Peter)
</para>
</listitem>
<listitem>
<para>
- Have <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
+ Add support for user-defined I/O conversion casts (Heikki)
</para>
</listitem>
<listitem>
<para>
- Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
+ Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
+ transition datatype (for super-users only) (Tom)
</para>
</listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><literal>LIMIT</>/<literal>OFFSET</></title>
- <itemizedlist>
-
<listitem>
<para>
- Allow <literal>LIMIT</> and <literal>OFFSET</> to use subselects
- as arguments (Tom)
+ Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
</para>
- </listitem>
- <listitem>
<para>
- Document that <literal>LIMIT NULL</> and <literal>OFFSET NULL</>
- have no effect (Tom)
+ This simplifies creation of data types like existing types.
</para>
</listitem>
<listitem>
<para>
- Add <acronym>SQL</>-standards syntax for
- <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
- </para>
-
- <para>
- <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
- ONLY</>.
+ Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
+ <emphasis>end</> of a view (Robert Haas)
</para>
</listitem>
</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for column-level privileges (Stephen Frost, KaiGai
- Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reporting of dependencies during <command>DROP</>
- commands (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Refactor multi-object <command>DROP</> operations so conflicting
- dependencies do not generate an error (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
- AS</>, per the <acronym>SQL</> standard (Tom, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for user-defined I/O conversion casts (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
- transition datatype (for super-users only) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
- </para>
-
- <para>
- This simplifies creation of data types like existing types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
- <emphasis>end</> of a view (Robert Haas)
- </para>
- </listitem>
+ <sect4>
+ <title><command>ALTER</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <command>ALTER SEQUENCE ... RESTART</> (no parameter) to
+ reset a sequence to its initial value (Zoltan Boszormenyi)
+ bjm: compatibility problem?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify the <command>ALTER TABLE</> syntax to allow all reasonable
+ combinations for tables, indexes, sequences, and views (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New syntax supported (these formerly required <command>ALTER
+ TABLE</>)
+ </para>
+
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <command>ALTER SEQUENCE OWNER TO</>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <command>ALTER VIEW OWNER TO</>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <command>ALTER VIEW SET SCHEMA</>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
+ ... SET DATA TYPE</> (Peter)
+ </para>
+
+ <para>
+ This is <acronym>SQL</>-standard syntax for functionality that
+ was already supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
+ to remove <type>OID</> values (Tom)
+ </para>
+
+ <para>
+ Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
+ table to add <type>OID</>s.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Database Manipulation</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Improve reporting of
+ <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
+ failure when uncommitted prepared transactions are the cause
+ (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> database-level
+ settings (Radek Strnad, Heikki)
+ </para>
+
+ <para>
+ This makes collation similar to encoding, which was always
+ configurable per database.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve checks that the database encoding, collation
+ (<varname>LC_COLLATE</>), and character classes
+ (<varname>LC_CTYPE</>) match (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
+ to a new tablespace (Guillaume Lelarge, Bernd Helmle)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
- </itemizedlist>
+ <sect3>
+ <title>Utility Operations</title>
+ <sect4>
+ <title>Indexes</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Dramatically improve the speed of building and accessing hash
+ indexes (Tom Raney, Shreya Bhargava, Kenneth Marshall)
+ </para>
+
+ <para>
+ This allows hash indexes to be sometimes faster than btree
+ indexes. However, hash indexes are still not crash-safe.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have hash indexes store only the hashed value, not the full
+ indexed columns (Xiao Meng)
+ </para>
+
+ <para>
+ This greatly reduces the size of hash indexes for long indexed
+ values, and improves performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Special xxx_pattern_ops <literal>LIKE</> indexes can now be
+ used for simple equality comparisons (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Full Text Indexes</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove the requirement to use <literal>@@@</> when doing
+ <acronym>GIN</> weighted lookups on full text indexes (Tom)
+ </para>
+
+ <para>
+ The normal <literal>@@</> text search operator can be used
+ instead.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add an optimizer selectivity function for <literal>@@</> text
+ search operations (Jan Urbanski)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add partial match support for <acronym>GIN</> indexes (Teodor
+ Sigaev, Oleg Bartunov)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow prefix matching in full text searches (Teodor Sigaev,
+ Oleg Bartunov)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><command>VACUUM</></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Allow relation forks to track free space (Heikki)
+ </para>
+
+ <para>
+ This allows the recording of all free space discovered by vacuum
+ in <filename>*.fsm</> files, rather than having to limit
+ recording to a fixed-sized shared memory area;
+ <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
+ settings have been removed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New visibility map file to track pages that do not require
+ vacuum (Heikki)
+ </para>
+
+ <para>
+ This allows <command>VACUUM</> to avoid sequentially scanning
+ a table when only a portion of the table needs vacuuming.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Track explicit transaction snapshots (Alvaro)
+ </para>
+
+ <para>
+ This improves space reuse by vacuum in the presence of long-running
+ transactions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <varname>vacuum_freeze_table_age</> parameter to control
+ when <command>VACUUM</> should ignore the visibility map and
+ do a full table scan to set frozen xids (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add ability to specify autovacuum and <acronym>TOAST</> parameters
+ in <command>CREATE TABLE</> (Alvaro, Euler Taveira de Oliveira)
+ </para>
+
+ <para>
+ Autovacuum options used to be stored in a system table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>--freeze</> option to <application>vacuumdb</>
+ (Bruce)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Other Utility Operations</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add verbose option to the <command>CLUSTER</> command and
+ <application>clusterdb</> (Jim Cox)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Decrease memory requirements for recording pending trigger
+ events (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
</sect3>
-
+
<sect3>
- <title><command>ALTER</></title>
+ <title>Data Types</title>
<itemizedlist>
<listitem>
<para>
- Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER SEQUENCE ... RESTART</> (no parameter) to
- reset a sequence to its initial value (Zoltan Boszormenyi)
- bjm: compatibility problem?
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify the <command>ALTER TABLE</> syntax to allow all reasonable
- combinations for tables, indexes, sequences, and views (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New syntax supported (these formerly required <command>ALTER
- TABLE</>)
- </para>
-
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <command>ALTER SEQUENCE OWNER TO</>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW OWNER TO</>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW SET SCHEMA</>
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
- ... SET DATA TYPE</> (Peter)
- </para>
-
- <para>
- This is <acronym>SQL</>-standard syntax for functionality that
- was already supported.
+ Add a <literal>CaseSensitive</> option for text search synonym
+ dictionaries (Simon)
</para>
</listitem>
<listitem>
<para>
- Have <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
- to remove <type>OID</> values (Tom)
- </para>
-
- <para>
- Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
- table to add <type>OID</>s.
+ Improve the precision of <type>NUMERIC</> division (Tom)
</para>
</listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Database Manipulation</title>
- <itemizedlist>
-
<listitem>
<para>
- Improve reporting of
- <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
- failure when uncommitted prepared transactions are the cause
+ Add <type>int2</> with <type>int8</> basic arithmetic operators
(Tom)
</para>
- </listitem>
-
- <listitem>
- <para>
- Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> database-level
- settings (Radek Strnad, Heikki)
- </para>
<para>
- This makes collation similar to encoding, which was always
- configurable per database.
+ This simplifies casting requirements.
</para>
</listitem>
<listitem>
<para>
- Improve checks that the database encoding, collation
- (<varname>LC_COLLATE</>), and character classes
- (<varname>LC_CTYPE</>) match (Heikki)
+ Allow <type>UUID</> input to accept optional hyphens after
+ every four digits (Robert Haas)
</para>
</listitem>
<listitem>
<para>
- Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
- to a new tablespace (Guillaume Lelarge, Bernd Helmle)
+ Accept <literal>on</>/<literal>off</> as boolean data type
+ values (Itagaki Takahiro)
</para>
</listitem>
</itemizedlist>
- </sect3>
-
- <sect3>
- <title>General Indexes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Dramatically improve the speed of building and accessing hash
- indexes (Tom Raney, Shreya Bhargava, Kenneth Marshall)
- </para>
-
- <para>
- This allows hash indexes to be sometimes faster than btree
- indexes. However, hash indexes are still not crash-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have hash indexes store only the hashed value, not the full
- indexed columns (Xiao Meng)
- </para>
-
- <para>
- This greatly reduces the size of hash indexes for long indexed
- values, and improves performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Special xxx_pattern_ops <literal>LIKE</> indexes can now be
- used for simple equality comparisons (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Full Text Indexes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Remove the requirement to use <literal>@@@</> when doing
- <acronym>GIN</> weighted lookups on full text indexes (Tom)
- </para>
-
- <para>
- The normal <literal>@@</> text search operator can be used
- instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an optimizer selectivity function for <literal>@@</> text
- search operations (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add partial match support for <acronym>GIN</> indexes (Teodor
- Sigaev, Oleg Bartunov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow prefix matching in full text searches (Teodor Sigaev,
- Oleg Bartunov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><command>VACUUM</></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow relation forks to track free space (Heikki)
- </para>
-
- <para>
- This allows the recording of all free space discovered by vacuum
- in <filename>*.fsm</> files, rather than having to limit
- recording to a fixed-sized shared memory area;
- <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
- settings have been removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New visibility map file to track pages that do not require
- vacuum (Heikki)
- </para>
-
- <para>
- This allows <command>VACUUM</> to avoid sequentially scanning
- a table when only a portion of the table needs vacuuming.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track explicit transaction snapshots (Alvaro)
- </para>
-
- <para>
- This improves space reuse by vacuum in the presence of long-running
- transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>vacuum_freeze_table_age</> parameter to control
- when <command>VACUUM</> should ignore the visibility map and
- do a full table scan to set frozen xids (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to specify autovacuum and <acronym>TOAST</> parameters
- in <command>CREATE TABLE</> (Alvaro, Euler Taveira de Oliveira)
- </para>
-
- <para>
- Autovacuum options used to be stored in a system table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>--freeze</> option to <application>vacuumdb</>
- (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
+ <sect4>
+ <title>Temporal Data Types</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Reject year <literal>0 BC</> and years <literal>000</> and
+ <literal>0000</> (Tom)
+ </para>
+
+ <para>
+ Previously these were interpreted as <literal>1 BC</>; years
+ <literal>0</> and <literal>00</> are assumed to be the year
+ 2000.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Include <acronym>SGT</> (Singapore time) as a valid time zone
+ abbreviation (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support the <acronym>IS0 8601</> <type>interval</> syntax (Tom,
+ Kevin Grittner)
+ </para>
+
+ <para>
+ For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
+ supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <type>INTERVAL</> precision to be specified after the
+ last field, for <acronym>SQL</>-standards compliance (Tom)
+ </para>
+
+ <para>
+ Formerly the precision had to be specified after the keyword
+ <type>INTERVAL</> (this syntax is still supported). Data type
+ definitions will now be output using the new format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support <literal>infinite</> dates (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <varname>IntervalStyle</> parameter
+ which controls how <type>INTERVAL</> values are output (Ron Mayer)
+ </para>
+
+ <para>
+ Valid value are: <literal>postgres</>, <literal>postgres_verbose</>,
+ <literal>sql_standard</>, <literal>iso_8601</>. This also
+ controls the handling of negative <type>INTERVAL</> input when only
+ some fields have positive/negative designations.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <type>INTERVAL</> seconds rounding more consistent across
+ output formats (Ron Mayer)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Arrays</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have cast on <type>ARRAY</> apply to all elements, not just
+ the array result (Brendan Jurd)
+ </para>
+
+ <para>
+ This allows <literal>NULL</> <type>ARRAY</> entries as long as
+ they are properly cast.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
+ to match the <acronym>SQL</> standard (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>array_ndims()</> to return the number
+ of dimensions of an array (Robert Haas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>array_length()</> to return the length
+ of an array for the specified dimensions (Jim Nasby, Robert
+ Haas, Peter Eisentraut)
+ </para>
+
+ <para>
+ Also add identically-functioning <acronym>SQL</>-standard
+ function <function>cardinality()</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new aggregate function <function>array_agg()</>, which
+ returns all aggregated values as a single array (Robert Haas,
+ Jeff Davis, Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>unnest()</>, which converts an array to
+ individual row values (Tom)
+ </para>
+
+ <para>
+ This is the opposite of <function>array_agg()</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>array_fill()</> to create arrays initialized with
+ a value (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>generate_subscripts()</> to generate array
+ subscripts (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Generate proper error if a <type>SERIAL</> array is specified
+ (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+ <sect4>
+ <title>Wide-Value Storage (<acronym>TOAST</>)</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Consider <acronym>TOAST</> compression on values as short as
+ 32 bytes (previously 256 bytes) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require 25% of space savings before using <acronym>TOAST</>
+ compression (previously 20%) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Be more aggressive in storing <literal>EXTERNAL</> and
+ <literal>EXTENDED</> column values in <acronym>TOAST</>(Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
</sect3>
-
+
<sect3>
- <title>Other Utility Operations</title>
+ <title>Functions</title>
<itemizedlist>
<listitem>
<para>
- Add verbose option to the <command>CLUSTER</> command and
- <application>clusterdb</> (Jim Cox)
+ Document that <function>setseed()</> allows values from
+ <literal>-1</> to <literal>1</> (not just <literal>0</> to
+ <literal>1</>), and enforce the valid range (Kris Jurka)
</para>
</listitem>
<listitem>
<para>
- Decrease memory requirements for recording pending trigger
- events (Tom)
+ Add server side function <function>lo_import(filename, oid)</>
+ (Tatsuo)
</para>
</listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>General Data Types</title>
- <itemizedlist>
-
<listitem>
<para>
- Add a <literal>CaseSensitive</> option for text search synonym
- dictionaries (Simon)
+ Add <function>quote_nullable()</>, which behaves like
+ <function>quote_literal()</> but returns <literal>NULL</> for
+ a null argument (Brendan Jurd)
</para>
</listitem>
<listitem>
<para>
- Improve the precision of <type>NUMERIC</> division (Tom)
+ Improve full text search <function>headline()</> generation to
+ allow several fragments (Sushant Sinha)
</para>
</listitem>
<listitem>
<para>
- Add <type>int2</> with <type>int8</> basic arithmetic operators
- (Tom)
- </para>
-
- <para>
- This simplifies casting requirements.
+ Add <function>suppress_redundant_updates_trigger()</> trigger
+ function to avoid non-data-changing updates (Andrew)
</para>
</listitem>
<listitem>
<para>
- Allow <type>UUID</> input to accept optional hyphens after
- every four digits (Robert Haas)
+ Add <function>div(NUMERIC, NUMERIC)</> for <type>NUMERIC</>
+ division, without rounding (Tom)
</para>
</listitem>
<listitem>
<para>
- Accept <literal>on</>/<literal>off</> as boolean data type
- values (Itagaki Takahiro)
+ Add <type>TIMESTAMP</> and <type>TIMESTAMPTZ</> versions of
+ <function>generate_series()</> (Hitoshi Harada)
</para>
</listitem>
</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Temporal Data Types</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Reject year <literal>0 BC</> and years <literal>000</> and
- <literal>0000</> (Tom)
- </para>
-
- <para>
- Previously these were interpreted as <literal>1 BC</>; years
- <literal>0</> and <literal>00</> are assumed to be the year
- 2000.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include <acronym>SGT</> (Singapore time) as a valid time zone
- abbreviation (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support the <acronym>IS0 8601</> <type>interval</> syntax (Tom,
- Kevin Grittner)
- </para>
-
- <para>
- For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
- supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <type>INTERVAL</> precision to be specified after the
- last field, for <acronym>SQL</>-standards compliance (Tom)
- </para>
-
- <para>
- Formerly the precision had to be specified after the keyword
- <type>INTERVAL</> (this syntax is still supported). Data type
- definitions will now be output using the new format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>infinite</> dates (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>IntervalStyle</> parameter
- which controls how <type>INTERVAL</> values are output (Ron Mayer)
- </para>
-
- <para>
- Valid value are: <literal>postgres</>, <literal>postgres_verbose</>,
- <literal>sql_standard</>, <literal>iso_8601</>. This also
- controls the handling of negative <type>INTERVAL</> input when only
- some fields have positive/negative designations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <type>INTERVAL</> seconds rounding more consistent across
- output formats (Ron Mayer)
- </para>
- </listitem>
-
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Arrays</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Have cast on <type>ARRAY</> apply to all elements, not just
- the array result (Brendan Jurd)
- </para>
-
- <para>
- This allows <literal>NULL</> <type>ARRAY</> entries as long as
- they are properly cast.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
- to match the <acronym>SQL</> standard (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_ndims()</> to return the number
- of dimensions of an array (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_length()</> to return the length
- of an array for the specified dimensions (Jim Nasby, Robert
- Haas, Peter Eisentraut)
- </para>
-
- <para>
- Also add identically-functioning <acronym>SQL</>-standard
- function <function>cardinality()</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new aggregate function <function>array_agg()</>, which
- returns all aggregated values as a single array (Robert Haas,
- Jeff Davis, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>unnest()</>, which converts an array to
- individual row values (Tom)
- </para>
-
- <para>
- This is the opposite of <function>array_agg()</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_fill()</> to create arrays initialized with
- a value (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>generate_subscripts()</> to generate array
- subscripts (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Generate proper error if a <type>SERIAL</> array is specified
- (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Wide-Value Storage (<acronym>TOAST</>)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Consider <acronym>TOAST</> compression on values as short as
- 32 bytes (previously 256 bytes) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require 25% of space savings before using <acronym>TOAST</>
- compression (previously 20%) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more aggressive in storing <literal>EXTERNAL</> and
- <literal>EXTENDED</> column values in <acronym>TOAST</>(Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>General Functions</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Document that <function>setseed()</> allows values from
- <literal>-1</> to <literal>1</> (not just <literal>0</> to
- <literal>1</>), and enforce the valid range (Kris Jurka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server side function <function>lo_import(filename, oid)</>
- (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>quote_nullable()</>, which behaves like
- <function>quote_literal()</> but returns <literal>NULL</> for
- a null argument (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve full text search <function>headline()</> generation to
- allow several fragments (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>suppress_redundant_updates_trigger()</> trigger
- function to avoid non-data-changing updates (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>div(NUMERIC, NUMERIC)</> for <type>NUMERIC</>
- division, without rounding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <type>TIMESTAMP</> and <type>TIMESTAMPTZ</> versions of
- <function>generate_series()</> (Hitoshi Harada)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Information Functions</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Implement <function>current_query()</> for use by functions
- that need to know the currently running query (Tomas Doran)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_get_keywords()</> to return predefined
- parser keywords (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_get_functiondef()</> to see a functions
- definition (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <function>pg_relation_size()</> to handle free space
- map (<filename>*.fsm</>) files (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <function>pg_relation_size()</> to use <literal>regclass</>
- (Heikki)
- </para>
-
- <para>
- <function>pg_relation_size(data_type_name)</> no longer works.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>boot_val</> and <literal>reset_val</> columns to
- <literal>pg_settings</> output (Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <varname>CURRENT_CATALOG</>,
- <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
- SCHEMA</> (Peter)
- </para>
-
- <para>
- These are <acronym>SQL</>-standard capabilities.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_typeof()</> which returns the data type
- of any value (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <function>version()</> return information about whether
- the server is a 32 or 64-bit binary (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the behavior of information schema columns
- <literal>is_insertable_into</> and <literal>is_updatable</> to
- be consistent (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert remaining builtin set-returning functions to use
- <literal>OUT</> parameters (Jaime Casanova)
- </para>
-
- <para>
- This makes it possible to call these functions without specifying
- a column list: <function>pg_show_all_settings()</>,
- <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
- <function>pg_prepared_statement()</>, <function>pg_cursor()</>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <function>pg_*_is_visible()</> and
- <function>has_*_privilege()</> functions return <literal>NULL</>
- for invalid oids, rather than generate an error (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>has_column_privilege()</> and
- <function>has_any_column_privilege()</> functions (Stephen
- Frost, Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Function Creation</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support variadic functions (functions with a variable number
- of arguments) (Pavel Stehule)
- </para>
-
- <para>
- Only trailing arguments can be optional, and they all must be
- of the same data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>DEFAULT</> values for function arguments (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <acronym>SQL</>-language functions to return the output
- of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
- <literal>RETURNING</> clause (Tom)
- </para>
-
- <para>
- Formerly only <command>SELECT</> was supported.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/PgSQL Server-Side Language</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support <literal>EXECUTE USING</> (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow looping over an open cursor using a <literal>FOR</>
- loop (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>RETURN QUERY EXECUTE</> (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the <literal>RAISE</> command: (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Support <literal>DETAIL</> and <literal>HINT</> fields
- </para>
- </listitem>
- <listitem>
- <para>
- Support <literal>SQLSTATE</> error codes
- </para>
- </listitem>
- <listitem>
- <para>
- Support an exception name parameter
- </para>
- </listitem>
- <listitem>
- <para>
- Allow <literal>RAISE</> without parameters in an exception
- block to rethrow the current error
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow specification of <varname>SQLSTATE</> numeric codes
- in <literal>EXCEPTION</> lists (Pavel Stehule)
- </para>
-
- <para>
- This is useful for handling custom <varname>SQLSTATE</> codes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support the <literal>CASE</> statement (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>FOUND</> and <command>GET DIAGNOSTICS</> support
- for the <literal>RETURN QUERY</> statement (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add message translation support (Alvaro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>General <link linkend="APP-PSQL"><application>psql</></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Remove startup banner; now just suggest <literal>help</>
- (Joshua Drake)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <literal>help</> show common backslash commands (Greg
- Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>\pset format wrapped</> mode to wrap output to the
- screen width, or file/pipe output too if <literal>\pset columns</>
- is set (Bryce Nesbitt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the pager for wide output (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a space between a backslash command and the first
- argument (Bernd Helmle)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Display access control rights on multiple lines (Brendan
- Jurd, Andreas Scherbaum)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve tab completion support for schema qualified and
- quoted identifiers (Greg Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the normal range of boolean values in <command>\pset</>,
- rather than just <literal>on</> and <literal>off</> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add optional <literal>on</>/<literal>off</> arguments for
- <command>\timing</> (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>\l</> show access privileges (Andrew Gilligan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>\l+</> show database sizes, if permissions
- allow (Andrew Gilligan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <command>\ef</> command to edit function definitions
- (Abhijit Menon-Sen)
- </para>
-
- <para>
- <command>\ef</> without a function name creates an empty
- function template for editing.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="APP-PSQL"><application>psql</></link> \d*</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Have <command>\d</> show cases where this table is referenced
- as a foreign-key constraint (Kenneth D'Souza)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>\d</> show the value of sequence columns
- (Euler Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add column storage type and other relation options to the
- <command>\d+</> display (Gregory Stark, Euler Taveira de
- Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show relation size in <command>\d+</> output (Dickson S.
- Guedes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have all <command>\d*</> commands show system objects only
- if <literal>S</> is specified (Greg Sabino Mullane)
- </para>
-
- <para>
- <command>\dt</> already behaved this way. bjm: accuate?
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d</> and <command>\dt</> consistent in
- their display of system tables (Bruce)
- </para>
-
- <para>
- Previously, <literal>\d pg_class</> would show <literal>pg_class</>
- while <literal>\dt pg_class</> would not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show enumerated values in <command>\dT+</> (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>\dC</> to accept wildcard patterns (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>\d*</> commands to work with versions of
- <productname>PostgreSQL</> back to 7.4 (Guillaume Lelarge)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>--no-tablespaces</> option to
- <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
- so dumps can be restored to clusters that have non-matching
- tablespace layouts (Gavin Roy)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>-i</>/<literal>--ignore-version</> option from
- <application>pg_dump</> and <application>pg_dumpall</> (Tom)
- </para>
-
- <para>
- Use of this option does not throw an error, but it has no
- effect. This option was removed because the version checks
- are considered necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable <varname>statement_timeout</> during dump and restore
- (Joshua Drake)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pg_dump</>/<application>pg_dumpall</> option
- <literal>--lock-wait-timeout</> (David Gould)
- </para>
-
- <para>
- This allows dumps to fail if unable to acquire a shared lock
- within the specified amount of time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reorder <application>pg_dump</> <literal>--data-only</> output
- to dump primary-key tables referenced by foreign keys before
- the foreign-key referencing tables (Tom)
- </para>
-
- <para>
- This allows data loads when foreign keys are already present.
- If circular references make this impossible, a <literal>NOTICE</>
- is issued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dump</>, <application>pg_dumpall</>, and
- <application>pg_restore</> to use a specified role (Benedek
- László)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_restore</> of a custom format archive to
- use multiple concurrent connections to do the restore (Andrew)
- </para>
-
- <para>
- The number of concurrent connections is controlled by the option
- <literal>--jobs</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <application>pg_dump</> <literal>--binary-upgrade</>
- option for use by binary upgrade utilities (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Client Applications</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <literal>pg_ctl restart</> to preserve command-line arguments
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>-w</>/<literal>--no-password</> option that
- suppresses password prompts to all utilities that have a
- <literal>-W</>/<literal>--password</> option (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>-q</> (quiet) option for create* and drop*
- utility commands (Peter)
- </para>
-
- <para>
- These options have had no effect since <productname>PostgreSQL</>
- 8.3.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>General <link linkend="libpq"><application>libpq</></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the <type>OID</> to be specified when importing large
- objects using <function>lo_import_with_oid()</> (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add events support (Andrew Chernow, Merlin Moncure)
- </para>
-
- <para>
- This adds the ability to register callbacks to handle private
- data for connection and result creation and destruction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling to allow the return of multiple
- error messages as multi-line error reports (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <function>PQexecParams()</> return
- <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
- </para>
-
- <para>
- It previously returned <varname>PGRES_COMMAND_OK</>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document how to avoid the overhead of <function>WSACleanup()</>
- on Windows (Andrew Chernow)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="libpq"><application>libpq</></link>
- <acronym>SSL</> (Secure Sockets Layer)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Fix certificate validation for <acronym>SSL</> connections
- (Magnus)
- </para>
-
- <para>
- <application>libpq</> now verifies both the certificate and
- the name of the server by default when making <acronym>SSL</>
- connections. If a root certificate is not available to use for
- verification, <acronym>SSL</> connections will fail. The
- <literal>sslverify</> parameter can be used to disable the host
- and certificate verification if required.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the file locations for client certificates to be specified
- (Mark Woodward, Alvaro, Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add connection parameter <literal>sslverify</> to control
- the verification of the server's certificate
- (Magnus)
- </para>
-
- <para>
- The default is full verification.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly unregister <application>OpenSSL</> callbacks when
- libpq is done with all connection (Bruce, Magnus, Russell Smith)
- </para>
-
- <para>
- This is required for applications that unload the libpq library
- so no invalid <application>OpenSSL</> callbacks remain.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="ecpg"><application>ecpg</></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add localization support for messages (Euler Taveira de
- Oliveira)
- </para>
- </listitem>
+ <sect4>
+ <title>Object Information Functions</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Implement <function>current_query()</> for use by functions
+ that need to know the currently running query (Tomas Doran)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>pg_get_keywords()</> to return predefined
+ parser keywords (Dave Page)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>pg_get_functiondef()</> to see a functions
+ definition (Abhijit Menon-Sen)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify <function>pg_relation_size()</> to handle free space
+ map (<filename>*.fsm</>) files (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify <function>pg_relation_size()</> to use <literal>regclass</>
+ (Heikki)
+ </para>
+
+ <para>
+ <function>pg_relation_size(data_type_name)</> no longer works.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>boot_val</> and <literal>reset_val</> columns to
+ <literal>pg_settings</> output (Greg Smith)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for <varname>CURRENT_CATALOG</>,
+ <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
+ SCHEMA</> (Peter)
+ </para>
+
+ <para>
+ These are <acronym>SQL</>-standard capabilities.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>pg_typeof()</> which returns the data type
+ of any value (Brendan Jurd)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <function>version()</> return information about whether
+ the server is a 32 or 64-bit binary (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix the behavior of information schema columns
+ <literal>is_insertable_into</> and <literal>is_updatable</> to
+ be consistent (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Convert remaining builtin set-returning functions to use
+ <literal>OUT</> parameters (Jaime Casanova)
+ </para>
+
+ <para>
+ This makes it possible to call these functions without specifying
+ a column list: <function>pg_show_all_settings()</>,
+ <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
+ <function>pg_prepared_statement()</>, <function>pg_cursor()</>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <function>pg_*_is_visible()</> and
+ <function>has_*_privilege()</> functions return <literal>NULL</>
+ for invalid oids, rather than generate an error (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <function>has_column_privilege()</> and
+ <function>has_any_column_privilege()</> functions (Stephen
+ Frost, Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Function Creation</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support variadic functions (functions with a variable number
+ of arguments) (Pavel Stehule)
+ </para>
+
+ <para>
+ Only trailing arguments can be optional, and they all must be
+ of the same data type.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <literal>DEFAULT</> values for function arguments (Pavel
+ Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
+ Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <acronym>SQL</>-language functions to return the output
+ of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
+ <literal>RETURNING</> clause (Tom)
+ </para>
+
+ <para>
+ Formerly only <command>SELECT</> was supported.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>PL/PgSQL Server-Side Language</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support <literal>EXECUTE USING</> (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow looping over an open cursor using a <literal>FOR</>
+ loop (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support <literal>RETURN QUERY EXECUTE</> (Pavel
+ Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the <literal>RAISE</> command: (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Support <literal>DETAIL</> and <literal>HINT</> fields
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support <literal>SQLSTATE</> error codes
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support an exception name parameter
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Allow <literal>RAISE</> without parameters in an exception
+ block to rethrow the current error
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow specification of <varname>SQLSTATE</> numeric codes
+ in <literal>EXCEPTION</> lists (Pavel Stehule)
+ </para>
+
+ <para>
+ This is useful for handling custom <varname>SQLSTATE</> codes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support the <literal>CASE</> statement (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>FOUND</> and <command>GET DIAGNOSTICS</> support
+ for the <literal>RETURN QUERY</> statement (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add message translation support (Alvaro)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
- <listitem>
- <para>
- ecpg parser is now automatically generated from the server
- parser (Michael)
- </para>
+ <sect3>
+ <title>Client Applications</title>
- <para>
- Previously a separate ecpg parser was maintained.
- </para>
- </listitem>
+ <sect4>
+ <title><link linkend="APP-PSQL"><application>psql</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove startup banner; now just suggest <literal>help</>
+ (Joshua Drake)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <literal>help</> show common backslash commands (Greg
+ Sabino Mullane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>\pset format wrapped</> mode to wrap output to the
+ screen width, or file/pipe output too if <literal>\pset columns</>
+ is set (Bryce Nesbitt)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the pager for wide output (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require a space between a backslash command and the first
+ argument (Bernd Helmle)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Display access control rights on multiple lines (Brendan
+ Jurd, Andreas Scherbaum)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve tab completion support for schema qualified and
+ quoted identifiers (Greg Sabino Mullane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the normal range of boolean values in <command>\pset</>,
+ rather than just <literal>on</> and <literal>off</> (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add optional <literal>on</>/<literal>off</> arguments for
+ <command>\timing</> (David Fetter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>\l</> show access privileges (Andrew Gilligan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>\l+</> show database sizes, if permissions
+ allow (Andrew Gilligan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add the <command>\ef</> command to edit function definitions
+ (Abhijit Menon-Sen)
+ </para>
+
+ <para>
+ <command>\ef</> without a function name creates an empty
+ function template for editing.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><link linkend="APP-PSQL"><application>psql</></link> \d*</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have <command>\d</> show cases where this table is referenced
+ as a foreign-key constraint (Kenneth D'Souza)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>\d</> show the value of sequence columns
+ (Euler Taveira de Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add column storage type and other relation options to the
+ <command>\d+</> display (Gregory Stark, Euler Taveira de
+ Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show relation size in <command>\d+</> output (Dickson S.
+ Guedes)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have all <command>\d*</> commands show system objects only
+ if <literal>S</> is specified (Greg Sabino Mullane)
+ </para>
+
+ <para>
+ <command>\dt</> already behaved this way. bjm: accuate?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <command>\d</> and <command>\dt</> consistent in
+ their display of system tables (Bruce)
+ </para>
+
+ <para>
+ Previously, <literal>\d pg_class</> would show <literal>pg_class</>
+ while <literal>\dt pg_class</> would not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show enumerated values in <command>\dT+</> (David Fetter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <command>\dC</> to accept wildcard patterns (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <command>\d*</> commands to work with versions of
+ <productname>PostgreSQL</> back to 7.4 (Guillaume Lelarge)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
- </itemizedlist>
+ <sect4>
+ <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add a <literal>--no-tablespaces</> option to
+ <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
+ so dumps can be restored to clusters that have non-matching
+ tablespace layouts (Gavin Roy)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove <literal>-i</>/<literal>--ignore-version</> option from
+ <application>pg_dump</> and <application>pg_dumpall</> (Tom)
+ </para>
+
+ <para>
+ Use of this option does not throw an error, but it has no
+ effect. This option was removed because the version checks
+ are considered necessary.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disable <varname>statement_timeout</> during dump and restore
+ (Joshua Drake)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <application>pg_dump</>/<application>pg_dumpall</> option
+ <literal>--lock-wait-timeout</> (David Gould)
+ </para>
+
+ <para>
+ This allows dumps to fail if unable to acquire a shared lock
+ within the specified amount of time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Reorder <application>pg_dump</> <literal>--data-only</> output
+ to dump primary-key tables referenced by foreign keys before
+ the foreign-key referencing tables (Tom)
+ </para>
+
+ <para>
+ This allows data loads when foreign keys are already present.
+ If circular references make this impossible, a <literal>NOTICE</>
+ is issued.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <application>pg_dump</>, <application>pg_dumpall</>, and
+ <application>pg_restore</> to use a specified role (Benedek
+ László)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <application>pg_restore</> of a custom format archive to
+ use multiple concurrent connections to do the restore (Andrew)
+ </para>
+
+ <para>
+ The number of concurrent connections is controlled by the option
+ <literal>--jobs</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new <application>pg_dump</> <literal>--binary-upgrade</>
+ option for use by binary upgrade utilities (Bruce)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Other Client Applications</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix <literal>pg_ctl restart</> to preserve command-line arguments
+ (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>-w</>/<literal>--no-password</> option that
+ suppresses password prompts to all utilities that have a
+ <literal>-W</>/<literal>--password</> option (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove <literal>-q</> (quiet) option for create* and drop*
+ utility commands (Peter)
+ </para>
+
+ <para>
+ These options have had no effect since <productname>PostgreSQL</>
+ 8.3.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
</sect3>
<sect3>
- <title>Server Programming Interface (<acronym>SPI</>)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for single-use plans with out-of-line
- parameters (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <varname>SPI_OK_REWRITTEN</> return code to
- <function>SPI_execute()</> (Heikki)
- </para>
+ <title>Programming Tools</title>
- <para>
- This is used when a command is rewritten to another type of
- command.
- </para>
- </listitem>
-
- </itemizedlist>
+ <sect4>
+ <title><link linkend="libpq"><application>libpq</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Allow the <type>OID</> to be specified when importing large
+ objects using <function>lo_import_with_oid()</> (Tatsuo)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add events support (Andrew Chernow, Merlin Moncure)
+ </para>
+
+ <para>
+ This adds the ability to register callbacks to handle private
+ data for connection and result creation and destruction.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve error handling to allow the return of multiple
+ error messages as multi-line error reports (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <function>PQexecParams()</> return
+ <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
+ </para>
+
+ <para>
+ It previously returned <varname>PGRES_COMMAND_OK</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Document how to avoid the overhead of <function>WSACleanup()</>
+ on Windows (Andrew Chernow)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+ <sect4>
+ <title><link linkend="libpq"><application>libpq</></link>
+ <acronym>SSL</> (Secure Sockets Layer)</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix certificate validation for <acronym>SSL</> connections
+ (Magnus)
+ </para>
+
+ <para>
+ <application>libpq</> now verifies both the certificate and
+ the name of the server by default when making <acronym>SSL</>
+ connections. If a root certificate is not available to use for
+ verification, <acronym>SSL</> connections will fail. The
+ <literal>sslverify</> parameter can be used to disable the host
+ and certificate verification if required.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the file locations for client certificates to be specified
+ (Mark Woodward, Alvaro, Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add connection parameter <literal>sslverify</> to control
+ the verification of the server's certificate
+ (Magnus)
+ </para>
+
+ <para>
+ The default is full verification.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Properly unregister <application>OpenSSL</> callbacks when
+ libpq is done with all connection (Bruce, Magnus, Russell Smith)
+ </para>
+
+ <para>
+ This is required for applications that unload the libpq library
+ so no invalid <application>OpenSSL</> callbacks remain.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><link linkend="ecpg"><application>ecpg</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add localization support for messages (Euler Taveira de
+ Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ ecpg parser is now automatically generated from the server
+ parser (Michael)
+ </para>
+
+ <para>
+ Previously a separate ecpg parser was maintained.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Server Programming Interface (<acronym>SPI</>)</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add support for single-use plans with out-of-line
+ parameters (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new <varname>SPI_OK_REWRITTEN</> return code to
+ <function>SPI_execute()</> (Heikki)
+ </para>
+
+ <para>
+ This is used when a command is rewritten to another type of
+ command.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
</sect3>
-
+
<sect3>
<title>Build Options</title>
<itemizedlist>