Commit 4b4a831f authored by Bruce Momjian's avatar Bruce Momjian

First version of 8.4 release notes; markup/cleanup/reorganization still

required.
parent 9151e1bb
<!-- $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:
......@@ -63,226 +63,2560 @@ do it for earlier branch release files.
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
Lszl)
</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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment