-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.627 2009/04/11 02:06:16 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.628 2009/04/13 06:05:12 tgl Exp $ -->
<!--
Typical markup:
<note>
<title>Release date</title>
- <simpara>2009-XX-XX, ITEMS CURRENT AS OF 2009-04-08</simpara>
+ <simpara>2009-??-??, ITEMS CURRENT AS OF 2009-04-08</simpara>
</note>
<sect2>
<para>
After many years of development, <productname>PostgreSQL</> has
become feature-complete in many areas. This release shows a
- targeted approach to adding features (e.g. authentication,
+ targeted approach to adding features (e.g., authentication,
monitoring, space reuse), and adds capabilities defined in the
- later SQL standards; the major areas of enhancement are:
+ later SQL standards. The major areas of enhancement are:
</para>
<itemizedlist>
<listitem>
<para>
- Improved join performance for EXISTS and NOT EXISTS queries
+ Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
</para>
</listitem>
</para>
<para>
- This was available previously via a configure
- --enable-integer-datetimes option.
+ Previously this was selected by <application>configure</>'s
+ <option>--enable-integer-datetimes</> option. To retain
+ the old behavior, build with <option>--disable-integer-datetimes</>.
</para>
</listitem>
</para>
<para>
- The utility only worked on a few platforms; users should use
+ The utility only worked on a few platforms. Users should use
their operating system tools instead.
</para>
</listitem>
<listitem>
<para>
- Change <filename>postgresql.conf</> default for
+ Change default setting for
<literal>log_min_messages</> to <literal>warning</> (previously
- <literal>notice</>) to reduce log file volume (Tom)
+ it was <literal>notice</>) to reduce log file volume (Tom)
</para>
</listitem>
<listitem>
<para>
- Have <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
+ Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
and <literal>debug_print_plan</>
output appear at <literal>LOG</> message level, not
<literal>DEBUG1</> as formerly (Tom)
<listitem>
<para>
- Make <varname>log_temp_files</> super-user set only, like other
- logging options (Simon)
+ Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
</para>
</listitem>
<listitem>
<para>
- Disable appending of the epoch date/time when no <literal>%</>
- escapes are present in <literal>log_filename</> (Robert Haas)
+ Make <varname>log_temp_files</> settable by superusers only, like other
+ logging options (Simon Riggs)
</para>
+ </listitem>
+ <listitem>
<para>
- This change was made because some users wanted a fixed filename,
- for use with an external log rotation tool.
+ Disable appending of the epoch date/time when no <literal>%</>
+ escapes are present in <literal>log_filename</> (Robert Haas)
</para>
- </listitem>
- <listitem>
<para>
- Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
+ This change was made because some users wanted a fixed log filename,
+ for use with an external log rotation tool.
</para>
</listitem>
<listitem>
<para>
Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
- instead use <varname>log_checkpoints</> (Simon Riggs)
+ instead use <varname>log_checkpoints</> (Simon)
</para>
</listitem>
</para>
<para>
- This breaks compatibility with pre-<productname>PostgreSQL</> 7.2 versions.
+ This breaks compatibility with pre-<productname>PostgreSQL</> 7.2
+ clients, as there is no longer any non-plaintext password method
+ that they can use.
</para>
</listitem>
<listitem>
<para>
- Remove <varname>krb_realm</> and <varname>krb_server_hostname</>, now
- <filename>pg_hba.conf</>-only settings (Magnus)
+ Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
+ these are now set in <filename>pg_hba.conf</> instead (Magnus)
</para>
</listitem>
<listitem>
<para>
- The <link
- linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>
- section below also has extensive changes related to migration.
+ There are also significant changes in <link
+ linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
+ as described below.
</para>
</listitem>
<listitem>
<para>
Force child tables to inherit <literal>CHECK</> constraints from parents
- (Alex Hunsaker, Nikhil Sontakke, Tom Lane)
+ (Alex Hunsaker, Nikhil Sontakke, Tom)
</para>
<para>
- Formerly it was possible to delete such a constraint from a child
+ Formerly it was possible to drop such a constraint from a child
table, allowing rows that violate the constraint to be visible
when scanning the parent table. This was deemed inconsistent,
as well as contrary to SQL standard.
<listitem>
<para>
- Change <command>TRUNCATE</> and <command>LOCK</> behavior to
- apply to all child tables (Peter)
+ Change <command>TRUNCATE</> and <command>LOCK</> to
+ apply to child tables of the specified table(s) (Peter)
</para>
<para>
- There is a new <literal>ONLY</> clause which disables this
- behavior.
+ These commands now accept an <literal>ONLY</> option that prevents
+ processing child tables; this option must be used if the old
+ behavior is needed.
</para>
</listitem>
</para>
<para>
- Such an operation is useless because the lock would be immediately
- released.
+ Such an operation is useless because the lock would be released
+ immediately.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Sequences now contain an additional <structfield>start_value</> column
+ (Zoltan Boszormenyi)
+ </para>
+
+ <para>
+ This supports <command>ALTER SEQUENCE ... RESTART</>.
</para>
</listitem>
<listitem>
<para>
- Have <literal>NUMERIC 0 ^ 4.3</> return <literal>1</>, rather
- than an error, and have <literal>0 ^ 0.0</> return <literal>1</>,
+ Make <type>numeric</> zero raised to a fractional power return
+ <literal>0</>, rather than throwing an error, and make
+ <type>numeric</> zero raised to the zero power return <literal>1</>,
rather than error (Bruce)
</para>
<para>
- This was already the <type>float8</> behavior.
+ This matches the longstanding <type>float8</> behavior.
</para>
</listitem>
<listitem>
<para>
- Remove code that prevented unary minus of floating-point values
- from producing <literal>-0</> (Tom)
+ Allow unary minus of floating-point values to produce minus zero (Tom)
</para>
<para>
<listitem>
<para>
Throw an error if an escape character is the last character in
- a <literal>LIKE</> pattern (there is nothing to escape) (Tom)
+ a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
+ </para>
+
+ <para>
+ Previously, such an escape character was silently ignored,
+ thus possibly masking application logic errors.
</para>
</listitem>
<listitem>
<para>
- Have <function>to_char()</>'s localized month/day names depend
- on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
- Taveira de Oliveira)
+ <varname>DateStyle</> no longer controls <type>interval</> output
+ formatting; instead there is a new variable <varname>IntervalStyle</>
+ (Ron Mayer)
</para>
</listitem>
<listitem>
<para>
- Cause <function>to_date()</> and <function>to_timestamp()</>
- to more consistently report errors on invalid input (Brendan
- Jurd)
+ Improve consistency of handling of fractional seconds in
+ <type>timestamp</> and <type>interval</> output (Ron Mayer)
+ </para>
+
+ <para>
+ This may result in displaying a different number of fractional
+ digits than before, or rounding instead of truncating.
</para>
</listitem>
<listitem>
<para>
- Provide consistent rounding for fractional seconds (Ron Mayer)
- bjm: combine with another item?
+ Make <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 for invalid input (Brendan
+ Jurd)
</para>
</listitem>
<listitem>
<para>
- Require the existence of periods in <function>to_timestamp()</>
+ Require <function>to_timestamp()</> input to match
meridian (<literal>AM</>/<literal>PM</>) and era
- (<literal>BC</>/<literal>AD</>) format designations to match
+ (<literal>BC</>/<literal>AD</>) format designations with
+ respect to presence of periods
(Brendan Jurd)
</para>
</para>
</listitem>
- <listitem>
- <para>
- <varname>DateStyle</> no longer controls <type>INTERVAL</>
- output (use new variable <varname>IntervalStyle</>)
- </para>
- </listitem>
-
</itemizedlist>
</sect4>
<listitem>
<para>
- Improve optimizer statistics calculations (Tom, Jan Urbanski)
+ Improve optimizer statistics calculations (Jan Urbanski, Tom)
</para>
<para>
- This includes improved statistics for full text columns.
+ In particular, estimates for full-text-search operators are
+ greatly improved.
</para>
</listitem>
the previous behavior can be restored by
disabling <literal>enable_hashagg</>, but that is a very
performance-expensive fix. <literal>SELECT DISTINCT ON</> never
- uses hashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New semi- and anti-joins (Tom)
- </para>
-
- <para>
- While semi-joins merely replace existing <literal>IN</> joins,
- anti-joins are a new capability for <literal>NOT EXISTS</>
- clauses. This improves optimization possibilities.
+ uses hashing, however, so its behavior is unchanged.
</para>
</listitem>
<listitem>
<para>
- Improve <literal>IN</>/<literal>ANY</>/<literal>EXISTS</>
- processing (Tom)
+ Create explicit concepts of semi-joins and anti-joins (Tom)
</para>
<para>
- <literal>IN</> and <literal>EXISTS</> now provide similar
- performance for equivalent clauses.
+ This work formalizes our previous ad-hoc treatment of <literal>IN
+ (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
+ <literal>NOT EXISTS</> clauses. It should result in significantly
+ better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
+ queries. In general, logically equivalent <literal>IN</> and
+ <literal>EXISTS</> clauses should now have similar performance,
+ whereas previously <literal>IN</> often won.
</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
+ Reduce I/O load of writing the statistics collection file
by writing the file only when requested (Martin Pihlak)
</para>
</listitem>
<listitem>
<para>
- Modify <varname>constraint_exclusion</> to check for partitioned
- tables by default when inheritance or <literal>UNION ALL</> is
- used (Tom)
+ Perform <varname>constraint_exclusion</> checking by default
+ in queries involving inheritance or <literal>UNION ALL</> (Tom)
</para>
<para>
A new <varname>constraint_exclusion</> setting,
- <literal>partition</>, was added to match this behavior.
+ <literal>partition</>, was added to specify this behavior.
</para>
</listitem>
<para>
The amount of read-ahead is controlled by
- <varname>effective_io_concurrency</>. This requires
- <function>posix_fadvise()</> support in the kernel.
+ <varname>effective_io_concurrency</>. This feature is available only
+ if the kernel has <function>posix_fadvise()</> support.
</para>
</listitem>
<listitem>
<para>
Convert many <filename>postgresql.conf</> settings to enumerated
- values so <literal>pg_settings</> can easily display valid
+ values so <literal>pg_settings</> can 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)
+ fraction of a cursor's rows that the planner assumes will be
+ fetched (Robert Hell)
</para>
</listitem>
<listitem>
<para>
- Allow underscores in <filename>postgresql.conf</> custom variable
- classes (Tom)
+ Allow underscores in the names of custom variable
+ classes in <filename>postgresql.conf</> (Tom)
</para>
</listitem>
<listitem>
<para>
- Parse <filename>pg_hba.conf</> in the postmaster so errors are
- reported on reload (Magnus)
+ Parse <filename>pg_hba.conf</> fully when it is loaded,
+ so that errors are reported immediately (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.
+ Previously, most errors in the file wouldn't be detected until clients
+ tried to connect, so an erroneous file could render the system
+ unusable. With the new behavior, if an error is detected during
+ reload then the bad file is rejected and the postmaster continues
+ to use its old copy.
</para>
</listitem>
<listitem>
<para>
- Remove the <literal>sameuser</> option, making it the default
- if no usermap is specified (Magnus)
+ Show all parsing errors in <filename>pg_hba.conf</> instead of
+ aborting after the first one (Selena Deckelmann)
</para>
</listitem>
<listitem>
<para>
- Change all authentication options to be <literal>name=value</>
- settings (Magnus)
+ Remove the <literal>ident sameuser</> option, instead making that
+ behavior the default if no usermap is specified (Magnus)
</para>
</listitem>
<listitem>
<para>
- Allow usermap parameter for all external authentication methods
- (Magnus)
+ Change all authentication options to use <literal>name=value</>
+ syntax (Magnus)
</para>
+ </listitem>
+ <listitem>
<para>
- Previously this was only supported for <literal>ident</>
- authentication.
+ Allow a usermap parameter for all external authentication methods
+ (Magnus)
</para>
- </listitem>
- <listitem>
<para>
- Allow <literal>ident</> authentication over Unix-domain sockets
- on <productname>Solaris</> (Garick Hamlin)
+ Previously a usermap was only supported for <literal>ident</>
+ authentication.
</para>
</listitem>
<listitem>
<para>
- Add <literal>krb5</>, <literal>gssapi</>, and <literal>sspi</>
- <varname>include_realm</> parameter (Magnus)
+ Add <varname>include_realm</> parameter for <literal>krb5</>,
+ <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
</para>
<para>
<listitem>
<para>
- Show all parsing errors instead of aborting after the first
- one (Selena Deckelmann)
+ Support <literal>ident</> authentication over Unix-domain sockets
+ on <productname>Solaris</> (Garick Hamlin)
</para>
</listitem>
<listitem>
<para>
- Have <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
+ Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
files to be archived (Simon)
</para>
<listitem>
<para>
- Prevent normal shutdown if a continuous archiving base backup
+ Delay <quote>smart</> shutdown while a continuous archiving base backup
is in progress (Laurenz Albe)
</para>
</listitem>
<listitem>
<para>
- Cancel a continuous archiving base backup if a fast shutdown
+ Cancel a continuous archiving base backup if <quote>fast</> shutdown
is requested (Laurenz Albe)
</para>
</listitem>
<para>
Allow <filename>recovery.conf</> boolean variables to take the
same range of string values as <filename>postgresql.conf</>
+ boolean variables
(Bruce)
</para>
</listitem>
Add <function>pg_terminate_backend()</> to safely terminate a
backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
</para>
+
+ <para>
+ While it's always been possible to <literal>SIGTERM</> a single
+ backend, this was previously considered unsupported; and testing
+ of the case found some bugs that are now fixed.
+ </para>
</listitem>
<listitem>
<para>
- Add ability to track user-defined functions call counts and
- runtimes via parameter <varname>track_functions</> (Martin
- Pihlak)
+ Add ability to track user-defined functions' call counts and
+ runtimes (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.
+ Function statistics appear in a new system view,
+ <literal>pg_stat_user_functions</>. Tracking is controlled
+ by the new parameter <varname>track_functions</>.
</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)
+ Allow specification of the maximum query string size in
+ <literal>pg_stat_activity</> via new
+ <varname>track_activity_query_size</> parameter (Thomas Lee)
</para>
</listitem>
<listitem>
<para>
- Improve syslog performance by increasing the maximum line length
- (Tom)
+ Increase the maximum line length sent to <application>syslog</>, in
+ hopes of improving performance (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)
+ Add read-only configuration 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
+ When reporting a deadlock, report the text of all queries involved
in the deadlock to the server log (Itagaki Takahiro)
</para>
</listitem>
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.
+ <literal>$PGDATA</> directory so it is preserved across restarts.
</para>
</listitem>
<listitem>
<para>
- Add <literal>WITH</> clauses support, including <literal>WITH
+ Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
</para>
</listitem>
</para>
<para>
- <command>TABLE tablename</> is a short-hand for <command>SELECT
- * FROM tablename</>.
+ <literal>TABLE tablename</> is a SQL standard short-hand for
+ <literal>SELECT * FROM tablename</>.
</para>
</listitem>
<para>
Allow <literal>AS</> to be optional when specifying a
<command>SELECT</> (or <literal>RETURNING</>) column output
- label (assuming the label is not an <acronym>SQL</> keyword)
- (Hiroshi Saito)
+ label (Hiroshi Saito)
+ </para>
+
+ <para>
+ This works so long as the column label is not any
+ <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
+ needed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support set-returning functions in <command>SELECT</> result lists
+ even for functions that return their result via a tuplestore (Tom)
+ </para>
+
+ <para>
+ In particular, this means that functions written in PL/PgSQL
+ and other PL languages can now be called this way.
</para>
</listitem>
There are no remote or external <acronym>SQL/MED</> capabilities
yet, but this change provides a standardized and future-proof
system for managing connection information for modules like
- dblink and plproxy.
+ <filename>dblink</> and <filename>plproxy</>.
</para>
</listitem>
</para>
<para>
- Specifically this allows <literal>array[row(1,2), row(3,4)]</>
- and <literal>row(1,1.1) = any (array[row(7,7.7), row(1,1.0)])</>.
- This is particularly useful for recursive queries.
+ This allows constructs such as
+ <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
+ This is particularly useful in recursive queries.
</para>
</listitem>
<para>
Improve the parser's ability to report error locations (Tom)
</para>
+
+ <para>
+ An error location is now reported for many semantic errors,
+ such as mismatched datatypes, that previously could not be localized.
+ </para>
</listitem>
</itemizedlist>
<listitem>
<para>
- Have <command>EXPLAIN VERBOSE</> show the output columns of a
- query (Tom)
+ Make <command>EXPLAIN VERBOSE</> show the output columns of each
+ plan node (Tom)
</para>
<para>
<listitem>
<para>
- Have <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
+ Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
</para>
</listitem>
<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)
+ Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
</para>
</listitem>
<listitem>
<para>
Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
- AS</>, per the <acronym>SQL</> standard (Tom, Peter)
+ AS</>, per the <acronym>SQL</> standard (Peter, Tom)
</para>
</listitem>
<listitem>
<para>
Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
- transition datatype (for super-users only) (Tom)
+ transition datatype (Tom)
</para>
</listitem>
<listitem>
<para>
Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
- <emphasis>end</> of a view (Robert Haas)
+ end of a view (Robert Haas)
</para>
</listitem>
<listitem>
<para>
- Add <command>ALTER SEQUENCE ... RESTART</> (no parameter) to
+ Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
reset a sequence to its initial value (Zoltan Boszormenyi)
- bjm: compatibility problem?
</para>
</listitem>
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>
+ This change allows the following new syntaxes:
- <para>
<itemizedlist>
<listitem>
<para>
</para>
</listitem>
</itemizedlist>
- </para>
+ There is no actual new functionality here, but formerly
+ you had to say <command>ALTER TABLE</> to do these things,
+ which was confusing.
+ </para>
</listitem>
<listitem>
<listitem>
<para>
- Have <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
- to remove <type>OID</> values (Tom)
+ Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
+ to physically remove <type>OID</> values (Tom)
</para>
<para>
<listitem>
<para>
- Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> database-level
- settings (Radek Strnad, Heikki)
+ Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
+ per-database settings (Radek Strnad, Heikki)
</para>
<para>
<listitem>
<para>
- Add verbose option to the <command>CLUSTER</> command and
+ Add a verbose option to the <command>CLUSTER</> command and
<application>clusterdb</> (Jim Cox)
</para>
</listitem>
<listitem>
<para>
- Have hash indexes store only the hashed value, not the full
+ Make 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.
+ values, improving performance.
</para>
</listitem>
<listitem>
<para>
<literal>xxx_pattern_ops</> indexes can now be used for simple
- equality comparisons, not only <literal>LIKE</> (Tom)
+ equality comparisons, not only for <literal>LIKE</> (Tom)
</para>
</listitem>
<listitem>
<para>
- Improve support for Nepali language and Devanagari alphabet (Teodor)
+ Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
</para>
</listitem>
<listitem>
<para>
- Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
+ Improve support for Nepali language and Devanagari alphabet (Teodor)
</para>
</listitem>
<listitem>
<para>
- Allow relation forks to track free space (Heikki)
+ Track free space in separate per-relation <quote>fork</> files (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.
+ Free space discovered by <command>VACUUM</> is now recorded in
+ <filename>*_fsm</> files, rather than in a fixed-sized shared memory
+ area. The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
+ settings have been removed, greatly simplifying administration of
+ free space management.
</para>
</listitem>
<listitem>
<para>
- New visibility map file to track pages that do not require
- vacuum (Heikki)
+ Add a visibility map to track pages that do not require
+ vacuuming (Heikki)
</para>
<para>
- This allows <command>VACUUM</> to avoid sequentially scanning
+ This allows <command>VACUUM</> to avoid scanning all of
a table when only a portion of the table needs vacuuming.
+ The visibility map is stored in per-relation <quote>fork</> files.
</para>
</listitem>
<listitem>
<para>
- Track explicit transaction snapshots (Alvaro)
+ 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>
- This improves space reuse by vacuum in the presence of long-running
- transactions.
+ Track transaction snapshots more carefully (Alvaro)
</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)
+ This can improve space reuse by <command>VACUUM</> in the presence of
+ long-running transactions.
</para>
</listitem>
<listitem>
<para>
- Add ability to specify autovacuum and <acronym>TOAST</> parameters
- in <command>CREATE TABLE</> (Alvaro, Euler Taveira de Oliveira)
+ Add ability to specify per-relation autovacuum and <acronym>TOAST</>
+ parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
+ Oliveira)
</para>
<para>
<listitem>
<para>
- Add <type>int2</> with <type>int8</> basic arithmetic operators
+ Add basic arithmetic operators for <type>int2</> with <type>int8</>
(Tom)
</para>
<para>
- This simplifies casting requirements.
+ This eliminates the need for explicit casting in some situations.
</para>
</listitem>
<listitem>
<para>
- Allow <type>UUID</> input to accept optional hyphens after
- every four digits (Robert Haas)
+ Allow <type>UUID</> input to accept an optional hyphen after
+ every fourth digit (Robert Haas)
</para>
</listitem>
<listitem>
<para>
- Accept <literal>on</>/<literal>off</> as boolean data type
- values (Itagaki Takahiro)
+ Allow <literal>on</>/<literal>off</> as input for the boolean data type
+ (Itagaki Takahiro)
</para>
</listitem>
</para>
<para>
- Previously these were interpreted as <literal>1 BC</>; years
- <literal>0</> and <literal>00</> are assumed to be the year
- 2000.
+ Previously these were interpreted as <literal>1 BC</>.
+ (Note: years <literal>0</> and <literal>00</> are still assumed to be
+ the year 2000.)
</para>
</listitem>
<listitem>
<para>
- Support the <acronym>IS0 8601</> <type>interval</> syntax (Tom,
- Kevin Grittner)
+ Support the <acronym>IS0 8601</> <type>interval</> syntax (Kevin
+ Grittner)
</para>
<para>
<listitem>
<para>
- Allow <type>INTERVAL</> precision to be specified after the
+ 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
+ <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)
+ Support <literal>infinity</> and <literal>-infinity</> as
+ values of type <type>date</> (Tom)
</para>
</listitem>
<listitem>
<para>
Add <varname>IntervalStyle</> parameter
- which controls how <type>INTERVAL</> values are output (Ron Mayer)
+ 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
+ Valid values are: <literal>postgres</>, <literal>postgres_verbose</>,
+ <literal>sql_standard</>, <literal>iso_8601</>. This setting 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)
+ Improve consistency of handling of fractional seconds in
+ <type>timestamp</> and <type>interval</> output (Ron Mayer)
</para>
</listitem>
<listitem>
<para>
- Have cast on <type>ARRAY</> apply to all elements, not just
- the array result (Brendan Jurd)
+ Improve the handling of casts applied to <literal>ARRAY[]</>
+ constructs, such as <literal>ARRAY[...]::integer[]</>
+ (Brendan Jurd)
</para>
<para>
- This allows <literal>NULL</> <type>ARRAY</> entries as long as
- they are properly cast.
+ Formerly <productname>PostgreSQL</> attempted to determine a data type
+ for the <literal>ARRAY[]</> construct without reference to the ensuing
+ cast. This could fail unnecessarily in many cases, in particular when
+ the <literal>ARRAY[]</> construct was empty or contained only
+ ambiguous entries such as <literal>NULL</>. Now the cast is consulted
+ to determine the type that the array elements must be.
</para>
</listitem>
<listitem>
<para>
Add <function>array_length()</> to return the length
- of an array for the specified dimensions (Jim Nasby, Robert
+ of an array for a specified dimension (Jim Nasby, Robert
Haas, Peter Eisentraut)
</para>
</listitem>
<listitem>
<para>
Consider <acronym>TOAST</> compression on values as short as
- 32 bytes (previously 256 bytes) (Tom)
+ 32 bytes (previously 256 bytes) (Greg Stark)
</para>
</listitem>
<listitem>
<para>
- Require 25% of space savings before using <acronym>TOAST</>
- compression (previously 20%) (Tom)
+ Require 25% minimum space savings before using <acronym>TOAST</>
+ compression (previously 20% for small values and any-savings-at-all
+ for large values) (Greg)
</para>
</listitem>
<listitem>
<para>
- Be more aggressive in storing <literal>EXTERNAL</> and
- <literal>EXTENDED</> column values in <acronym>TOAST</>(Tom)
+ Improve toast heuristics for rows including a mix of large and
+ small toastable fields, so that we prefer to push large values
+ out of line and don't compress small values unnecessarily
+ (Greg, Tom)
</para>
</listitem>
<listitem>
<para>
- Add server side function <function>lo_import(filename, oid)</>
+ 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
+ <function>quote_literal()</> but returns the string <literal>NULL</> for
a null argument (Brendan Jurd)
</para>
</listitem>
<listitem>
<para>
- Improve full text search <function>headline()</> generation to
+ Improve full text search <function>headline()</> function 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)
+ function to prevent non-data-changing updates (Andrew)
</para>
</listitem>
<listitem>
<para>
- Add <function>div(NUMERIC, NUMERIC)</> for <type>NUMERIC</>
- division, without rounding (Tom)
+ Add <function>div(numeric, numeric)</> to perform <type>numeric</>
+ division without rounding (Tom)
</para>
</listitem>
<listitem>
<para>
- Add <function>pg_get_keywords()</> to return predefined
+ Add <function>pg_get_keywords()</> to return a list of the
parser keywords (Dave Page)
</para>
</listitem>
<listitem>
<para>
- Add <function>pg_get_functiondef()</> to see a functions
+ Add <function>pg_get_functiondef()</> to see a function's
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</>
<listitem>
<para>
- Have <function>version()</> return information about whether
+ Make <function>version()</> return information about whether
the server is a 32 or 64-bit binary (Bruce)
</para>
</listitem>
<listitem>
<para>
- Have <function>pg_*_is_visible()</> and
+ Make <function>pg_*_is_visible()</> and
<function>has_*_privilege()</> functions return <literal>NULL</>
for invalid oids, rather than generate an error (Tom)
</para>
<listitem>
<para>
- Allow <literal>DEFAULT</> values for function arguments (Pavel
+ Support <literal>DEFAULT</> values for function arguments (Pavel
Stehule)
</para>
</listitem>
of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
<literal>RETURNING</> clause (Tom)
</para>
-
- <para>
- Formerly only <command>SELECT</> was supported.
- </para>
</listitem>
</itemizedlist>
<listitem>
<para>
- Allow looping over an open cursor using a <literal>FOR</>
+ Allow looping over the results of a cursor using a <literal>FOR</>
loop (Pavel Stehule)
</para>
</listitem>
<listitem>
<para>
- Improve the <literal>RAISE</> command: (Pavel Stehule)
+ Improve the <literal>RAISE</> command (Pavel Stehule)
<itemizedlist>
<listitem>
<listitem>
<para>
Allow <literal>RAISE</> without parameters in an exception
- block to rethrow the current error
+ block to re-throw the current error
</para>
</listitem>
</itemizedlist>
<listitem>
<para>
- Allow specification of <varname>SQLSTATE</> numeric codes
+ Allow specification of numeric <varname>SQLSTATE</> codes
in <literal>EXCEPTION</> lists (Pavel Stehule)
</para>
<listitem>
<para>
- Remove <literal>-q</> (quiet) option for create* and drop*
+ Remove <literal>-q</> (quiet) option of create* and drop*
utility commands (Peter)
</para>
</itemizedlist>
<sect4>
- <title><link linkend="APP-PSQL"><application>psql</></link></title>
+ <title><application>psql</></title>
<itemizedlist>
<listitem>
<para>
- Remove startup banner; now just suggest <literal>help</>
+ Remove verbose startup banner; now just suggest <literal>help</>
(Joshua Drake)
</para>
</listitem>
<listitem>
<para>
- Have <literal>help</> show common backslash commands (Greg
+ Make <literal>help</> show common backslash commands (Greg
Sabino Mullane)
</para>
</listitem>
Require a space between a backslash command and the first
argument (Bernd Helmle)
</para>
+
+ <para>
+ This removes a historical source of ambiguity.
+ </para>
</listitem>
<listitem>
<listitem>
<para>
- Improve tab completion support for schema qualified and
+ 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</>,
+ Allow all supported spellings of boolean values in <command>\pset</>,
rather than just <literal>on</> and <literal>off</> (Bruce)
</para>
</listitem>
<listitem>
<para>
- Have <command>\l</> show access privileges (Andrew Gilligan)
+ Make <command>\l</> show access privileges (Andrew Gilligan)
</para>
</listitem>
<listitem>
<para>
- Have <command>\l+</> show database sizes, if permissions
+ Make <command>\l+</> show database sizes, if permissions
allow (Andrew Gilligan)
</para>
</listitem>
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>
+ <title><application>psql</> \d* commands</title>
<itemizedlist>
<listitem>
<para>
- Have <command>\d</> show cases where this table is referenced
- as a foreign-key constraint (Kenneth D'Souza)
+ Make <command>\d</> show cases where the current table is referenced
+ by a foreign-key constraint (Kenneth D'Souza)
</para>
</listitem>
<listitem>
<para>
- Have <command>\d</> show the value of sequence columns
+ Make <command>\d</> on a sequence show its column values
(Euler Taveira de Oliveira)
</para>
</listitem>
<listitem>
<para>
- Show relation size in <command>\d+</> output (Dickson S.
+ Show relation size in <command>\dt+</> output (Dickson S.
Guedes)
</para>
</listitem>
<para>
The former behavior was inconsistent across different variants
- of <command>\d</>, and provided no easy way to see just user objects.
+ of <command>\d</>, and in most cases it provided no easy way to see
+ just user objects.
</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)
+ Show the values of <literal>enum</> types in <command>\dT+</> (David
+ Fetter)
</para>
</listitem>
</sect4>
<sect4>
- <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+ <title><application>pg_dump</></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
+ so that dumps can be restored to clusters that have non-matching
tablespace layouts (Gavin Roy)
</para>
</listitem>
<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.
+ are necessary for safety.
</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)
+ to dump tables referenced by foreign keys before
+ the 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.
+ If circular references make a safe ordering impossible, a
+ <literal>NOTICE</> is issued.
</para>
</listitem>
<listitem>
<para>
- Allow <application>pg_restore</> of a custom format archive to
- use multiple concurrent connections to do the restore (Andrew)
+ Allow <application>pg_restore</> to use multiple concurrent
+ connections to do the restore (Andrew)
</para>
<para>
The number of concurrent connections is controlled by the option
- <literal>--jobs</>.
+ <literal>--jobs</>. This is supported only for custom-format archives.
</para>
</listitem>
<listitem>
<para>
- Add new <application>pg_dump</> <literal>--binary-upgrade</>
- option for use by binary upgrade utilities (Bruce)
+ Add new <application>pg_dump</> option <option>--binary-upgrade</>
+ for use by binary upgrade utilities (Bruce)
</para>
</listitem>
<title>Programming Tools</title>
<sect4>
- <title><link linkend="libpq"><application>libpq</></link></title>
+ <title><application>libpq</></title>
<itemizedlist>
<listitem>
<para>
- Allow the <type>OID</> to be specified when importing large
- objects using <function>lo_import_with_oid()</> (Tatsuo)
+ Allow the <type>OID</> to be specified when importing a large
+ object, via new function <function>lo_import_with_oid()</> (Tatsuo)
</para>
</listitem>
<listitem>
<para>
- Have <function>PQexecParams()</> return
+ Make <function>PQexecParams()</> return
<varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
</para>
</sect4>
<sect4>
- <title><link linkend="libpq"><application>libpq</></link>
- <acronym>SSL</> (Secure Sockets Layer)</title>
+ <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
+ support</title>
<itemizedlist>
<listitem>
</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
</para>
</listitem>
+ <listitem>
+ <para>
+ Allow the file locations for client certificates to be specified
+ (Mark Woodward, Alvaro, Magnus)
+ </para>
+ </listitem>
+
<listitem>
<para>
Add a <function>PQinitOpenSSL</> function to allow greater control
<listitem>
<para>
Properly unregister <application>OpenSSL</> callbacks when
- libpq is done with all connections (Bruce, Magnus, Russell Smith)
+ libpq is finished with all connections (Bruce, Magnus, Russell Smith)
</para>
<para>
</sect4>
<sect4>
- <title><link linkend="ecpg"><application>ecpg</></link></title>
+ <title><application>ecpg</></title>
<itemizedlist>
<listitem>
</para>
<para>
- Previously a separate ecpg parser was maintained.
+ Previously the ecpg parser was hand-maintained.
</para>
</listitem>
<title>Build Options</title>
<itemizedlist>
- <listitem>
- <para>
- Support 64-bit time zone data files (Heikki)
- </para>
-
- <para>
- This adds support for daylight saving time (<acronym>DST</>)
- calculations beyond year 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in handling of the time zone database when cross-compiling
- (Richard Evans)
- </para>
- </listitem>
-
<listitem>
<para>
Update build system to use <productname>Autoconf</> 2.61 (Peter)
</para>
<para>
- This has been a requirement for several years but this removes
- the infrastructure for supporting other parser tools.
+ This has effectively been required for several years, but now there
+ is no infrastructure claiming to support other parser tools.
</para>
</listitem>
</para>
<para>
- This allows compile-time control over several constants that
- affect how tables and <acronym>WAL</> files are segmented and
- their internal block sizes.
+ This simplifies build-time control over several constants that
+ previously could only be changed by editing
+ <filename>pg_config_manual.h</>.
</para>
</listitem>
<listitem>
<para>
- Append the major version number to the <application>gettext</>
+ Append the major version number to the backend <application>gettext</>
domain, and the <literal>soname</> major version number to
- libraries (Peter)
+ libraries' <application>gettext</> domain (Peter)
</para>
<para>
- This simplifies parallel installations.
+ This simplifies parallel installations of multiple versions.
</para>
</listitem>
</para>
</listitem>
- <listitem>
- <para>
- Fix problem when setting <varname>LC_MESSAGES</> on
- <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
- Saito, Magnus) bjm: details?
- </para>
- </listitem>
-
</itemizedlist>
</sect3>
<title>Source Code</title>
<itemizedlist>
+ <listitem>
+ <para>
+ Support 64-bit time zone data files (Heikki)
+ </para>
+
+ <para>
+ This adds support for daylight saving time (<acronym>DST</>)
+ calculations beyond the year 2038.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bug in handling of the time zone database when cross-compiling
+ (Richard Evans)
+ </para>
+ </listitem>
+
<listitem>
<para>
Link backend object files in one step, rather than in stages
<listitem>
<para>
- Add function hook to let plug-ins control the executor (Itagaki
+ Add function hook to let plug-ins monitor the executor (Itagaki
Takahiro)
</para>
</listitem>
</para>
</listitem>
+ <listitem>
+ <para>
+ Fix problem when setting <varname>LC_MESSAGES</> on
+ <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
+ Saito, Magnus)
+ </para>
+ </listitem>
+
</itemizedlist>
</sect3>
<listitem>
<para>
- Add query mode option to <filename>/contrib/pgbench</>
+ Add duration and query mode options to <filename>contrib/pgbench</>
(Itagaki Takahiro)
</para>
</listitem>
<listitem>
<para>
- Add duration option to <filename>/contrib/pgbench</> (Itagaki
- Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>/contrib/pgstattuple</> to handle tables and
+ Fix <filename>contrib/pgstattuple</> to handle tables and
indexes with over 2 billion pages (Tatsuhito Kasahara)
</para>
</listitem>
<listitem>
<para>
Add Levenshtein string-distance function to
- <filename>/contrib/fuzzystrmatch</> that allows the user to
+ <filename>contrib/fuzzystrmatch</> that allows the user to
specify the cost of insertion, deletion, and substitution
(Volkan Yazici)
</para>
<listitem>
<para>
Remove <function>dblink_current_query()</> from
- <filename>/contrib/dblink</>; it should now use
+ <filename>contrib/dblink</>; one should now use
<function>current_query()</> (Tomas Doran)
</para>
</listitem>
<listitem>
<para>
- Have <filename>/contrib/ltree</> support multibyte encodings
+ Make <filename>contrib/ltree</> support multibyte encodings
(laser)
</para>
</listitem>
<listitem>
<para>
- Add <filename>/contrib/btree_gin</> to allow GIN indexes to
+ Add <filename>contrib/btree_gin</> to allow GIN indexes to
handle more datatypes (Oleg, Teodor)
</para>
</listitem>
<listitem>
<para>
- Add <filename>/contrib/citext</> as a case-insensitive,
+ Add <filename>contrib/citext</> to provide a case-insensitive,
multibyte-aware text data type (David Wheeler)
</para>
</listitem>
<listitem>
<para>
- Make sure <filename>/contrib/dblink</> uses a password supplied
- by the user, and not accidentally from the server's .pgpass file
- (Joe Conway)
+ Make sure <filename>contrib/dblink</> uses a password supplied
+ by the user, and not accidentally taken from the server's
+ <filename>.pgpass</> file (Joe Conway)
</para>
<para>
<listitem>
<para>
Add <function>fsm_page_contents()</>
- to<filename>/contrib/pageinspect</> (Heikki)
+ to <filename>contrib/pageinspect</> (Heikki)
</para>
+ </listitem>
+ <listitem>
<para>
Modify <function>get_raw_page()</> to support free space map
- (<filename>*.fsm</>) files. Also update
- <filename>/contrib/pg_freespacemap</>.
+ (<filename>*_fsm</>) files. Also update
+ <filename>contrib/pg_freespacemap</>.
</para>
</listitem>
<listitem>
<para>
- Add support for multibyte encodings to <filename>/contrib/pg_trgm</>
+ Add support for multibyte encodings to <filename>contrib/pg_trgm</>
(Teodor)
</para>
</listitem>
<listitem>
<para>
- Rewrite <filename>/contrib/intagg</> to user new server-side
+ Rewrite <filename>contrib/intagg</> to use new
functions <function>array_agg()</> and <function>unnest()</>
(Tom)
</para>
<listitem>
<para>
- Remove <filename>/contrib/intarray</>'s definitions of the
+ Remove <filename>contrib/intarray</>'s definitions of the
<literal><@</> and <literal>@></> operators (Tom)
</para>
<para>
This avoids confusion with the equivalent built-in operators.
- If necessary, the <filename>/contrib/intarray</> implementations
+ If needed, the <filename>contrib/intarray</> implementations
are still available under their historical names <literal>@</>
and <literal>~</>.
</para>
<listitem>
<para>
- Add <filename>/contrib/auto_explain</> to automatically run
+ Add <filename>contrib/auto_explain</> to automatically run
<command>EXPLAIN</> on queries exceeding a specified duration
(Itagaki Takahiro, Tom)
</para>
<listitem>
<para>
- Add <filename>/contrib/pg_stat_statements</> for server-wide
+ Add <filename>contrib/pg_stat_statements</> for server-wide
tracking of statement execution statistics (Itagaki Takahiro)
</para>
</listitem>