-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.591 2009/03/17 21:36:21 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.592 2009/03/26 01:19:07 momjian Exp $ -->
<!--
Typical markup:
review, so each item is truly a community effort.
</para>
- <sect1 id="release-8-3-7">
- <title>Release 8.3.7</title>
+ <sect1 id="release-8-4">
+ <title>Release 8.4</title>
<note>
- <title>Release date</title>
- <simpara>2009-03-16</simpara>
+ <title>Release date</title>
+ <simpara>2009-XX-XX</simpara>
</note>
- <para>
- This release contains a variety of fixes from 8.3.6.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3">.
- </para>
-
<sect2>
- <title>Migration to Version 8.3.7</title>
+ <title>Overview</title>
<para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.5,
- see the release notes for 8.3.5.
+ This major PostgreSQL release brings SQL features people have been
+ waiting for for years, as well as performance enhancements
+ and changes to make space reuse more efficient and
+ more automatic. This release adds the following major features:
</para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
<itemizedlist>
<listitem>
<para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
+ *MAJOR ITEM LIST GOES HERE*
</para>
</listitem>
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
+ </itemizedlist>
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
+ <para>
+ The above items are explained in more detail in the sections below.
+ </para>
- <listitem>
- <para>
- Fix <function>xpath()</> to not modify the path expression unless
- necessary, and to make a saner attempt at it when necessary (Andrew)
- </para>
+ </sect2>
- <para>
- The SQL standard suggests that <function>xpath</> should work on data
- that is a document fragment, but <application>libxml</> doesn't support
- that, and indeed it's not clear that this is sensible according to the
- XPath standard. <function>xpath</> attempted to work around this
- mismatch by modifying both the data and the path expression, but the
- modification was buggy and could cause valid searches to fail. Now,
- <function>xpath</> checks whether the data is in fact a well-formed
- document, and if so invokes <application>libxml</> with no change to the
- data or path expression. Otherwise, a different modification method
- that is somewhat less likely to fail is used.
- </para>
+ <sect2>
+ <title>Migration to Version 8.4</title>
- <note>
+ <para>
+ A dump/restore using <application>pg_dump</application> is
+ required for those wishing to migrate data from any previous
+ release.
+ </para>
+
+ <para>
+ Observe the following incompatibilities:
+ </para>
+
+ <sect3>
+ <title>General</title>
+ <itemizedlist>
+
+ <listitem>
<para>
- The new modification method is still not 100% satisfactory, and it
- seems likely that no real solution is possible. This patch should
- therefore be viewed as a band-aid to keep from breaking existing
- applications unnecessarily. It is likely that
- <productname>PostgreSQL</> 8.4 will simply reject use of
- <function>xpath</> on data that is not a well-formed document.
+ Use 64-bit integer datetimes by default (Neil Conway)
</para>
- </note>
- </listitem>
- <listitem>
- <para>
- Fix core dump when <function>to_char()</> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
+ <para>
+ This was available previously via a configure --enable-integer-datetimes
+ (Neil Conway)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix possible failure in text search when C locale is used with
- a multi-byte encoding (Teodor)
- </para>
+ <listitem>
+ <para>
+ Change postgresql.conf default for log_min_messages to 'warning'
+ (previously 'notice') to reduce log file volume (Tom)
+ </para>
+ </listitem>
- <para>
- Crashes were possible on platforms where <type>wchar_t</> is narrower
- than <type>int</>; Windows in particular.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Have debug_print_parse, debug_print_rewritten, and debug_print_plan
+ output appear as LOG message level, not DEBUG1 (Tom) bjm: inconsistency
+ because of var names?
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix extreme inefficiency in text search parser's handling of an
- email-like string containing multiple <literal>@</> characters (Heikki)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Have debug_pretty_print default to on (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix planner problem with sub-<command>SELECT</> in the output list
- of a larger subquery (Tom)
- </para>
+ <listitem>
+ <para>
+ Make "log_temp_files" super-user set only, like other logging options
+ (Simon)
+ </para>
+ </listitem>
- <para>
- The known symptom of this bug is a <quote>failed to locate grouping
- columns</> error that is dependent on the datatype involved;
- but there could be other issues as well.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Disable appending of the epoch date/time when '%' escapes are missing in
+ log_filename (Robert Haas)
+ </para>
- <listitem>
- <para>
- Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
- (Tom)
- </para>
+ <para>
+ This change was made because some users wanted a consistent log
+ filename.
+ </para>
+ </listitem>
- <para>
- This mistake could lead to Assert failures in an Assert-enabled build,
- or an <quote>unexpected CASE WHEN clause</> error message in other
- cases, when trying to examine or dump a view.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Remove explain_pretty_print postgresql.conf setting (no longer needed)
+ (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
- </para>
+ <listitem>
+ <para>
+ Remove log_restartpoints from recovery.conf; instead use
+ log_checkpoints (Simon Riggs)
+ </para>
+ </listitem>
- <para>
- If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
- were executed by someone other than the table owner, the
- <structname>pg_type</> entry for the table's TOAST table would end up
- marked as owned by that someone. This caused no immediate problems,
- since the permissions on the TOAST rowtype aren't examined by any
- ordinary database operation. However, it could lead to unexpected
- failures if one later tried to drop the role that issued the command
- (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
- warnings from <application>pg_dump</> after having done so (in 8.3).
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Remove support for the (insecure) crypt authentication method (Magnus)
+ </para>
- <listitem>
- <para>
- Change <command>UNLISTEN</> to exit quickly if the current session has
- never executed any <command>LISTEN</> command (Tom)
- </para>
+ <para>
+ This breaks compatibility with pre-7.2 versions.
+ </para>
+ </listitem>
- <para>
- Most of the time this is not a particularly useful optimization, but
- since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
- coding caused a substantial performance problem for applications that
- made heavy use of <command>DISCARD ALL</>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Remove krb_realm and krb_server_hostname, now pg_hba.conf-only settings
+ (Magnus)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
- an INTO-variables clause anywhere in the string, not only at the start;
- in particular, don't fail for <command>INSERT INTO</> within
- <command>CREATE RULE</> (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Remove ipcclean utility command (Bruce)
+ </para>
- <listitem>
- <para>
- Clean up PL/pgSQL error status variables fully at block exit
- (Ashesh Vashi and Dave Page)
- </para>
+ <para>
+ The utility only worked on a few platforms; users should use their
+ operating system tools instead.
+ </para>
+ </listitem>
- <para>
- This is not a problem for PL/pgSQL itself, but the omission could cause
- the PL/pgSQL Debugger to crash while examining the state of a function.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ pg_hba.conf also has extensive changes related to migration. bjm: add markup
+ </para>
+ </listitem>
- <listitem>
- <para>
- Retry failed calls to <function>CallNamedPipe()</> on Windows
- (Steve Marshall, Magnus)
- </para>
+ </itemizedlist>
- <para>
- It appears that this function can sometimes fail transiently;
- we previously treated any failure as a hard error, which could
- confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
- operations.
- </para>
- </listitem>
+ </sect3>
- <listitem>
- <para>
- Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
+ <sect3>
+ <title>Queries</title>
- </itemizedlist>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have children inherit CHECK constraints from parents (Alex Hunsaker,
+ Nikhil Sontakke, Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Force child tables to have the same CHECK constraints as parents (Alex
+ Hunsaker, Nikhil Sontakke, Tom Lane) bjm: verify
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Change TRUNCATE and LOCK behavior to apply to all child tables (Peter)
+ </para>
+
+ <para>
+ There is a new ONLY clause which disables this behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disallow negative LIMIT or OFFSET values, rather than treating them as
+ zero (Simon)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disallow LOCK TABLE outside a transaction block (Tom)
+ </para>
+
+ <para>
+ Such an operation is useless because the lock would be immediately
+ released.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Make DISCARD ALL also discard advisory locks (Marko Kreen)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+
+ <sect3>
+ <title>Functions and Operators</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have NUMERIC 0 ^ 4.3 return 1, rather than an error, and have 0 ^ 0.0
+ return 1, rather than error (Bruce)
+ </para>
+
+ <para>
+ This was already the float8 behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove code that prevented unary minus of floating-point values from
+ producing '-0' (Tom)
+ </para>
+
+ <para>
+ The changed behavior is more IEEE-standards compliant.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Throw an error of an escape character is the last character in a LIKE
+ pattern (nothing to escape) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have to_char()'s localized month/day names depend on LC_TIME, not
+ LC_MESSAGES (Euler Taveira de Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Cause to_date() and 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 to_timestamp() to not require upper/lower case matching for meridian
+ (AM/PM) and era (BC/AD) format designations (Brendan Jurd)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require the existence of periods in to_timestamp() meridian
+ (AM/PM) and era (BC/AD) format designations to match (Brendan Jurd)
+ </para>
+
+ <para>
+ For example, input value 'AD' does not match format string 'A.D.'.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove ~=~ and ~<>~ operators used for LIKE index comparisons (Tom) bjm:
+ needed?
+ </para>
+
+ <para>
+ A not-immediately-obvious incompatibility is that the sort order within
+ bpchar_pattern_ops indexes changes --- it had been identical to plain
+ strcmp, but is now trailing-blank-insensitive. This will impact
+ in-place upgrades, if those ever happen.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <para>
+ Below you will find a detailed account of the
+ changes between <productname>PostgreSQL</productname> 8.4 and
+ the previous major release.
+ </para>
+
+ <sect3>
+ <title>Performance</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Improve optimizer statistics calculations (Tom, Jan
+ Urbanski)
+ </para>
+
+ <para>
+ This includes improved statistics for full text columns.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow SELECT DISTINCT and UNION/INTERSECT/EXCEPT to use hashing (Tom)
+ </para>
+
+ <para>
+ This causes SELECT DISTINCT no longer always produces sorted output;
+ add an ORDER BY clause. The old SELECT DISTINCT behavior can be
+ restored by disabling enable_hashagg. SELECT DISTINCT ON does not use
+ hashing. bjm: enable_hashagg accurate?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New semi- and ansi-joins (Tom)
+ </para>
+
+ <para>
+ While semi-joins merely replace existing IN joins, anti-joins
+ are a new capability for NOT IN and NOT EXIST clauses (Tom)
+ This improves optimization possibilities.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve IN/ANY/EXISTS processing (Tom)
+ </para>
+
+ <para>
+ IN and EXISTs now provide similar performance for equivalent clauses.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the performance of text_position() and related functions by
+ using Boyer-Moore-Horspool searching (David Rowley)
+ </para>
+
+ <para>
+ This is particularly useful for long search patterns.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve handling of subqueries by the optimizer (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Reduce I/O frequency of writing the backend statistics file by writing
+ the file only when requested (Martin Pihlak)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve performance for bulk inserts (Robert Haas, Simon)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Increase the default value of default_statistics_target from 10 to 100
+ (Tom)
+ </para>
+
+ <para>
+ The maximum value was also increased from 1000 to 10000.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify 'constraint_exclusion' to check for partitioned tables by default
+ when inheritance or UNION ALL is used (Tom)
+ </para>
+
+ <para>
+ A new constraint_exclusion setting, "partition", which matches this
+ behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow I/O read-ahead for bitmap index scans (Greg Stark)
+ </para>
+
+ <para>
+ The amount of read-ahead is controlled by effective_io_concurrency.
+ This requires posix_fadvise() support in the kernel.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Inline simple set-returning SQL functions in FROM clauses (Richard Rowell)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>TOAST</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Consider TOAST compression on values as short as 32 bytes (previously
+ 256 bytes) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require 25% of space savings before using TOAST compression (previously
+ 20%) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Be more aggressive in storing EXTERNAL and EXTENDED column values in
+ TOAST (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Server Settings</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Convert many postgresql.conf settings to enumerated values so
+ pg_settings can easily display valid values (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add postgresql.conf setting cursor_tuple_fraction 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 postgresql.conf custom variable classes (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Monitoring</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add pg_conf_load_time() function to report when the Postgres configuration
+ files were last loaded (George Gensure)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_terminate_backend() to safely terminate a backend (the SIGTERM
+ signal also works) (Tom, Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add ability to track user-defined functions call counts and runtimes via
+ postgresql.conf variable 'track_functions' (Martin Pihlak)
+ </para>
+
+ <para>
+ Function statistics appear in a new system table, pg_stat_user_functions.
+ However, inlined SQL functions are not tracked.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow specification of the maximum pg_stat_activity query string size
+ via postgresql.conf variable track_activity_query_size (Thomas Lee)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve syslog performance by increasing the maximum line length
+ (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add read-only postgresql.conf variables segment_size, wal_block_size,
+ and 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 pg_stat_get_activity(pid) function to return information about a
+ specific process id (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Move that server statistics file into the subdirectory pg_stat_tmp
+ (Magnus)
+ </para>
+
+ <para>
+ This allows the statistics file to be placed in a RAM-resident
+ directory to reduce I/O requirements. On startup/shutdown, the
+ file is copied to the top-level $PGDATA directory so it is preserved
+ between restarts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the location of the new pg_stat_tmp to be configured via
+ the stats_temp_directory setting (Magnus)
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>pg_hba.conf</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Parse pg_hba.conf in the postmaster so errors are reported on reload
+ (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make pg_hba.conf "sameuser" an optional argument for ident
+ authentication (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Change all pg_hba.conf authentication options to be 'name=value'
+ settings (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow 'ident' authentication over Unix-domain sockets on Solaris (Garick
+ Hamlin)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_hba.conf option "clientcert" 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 pg_hba.conf "cert" authentication method to allow user
+ authentication via SSL certificates (Magnus)
+ </para>
+
+ <para>
+ Previously SSL certificates could only authenticate hosts, not users.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow krb5, gssapi and sspi realm and krb5 host settings to be specified
+ in pg_hba.conf (Magnus)
+ </para>
+
+ <para>
+ These override the settings in postgresql.conf.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Addkrb5, gssapi and sspi 'include_realm' parameter to pg_hba.conf
+ (Magnus)
+ </para>
+
+ <para>
+ This allows identical usernames from different realms to be
+ authenticated as different database users. bjm: correct?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Issue a warning rather than shut down when pg_hba.conf can't be loaded
+ (Selena Deckelmann)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Authentication</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Report appropriate error message for combination of MD5 authentication
+ and db_user_namespace enabled (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support regular expressions in pg_ident.conf (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow Kerberos/GSSAPI parameters to be changed without restarting the
+ postmaster (Magnus)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Continuous Archiving</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have pg_stop_backup() wait for modified WAL files to be archived (Simon)
+ </para>
+
+ <para>
+ This guarantees that the backup is valid at the time 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 recovery.conf boolean variables to take the same range of string
+ alues as postgresql.conf (Bruce)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Queries</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add support for WINDOW functions (Hitoshi Harada)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add WITH clauses support, including WITH RECURSIVE (Yoshiyuki Asaba,
+ Tatsuo Ishii, Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New TABLE command (Peter)
+ </para>
+
+ <para>
+ "TABLE tablename" is a short-hand for "SELECT * FROM tablename".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow AS to be optional when specifying a SELECT (or RETURNING) column
+ output label (assuming the label is not an SQL keyword) (Hiroshi Saito)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support set-returning functions in the target lists of Agg and Group plan
+ nodes. This is a pretty ugly feature but since we don't yet have a
+ plausible substitute, we'd better support it everywhere (Tom) bjm:
+ details?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow SELECT FOR UPDATE/SHARE to work on inheritance trees (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add infrastructure for SQL/MED (Martin Pihlak, Peter)
+ </para>
+
+ <para>
+ There are no remote or external SQL/MED capabilities yet. bjm:
+ accurate?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Invalidate cached plans when schemas, operators, or operator classes are
+ modified (Tom) bjm: effect?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the plan cache invalidation mechanism to make it invalidate plans
+ when user-defined functions used in a plan are modified (Tom, Martin
+ Pihlak) bjm: explain
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow comparison of composite types and allow arrays of
+ possibly-anonymous composite types (Tom) bjm: clear?
+ </para>
+
+ <para>
+ Specifically this allows 'array[ row(1,2), row(3,4)]' and 'row(1,1.1)
+ = any (array[ row(7,7.7), row(1,1.0)'. This is particularly useful
+ for recursive queries.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for Unicode sting and identifier specifications using code
+ points, e.g. U&'d\0061t\+000061' (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the parser's ability to report the error location of a query
+ (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>LIMIT/OFFSET</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Allow LIMIT and OFFSET to use subselects as arguments (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Document that LIMIT NULL and OFFSET NULL have no effect (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add SQL-standards syntax for LIMIT/OFFSET capabilities (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} ONLY.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>ALTER TABLE</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add ALTER TYPE RENAME (Petr Jelinek)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add ALTER SEQUENCE ... RESTART (no parameter) to reset a sequence to its
+ initial value (Zoltan Boszormenyi) bjm: compatibility problem?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify the 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 "ALTER TABLE")
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ALTER SEQUENCE OWNER TO
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ALTER VIEW ALTER COLUMN SET/DROP DEFAULT
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ALTER VIEW OWNER TO
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ALTER VIEW SET SCHEMA
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for the syntax ALTER TABLE ... ALTER COLUMN ... SET DATA
+ TYPE (Peter)
+ </para>
+
+ <para>
+ This is SQL-standard syntax for functionality that was already
+ supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have ALTER TABLE SET WITHOUT OIDS rewrite the table to remove oid values
+ (Tom)
+ </para>
+
+ <para>
+ Also, add ALTER TABLE SET WITH OIDS to rewrite the table to add oids.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add ALTER DATABASE SET TABLESPACE to move a database to a new tablespace
+ (Guillaume Lelarge, Bernd Helmle)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>TRUNCATE</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support statement-level ON TRUNCATE triggers (Simon)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add TRUNCATE TABLE ... RESTART/CONTINUE IDENTITY clauses (Zoltan
+ Boszormenyi)
+ </para>
+
+ <para>
+ The start value of a sequence can be changed by ALTER SEQUENCE START
+ WITH.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow TRUNCATE foo, foo to succeed (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add a separate TRUNCATE permission (Robert Haas)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Database Operations</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Improve reporting of CREATE/DROP/RENAME DATABASE failure when
+ uncommitted prepared transactions are the cause (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make LC_COLLATE and 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 (LC_COLLATE), and
+ character classes (LC_CTYPE) match (Heikki)
+ </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 DROP commands (Alex Hunsaker)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Refactor multi-object DROP operations so conflicting dependencies don't
+ generate an error (Alex Hunsaker)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add WITH [NO] DATA clause to CREATE TABLE AS, per the SQL standard (Tom, Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for user-defined I/O conversion casts (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow CREATE AGGREGATE to user an "internal" transition datatype (for
+ super-users only) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add LIKE clause to CREATE TYPE (Tom)
+ </para>
+
+ <para>
+ This simplifies creation of data types like existing types.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow CREATE OR REPLACE VIEW to add columns to the _end_ of the view
+ (Robert Haas)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>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
+ *.fsm files, rather than having to limit recording to a fixed-sized
+ shared memory area; max_fsm_pages and 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 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 vacuum_freeze_table_age to postgresql.conf to control when 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 TOAST parameters in
+ CREATE TABLE (Alvaro, Euler Taveira de Oliveira)
+ </para>
+
+ <para>
+ Autovacuum options uses to be stored in a system table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add --freeze option to vacuumdb (Bruce)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>EXPLAIN</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have EXPLAIN VERBOSE show the output columns of a query (Tom)
+ </para>
+
+ <para>
+ Previously EXPLAIN VERBOSE output an internal representation of the
+ output columns.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have EXPLAIN honor debug_print_plan (Tom) bjm: verify behavior, this
+ replaces EXPLAIN VERBOSE?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow EXPLAIN on CREATE TABLE AS (Peter)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Other Utility Operations</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add verbose option to the CLUSTER command and clusterdb (Jim Cox)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Decrease memory requirements for recording pending trigger events (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>General Data Types</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add a CaseSensitive option for text search synonym dictionaries (Simon)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the precision of NUMERIC division (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add int2 with int8 basic arithmetic operators (Tom)
+ </para>
+
+ <para>
+ This simplifies casting requirements.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow UUID input to accept optional hyphens after every four digits
+ (Robert Haas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Accept 'on'/'off' as boolean data type values (ITAGAKI Takahiro)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Temporal Data Types</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Reject year '0 BC' and years '000' and '0000' (Tom)
+ </para>
+
+ <para>
+ Previously these were interpreted as 1 BC. (Years '0' and '00' are
+ assumed to be the year 2000.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Include SGT (Singapore time) as a valid timezone abbreviation (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support the IS0 8601 time interval syntax (Tom) bjm: sufficient?
+ </para>
+
+ <para>
+ For example, INTERVAL 'P1Y2M3DT4H5M6.7S' is now supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the interval precision to be specified after the last field, for
+ SQL-standards compliance (Tom)
+ </para>
+
+ <para>
+ Formerly the precision had to be specified after the keyword INTERVAL
+ (the old syntax is still supported). Data type definitions will now
+ be output using the new format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support 'infinite' dates (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add postgresql.conf variable IntervalStyle which controls how interval
+ values are output (Ron Mayer)
+ </para>
+
+ <para>
+ Valid value are: postgres, postgres_verbose, sql_standard, iso_8601.
+ This also controls handling of negative interval input when only some
+ fields have positive/negative designations.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Increase the number of fractional seconds digits displayed by intervals (Ron
+ Mayer)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Increase variability in the number of fractional seconds digits
+ displayed (Ron Mayer)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>General Functions</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Document that setseed() allows values from -1 to 1 (not 0 to 1), and
+ enforce the valid range (Kris Jurka)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add server side lo_import(filename, oid) function (Tatsuo)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add quote_nullable(), which behaves like quote_literal() but returns
+ 'NULL' for a null argument (Brendan Jurd)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve full text search headline() generation to allow several
+ fragments (Sushant Sinha)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add suppress_redundant_updates_trigger() trigger function to avoid
+ non-data-changing updates (Andrew)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add div(NUMERIC, NUMERIC) for NUMERIC division, without rounding (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add timestamp and timestamptz versions of generate_series() (Hitoshi
+ Harada)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Database Informational Functions</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Implement current_query() for use by functions that need to know the
+ currently running query (Tomas Doran)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_get_keywords() function 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 pg_relation_size() to handle free space map (*.fsm) files
+ (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify pg_relation_size() to use 'regclass' (Heikki)
+ </para>
+
+ <para>
+ pg_relation_size(data_type_name) no longer works.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add boot_val and reset_val columns to pg_settings output (Greg Smith)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for CURRENT_CATALOG, CURRENT_SCHEMA, SET CATALOG, SET SCHEMA
+ (Peter)
+ </para>
+
+ <para>
+ These are SQL-standard capabilities.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_typeof() function to return the data type of any value (Brendan
+ Jurd)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have 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 is_insertable_into and
+ is_updatable to be consistent (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Convert remaining builtin set-returning functions to use OUT parameters
+ (Jaime Casanova)
+ </para>
+
+ <para>
+ This makes it possible to call these functions without specifying
+ a column list: pg_show_all_settings(), pg_lock_status(),
+ pg_prepared_xact(), pg_prepared_statement(), pg_cursor()
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have pg_*_is_visible and has_*_privilege functions return NULL for
+ invalid oids, rather than generate an error (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add has_column_privilege() and 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 of variable length, and they all must
+ be of the same data type.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow DEFAULT values for function arguments (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add CREATE FUNCTION ... RETURNS TABLE clause (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow SQL-language functions to return the output of an INSERT/UPDATE/DELETE
+ RETURNING clause (Tom)
+ </para>
+
+ <para>
+ Formerly only SELECT was supported.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Arrays</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have cast on ARRAY[] apply to all elements, not just the array result
+ (Brendan Jurd)
+ </para>
+
+ <para>
+ This allows NULL ARRAY[] entries as long as it is properly cast
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make the SQL ARRAY dimensions optional to match the SQL standard
+ (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add array_ndims() function to return the number of dimensions of an array (Robert
+ Haas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add array_length() function to return the length of an array for the
+ specified dimensions (Jim Nasby, Robert Haas, Peter Eisentraut)
+ </para>
+
+ <para>
+ Also add identically-functioning SQL-standard function cardinality().
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new aggregate 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 array_agg().
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add array_fill() to create arrays initialized with a value (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add generate_subscripts() to generate array subscripts (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Generate proper error if a SERIAL array is specified (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Indexes</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Dramatically improve the speed of building and accessing hash indexes
+ (Tom Raney, Shreya Bhargava, Kenneth Marshall, Tom)
+ </para>
+
+ <para>
+ This allows hash indexes to be often 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>
+ Remove requirement to use "@@@" when doing GIN weighted lookups on full
+ text indexes (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add optimizer selectivity function for '@@' text search operations (Jan
+ Urbanski)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add partial match support for 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 GIN indexes (Teodor Sigaev)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Special xxx_pattern_ops LIKE indexes can now be used for simple equality
+ comparisons (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>PL/PgSQL Server-Side Language</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support EXECUTE USING in PL/pgSQL (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow PL/pgSQL to loop over an open cursor using a FOR loop (Pavel
+ Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support RETURN QUERY EXECUTE in PL/pgSQL (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve the PL/pgSQL RAISE command (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Support DETAIL and HINT fields
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support SQLSTATE error codes
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support an exception name parameter
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Allow RAISE without parameters in an exception
+ block to rethrow the current error
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the specification of SQLSTATE numeric codes in EXCEPTION lists
+ (Pavel Stehule)
+ </para>
+
+ <para>
+ This is useful for handling custom SQLSTATE codes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support CASE statement in PL/pgSQL (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add PL/PgSQL FOUND and GET DIAGNOSTICS support for the RETURN QUERY
+ statement (Pavel Stehule)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add PL/pgSQL translation (Alvaro)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>General <link linkend="APP-PSQL"><application>psql</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove psql startup banner; now just suggest 'help' (Joshua Drake)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have psql 'help' show common backslash commands (Greg Sabino Mullane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add psql '\pset format wrapped' mode to wrap output to screen width, or
+ file/pipe output too if \pset columns' is set (Bryce Nesbitt)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the psql pager for wide output (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require a space between a psql backslash command and the first argument (Bernd
+ Helmle)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Display access control rights on multiple lines in psql (Brendan Jurd,
+ Andreas Scherbaum)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve psql tab completion support for schema qualified and quoted
+ identifiers (Greg Sabino Mullane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the normal range of boolean values in \pset, rather than just
+ 'on' and 'off' (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add optional on/off argument to psql \timing (David Fetter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have psql \l show access privileges (Andrew Gilligan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have psql \l+ show database sizes, if permissions allow (Andrew Gilligan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add psql \ef command to edit function definitions (Abhijit Menon-Sen)
+ </para>
+
+ <para>
+ \ef without a function names 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 psql \d display references to this table as a foreign-key constraint
+ (Kenneth D'Souza)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have psql \d show the value of sequence columns (Euler Taveira de
+ Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add column storage type and other relation options to psql \d+ display
+ (Gregory Stark, Euler Taveira de Oliveira)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show relation size in psql \d+ output (Dickson S. Guedes)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have all psql \d* commands show system objects only if 'S' is specified
+ (Greg Sabino Mullane)
+ </para>
+
+ <para>
+ psql \dt already behaved this way.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make psql \d and \dt consistent in their display of system tables
+ (Bruce)
+ </para>
+
+ <para>
+ Previously, '\d pg_class' would show pg_class while '\dt pg_class'
+ would not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show enumerated values in psql's \dT+ (David Fetter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow psql \dC to accept wildcard patterns (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow psql \d* commands to work with versions of Postgres 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 --no-tablespaces option to pg_dump/pg_dumpall/pg_restore so dumps
+ can be restored to clusters that have non-matching tablespace layouts
+ (Gavin Roy)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove -i/--ignore-version option from pg_dump and pg_dumpall (Tom)
+ </para>
+
+ <para>
+ Use of the options 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 statement_timeout during dump and restore (Joshua Drake)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_dump/pg_dumpall option --lock-wait-timeout (David Gould)
+ </para>
+
+ <para>
+ Allows dumps to fail if unable to acquire shared table within the
+ specified amount of time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Reorder pg_dump --data-only output to dump primary-key tables referenced
+ by foreign keys are dumped 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, issue a NOTICE.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow pg_dump, pg_dumpall, and pg_restore to use a specified role (Benedek
+ László)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow 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
+ --jobs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new pg_dump --binary-upgrade flag to be used by binary upgrade
+ utilities (Bruce)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Other Client Applications</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix 'pg_ctl restart' to preserve command-line arguments (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add -w/--no-password option that suppresses password prompts to all
+ utilities that have a -W/--password option (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove -q (quiet) option for create* and drop* utility commands (Peter)
+ </para>
+
+ <para>
+ These options have had no effect since 8.3.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>General <link linkend="libpq"><application>libpq</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Allow the OID to be specified when importing large objects using
+ libpq lo_import_with_oid() (Tatsuo)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add events support to libpq (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 libpq error handling to allow the return of multiple error
+ messages as multi-line error reports (Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have libpq PQexecParams() return PGRES_EMPTY_QUERY for an empty query
+ (Tom)
+ </para>
+
+ <para>
+ It previously returned PGRES_COMMAND_OK.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Document how to avoid the libpq overhead of WSACleanup() overhead on
+ Windows (Andrew Chernow)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title><link linkend="libpq"><application>libpq</></link> SSL</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix libpq certificate validation for SSL connections (Magnus) bjm:
+ details?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow the file locations for libpq SSL certificates to be specified
+ (Mark Woodward, Alvaro, Magnus)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add libpq connection parameter "sslverify" to control the verification
+ of the server's SSL certificate (Magnus)
+ </para>
+
+ <para>
+ The default is full verification.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Properly unregister 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 OpenSSL callbacks remain.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title><link linkend="ecpg"><application>ecpg</></link></title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add localization support for ecpg 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>
+
+ </sect3>
+
+ <sect3>
+ <title>Server Programming Interface (<acronym>SPI</>)</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add SPI support for single-use plans with out-of-line parameters (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new SPI_OK_REWRITTEN return code to SPI_execute() (Heikki)
+ </para>
+
+ <para>
+ This is used when a command is rewritten to another type of command.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Build Options</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support 64-bit timezone data files (Heikki)
+ </para>
+
+ <para>
+ This adds support for daylight saving time (DST) calculations beyond 2038.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bug in handling of the timezone database when cross-compiling
+ (Richard Evans)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Update build system to use Autoconf 2.61 (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require GNU bison for source code builds (Peter)
+ </para>
+
+ <para>
+ This has been a requirement for several years but this removes the
+ infrastructure for supporting other parser tools.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add pg_config --htmldir option (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Pass float4 by value inside the server (Zoltan Boszormenyi)
+ </para>
+
+ <para>
+ Add configure option --disable-float4-byval to use the old behavior.
+ tgl
+ Pass float8 and int8 by value in the server where possible (Zoltan
+ Boszormenyi)
+ </para>
+
+ <para>
+ Add configure option --disable-float8-byval to use the old behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add configure options -with-segsize, --with-blocksize,
+ --with-wal-blocksize, --with-wal-segsize (Zdenek Kotala, Tom)
+ </para>
+
+ <para>
+ This allows compile-time control over several compile-time constants
+ that control how large tables and WAL are segmented into separate files and
+ their internal block sizes
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow threaded builds on Solaris 2.5 (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for Sun Studio compiler on Linux (Julius Stroffek)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Append major version number to the gettext domain name, and for
+ libraries the soname major version number (Peter)
+ </para>
+
+ <para>
+ This simplifies parallel installations.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow out-of-tree builds on Mingw and Cygwin (Richard Evans)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix the use of Mingw32 as a cross-compiling source platform (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix problem when setting LC_MESSAGES on MSVC-built systems (Hiroshi
+ Inoue, Hiroshi Saito, Magnus) bjm: details?
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Source Code</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Link backend object files in one step, rather than in stages (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Additional DTrace probes (Robert Lor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add DTrace support on Mac OS X Leopard (Robert Lor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new cstring to text conversion functions (Brendan Jurd, Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve logic for shared cache invalidation (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make "name" char-aligned (Tom) bjm: pg_upgrade?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add function hook to let plug-ins control the executor (ITAGAKI
+ Takahiro)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add a hook to allow planner statistics lookup behavior to be overridden
+ (Simon Riggs)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add "shmem_startup_hook" for custom shared memory requirements (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Replace pg_class column reltriggers with boolean relhastriggers (Simon)
+ </para>
+
+ <para>
+ Also remove unused pg_class columns relukeys, relfkeys, and relrefs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Move SQL-command manual pages from the 'manl' (man-el) section to 'man7'
+ (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Move platform FAQs into the main documentation (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add %expect 0 to all parser input files to prevent builds with parser
+ conflicts (Peter)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for the KOI8U (Ukrainian) encoding (Peter)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Contrib</title>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Add -M (query mode) to /contrib/pgbench (ITAGAKI Takahiro)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add duration option to /contrib/pgbench (Takahiro Itagaki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix /contrib/pgstattuple to handle tables and indexes with over 2
+ billion pages (Tatsuhito Kasahara)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add Levenshtein string-distance function to /contrib/fuzzystrmatch
+ that allows the user to specify the cost of insertion, deletion,
+ and substitution (Volkan Yazici)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove dblink_current_query() from /contrib/dblink; it should now use
+ current_query() (Tomas Doran)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have /contrib/ltree support multibyte encodings (laser)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add /contrib/citext as a case-insensitive text data type (David Wheeler)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make sure /contrib/dblink uses a password supplied by the user, and not
+ accidentally from the server .pgpass file (Joe Conway)
+ </para>
+
+ <para>
+ This is a security enhancement.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add fsm_page_contents() to contrib/pageinspect (Heikki)
+ </para>
+
+ <para>
+ Modify get_raw_page() to support free space map (*.fsm) files.
+ Also update /contrib/pg_freespacemap.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add support for multibyte encodings to /contrib/pg_trgm (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Rewrite contrib/intagg to user new server-side functions array_agg() and
+ unnest() (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add /contrib/auto_explain to automatically run EXPLAIN on queries
+ exceeding a specified duration (Takahiro Itagaki, Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add contrib/pg_stat_statements for server-wide tracking of statement execution
+ statistics (Takahiro Itagaki)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
</sect2>
</sect1>