mirror of
https://github.com/postgres/postgres.git
synced 2025-06-01 00:01:20 -04:00
apparently found uninteresting, and do minor wordsmithing on a number of the existing entries.
32055 lines
966 KiB
Plaintext
32055 lines
966 KiB
Plaintext
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.632 2009/04/26 20:08:30 tgl Exp $ -->
|
||
<!--
|
||
|
||
Typical markup:
|
||
|
||
&<> use & escapes
|
||
PostgreSQL <productname>
|
||
postgresql.conf, pg_hba.conf <filename>
|
||
[A-Z][A-Z ]+[A-Z] <command>
|
||
[A-Za-z_][A-Za-z0-9_]+() <function>
|
||
[A-Za-z_]/[A-Za-z_]+ <filename>
|
||
pg_[A-Za-z0-9_] <application>
|
||
[A-Z][A-Z][A-Z_ ]* <type>, <envar>, <literal>
|
||
|
||
non-ASCII characters convert to HTML4 entity (&) escapes
|
||
|
||
official: http://www.w3.org/TR/html4/sgml/entities.html
|
||
one page: http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
|
||
other lists: http://www.zipcon.net/~swhite/docs/computers/browsers/entities.html
|
||
http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
|
||
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
|
||
|
||
we cannot use UTF8 because SGML Docbook
|
||
does not support it
|
||
http://www.pemberley.com/janeinfo/latin1.html#latexta
|
||
|
||
wrap long lines
|
||
|
||
For new features, add links to the documentation sections. Use </link>
|
||
so that Perl can remove it so HISTORY.html can be created with no
|
||
links to the main documentation. This was added only in 8.2, so don't
|
||
do it for earlier branch release files.
|
||
|
||
-->
|
||
|
||
<appendix id="release">
|
||
<title>Release Notes</title>
|
||
|
||
<para>
|
||
The release notes contain the significant changes in each
|
||
<productname>PostgreSQL</> release, with major features and migration
|
||
issues listed at the top. The release notes do not contain changes
|
||
that affect only a few users or changes that are internal and therefore not
|
||
user-visible. For example, the optimizer is improved in almost every
|
||
release, but the improvements are usually observed by users as simply
|
||
faster queries.
|
||
</para>
|
||
|
||
<para>
|
||
A complete list of changes for each release can be obtained by
|
||
viewing the <link linkend="cvs">CVS</link> logs for each release.
|
||
The <ulink
|
||
url="http://archives.postgresql.org/pgsql-committers/">pgsql-committers
|
||
email list</ulink> records all source code changes as well. There is also
|
||
a <ulink url="http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/">web
|
||
interface</ulink> that shows changes to specific files.
|
||
<!-- we need a file containing the CVS logs for each release, and something
|
||
like the SVN web interface that groups commits but has branches -->
|
||
</para>
|
||
|
||
<para>
|
||
The name appearing next to each item represents the major developer for
|
||
that item. Of course all changes involve community discussion and patch
|
||
review, so each item is truly a community effort.
|
||
</para>
|
||
|
||
<sect1 id="release-8-4">
|
||
<title>Release 8.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-??-??, ITEMS CURRENT AS OF 2009-04-08</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<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,
|
||
monitoring, space reuse), and adds capabilities defined in the
|
||
later SQL standards. The major areas of enhancement are:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<!-- This list duplicates items below, but without authors or details-->
|
||
|
||
<listitem>
|
||
<para>
|
||
Windowing Functions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Common Table Expressions and Recursive Joins
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Default and variadic parameters for functions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Parallel Restore
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Column Permissions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-database locale settings
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved hash indexes
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Easier-to-use Warm Standby
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Automatic sizing of the Free Space Map
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Version-aware psql (backslash commands work against older servers)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support SSL certificates for user authentication
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-function runtime statistics
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Easy editing of functions in psql
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
The above items are explained in more detail in the sections below.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4</title>
|
||
|
||
<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>
|
||
Use 64-bit integer datetimes by default (Neil Conway)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <application>ipcclean</> utility command (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
The utility only worked on a few platforms. Users should use
|
||
their operating system tools instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Settings</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change default setting for
|
||
<literal>log_min_messages</> to <literal>warning</> (previously
|
||
it was <literal>notice</>) to reduce log file volume (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <varname>log_temp_files</> settable by superusers only, like other
|
||
logging options (Simon Riggs)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove automatic appending of the epoch timestamp when no <literal>%</>
|
||
escapes are present in <literal>log_filename</> (Robert Haas)
|
||
</para>
|
||
|
||
<para>
|
||
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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove support for the (insecure) <literal>crypt</> authentication method
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
|
||
libraries, 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</>;
|
||
these are now set in <filename>pg_hba.conf</> instead (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
There are also significant changes in <link
|
||
linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
|
||
as described below.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <command>TRUNCATE</> and <command>LOCK</> to
|
||
apply to child tables of the specified table(s) (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>SELECT DISTINCT</> and
|
||
<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
|
||
no longer always produce sorted output (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, these types of queries always removed duplicate rows
|
||
by means of Sort/Unique processing (i.e., sort then remove adjacent
|
||
duplicates). Now they can be implemented by hashing, which will not
|
||
produce sorted output. If an application relied on the output being
|
||
in sorted order, the recommended fix is to add an <literal>ORDER BY</>
|
||
clause. As a short-term workaround, 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, however, so its behavior is unchanged.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Force child tables to inherit <literal>CHECK</> constraints from parents
|
||
(Alex Hunsaker, Nikhil Sontakke, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
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.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
|
||
values, rather than treating them as zero (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>LOCK TABLE</> outside a transaction block
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Functions and Operators</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
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 matches the longstanding <type>float8</> behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow unary minus of floating-point values to produce minus zero (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The changed behavior is more <acronym>IEEE</>-standard
|
||
compliant.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Throw an error if an escape character is the last character in
|
||
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>
|
||
Remove <literal>~=~</> and <literal>~<>~</> operators
|
||
formerly used for <literal>LIKE</> index comparisons (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Pattern indexes now use the regular equality operator.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>xpath()</> now passes its arguments to <application>libxml</>
|
||
without any changes (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
This means that the XML argument must be a well-formed XML document.
|
||
The previous coding attempted to allow XML fragments, but it did not
|
||
work well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>xmlelement()</> format attribute values just like
|
||
content values (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, attribute values were formatted according to the
|
||
normal SQL output behavior, which is sometimes at odds with
|
||
XML rules.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Adopt a faster algorithm for hash functions (Kenneth Marshall,
|
||
based on work of Bob Jenkins)
|
||
</para>
|
||
|
||
<para>
|
||
Many of the built-in hash functions now deliver different results on
|
||
little-endian and big-endian platforms.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Temporal Functions and Operators</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>DateStyle</> no longer controls <type>interval</> output
|
||
formatting; instead there is a new variable <varname>IntervalStyle</>
|
||
(Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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>
|
||
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>
|
||
|
||
<para>
|
||
Previous versions would often ignore or silently misread input
|
||
that did not match the format string. Such cases will now
|
||
result in an error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>to_timestamp()</> to not require upper/lower case
|
||
matching for meridian (<literal>AM</>/<literal>PM</>) and era
|
||
(<literal>BC</>/<literal>AD</>) format designations (Brendan
|
||
Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
For example, input value <literal>ad</> now matches the format
|
||
string <literal>AD</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</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 (Jan Urbanski, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, estimates for full-text-search operators are
|
||
greatly improved.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>SELECT DISTINCT</> and
|
||
<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
|
||
use hashing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This means that these types of queries no longer automatically
|
||
produce sorted output.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create explicit concepts of semi-joins and anti-joins (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
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 optimization of sub-selects beneath outer joins (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, a sub-select or view could not be optimized very well if it
|
||
appeared within the nullable side of an outer join and contained
|
||
non-strict expressions (for instance, constants) in its result list.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the performance of <function>text_position()</> and
|
||
related functions by using Boyer-Moore-Horspool searching (David
|
||
Rowley)
|
||
</para>
|
||
|
||
<para>
|
||
This is particularly helpful for long search patterns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce I/O load of writing the statistics collection 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 <varname>default_statistics_target</>
|
||
from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
|
||
Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The maximum value was also increased from <literal>1000</> to
|
||
<literal>10000</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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 specify 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
|
||
<varname>effective_io_concurrency</>. This feature is available only
|
||
if the kernel has <function>posix_fadvise()</> support.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Inline simple set-returning <acronym>SQL</> functions in
|
||
<literal>FROM</> clauses (Richard Rowell)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of multi-batch hash joins by providing a special
|
||
case for join key values that are especially common in the outer
|
||
relation (Bryce Cutt, Ramon Lawrence)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce volume of temporary data in multi-batch hash joins
|
||
by suppressing <quote>physical tlist</> optimization (Michael
|
||
Henderson, Ramon Lawrence)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid waiting for idle-in-transaction sessions during
|
||
<command>CREATE INDEX CONCURRENTLY</> (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of shared cache invalidation (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server</title>
|
||
|
||
<sect4>
|
||
<title>Settings</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Convert many <filename>postgresql.conf</> settings to enumerated
|
||
values so that <literal>pg_settings</> can display the valid
|
||
values (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>cursor_tuple_fraction</> parameter to control the
|
||
fraction of a cursor's rows that the planner assumes will be
|
||
fetched (Robert Hell)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow underscores in the names of custom variable
|
||
classes in <filename>postgresql.conf</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Authentication</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Report appropriate error message for combination of <literal>MD5</>
|
||
authentication and <varname>db_user_namespace</> enabled (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support regular expressions in <filename>pg_ident.conf</>
|
||
(Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
|
||
to be changed without restarting the postmaster (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4 id="release-8-4-pg-hba-conf">
|
||
<title><filename>pg_hba.conf</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Parse <filename>pg_hba.conf</> fully when it is loaded,
|
||
so that errors are reported immediately (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Show all parsing errors in <filename>pg_hba.conf</> instead of
|
||
aborting after the first one (Selena Deckelmann)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the <literal>ident sameuser</> option, instead making that
|
||
behavior the default if no usermap is specified (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change all authentication options to use <literal>name=value</>
|
||
syntax (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow a usermap parameter for all external authentication methods
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously a usermap was only supported for <literal>ident</>
|
||
authentication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>clientcert</> option to control requesting of a
|
||
client certificate (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously this was controlled by the presence of a root
|
||
certificate file in the server's data directory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>cert</> authentication method to allow
|
||
<emphasis>user</> authentication via <acronym>SSL</> certificates
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously <acronym>SSL</> certificates could only verify that
|
||
the client had access to a certificate, not authenticate a
|
||
user.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
|
||
realm and <literal>krb5</> host settings to be specified in
|
||
<filename>pg_hba.conf</> (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
These override the settings in <filename>postgresql.conf</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>include_realm</> parameter for <literal>krb5</>,
|
||
<literal>gssapi</>, and <literal>sspi</> methods (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This allows identical usernames from different realms to be
|
||
authenticated as different database users using usermaps.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>ident</> authentication over Unix-domain sockets
|
||
on <productname>Solaris</> (Garick Hamlin)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Continuous Archiving</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Provide an option to <function>pg_start_backup()</> to force its
|
||
implied checkpoint to finish as quickly as possible (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The default behavior avoids excess I/O consumption, but that is
|
||
pointless if no concurrent query activity is going on.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
|
||
files to be archived (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This guarantees that the backup is valid at the time
|
||
<function>pg_stop_backup()</> completes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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 <quote>fast</> shutdown
|
||
is requested (Laurenz Albe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <filename>recovery.conf</> boolean variables to take the
|
||
same range of string values as <filename>postgresql.conf</>
|
||
boolean variables
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Monitoring</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_conf_load_time()</> to report when
|
||
the <productname>PostgreSQL</> configuration files were last loaded
|
||
(George Gensure)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_terminate_backend()</> to safely terminate a
|
||
backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
|
||
</para>
|
||
|
||
<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 (Martin Pihlak)
|
||
</para>
|
||
|
||
<para>
|
||
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 query string size in
|
||
<literal>pg_stat_activity</> via new
|
||
<varname>track_activity_query_size</> parameter (Thomas Lee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Increase the maximum line length sent to <application>syslog</>, in
|
||
hopes of improving performance (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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 the text of all queries involved
|
||
in the deadlock to the server log (Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_stat_get_activity(pid)</> function to return
|
||
information about a specific process id (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the location of the server's statistics file to be specified
|
||
via <varname>stats_temp_directory</> (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This allows the statistics file to be placed in a
|
||
<acronym>RAM</>-resident directory to reduce I/O requirements.
|
||
On startup/shutdown, the file is copied to its traditional location
|
||
(<literal>$PGDATA/global/</>) so it is preserved across restarts.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>WINDOW</> functions (Hitoshi Harada)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
|
||
RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>TABLE</> command (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>TABLE tablename</> is a SQL standard short-hand for
|
||
<literal>SELECT * FROM tablename</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>AS</> to be optional when specifying a
|
||
<command>SELECT</> (or <literal>RETURNING</>) column output
|
||
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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support set-returning functions in the output of aggregation
|
||
and grouping queries (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
|
||
on inheritance trees (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
|
||
Peter)
|
||
</para>
|
||
|
||
<para>
|
||
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
|
||
<filename>dblink</> and <filename>plproxy</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Invalidate cached plans when referenced schemas, functions, operators,
|
||
or operator classes are modified (Martin Pihlak, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves the system's ability to respond to on-the-fly
|
||
DDL changes.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Allow comparison of composite types and allow arrays of
|
||
anonymous composite types (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for Unicode string literal and identifier specifications
|
||
using code points, e.g. <literal>U&'d\0061t\+000061'</>
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<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>
|
||
|
||
<sect4>
|
||
<title><command>TRUNCATE</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
|
||
for <command>TRUNCATE TABLE</>
|
||
(Zoltan Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
The start value of a sequence can be changed by <command>ALTER
|
||
SEQUENCE START WITH</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a separate <command>TRUNCATE</> permission (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><command>EXPLAIN</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN VERBOSE</> show the output columns of each
|
||
plan node (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously <command>EXPLAIN VERBOSE</> output an internal
|
||
representation of the query plan. (That behavior is now
|
||
available via <varname>debug_print_plan</>.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN</> identify subplans and initplans with
|
||
individual labels (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><literal>LIMIT</>/<literal>OFFSET</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <acronym>SQL</>-standard syntax for
|
||
<literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
To wit,
|
||
<literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
|
||
ONLY</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for column-level privileges (Stephen Frost, KaiGai
|
||
Kohei)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Refactor multi-object <command>DROP</> operations to reduce the
|
||
need for <literal>CASCADE</> (Alex Hunsaker)
|
||
</para>
|
||
|
||
<para>
|
||
For example, if table <literal>B</> has a dependency on table
|
||
<literal>A</>, the command <literal>DROP TABLE A, B</> no longer
|
||
requires the <literal>CASCADE</> option.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix various problems with concurrent <command>DROP</> commands
|
||
by ensuring that locks are taken before we begin to drop dependencies
|
||
of an object (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reporting of dependencies during <command>DROP</>
|
||
commands (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
|
||
AS</>, per the <acronym>SQL</> standard (Peter, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for user-defined I/O conversion casts (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
|
||
transition datatype (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This simplifies creation of data types that use the same internal
|
||
representation as an existing type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow specification of the type category and <quote>preferred</>
|
||
status for user-defined base types (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows more control over the coercion behavior of user-defined
|
||
types.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
|
||
end of a view (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title><command>ALTER</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
|
||
reset a sequence to its initial value (Zoltan Boszormenyi)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify the <command>ALTER TABLE</> syntax to allow all reasonable
|
||
combinations for tables, indexes, sequences, and views (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This change allows the following new syntaxes:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER SEQUENCE OWNER TO</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW OWNER TO</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW SET SCHEMA</>
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
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>
|
||
<para>
|
||
Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
|
||
... SET DATA TYPE</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This is <acronym>SQL</>-standard syntax for functionality that
|
||
was already supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
|
||
to physically remove <type>OID</> values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
|
||
table to add <type>OID</>s.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Database Manipulation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reporting of
|
||
<command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
|
||
failure when uncommitted prepared transactions are the cause
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
|
||
per-database settings (Radek Strnad, Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This makes collation similar to encoding, which was always
|
||
configurable per database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve checks that the database encoding, collation
|
||
(<varname>LC_COLLATE</>), and character classes
|
||
(<varname>LC_CTYPE</>) match (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
|
||
to a new tablespace (Guillaume Lelarge, Bernd Helmle)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Operations</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
|
||
<application>clusterdb</> (Jim Cox)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Decrease memory requirements for recording pending trigger
|
||
events (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Indexes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Dramatically improve the speed of building and accessing hash
|
||
indexes (Tom Raney, Shreya Bhargava)
|
||
</para>
|
||
|
||
<para>
|
||
This allows hash indexes to be sometimes faster than btree
|
||
indexes. However, hash indexes are still not crash-safe.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make hash indexes store only the hash code, not the full value of
|
||
the indexed column (Xiao Meng)
|
||
</para>
|
||
|
||
<para>
|
||
This greatly reduces the size of hash indexes for long indexed
|
||
values, improving performance.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement fast update option for GIN indexes (Teodor, Oleg)
|
||
</para>
|
||
|
||
<para>
|
||
This option greatly improves update speed at a small penalty in search
|
||
speed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>xxx_pattern_ops</> indexes can now be used for simple
|
||
equality comparisons, not only for <literal>LIKE</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Full Text Indexes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the requirement to use <literal>@@@</> when doing
|
||
<acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
The normal <literal>@@</> text search operator can be used
|
||
instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add an optimizer selectivity function for <literal>@@</> text
|
||
search operations (Jan Urbanski)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow prefix matching in full text searches (Teodor Sigaev,
|
||
Oleg Bartunov)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve support for Nepali language and Devanagari alphabet (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><command>VACUUM</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track free space in separate per-relation <quote>fork</> files (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Add a visibility map to track pages that do not require
|
||
vacuuming (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Add <varname>vacuum_freeze_table_age</> parameter to control
|
||
when <command>VACUUM</> should ignore the visibility map and
|
||
do a full table scan to freeze tuples (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track transaction snapshots more carefully (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <command>VACUUM</>'s ability to reclaim space
|
||
in the presence of long-running transactions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add ability to specify per-relation autovacuum and <acronym>TOAST</>
|
||
parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
|
||
<para>
|
||
Autovacuum options used to be stored in a system table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>--freeze</> option to <application>vacuumdb</>
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Types</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>CaseSensitive</> option for text search synonym
|
||
dictionaries (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the precision of <type>NUMERIC</> division (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add basic arithmetic operators for <type>int2</> with <type>int8</>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This eliminates the need for explicit casting in some situations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <type>UUID</> input to accept an optional hyphen after
|
||
every fourth digit (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>on</>/<literal>off</> as input for the boolean data type
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow spaces around <literal>NaN</> in the input string for
|
||
type <type>numeric</> (Sam Mason)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Temporal Data Types</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reject year <literal>0 BC</> and years <literal>000</> and
|
||
<literal>0000</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously these were interpreted as <literal>1 BC</>.
|
||
(Note: years <literal>0</> and <literal>00</> are still assumed to be
|
||
the year 2000.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Include <literal>SGT</> (Singapore time) in the default list of
|
||
known time zone abbreviations (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>infinity</> and <literal>-infinity</> as
|
||
values of type <type>date</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make parsing of <type>interval</> literals more standard-compliant (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>INTERVAL '1' YEAR</> now does what it's
|
||
supposed to.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <type>interval</> fractional-seconds precision to be specified
|
||
after the <literal>second</> keyword, for <acronym>SQL</> standard
|
||
compliance (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly the precision had to be specified after the keyword
|
||
<type>interval</>. (For backwards compatibility, this syntax is still
|
||
supported, though deprecated.) Data type definitions will now be
|
||
output using the standard format.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
|
||
Mayer, Kevin Grittner)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
|
||
supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>IntervalStyle</> parameter
|
||
which controls how <type>interval</> values are output (Ron Mayer)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Improve consistency of handling of fractional seconds in
|
||
<type>timestamp</> and <type>interval</> output (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Arrays</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the handling of casts applied to <literal>ARRAY[]</>
|
||
constructs, such as <literal>ARRAY[...]::integer[]</>
|
||
(Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
|
||
to match the <acronym>SQL</> standard (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_ndims()</> to return the number
|
||
of dimensions of an array (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_length()</> to return the length
|
||
of an array for a specified dimension (Jim Nasby, Robert
|
||
Haas, Peter Eisentraut)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add aggregate function <function>array_agg()</>, which
|
||
returns all aggregated values as a single array (Robert Haas,
|
||
Jeff Davis, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>unnest()</>, which converts an array to
|
||
individual row values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is the opposite of <function>array_agg()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_fill()</> to create arrays initialized with
|
||
a value (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>generate_subscripts()</> to simplify generating
|
||
the range of an array's subscripts (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Wide-Value Storage (<acronym>TOAST</>)</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Consider <acronym>TOAST</> compression on values as short as
|
||
32 bytes (previously 256 bytes) (Greg Stark)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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>
|
||
Improve <acronym>TOAST</> heuristics for rows that have 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>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Functions</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Document that <function>setseed()</> allows values from
|
||
<literal>-1</> to <literal>1</> (not just <literal>0</> to
|
||
<literal>1</>), and enforce the valid range (Kris Jurka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add server-side function <function>lo_import(filename, oid)</>
|
||
(Tatsuo)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>quote_nullable()</>, which behaves like
|
||
<function>quote_literal()</> but returns the string <literal>NULL</> for
|
||
a null argument (Brendan Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve full text search <function>headline()</> function to
|
||
allow extracting several fragments of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>suppress_redundant_updates_trigger()</> trigger
|
||
function to avoid overhead for non-data-changing updates (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>div(numeric, numeric)</> to perform <type>numeric</>
|
||
division without rounding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <type>timestamp</> and <type>timestamptz</> versions of
|
||
<function>generate_series()</> (Hitoshi Harada)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Object Information Functions</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement <function>current_query()</> for use by functions
|
||
that need to know the currently running query (Tomas Doran)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_get_keywords()</> to return a list of the
|
||
parser keywords (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_get_functiondef()</> to see a function's
|
||
definition (Abhijit Menon-Sen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify <function>pg_relation_size()</> to use <literal>regclass</>
|
||
(Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
<function>pg_relation_size(data_type_name)</> no longer works.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>boot_val</> and <literal>reset_val</> columns to
|
||
<literal>pg_settings</> output (Greg Smith)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add source file name and line number columns to
|
||
<literal>pg_settings</> output for variables set in a configuration
|
||
file (Magnus, Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
For security reasons, these columns are only visible to superusers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <varname>CURRENT_CATALOG</>,
|
||
<varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
|
||
SCHEMA</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These provide <acronym>SQL</>-standard syntax for existing features.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_typeof()</> which returns the data type
|
||
of any value (Brendan Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>version()</> return information about whether
|
||
the server is a 32- or 64-bit binary (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix the behavior of information schema columns
|
||
<literal>is_insertable_into</> and <literal>is_updatable</> to
|
||
be consistent (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Convert remaining builtin set-returning functions to use
|
||
<literal>OUT</> parameters (Jaime Casanova)
|
||
</para>
|
||
|
||
<para>
|
||
This makes it possible to call these functions without specifying
|
||
a column list: <function>pg_show_all_settings()</>,
|
||
<function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
|
||
<function>pg_prepared_statement()</>, <function>pg_cursor()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_*_is_visible()</> and
|
||
<function>has_*_privilege()</> functions return <literal>NULL</>
|
||
for invalid OIDs, rather than reporting an error (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Extend <function>has_*_privilege()</> functions to allow inquiring
|
||
about the OR of multiple privileges in one call (Stephen
|
||
Frost, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>has_column_privilege()</> and
|
||
<function>has_any_column_privilege()</> functions (Stephen
|
||
Frost, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Function Creation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support variadic functions (functions with a variable number
|
||
of arguments) (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
Only trailing arguments can be optional, and they all must be
|
||
of the same data type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support default values for function arguments (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
|
||
Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <acronym>SQL</>-language functions to return the output
|
||
of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
|
||
<literal>RETURNING</> clause (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>PL/PgSQL Server-Side Language</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>EXECUTE USING</> for easier insertion of data
|
||
values into a dynamic query string (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow looping over the results of a cursor using a <literal>FOR</>
|
||
loop (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>RETURN QUERY EXECUTE</> (Pavel
|
||
Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the <literal>RAISE</> command (Pavel Stehule)
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Support <literal>DETAIL</> and <literal>HINT</> fields
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Support specification of the <literal>SQLSTATE</> error code
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Support an exception name parameter
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>RAISE</> without parameters in an exception
|
||
block to re-throw the current error
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow specification of <varname>SQLSTATE</> codes
|
||
in <literal>EXCEPTION</> lists (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
This is useful for handling custom <varname>SQLSTATE</> codes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support the <literal>CASE</> statement (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
|
||
<command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
|
||
(Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>FETCH</> and <command>MOVE</> set the
|
||
<command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
|
||
(Andrew Gierth)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid memory leakage when the same function is called at varying
|
||
exception-block nesting depths (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Client Applications</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>pg_ctl restart</> to preserve command-line arguments
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>-w</>/<literal>--no-password</> option that
|
||
prevents password prompting in all utilities that have a
|
||
<literal>-W</>/<literal>--password</> option (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-q</> (quiet) option of <application>createdb</>,
|
||
<application>createuser</>, <application>dropdb</>,
|
||
<application>dropuser</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These options have had no effect since <productname>PostgreSQL</>
|
||
8.3.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title><application>psql</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove verbose startup banner; now just suggest <literal>help</>
|
||
(Joshua Drake)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>help</> show common backslash commands (Greg
|
||
Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>\pset format wrapped</> mode to wrap output to the
|
||
screen width, or file/pipe output too if <literal>\pset columns</>
|
||
is set (Bryce Nesbitt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow all supported spellings of boolean values in <command>\pset</>,
|
||
rather than just <literal>on</> and <literal>off</> (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, any string other than <quote>off</> was silently taken
|
||
to mean <literal>true</>. <application>psql</> will now complain
|
||
about unrecognized spellings (but still take them as <literal>true</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use the pager for wide output (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a space between a one-letter backslash command and its first
|
||
argument (Bernd Helmle)
|
||
</para>
|
||
|
||
<para>
|
||
This removes a historical source of ambiguity.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve tab completion support for schema-qualified and
|
||
quoted identifiers (Greg Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add optional <literal>on</>/<literal>off</> argument for
|
||
<command>\timing</> (David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Display access control rights on multiple lines (Brendan
|
||
Jurd, Andreas Scherbaum)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\l</> show database access privileges (Andrew Gilligan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\l+</> show database sizes, if permissions
|
||
allow (Andrew Gilligan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add the <command>\ef</> command to edit function definitions
|
||
(Abhijit Menon-Sen)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>psql</> \d* commands</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d*</> commands that do not have a pattern argument
|
||
show system objects only if the <literal>S</> modifier is specified
|
||
(Greg Sabino Mullane, Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
The former behavior was inconsistent across different variants
|
||
of <command>\d</>, and in most cases it provided no easy way to see
|
||
just user objects.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>\d*</> commands to work with older
|
||
<productname>PostgreSQL</> server versions (back to 7.4),
|
||
not only the current server version
|
||
(Guillaume Lelarge)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d</> show foreign-key constraints that reference
|
||
the selected table (Kenneth D'Souza)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d</> on a sequence show its column values
|
||
(Euler Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add column storage type and other relation options to the
|
||
<command>\d+</> display (Gregory Stark, Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show relation size in <command>\dt+</> output (Dickson S.
|
||
Guedes)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show the possible values of <literal>enum</> types in <command>\dT+</>
|
||
(David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>\dC</> to accept a wildcard pattern, which matches
|
||
either datatype involved in the cast (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\df</> not hide functions that take or return
|
||
type <type>cstring</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, such functions were hidden because most of them are
|
||
datatype I/O functions, which were deemed uninteresting. The new
|
||
policy about hiding system functions by default makes this wart
|
||
unnecessary.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<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 that dumps can be restored to clusters that have non-matching
|
||
tablespace layouts (Gavin Roy)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-d</> and <option>-D</> options from
|
||
<application>pg_dump</> and <application>pg_dumpall</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These options were too frequently confused with the option to
|
||
select a database name in other <productname>PostgreSQL</>
|
||
client applications. The functionality is still available,
|
||
but you must now spell out the long option name
|
||
<option>--inserts</> or <option>--column-inserts</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-i</>/<option>--ignore-version</> option from
|
||
<application>pg_dump</> and <application>pg_dumpall</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Use of this option does not throw an error, but it has no
|
||
effect. This option was removed because the version checks
|
||
are necessary for safety.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disable <varname>statement_timeout</> during dump and restore
|
||
(Joshua Drake)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>pg_dump</>/<application>pg_dumpall</> option
|
||
<option>--lock-wait-timeout</> (David Gould)
|
||
</para>
|
||
|
||
<para>
|
||
This allows dumps to fail if unable to acquire a shared lock
|
||
within the specified amount of time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reorder <application>pg_dump</> <literal>--data-only</> output
|
||
to dump 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 a safe ordering impossible, a
|
||
<literal>NOTICE</> is issued.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_dump</>, <application>pg_dumpall</>, and
|
||
<application>pg_restore</> to use a specified role (Benedek
|
||
L<>szl<7A>)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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</>. This is supported only for custom-format archives.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Programming Tools</title>
|
||
|
||
<sect4>
|
||
<title><application>libpq</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
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>
|
||
Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
|
||
</para>
|
||
|
||
<para>
|
||
This adds the ability to register callbacks to manage private
|
||
data associated with <structname>PGconn</> and <structname>PGresult</>
|
||
objects.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve error handling to allow the return of multiple
|
||
error messages as multi-line error reports (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>PQexecParams()</> and related functions return
|
||
<varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
They previously returned <varname>PGRES_COMMAND_OK</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Document how to avoid the overhead of <function>WSACleanup()</>
|
||
on Windows (Andrew Chernow)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
|
||
support</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix certificate validation for <acronym>SSL</> connections
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
<application>libpq</> now supports verifying both the certificate
|
||
and the name of the server when making <acronym>SSL</>
|
||
connections. If a root certificate is not available to use for
|
||
verification, <acronym>SSL</> connections will fail. The
|
||
<literal>sslmode</> parameter is used to enable the certificate
|
||
verification.
|
||
</para>
|
||
|
||
<para>
|
||
The default is still not to do any verification.
|
||
</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
|
||
over OpenSSL/libcrypto initialization (Andrew Chernow)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>libpq</> unregister its <application>OpenSSL</>
|
||
callbacks when no database connections remain open
|
||
(Bruce, Magnus, Russell Smith)
|
||
</para>
|
||
|
||
<para>
|
||
This is required for applications that unload the libpq library,
|
||
otherwise invalid <application>OpenSSL</> callbacks will remain.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>ecpg</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add localization support for messages (Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
ecpg parser is now automatically generated from the server
|
||
parser (Michael)
|
||
</para>
|
||
|
||
<para>
|
||
Previously the ecpg parser was hand-maintained.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Server Programming Interface (<acronym>SPI</>)</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for single-use plans with out-of-line
|
||
parameters (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new <varname>SPI_OK_REWRITTEN</> return code for
|
||
<function>SPI_execute()</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This is used when a command is rewritten to another type of
|
||
command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
SPI-using modules might need to add some <literal>#include</>
|
||
lines if they were depending on <filename>spi.h</> to include
|
||
things for them.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Build Options</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update build system to use <productname>Autoconf</> 2.61 (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require <productname>GNU bison</> for source code builds (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This has effectively been required for several years, but now there
|
||
is no infrastructure claiming to support other parser tools.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>pg_config</> <literal>--htmldir</> option
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pass <type>float4</> by value inside the server (Zoltan
|
||
Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
Add <application>configure</> option
|
||
<literal>--disable-float4-byval</> to use the old behavior.
|
||
External C functions that use old-style (version 0) call convention
|
||
and pass or return <type>float4</> values will be broken by this
|
||
change, so you may need the <application>configure</> option if you
|
||
have such functions and don't want to update them.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pass <type>float8</>, <type>int8</>, and related datatypes
|
||
by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
Add <application>configure</> option
|
||
<literal>--disable-float8-byval</> to use the old behavior.
|
||
As above, this change might break old-style external C functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configure options <literal>--with-segsize</>,
|
||
<literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
|
||
<literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
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>
|
||
Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use the system's <function>getopt_long()</> on <productname>Solaris</>
|
||
(Zdenek Kotala, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This makes option processing more consistent with what Solaris users
|
||
expect.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for the <productname>Sun Studio</> compiler on
|
||
<productname>Linux</> (Julius Stroffek)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Append the major version number to the backend <application>gettext</>
|
||
domain, and the <literal>soname</> major version number to
|
||
libraries' <application>gettext</> domain (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This simplifies parallel installations of multiple versions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for code coverage testing with <application>gcov</>
|
||
(Michelle Caisse)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow out-of-tree builds on <productname>Mingw</> and
|
||
<productname>Cygwin</> (Richard Evans)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix the use of <productname>Mingw</> as a cross-compiling source
|
||
platform (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<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>
|
||
Deprecate use of platform's <type>time_t</> data type (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Some platforms have migrated to 64-bit <type>time_t</>, some have
|
||
not, and Windows can't make up its mind what it's doing. Define
|
||
<type>pg_time_t</> to have the same meaning as <type>time_t</>,
|
||
but always be 64 bits (unless the platform has no 64-bit integer type),
|
||
and use that type in all module APIs and on-disk data formats.
|
||
</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
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>gettext</> support to allow better translation
|
||
of plurals (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add message translation support to the PL languages (Alvaro, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add more <application>DTrace</> probes (Robert Lor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable <application>DTrace</> support on <application>Mac OS X
|
||
Leopard</> and other non-Solaris platforms (Robert Lor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Simplify and standardize conversions between C strings and
|
||
<type>text</> datums, by providing common functions for the purpose
|
||
(Brendan Jurd, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean up the <filename>include/catalog/</> header files so that
|
||
frontend programs can include them without including
|
||
<filename>postgres.h</>
|
||
(Zdenek Kotala)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <type>name</> char-aligned, and suppress zero-padding of
|
||
<type>name</> entries in indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a hook to let plug-ins monitor the executor (Itagaki
|
||
Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a hook to allow the planner's statistics lookup behavior to
|
||
be overridden (Simon Riggs)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>shmem_startup_hook()</> for custom shared memory
|
||
requirements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace the index access method <function>amgetmulti</> entry point
|
||
with <function>amgetbitmap</>, and extend the API for
|
||
<function>amgettuple</> to support run-time determination of
|
||
operator lossiness (Heikki, Tom, Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
The API for GIN and GiST opclass <function>consistent</> functions
|
||
has been extended as well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for partial-match searches in <acronym>GIN</> indexes
|
||
(Teodor Sigaev, Oleg Bartunov)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace <structname>pg_class</> column <structfield>reltriggers</>
|
||
with boolean <structfield>relhastriggers</> (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Also remove unused <structname>pg_class</> columns
|
||
<structfield>relukeys</>, <structfield>relfkeys</>, and
|
||
<structfield>relrefs</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <structfield>relistemp</> column to <structname>pg_class</>
|
||
to ease identification of temporary tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move platform <acronym>FAQ</>s into the main documentation
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent parser input files from being built with any conflicts
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for the <literal>KOI8U</> (Ukrainian) encoding
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add Japanese message translations (Japan PostgreSQL Users Group)
|
||
</para>
|
||
|
||
<para>
|
||
This used to be maintained as a separate project.
|
||
</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>
|
||
|
||
<sect3>
|
||
<title>Contrib</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/auto_explain</> to automatically run
|
||
<command>EXPLAIN</> on queries exceeding a specified duration
|
||
(Itagaki Takahiro, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/btree_gin</> to allow GIN indexes to
|
||
handle more datatypes (Oleg, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/citext</> to provide a case-insensitive,
|
||
multibyte-aware text data type (David Wheeler)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/pg_stat_statements</> for server-wide
|
||
tracking of statement execution statistics (Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add duration and query mode options to <filename>contrib/pgbench</>
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/pgstattuple</> to handle tables and
|
||
indexes with over 2 billion pages (Tatsuhito Kasahara)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <filename>contrib/fuzzystrmatch</>, add a version of the
|
||
Levenshtein string-distance function that allows the user to
|
||
specify the costs of insertion, deletion, and substitution
|
||
(Volkan Yazici)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/ltree</> support multibyte encodings
|
||
(laser)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <filename>contrib/dblink</>'s reporting of errors from
|
||
the remote server (Joe Conway)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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>
|
||
This is a minor security enhancement.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>fsm_page_contents()</>
|
||
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</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for multibyte encodings to <filename>contrib/pg_trgm</>
|
||
(Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rewrite <filename>contrib/intagg</> to use new
|
||
functions <function>array_agg()</> and <function>unnest()</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
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 needed, the <filename>contrib/intarray</> implementations
|
||
are still available under their historical names <literal>@</>
|
||
and <literal>~</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-7">
|
||
<title>Release 8.3.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-03-16</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>
|
||
|
||
<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.
|
||
</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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
||
for the specified conversion function (Heikki)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<note>
|
||
<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.
|
||
</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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible failure in text search when C locale is used with
|
||
a multi-byte encoding (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
Crashes were possible on platforms where <type>wchar_t</> is narrower
|
||
than <type>int</>; Windows in particular.
|
||
</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>
|
||
Fix planner problem with sub-<command>SELECT</> in the output list
|
||
of a larger subquery (Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
|
||
(Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Change <command>UNLISTEN</> to exit quickly if the current session has
|
||
never executed any <command>LISTEN</> command (Tom)
|
||
</para>
|
||
|
||
<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>
|
||
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>
|
||
Clean up PL/pgSQL error status variables fully at block exit
|
||
(Ashesh Vashi and Dave Page)
|
||
</para>
|
||
|
||
<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>
|
||
Retry failed calls to <function>CallNamedPipe()</> on Windows
|
||
(Steve Marshall, Magnus)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
||
of known timezone abbreviations (Xavier Bugaud)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-6">
|
||
<title>Release 8.3.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-02-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.3.5.
|
||
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.6</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.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>DISCARD ALL</> release advisory locks, in addition
|
||
to everything it already did (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was decided to be the most appropriate behavior. This could
|
||
affect existing applications, however.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix whole-index GiST scans to work correctly (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
This error could cause rows to be lost if a table is clustered
|
||
on a GiST index.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash of <literal>xmlconcat(NULL)</> (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash in <literal>ispell</> dictionary if high-bit-set
|
||
characters are used as flags (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to be done by one widely available Norwegian dictionary,
|
||
and the same condition may exist in others.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix misordering of <application>pg_dump</> output for composite types
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The most likely problem was for user-defined operator classes to
|
||
be dumped after indexes or views that needed them.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of URLs in <function>headline()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of overlength headlines in <function>headline()</>
|
||
function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible Assert failure or misconversion if an encoding
|
||
conversion is created with the wrong conversion function for the
|
||
specified pair of encodings (Tom, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible Assert failure if a statement executed in PL/pgSQL is
|
||
rewritten into another kind of statement, for example if an
|
||
<command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that a snapshot is available to datatype input functions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This primarily affects domains that are declared with <literal>CHECK</>
|
||
constraints involving user-defined stable or immutable functions. Such
|
||
functions typically fail if no snapshot has been set.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make it safer for SPI-using functions to be used within datatype I/O;
|
||
in particular, to be used in domain check constraints (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
|
||
RULE</> from being recognized by active sessions (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a problem that made <literal>UPDATE RETURNING tableoid</>
|
||
return zero instead of the correct OID (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow functions declared as taking <type>ANYARRAY</> to work on
|
||
the <structname>pg_statistic</> columns of that type (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This used to work, but was unintentionally broken in 8.3.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner misestimation of selectivity when transitive equality
|
||
is applied to an outer-join clause (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could result in bad plans for queries like
|
||
<literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimizer's handling of long <literal>IN</> lists (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This change avoids wasting large amounts of time on such lists
|
||
when constraint exclusion is enabled.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent synchronous scan during GIN index build (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Because GIN is optimized for inserting tuples in increasing TID order,
|
||
choosing to use a synchronous scan could slow the build by a factor of
|
||
three or more.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that the contents of a holdable cursor don't depend on the
|
||
contents of TOAST tables (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, large field values in a cursor result might be represented
|
||
as TOAST pointers, which would fail if the referenced table got dropped
|
||
before the cursor is read, or if the large value is deleted and then
|
||
vacuumed away. This cannot happen with an ordinary cursor,
|
||
but it could with a cursor that is held past its creating transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leak when a set-returning function is terminated without
|
||
reading its whole result (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix encoding conversion problems in XML functions when the database
|
||
encoding isn't UTF-8 (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/dblink</>'s
|
||
<function>dblink_get_result(text,bool)</> function (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible garbage output from <filename>contrib/sslinfo</> functions
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
|
||
trigger when it's fired more than once in a command (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible mis-signaling in autovacuum (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support running as a service on Windows 7 beta (Dave and Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s handling of varchar structs (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>configure</> script to properly report failure when
|
||
unable to obtain linkage information for PL/Perl (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make all documentation reference <literal>pgsql-bugs</> and/or
|
||
<literal>pgsql-hackers</> as appropriate, instead of the
|
||
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
||
mailing lists (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2009a (for
|
||
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-5">
|
||
<title>Release 8.3.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-11-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.3.4.
|
||
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.5</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.1,
|
||
see the release notes for 8.3.1. Also, if you were running a previous
|
||
8.3.X release, it is recommended to <command>REINDEX</> all GiST
|
||
indexes after the upgrade.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GiST index corruption due to marking the wrong index entry
|
||
<quote>dead</> after a deletion (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
This would result in index searches failing to find rows they
|
||
should have found. Corrupted indexes can be fixed with
|
||
<command>REINDEX</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix backend crash when the client encoding cannot represent a localized
|
||
error message (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We have addressed similar issues before, but it would still fail if
|
||
the <quote>character has no equivalent</> message itself couldn't
|
||
be converted. The fix is to disable localization and send the plain
|
||
ASCII error message when we detect such a situation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash when deeply nested functions are invoked from
|
||
a trigger (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimization of <replaceable>expression</> <literal>IN</>
|
||
(<replaceable>expression-list</>) queries (Tom, per an idea from Robert
|
||
Haas)
|
||
</para>
|
||
|
||
<para>
|
||
Cases in which there are query variables on the right-hand side had been
|
||
handled less efficiently in 8.2.x and 8.3.x than in prior versions.
|
||
The fix restores 8.1 behavior for such cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
|
||
in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
|
||
list, or a <literal>RETURNING</> list (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The usual symptom of this problem is an <quote>unrecognized node type</>
|
||
error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix Assert failure during rescan of an <literal>IS NULL</>
|
||
search of a GiST index (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leak during rescan of a hashed aggregation plan (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure an error is reported when a newly-defined PL/pgSQL trigger
|
||
function is invoked as a normal function (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Force a checkpoint before <command>CREATE DATABASE</> starts to copy
|
||
files (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This prevents a possible failure if files had recently been deleted
|
||
in the source database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible collision of <structfield>relfilenode</> numbers
|
||
when moving a table to another tablespace with <command>ALTER SET
|
||
TABLESPACE</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
The command tried to re-use the existing filename, instead of
|
||
picking one that is known unused in the destination directory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect text search headline generation when single query
|
||
item matches first word of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix improper display of fractional seconds in interval values when
|
||
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
||
build (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>ILIKE</> compare characters case-insensitively
|
||
even when they're escaped (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect logging of last-completed-transaction time during
|
||
PITR recovery (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
||
behave correctly when the passed tuple and tuple descriptor have
|
||
different numbers of columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is normal when a table has had columns added or removed,
|
||
but these two functions didn't handle it properly.
|
||
The only likely consequence is an incorrect error indication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
|
||
so it can be used by <application>Slony</> on Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix small memory leak when using <application>libpq</>'s
|
||
<literal>gsslib</> parameter (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
The space used by the parameter string was not freed at connection
|
||
close.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <application>libgssapi</> is linked into <application>libpq</>
|
||
if needed (Markus Schaaf)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <filename>pg_control</> is opened in binary mode
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
|
||
<para>
|
||
<application>pg_controldata</> and <application>pg_resetxlog</>
|
||
did this incorrectly, and so could fail on Windows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008i (for
|
||
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-4">
|
||
<title>Release 8.3.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-09-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.3.3.
|
||
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.4</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.1,
|
||
see the release notes for 8.3.1.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in btree WAL recovery code (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
Recovery failed if the WAL ended partway through a page split operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This error created a risk of corruption in system
|
||
catalogs that are consulted by <command>VACUUM</>: dead tuple versions
|
||
might be removed too soon. The impact of this on actual database
|
||
operations would be minimal, since the system doesn't follow MVCC
|
||
rules while examining catalogs, but it might result in transiently
|
||
wrong output from <application>pg_dump</> or other client programs.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This error may explain some recent reports of failure to remove old
|
||
<structname>pg_clog</> data.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect HOT updates after <structname>pg_class</> is reindexed
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Corruption of <structname>pg_class</> could occur if <literal>REINDEX
|
||
TABLE pg_class</> was followed in the same session by an <literal>ALTER
|
||
TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix missed <quote>combo cid</> case (Karl Schnaitter)
|
||
</para>
|
||
|
||
<para>
|
||
This error made rows incorrectly invisible to a transaction in which they
|
||
had been deleted by multiple subtransactions that all aborted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent autovacuum from crashing if the table it's currently
|
||
checking is deleted at just the wrong time (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Widen local lock counters from 32 to 64 bits (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This responds to reports that the counters could overflow in
|
||
sufficiently long transactions, leading to unexpected <quote>lock is
|
||
already held</> errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Regenerate foreign key checking queries from scratch when either
|
||
table is modified (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, 8.3 would attempt to replan the query, but would work from
|
||
previously generated query text. This led to failures if a
|
||
table or column was renamed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix missed permissions checks when a view contains a simple
|
||
<literal>UNION ALL</> construct (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
Permissions for the referenced tables were checked properly, but not
|
||
permissions for the view itself.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add checks in executor startup to ensure that the tuples produced by an
|
||
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
||
current rowtype (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is believed to be impossible in 8.3, but it can happen in
|
||
prior releases, so a check seems prudent.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible repeated drops during <command>DROP OWNED</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This would typically result in strange errors such as <quote>cache
|
||
lookup failed for relation NNN</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several memory leaks in XML operations (Kris Jurka, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>xmlserialize()</> to raise error properly for
|
||
unacceptable target data type (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a couple of places that mis-handled multibyte characters in text
|
||
search configuration file parsing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Certain characters occurring in configuration files would always cause
|
||
<quote>invalid byte sequence for encoding</> failures.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Provide file name and line number location for all errors reported
|
||
in text search configuration files (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
|
||
argument as a timezone abbreviation, and only try it as a full timezone
|
||
name if that fails, rather than the other way around as formerly (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The timestamp input functions have always resolved ambiguous zone names
|
||
in this order. Making <literal>AT TIME ZONE</> do so as well improves
|
||
consistency, and fixes a compatibility bug introduced in 8.1:
|
||
in ambiguous cases we now behave the same as 8.0 and before did,
|
||
since in the older versions <literal>AT TIME ZONE</> accepted
|
||
<emphasis>only</> abbreviations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix datetime input functions to correctly detect integer overflow when
|
||
running on a 64-bit platform (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent integer overflows during units conversion when displaying a
|
||
configuration parameter that has units (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of writing very long log messages to syslog (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow spaces in the suffix part of an LDAP URL in
|
||
<filename>pg_hba.conf</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
||
ON</> query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner bug that could improperly push down <literal>IS NULL</>
|
||
tests below an outer join (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was triggered by occurrence of <literal>IS NULL</> tests for
|
||
the same relation in all arms of an upper <literal>OR</> clause.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner bug with nested sub-select expressions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If the outer sub-select has no direct dependency on the parent query,
|
||
but the inner one does, the outer value might not get recalculated
|
||
for new parent query rows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
||
boolean results always result in two groups, regardless of the
|
||
expressions' contents (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is very substantially more accurate than the regular <literal>GROUP
|
||
BY</> estimate for certain boolean tests like <replaceable>col</>
|
||
<literal>IS NULL</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/PgSQL to not fail when a <literal>FOR</> loop's target variable
|
||
is a record containing composite-type fields (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
|
||
about the encoding of data sent to or from Tcl (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
On Windows, work around a Microsoft bug by preventing
|
||
<application>libpq</> from trying to send more than 64kB per system call
|
||
(Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</> to handle variables properly in <command>SET</>
|
||
commands (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
||
error reporting after failure to send a SQL command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to properly preserve postmaster
|
||
command-line arguments across a <literal>restart</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix erroneous WAL file cutoff point calculation in
|
||
<application>pg_standby</> (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008f (for
|
||
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
||
Pakistan, Palestine, and Paraguay)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-3">
|
||
<title>Release 8.3.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-06-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious and one minor bug fix over 8.3.2.
|
||
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.3</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.1,
|
||
see the release notes for 8.3.1.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Before this fix, a negative constant in a view or rule might be dumped
|
||
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
||
be <literal>(-42)::integer</> due to operator precedence rules.
|
||
Usually this would make little difference, but it could interact with
|
||
another recent patch to cause
|
||
<productname>PostgreSQL</> to reject what had been a valid
|
||
<command>SELECT DISTINCT</> view query. Since this could result in
|
||
<application>pg_dump</> output failing to reload, it is being treated
|
||
as a high-priority fix. The only released versions in which dump
|
||
output is actually incorrect are 8.3.1 and 8.2.7.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER AGGREGATE ... OWNER TO</> update
|
||
<structname>pg_shdepend</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This oversight could lead to problems if the aggregate was later
|
||
involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
|
||
operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-2">
|
||
<title>Release 8.3.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>never released</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.3.1.
|
||
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.2</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.1,
|
||
see the release notes for 8.3.1.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
|
||
occurred on Windows when using UTF-8 database encoding and a different
|
||
client encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect archive truncation point calculation for the
|
||
<literal>%r</> macro in <varname>recovery_command</> parameters
|
||
(Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to data loss if a warm-standby script relied on
|
||
<literal>%r</> to decide when to throw away WAL segment files.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
||
column is correctly checked to see if it's been initialized to all
|
||
non-nulls (Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Previous versions neglected to check this requirement at all.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>REASSIGN OWNED</> so that it works on procedural
|
||
languages too (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
|
||
subquery in a query with a non-<command>SELECT</> top-level operation
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
||
<quote>same</> constraint from multiple parent relations that
|
||
inherited that constraint from a common ancestor (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
|
||
to the target table of an <command>UPDATE</> or <command>DELETE</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Restore the pre-8.3 behavior that an out-of-range block number in a
|
||
TID being used in a TidScan plan results in silently not matching any
|
||
rows (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
8.3.0 and 8.3.1 threw an error instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GIN bug that could result in a <literal>too many LWLocks
|
||
taken</literal> failure (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix broken GiST comparison function for <type>tsquery</> (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
|
||
to accept domains over the types they expect to work with (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix failure to support enum data types as foreign keys (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid possible crash when decompressing corrupted data
|
||
(Zdenek Kotala)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix race conditions between delayed unlinks and <command>DROP
|
||
DATABASE</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
In the worst case this could result in deleting a newly created table
|
||
in a new database that happened to get the same OID as the
|
||
recently-dropped one; but of course that is an extremely
|
||
low-probability scenario.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair two places where SIGTERM exit of a backend could leave corrupted
|
||
state in shared memory (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Neither case is very important if SIGTERM is used to shut down the
|
||
whole database cluster together, but there was a problem if someone
|
||
tried to SIGTERM individual backends.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash due to incorrect plan generated for an
|
||
<literal><replaceable>x</> IN (SELECT <replaceable>y</>
|
||
FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
|
||
have different data types; and make sure the behavior is semantically
|
||
correct when the conversion from <replaceable>y</>'s type to
|
||
<replaceable>x</>'s type is lossy (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix oversight that prevented the planner from substituting known Param
|
||
values as if they were constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This mistake partially disabled optimization of unnamed
|
||
extended-Query statements in 8.3.0 and 8.3.1: in particular the
|
||
LIKE-to-indexscan optimization would never be applied if the LIKE
|
||
pattern was passed as a parameter, and constraint exclusion
|
||
depending on a parameter value didn't work either.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner failure when an indexable <function>MIN</> or
|
||
<function>MAX</> aggregate is used with <literal>DISTINCT</> or
|
||
<literal>ORDER BY</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to ensure it never uses a <quote>physical tlist</> for a
|
||
plan node that is feeding a Sort node (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This led to the sort having to push around more data than it really
|
||
needed to, since unused column values were included in the sorted
|
||
data.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary copying of query strings (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a performance problem introduced in 8.3.0 when a very large
|
||
number of commands are submitted as a single query string.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>TransactionIdIsCurrentTransactionId()</> use binary
|
||
search instead of linear search when checking child-transaction XIDs
|
||
(Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes some cases in which 8.3.0 was significantly
|
||
slower than earlier releases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix conversions between ISO-8859-5 and other encodings to handle
|
||
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
||
two dots) (Sergey Burladyan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several datatype input functions, notably <function>array_in()</>,
|
||
that were allowing unused bytes in their results to contain
|
||
uninitialized, unpredictable values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failures in which two apparently identical literal
|
||
values were not seen as equal, resulting in the parser complaining
|
||
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
||
expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a corner case in regular-expression substring matching
|
||
(<literal>substring(<replaceable>string</> from
|
||
<replaceable>pattern</>)</literal>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The problem occurs when there is a match to the pattern overall but
|
||
the user has specified a parenthesized subexpression and that
|
||
subexpression hasn't got a match. An example is
|
||
<literal>substring('foo' from 'foo(bar)?')</>.
|
||
This should return NULL, since <literal>(bar)</> isn't matched, but
|
||
it was mistakenly returning the whole-pattern match instead (ie,
|
||
<literal>foo</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent cancellation of an auto-vacuum that was launched to prevent
|
||
XID wraparound (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
|
||
inserted or deleted by a not-yet-committed transaction) so that the
|
||
counts it reports to the stats collector are more likely to be correct
|
||
(Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>initdb</> to reject a relative path for its
|
||
<literal>--xlogdir</> (<literal>-X</>) option (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>psql</> print tab characters as an appropriate
|
||
number of spaces, rather than <literal>\x09</literal> as was done in
|
||
8.3.0 and 8.3.1 (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008c (for
|
||
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
|
||
Argentina/San_Luis)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>ECPGget_PGconn()</> function to
|
||
<application>ecpglib</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect result from <application>ecpg</>'s
|
||
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix handling of continuation line markers in <application>ecpg</>
|
||
(Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crashes in <filename>contrib/cube</> functions (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix core dump in <filename>contrib/xml2</>'s
|
||
<function>xpath_table()</> function when the input query returns a
|
||
NULL value (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/xml2</>'s makefile to not override
|
||
<literal>CFLAGS</>, and make it auto-configure properly for
|
||
<application>libxslt</> present or not (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3-1">
|
||
<title>Release 8.3.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-03-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.3.0.
|
||
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.1</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.3.X.
|
||
However, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the Windows locale
|
||
issue described below.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix character string comparison for Windows locales that consider
|
||
different character combinations as equal (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fix applies only on Windows and only when using UTF-8
|
||
database encoding. The same fix was made for all other cases
|
||
over two years ago, but Windows with UTF-8 uses a separate code
|
||
path that was not updated. If you are using a locale that
|
||
considers some non-identical strings as equal, you may need to
|
||
<command>REINDEX</> to fix existing indexes on textual columns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
A potential deadlock between concurrent <command>VACUUM FULL</>
|
||
operations on different system catalogs was introduced in 8.2.
|
||
This has now been corrected. 8.3 made this worse because the
|
||
deadlock could occur within a critical code section, making it
|
||
a PANIC rather than just ERROR condition.
|
||
</para>
|
||
|
||
<para>
|
||
Also, a <command>VACUUM FULL</> that failed partway through
|
||
vacuuming a system catalog could result in cache corruption in
|
||
concurrent database sessions.
|
||
</para>
|
||
|
||
<para>
|
||
Another <command>VACUUM FULL</> bug introduced in 8.3 could
|
||
result in a crash or out-of-memory report when dealing with
|
||
pages containing no live tuples.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix misbehavior of foreign key checks involving <type>character</>
|
||
or <type>bit</> columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If the referencing column were of a different but compatible type
|
||
(for instance <type>varchar</>), the constraint was enforced incorrectly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid needless deadlock failures in no-op foreign-key checks (Stephan
|
||
Szabo, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible core dump when re-planning a prepared query (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This bug affected only protocol-level prepare operations, not
|
||
SQL <command>PREPARE</>, and so tended to be seen only with
|
||
JDBC, DBI, and other client-side drivers that use prepared
|
||
statements heavily.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible failure when re-planning a query that calls an SPI-using
|
||
function (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix failure in row-wise comparisons involving columns of different
|
||
datatypes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
||
race condition (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In rare cases a session that had just executed a
|
||
<command>LISTEN</> might not get a notification, even though
|
||
one would be expected because the concurrent transaction executing
|
||
<command>NOTIFY</> was observed to commit later.
|
||
</para>
|
||
|
||
<para>
|
||
A side effect of the fix is that a transaction that has executed
|
||
a not-yet-committed <command>LISTEN</> command will not see any
|
||
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
||
should it choose to look; formerly it would have. This behavior
|
||
was never documented one way or the other, but it is possible that
|
||
some applications depend on the old behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
|
||
prepared transaction (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was formerly allowed but trying to do it had various unpleasant
|
||
consequences, notably that the originating backend could not exit
|
||
as long as an <command>UNLISTEN</> remained uncommitted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow dropping a temporary table within a
|
||
prepared transaction (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This was correctly disallowed by 8.1, but the check was inadvertently
|
||
broken in 8.2 and 8.3.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare crash when an error occurs during a query using a hash index
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect comparison of <type>tsquery</> values (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
|
||
in single-byte encodings (Rolf Jentsch)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disable <function>xmlvalidate</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This function should have been removed before 8.3 release, but
|
||
was inadvertently left in the source code. It poses a small
|
||
security risk since unprivileged users could use it to read the
|
||
first few characters of any file accessible to the server.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leaks in certain usages of set-returning functions (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
|
||
high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
|
||
escape sequences (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is necessary to avoid encoding problems when the database
|
||
encoding is multi-byte. This change could pose compatibility issues
|
||
for applications that are expecting specific results from
|
||
<function>encode</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix input of datetime values for February 29 in years BC (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The former coding was mistaken about which years were leap years.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>unrecognized node type</> error in some variants of
|
||
<command>ALTER OWNER</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
|
||
INCLUDING INDEXES</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
|
||
is cleared when a lock wait is aborted (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix handling of process permissions on Windows Vista (Dave, Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, this fix allows starting the server as the Administrator
|
||
user.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008a
|
||
(in particular, recent Chile changes); adjust timezone abbreviation
|
||
<literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</> problems with arrays (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
||
number from command-line options (Itagaki Takahiro, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, <literal>pg_ctl start -w</> could try to contact the
|
||
postmaster on the wrong port, leading to bogus reports of startup
|
||
failure.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <option>-fwrapv</> to defend against possible misoptimization
|
||
in recent <application>gcc</> versions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to be necessary when building <productname>PostgreSQL</>
|
||
with <application>gcc</> 4.3 or later.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-3">
|
||
<title>Release 8.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-02-04</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
With significant new functionality and performance enhancements,
|
||
this release represents a major leap forward for
|
||
<productname>PostgreSQL</>. This was made possible by a growing
|
||
community that has dramatically accelerated the pace of
|
||
development. This release adds the following major features:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Full text search is integrated into the core database system
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support for the SQL/XML standard, including new operators and an
|
||
<type>XML</type> data type
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enumerated data types (<type>ENUM</type>)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Arrays of composite types
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Universally Unique Identifier (<type>UUID</>) data type
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add control over whether <literal>NULL</>s sort first or last
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Updatable cursors
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameters can now be set on a per-function
|
||
basis
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
User-defined types can now have type modifiers
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Automatically re-plan cached queries when table
|
||
definitions change or statistics are updated
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Numerous improvements in logging and statistics collection
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support Security Service Provider Interface (<acronym>SSPI</>) for
|
||
authentication on Windows
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support multiple concurrent autovacuum processes, and other
|
||
autovacuum improvements
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the whole <productname>PostgreSQL</> distribution to be compiled
|
||
with <productname>Microsoft Visual C++</>
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
Major performance improvements are listed below. Most of
|
||
these enhancements are automatic and do not require user changes or
|
||
tuning:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Asynchronous commit delays writes to WAL during transaction commit
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Checkpoint writes can be spread over a longer time period to smooth
|
||
the I/O spike during each checkpoint
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
|
||
most <command>UPDATE</>s and <command>DELETE</>s
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Just-in-time background writer strategy improves disk write
|
||
efficiency
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Using non-persistent transaction IDs for read-only transactions
|
||
reduces overhead and <command>VACUUM</> requirements
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-field and per-row storage overhead has been reduced
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Large sequential scans no longer force out frequently used
|
||
cached pages
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Concurrent large sequential scans can now share disk reads
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>ORDER BY ... LIMIT</> can be done without sorting
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
The above items are explained in more detail in the sections below.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.3</title>
|
||
|
||
<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>
|
||
Non-character data types are no longer automatically cast to
|
||
<type>TEXT</> (Peter, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, if a non-character value was supplied to an operator or
|
||
function that requires <type>text</> input, it was automatically
|
||
cast to <type>text</>, for most (though not all) built-in data types.
|
||
This no longer happens: an explicit cast to <type>text</> is now
|
||
required for all non-character-string types. For example, these
|
||
expressions formerly worked:
|
||
|
||
<programlisting>
|
||
substr(current_date, 1, 4)
|
||
23 LIKE '2%'
|
||
</programlisting>
|
||
|
||
but will now draw <quote>function does not exist</> and <quote>operator
|
||
does not exist</> errors respectively. Use an explicit cast instead:
|
||
|
||
<programlisting>
|
||
substr(current_date::text, 1, 4)
|
||
23::text LIKE '2%'
|
||
</programlisting>
|
||
|
||
(Of course, you can use the more verbose <literal>CAST()</> syntax too.)
|
||
The reason for the change is that these automatic casts too often caused
|
||
surprising behavior. An example is that in previous releases, this
|
||
expression was accepted but did not do what was expected:
|
||
|
||
<programlisting>
|
||
current_date < 2017-11-17
|
||
</programlisting>
|
||
|
||
This is actually comparing a date to an integer, which should be
|
||
(and now is) rejected — but in the presence of automatic
|
||
casts both sides were cast to <type>text</> and a textual comparison
|
||
was done, because the <literal>text < text</> operator was able
|
||
to match the expression when no other <literal><</> operator could.
|
||
</para>
|
||
|
||
<para>
|
||
Types <type>char(<replaceable>n</>)</type> and
|
||
<type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
|
||
automatically. Also, automatic casting to <type>text</> still works for
|
||
inputs to the concatenation (<literal>||</>) operator, so long as least
|
||
one input is a character-string type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Full text search features from <filename>contrib/tsearch2</> have
|
||
been moved into the core server, with some minor syntax changes
|
||
</para>
|
||
|
||
<para>
|
||
<filename>contrib/tsearch2</> now contains a compatibility
|
||
interface.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
|
||
returns no rows, now returns an empty array, rather than NULL
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The array type name for a base data type is no longer always the base
|
||
type's name with an underscore prefix
|
||
</para>
|
||
|
||
<para>
|
||
The old naming convention is still honored when possible, but
|
||
application code should no longer depend on it. Instead
|
||
use the new <literal>pg_type.typarray</literal> column to
|
||
identify the array data type associated with a given type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>ORDER BY ... USING</> <replaceable>operator</> must now
|
||
use a less-than or greater-than <replaceable>operator</> that is
|
||
defined in a btree operator class
|
||
</para>
|
||
|
||
<para>
|
||
This restriction was added to prevent inconsistent results.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>SET LOCAL</command> changes now persist until
|
||
the end of the outermost transaction, unless rolled back (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously <command>SET LOCAL</command>'s effects were lost
|
||
after subtransaction commit (<command>RELEASE SAVEPOINT</>
|
||
or exit from a PL/pgSQL exception block).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Commands rejected in transaction blocks are now also rejected in
|
||
multiple-statement query strings (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
|
||
rejected even if submitted as a single query message.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>ROLLBACK</> outside a transaction block now
|
||
issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
|
||
from accepting schema-qualified names (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, these commands accepted <literal>schema.relation</> but
|
||
ignored the schema part, which was confusing.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER SEQUENCE</> no longer affects the sequence's
|
||
<function>currval()</> state (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Foreign keys now must match indexable conditions for
|
||
cross-data-type references (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves semantic consistency and helps avoid
|
||
performance problems.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Restrict object size functions to users who have reasonable
|
||
permissions to view such information (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <function>pg_database_size()</function> now requires
|
||
<literal>CONNECT</> permission, which is granted to everyone by
|
||
default. <function>pg_tablespace_size()</function> requires
|
||
<literal>CREATE</> permission in the tablespace, or is allowed if
|
||
the tablespace is the default tablespace for the database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the undocumented <literal>!!=</> (not in) operator (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>NOT IN (SELECT ...)</literal> is the proper way to
|
||
perform this operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Internal hashing functions are now more uniformly-distributed (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If application code was computing and storing hash values using
|
||
internal <productname>PostgreSQL</> hashing functions, the hash
|
||
values must be regenerated.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
C-code conventions for handling variable-length data values
|
||
have changed (Greg Stark, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
|
||
to set the length of generated <type>varlena</> values. Also, it
|
||
might be necessary to expand (<quote>de-TOAST</quote>) input values
|
||
in more cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Continuous archiving no longer reports each successful archive
|
||
operation to the server logs unless <literal>DEBUG</> level is used
|
||
(Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Configuration Parameters</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Numerous changes in administrative server parameters
|
||
</para>
|
||
|
||
<para>
|
||
<varname>bgwriter_lru_percent</>,
|
||
<varname>bgwriter_all_percent</>,
|
||
<varname>bgwriter_all_maxpages</>,
|
||
<varname>stats_start_collector</>, and
|
||
<varname>stats_reset_on_server_start</> are removed.
|
||
<varname>redirect_stderr</> is renamed to
|
||
<varname>logging_collector</>.
|
||
<varname>stats_command_string</> is renamed to
|
||
<varname>track_activities</>.
|
||
<varname>stats_block_level</> and <varname>stats_row_level</>
|
||
are merged into <varname>track_counts</>.
|
||
A new boolean configuration parameter, <varname>archive_mode</>,
|
||
controls archiving. Autovacuum's default settings have changed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>stats_start_collector</varname> parameter (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We now always start the collector process, unless <acronym>UDP</>
|
||
socket creation fails.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was removed because <function>pg_stat_reset()</function>
|
||
can be used for this purpose.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Commenting out a parameter in <filename>postgresql.conf</> now
|
||
causes it to revert to its default value (Joachim Wieland)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, commenting out an entry left the parameter's value unchanged
|
||
until the next server restart.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Character Encodings</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add more checks for invalidly-encoded data (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
This change plugs some holes that existed in literal backslash
|
||
escape string processing and <command>COPY</command> escape
|
||
processing. Now the de-escaped string is rechecked to see if the
|
||
result created an invalid multi-byte character.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow database encodings that are inconsistent with the server's
|
||
locale setting (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
On most platforms, <literal>C</> locale is the only locale that
|
||
will work with any database encoding. Other locale settings imply
|
||
a specific encoding and will misbehave if the database encoding
|
||
is something different. (Typical symptoms include bogus textual
|
||
sort order and wrong results from <function>upper()</> or
|
||
<function>lower()</>.) The server now rejects attempts to create
|
||
databases that have an incompatible encoding.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that <function>chr()</function> cannot create
|
||
invalidly-encoded values (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
In UTF8-encoded databases the argument of <function>chr()</function> is
|
||
now treated as a Unicode code point. In other multi-byte encodings
|
||
<function>chr()</function>'s argument must designate a 7-bit ASCII
|
||
character. Zero is no longer accepted.
|
||
<function>ascii()</function> has been adjusted to match.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Adjust <function>convert()</function> behavior to ensure encoding
|
||
validity (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
The two argument form of <function>convert()</function> has been
|
||
removed. The three argument form now takes a <type>bytea</type>
|
||
first argument and returns a <type>bytea</type>. To cover the
|
||
loss of functionality, three new functions have been added:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
<function>convert_from(bytea, name)</function> returns
|
||
<type>text</> — converts the first argument from the named
|
||
encoding to the database encoding
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>convert_to(text, name)</function> returns
|
||
<type>bytea</> — converts the first argument from the
|
||
database encoding to the named encoding
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>length(bytea, name)</function> returns
|
||
<type>integer</> — gives the length of the first
|
||
argument in characters in the named encoding
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <literal>convert(argument USING conversion_name)</literal>
|
||
(Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
Its behavior did not match the SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make JOHAB encoding client-only (Tatsuo)
|
||
</para>
|
||
|
||
<para>
|
||
JOHAB is not safe as a server-side encoding.
|
||
</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.3 and
|
||
the previous major release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Performance</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Asynchronous commit delays writes to WAL during transaction commit
|
||
(Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This feature dramatically increases performance for short data-modifying
|
||
transactions. The disadvantage is that because disk writes are delayed,
|
||
if the database or operating system crashes before data is written to
|
||
the disk, committed data will be lost. This feature is useful for
|
||
applications that can accept some data loss. Unlike turning off
|
||
<varname>fsync</varname>, using asynchronous commit does not put
|
||
database consistency at risk; the worst case is that after a crash the
|
||
last few reportedly-committed transactions might not be committed after
|
||
all.
|
||
This feature is enabled by turning off <varname>synchronous_commit</>
|
||
(which can be done per-session or per-transaction, if some transactions
|
||
are critical and others are not).
|
||
<varname>wal_writer_delay</> can be adjusted to control the maximum
|
||
delay before transactions actually reach disk.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Checkpoint writes can be spread over a longer time period to smooth
|
||
the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
|
||
Linnakangas)
|
||
</para>
|
||
|
||
<para>
|
||
Previously all modified buffers were forced to disk as quickly as
|
||
possible during a
|
||
checkpoint, causing an I/O spike that decreased server performance.
|
||
This new approach spreads out disk writes during checkpoints,
|
||
reducing peak I/O usage. (User-requested and shutdown checkpoints
|
||
are still written as quickly as possible.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
|
||
<command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
|
||
ideas from many others)
|
||
</para>
|
||
|
||
<para>
|
||
<command>UPDATE</>s and <command>DELETE</>s leave dead tuples
|
||
behind, as do failed <command>INSERT</>s. Previously only
|
||
<command>VACUUM</> could reclaim space taken by dead tuples. With
|
||
<acronym>HOT</> dead tuple space can be automatically reclaimed at
|
||
the time of <command>INSERT</> or <command>UPDATE</> if no changes
|
||
are made to indexed columns. This allows for more consistent
|
||
performance. Also, <acronym>HOT</> avoids adding duplicate index
|
||
entries.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Just-in-time background writer strategy improves disk write
|
||
efficiency (Greg Smith, Itagaki Takahiro)
|
||
</para>
|
||
|
||
<para>
|
||
This greatly reduces the need for manual tuning of the background
|
||
writer.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-field and per-row storage overhead have been reduced
|
||
(Greg Stark, Heikki Linnakangas)
|
||
</para>
|
||
|
||
<para>
|
||
Variable-length data types with data values less than 128 bytes long
|
||
will see a storage decrease of 3 to 6 bytes. For example, two adjacent
|
||
<type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
|
||
are also 4 bytes shorter than before.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Using non-persistent transaction IDs for read-only transactions
|
||
reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
|
||
</para>
|
||
|
||
<para>
|
||
Non-persistent transaction IDs do not increment the global
|
||
transaction counter. Therefore, they reduce the load on
|
||
<structname>pg_clog</> and increase the time between forced
|
||
vacuums to prevent transaction ID wraparound.
|
||
Other performance
|
||
improvements were also made that should improve concurrency.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid incrementing the command counter after a read-only command (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
There was formerly a hard limit of 2<superscript>32</>
|
||
(4 billion) commands per transaction. Now only commands that
|
||
actually changed the database count, so while this limit still
|
||
exists, it should be significantly less annoying.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create a dedicated <acronym>WAL</> writer process to off-load
|
||
work from backends (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Skip unnecessary WAL writes for <command>CLUSTER</command> and
|
||
<command>COPY</command> (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Unless WAL archiving is enabled, the system now avoids WAL writes
|
||
for <command>CLUSTER</command> and just <function>fsync()</>s the
|
||
table at the end of the command. It also does the same for
|
||
<command>COPY</command> if the table was created in the same
|
||
transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Large sequential scans no longer force out frequently used
|
||
cached pages (Simon, Heikki, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Concurrent large sequential scans can now share disk reads (Jeff Davis)
|
||
</para>
|
||
|
||
<para>
|
||
This is accomplished by starting the new sequential scan in the
|
||
middle of the table (where another sequential scan is already
|
||
in-progress) and wrapping around to the beginning to finish. This
|
||
can affect the order of returned rows in a query that does not
|
||
specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</>
|
||
configuration parameter can be used to disable this if necessary.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>ORDER BY ... LIMIT</> can be done without sorting
|
||
(Greg Stark)
|
||
</para>
|
||
|
||
<para>
|
||
This is done by sequentially scanning the table and tracking just
|
||
the <quote>top N</> candidate rows, rather than performing a
|
||
full sort of the entire table. This is useful when there is no
|
||
matching index and the <literal>LIMIT</> is not large.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Put a rate limit on messages sent to the statistics
|
||
collector by backends
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This reduces overhead for short transactions, but might sometimes
|
||
increase the delay before statistics are tallied.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve hash join performance for cases with many NULLs (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Speed up operator lookup for cases with non-exact datatype matches (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Autovacuum is now enabled by default (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
Several changes were made to eliminate disadvantages of having
|
||
autovacuum enabled, thereby justifying the change in default.
|
||
Several other autovacuum parameter defaults were also modified.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support multiple concurrent autovacuum processes (Alvaro, Itagaki
|
||
Takahiro)
|
||
</para>
|
||
|
||
<para>
|
||
This allows multiple vacuums to run concurrently. This prevents
|
||
vacuuming of a large table from delaying vacuuming of smaller tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Automatically re-plan cached queries when table
|
||
definitions change or statistics are updated (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously PL/PgSQL functions that referenced temporary tables
|
||
would fail if the temporary table was dropped and recreated
|
||
between function invocations, unless <literal>EXECUTE</> was
|
||
used. This improvement fixes that problem and many related issues.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <varname>temp_tablespaces</varname> parameter to control
|
||
the tablespaces for temporary tables and files (Jaime Casanova,
|
||
Albert Cervera, Bernd Helmle)
|
||
</para>
|
||
|
||
<para>
|
||
This parameter defines a list of tablespaces to be used. This
|
||
enables spreading the I/O load across multiple tablespaces. A random
|
||
tablespace is chosen each time a temporary object is created.
|
||
Temporary files are no longer stored in per-database
|
||
<filename>pgsql_tmp/</filename> directories but in per-tablespace
|
||
directories.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Place temporary tables' TOAST tables in special schemas named
|
||
<literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows low-level code to recognize these tables as temporary,
|
||
which enables various optimizations such as not WAL-logging changes
|
||
and using local rather than shared buffers for access. This also
|
||
fixes a bug wherein backends unexpectedly held open file references
|
||
to temporary TOAST tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problem that a constant flow of new connection requests could
|
||
indefinitely delay the postmaster from completing a shutdown or
|
||
a crash restart (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Guard against a very-low-probability data loss scenario by preventing
|
||
re-use of a deleted table's relfilenode until after the next
|
||
checkpoint (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>CREATE CONSTRAINT TRIGGER</>
|
||
to convert old-style foreign key trigger definitions into regular
|
||
foreign key constraints (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This will ease porting of foreign key constraints carried forward from
|
||
pre-7.3 databases, if they were never converted using
|
||
<filename>contrib/adddepend</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
|
||
should (and now does) override non-null defaults that would otherwise
|
||
be inherited from a parent table or domain.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
|
||
</para>
|
||
|
||
<para>
|
||
These new encodings can be converted to and from UTF-8.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change server startup log message from <quote>database system is
|
||
ready</quote> to <quote>database system is ready to accept
|
||
connections</quote>, and adjust its timing
|
||
</para>
|
||
|
||
<para>
|
||
The message now appears only when the postmaster is really ready
|
||
to accept connections.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Monitoring</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_autovacuum_min_duration</varname> parameter to
|
||
support configurable logging of autovacuum activity (Simon, Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_lock_waits</varname> parameter to log lock waiting
|
||
(Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_temp_files</varname> parameter to log temporary
|
||
file usage (Bill Moran)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_checkpoints</varname> parameter to improve logging
|
||
of checkpoints (Greg Smith, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>log_line_prefix</varname> now supports
|
||
<literal>%s</literal> and <literal>%c</literal> escapes in all
|
||
processes (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
Previously these escapes worked only for user sessions, not for
|
||
background database processes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_restartpoints</varname> to control logging of
|
||
point-in-time recovery restart points (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Last transaction end time is now logged at end of recovery and at
|
||
each logged restart point (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Autovacuum now reports its activity start time in
|
||
<literal>pg_stat_activity</literal> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow server log output in comma-separated value (CSV) format (Arul
|
||
Shaji, Greg Smith, Andrew Dunstan)
|
||
</para>
|
||
|
||
<para>
|
||
CSV-format log files can easily be loaded into a database table for
|
||
subsequent analysis.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use PostgreSQL-supplied timezone support for formatting timestamps
|
||
displayed in the server log (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids Windows-specific problems with localized time zone
|
||
names that are in the wrong encoding. There is a new
|
||
<varname>log_timezone</> parameter that controls the timezone
|
||
used in log messages, independently of the client-visible
|
||
<varname>timezone</> parameter.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New system view <literal>pg_stat_bgwriter</literal> displays
|
||
statistics about background writer activity (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new columns for database-wide tuple statistics to
|
||
<literal>pg_stat_database</literal> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add an <literal>xact_start</literal> (transaction start time) column to
|
||
<literal>pg_stat_activity</literal> (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This makes it easier to identify long-running transactions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
|
||
to <literal>pg_stat_all_tables</literal> and related views (Glen
|
||
Parker)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Merge <varname>stats_block_level</> and <varname>stats_row_level</>
|
||
parameters into a single parameter <varname>track_counts</>, which
|
||
controls all messages sent to the statistics collector process
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename <varname>stats_command_string</varname> parameter to
|
||
<varname>track_activities</varname> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix statistical counting of live and dead tuples to recognize that
|
||
committed and aborted transactions have different effects (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Authentication</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support Security Service Provider Interface (<acronym>SSPI</>) for
|
||
authentication on Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support GSSAPI authentication (Henry Hotz, Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This should be preferred to native Kerberos authentication because
|
||
GSSAPI is an industry standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support a global SSL configuration file (Victor Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
|
||
(Victor Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change the timestamps recorded in transaction WAL records from
|
||
time_t to TimestampTz representation (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This provides sub-second resolution in WAL, which can be useful for
|
||
point-in-time recovery.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce WAL disk space needed by warm standby servers (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This change allows a warm standby server to pass the name of the earliest
|
||
still-needed WAL file to the recovery script, allowing automatic removal
|
||
of no-longer-needed WAL files. This is done using <literal>%r</> in
|
||
the <varname>restore_command</varname> parameter of
|
||
<filename>recovery.conf</filename>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New boolean configuration parameter, <varname>archive_mode</>,
|
||
controls archiving (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Previously setting <varname>archive_command</> to an empty string
|
||
turned off archiving. Now <varname>archive_mode</> turns archiving
|
||
on and off, independently of <varname>archive_command</>. This is
|
||
useful for stopping archiving temporarily.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Full text search is integrated into the core database
|
||
system (Teodor, Oleg)
|
||
</para>
|
||
|
||
<para>
|
||
Text search has been improved, moved into the core code, and is now
|
||
installed by default. <filename>contrib/tsearch2</> now contains
|
||
a compatibility interface.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
|
||
ordering options for indexes (Teodor, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously a query using <literal>ORDER BY</> with mixed
|
||
<literal>ASC</>/<literal>DESC</> specifiers could not fully use
|
||
an index. Now an index can be fully used in such cases if the
|
||
index was created with matching
|
||
<literal>ASC</>/<literal>DESC</> specifications.
|
||
<literal>NULL</> sort order within an index can be controlled, too.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>col IS NULL</> to use an index (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Updatable cursors (Arul Shaji, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This eliminates the need to reference a primary key to
|
||
<command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
|
||
The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create a general mechanism that supports casts to and from the
|
||
standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
|
||
<type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
|
||
invoking the datatype's I/O functions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, such casts were available only for types that had
|
||
specialized function(s) for the purpose.
|
||
These new casts are assignment-only in the to-string direction,
|
||
explicit-only in the other direction, and therefore should create no
|
||
surprising behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>UNION</> and related constructs to return a domain
|
||
type, when all inputs are of that domain type (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, the output would be considered to be of the domain's base
|
||
type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow limited hashing when using two different data types (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows hash joins, hash indexes, hashed subplans, and hash
|
||
aggregation to be used in situations involving cross-data-type
|
||
comparisons, if the data types have compatible hash functions.
|
||
Currently, cross-data-type hashing support exists for
|
||
<type>smallint</type>/<type>integer</type>/<type>bigint</type>,
|
||
and for <type>float4</type>/<type>float8</type>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimizer logic for detecting when variables are equal
|
||
in a <literal>WHERE</> clause (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows mergejoins to work with descending sort orders, and
|
||
improves recognition of redundant sort columns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance when planning large inheritance trees in
|
||
cases where most tables are excluded by constraints (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
|
||
<para>
|
||
Arrays of composite types (David Fetter, Andrew, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In addition to arrays of explicitly-declared composite types,
|
||
arrays of the rowtypes of regular tables and views are now
|
||
supported, except for rowtypes of system catalogs, sequences, and TOAST
|
||
tables.
|
||
</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameters can now be set on a per-function
|
||
basis (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, functions can now set their own
|
||
<varname>search_path</> to prevent unexpected behavior if a
|
||
different <varname>search_path</> exists at run-time. Security
|
||
definer functions should set <varname>search_path</varname> to
|
||
avoid security loopholes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>CREATE/ALTER FUNCTION</command> now supports
|
||
<literal>COST</literal> and <literal>ROWS</literal> options (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>COST</literal> allows specification of the cost of a
|
||
function call. <literal>ROWS</literal> allows specification of
|
||
the average number or rows returned by a set-returning function.
|
||
These values are used by the optimizer in choosing the best plan.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement <command>CREATE TABLE LIKE ... INCLUDING
|
||
INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
|
||
transactions in other databases (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
|
||
SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
Previously this could only be done via <command>ALTER TABLE ...
|
||
RENAME TO</command>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
|
||
conflicting backends to exit before failing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This increases the likelihood that these commands will succeed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow triggers and rules to be deactivated in groups using a
|
||
configuration parameter, for replication purposes (Jan)
|
||
</para>
|
||
|
||
<para>
|
||
This allows replication systems to disable triggers and rewrite
|
||
rules as a group without modifying the system catalogs directly.
|
||
The behavior is controlled by <command>ALTER TABLE</> and a new
|
||
parameter <varname>session_replication_role</varname>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
User-defined types can now have type modifiers (Teodor, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows a user-defined type to take a modifier, like
|
||
<type>ssnum(7)</>. Previously only built-in
|
||
data types could have modifiers.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Commands</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Non-superuser database owners now are able to add trusted procedural
|
||
languages to their databases by default (Jeremy Drake)
|
||
</para>
|
||
|
||
<para>
|
||
While this is reasonably safe, some administrators might wish to
|
||
revoke the privilege. It is controlled by
|
||
<structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow a session's current parameter setting to be used as the
|
||
default for future sessions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is done with <literal>SET ... FROM CURRENT</literal> in
|
||
<command>CREATE/ALTER FUNCTION</command>, <command>ALTER
|
||
DATABASE</command>, or <command>ALTER ROLE</command>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement new commands <command>DISCARD ALL</command>,
|
||
<command>DISCARD PLANS</command>, <command>DISCARD
|
||
TEMPORARY</command>, <command>CLOSE ALL</command>, and
|
||
<command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
These commands simplify resetting a database session to its initial
|
||
state, and are particularly useful for connection-pooling software.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, <command>CLUSTER</command> would discard all tuples
|
||
that were committed dead, even if there were still transactions
|
||
that should be able to see them under MVCC visibility rules.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
|
||
<replaceable>table</> USING <replaceable>index</></literal>
|
||
(Holger Schurig)
|
||
</para>
|
||
|
||
<para>
|
||
The old <command>CLUSTER</command> syntax is still supported, but
|
||
the new form is considered more logical.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>EXPLAIN</command> so it can show complex plans
|
||
more accurately (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
References to subplan outputs are now always shown correctly,
|
||
instead of using <literal>?column<replaceable>N</>?</literal>
|
||
for complicated cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Limit the amount of information reported when a user is dropped
|
||
(Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, dropping (or attempting to drop) a user who owned many
|
||
objects could result in large <literal>NOTICE</literal> or
|
||
<literal>ERROR</literal> messages listing all these objects; this
|
||
caused problems for some client applications. The length of the
|
||
message is now limited, although a full list is still sent to the
|
||
server log.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Types</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support for the SQL/XML standard, including new operators and an
|
||
<type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
|
||
</para>
|
||
|
||
<para>
|
||
This feature provides convenient support for fields that have a
|
||
small, fixed set of allowed values. An example of creating an
|
||
<literal>ENUM</> type is
|
||
<literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Universally Unique Identifier (<type>UUID</>) data type (Gevik
|
||
Babakhani, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This closely matches <acronym>RFC</> 4122.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
|
||
</para>
|
||
|
||
<para>
|
||
This greatly increases the range of supported <type>MONEY</>
|
||
values.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>float4</type>/<type>float8</type> to handle
|
||
<literal>Infinity</> and <literal>NAN</> (Not A Number)
|
||
consistently (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
The code formerly was not consistent about distinguishing
|
||
<literal>Infinity</> from overflow conditions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow leading and trailing whitespace during input of
|
||
<type>boolean</type> values (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>COPY</> from using digits and lowercase letters as
|
||
delimiters (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Functions</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new regular expression functions
|
||
<function>regexp_matches()</function>,
|
||
<function>regexp_split_to_array()</function>, and
|
||
<function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
These functions provide extraction of regular expression
|
||
subexpressions and allow splitting a string using a POSIX regular
|
||
expression.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>lo_truncate()</function> for large object truncation
|
||
(Kris Jurka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement <function>width_bucket()</function> for the <type>float8</>
|
||
data type (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_stat_clear_snapshot()</function> to discard
|
||
statistics snapshots collected during the current transaction
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The first request for statistics in a transaction takes a statistics
|
||
snapshot that does not change during the transaction. This function
|
||
allows the snapshot to be discarded and a new snapshot loaded during
|
||
the next statistics query. This is particularly useful for PL/PgSQL
|
||
functions, which are confined to a single transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>isodow</> option to <function>EXTRACT()</> and
|
||
<function>date_part()</> (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This returns the day of the week, with Sunday as seven.
|
||
(<literal>dow</> returns Sunday as zero.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
|
||
day of year) format codes for <function>to_char()</>,
|
||
<function>to_date()</>, and <function>to_timestamp()</> (Brendan
|
||
Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>to_timestamp()</> and <function>to_date()</>
|
||
assume <literal>TM</literal> (trim) option for potentially
|
||
variable-width fields (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This matches <productname>Oracle</>'s behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix off-by-one conversion error in
|
||
<function>to_date()</function>/<function>to_timestamp()</function>
|
||
<literal>D</> (non-ISO day of week) fields (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>setseed()</function> return void, rather than a
|
||
useless integer value (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a hash function for <type>NUMERIC</type> (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This allows hash indexes and hash-based plans to be used with
|
||
<type>NUMERIC</type> columns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve efficiency of
|
||
<literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
|
||
multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>currtid()</function> functions require
|
||
<literal>SELECT</literal> privileges on the target table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add several <function>txid_*()</function> functions to query
|
||
active transaction IDs (Jan)
|
||
</para>
|
||
|
||
<para>
|
||
This is useful for various replication solutions.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/PgSQL Server-Side Language</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add scrollable cursor support, including directional control in
|
||
<command>FETCH</command> (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>IN</literal> as an alternative to
|
||
<literal>FROM</literal> in PL/PgSQL's <command>FETCH</command>
|
||
statement, for consistency with the backend's
|
||
<command>FETCH</command> command (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>MOVE</command> to PL/PgSQL (Magnus, Pavel Stehule,
|
||
Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This adds convenient syntax for PL/PgSQL set-returning functions
|
||
that want to return the result of a query. <command>RETURN QUERY</>
|
||
is easier and more efficient than a loop
|
||
around <command>RETURN NEXT</command>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow function parameter names to be qualified with the
|
||
function's name (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>myfunc.myvar</>. This is particularly
|
||
useful for specifying variables in a query where the variable
|
||
name might match a column name.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make qualification of variables with block labels work properly (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, outer-level block labels could unexpectedly interfere with
|
||
recognition of inner-level record or row references.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten requirements for <literal>FOR</literal> loop
|
||
<literal>STEP</> values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Prevent non-positive <literal>STEP</> values, and handle
|
||
loop overflows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve accuracy when reporting syntax error locations (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Other Server-Side Languages</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow type-name arguments to PL/Perl
|
||
<function>spi_prepare()</function> to be data type aliases in
|
||
addition to names found in <literal>pg_type</literal> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow type-name arguments to PL/Python
|
||
<function>plpy.prepare()</function> to be data type aliases in
|
||
addition to names found in <literal>pg_type</literal> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
|
||
be data type aliases in addition to names found in
|
||
<literal>pg_type</literal> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support a true PL/Python boolean type in compatible Python versions
|
||
(Python 2.3 and later) (Marko Kreen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
|
||
multiple threads within the backend (Steve Marshall, Paul Bayer,
|
||
Doug Knight)
|
||
</para>
|
||
|
||
<para>
|
||
This caused all sorts of unpleasantness.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
List disabled triggers separately in <literal>\d</literal> output
|
||
(Brendan Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <literal>\d</literal> patterns, always match <literal>$</literal>
|
||
literally (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show aggregate return types in <literal>\da</literal> output
|
||
(Greg Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add the function's volatility status to the output of
|
||
<literal>\df+</literal> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>\prompt</literal> capability (Chad Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>\pset</literal>, <literal>\t</literal>, and
|
||
<literal>\x</literal> to specify <literal>on</> or <literal>off</>,
|
||
rather than just toggling (Chad Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>\sleep</> capability (Jan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <literal>\timing</literal> resolution on Windows
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Flush <literal>\o</> output after each backslash command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Correctly detect and report errors while reading a <literal>-f</>
|
||
input file (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <literal>-u</> option (this option has long been deprecated)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>--tablespaces-only</> and <literal>--roles-only</>
|
||
options to <application>pg_dumpall</application> (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add an output file option to
|
||
<application>pg_dumpall</application> (Dave Page)
|
||
</para>
|
||
|
||
<para>
|
||
This is primarily useful on Windows, where output redirection of
|
||
child <application>pg_dump</application> processes does not work.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_dumpall</> to accept an initial-connection
|
||
database name rather than the default
|
||
<literal>template1</literal> (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <literal>-n</> and <literal>-t</> switches, always match
|
||
<literal>$</literal> literally (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance when a database has thousands of objects (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <literal>-u</> option (this option has long been deprecated)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Other Client Applications</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <application>initdb</>, allow the location of the
|
||
<filename>pg_xlog</filename> directory to be specified
|
||
(Euler Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable server core dump generation in <application>pg_regress</>
|
||
on supported operating systems (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
|
||
(Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This controls how long <application>pg_ctl</> will wait when waiting
|
||
for server startup or shutdown. Formerly the timeout was hard-wired
|
||
as 60 seconds.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <application>pg_ctl</> option to control generation
|
||
of server core dumps (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow Control-C to cancel <application>clusterdb</>,
|
||
<application>reindexdb</>, and <application>vacuumdb</> (Itagaki
|
||
Takahiro, Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Suppress command tag output for <application>createdb</>,
|
||
<application>createuser</>, <application>dropdb</>, and
|
||
<application>dropuser</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
The <literal>--quiet</> option is ignored and will be removed in 8.4.
|
||
Progress messages when acting on all databases now go to stdout
|
||
instead of stderr because they are not actually errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="libpq"><application>libpq</></link></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Interpret the <literal>dbName</> parameter of
|
||
<function>PQsetdbLogin()</> as a <literal>conninfo</> string if
|
||
it contains an equals sign (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
This allows use of <literal>conninfo</> strings in client
|
||
programs that still use <literal>PQsetdbLogin()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support a global <acronym>SSL</> configuration file (Victor
|
||
Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add environment variable <varname>PGSSLKEY</> to control
|
||
<acronym>SSL</> hardware keys (Victor Wagner)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>lo_truncate()</function> for large object
|
||
truncation (Kris Jurka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>PQconnectionNeedsPassword()</function> that returns
|
||
true if the server required a password but none was supplied
|
||
(Joe Conway, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If this returns true after a failed connection attempt, a client
|
||
application should prompt the user for a password. In the past
|
||
applications have had to check for a specific error message string to
|
||
decide whether a password is needed; that approach is now
|
||
deprecated.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>PQconnectionUsedPassword()</function> that returns
|
||
true if the supplied password was actually used
|
||
(Joe Conway, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is useful in some security contexts where it is important
|
||
to know whether a user-supplied password is actually valid.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="ecpg"><application>ecpg</></link></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use V3 frontend/backend protocol (Michael)
|
||
</para>
|
||
|
||
<para>
|
||
This adds support for server-side prepared statements.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use native threads, instead of pthreads, on Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve thread-safety of ecpglib (Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make the ecpg libraries export only necessary API symbols (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>Windows</> Port</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the whole <productname>PostgreSQL</> distribution to be compiled
|
||
with <productname>Microsoft Visual C++</> (Magnus and others)
|
||
</para>
|
||
|
||
<para>
|
||
This allows Windows-based developers to use familiar development
|
||
and debugging tools.
|
||
Windows executables made with Visual C++ might also have better
|
||
stability and performance than those made with other tool sets.
|
||
The client-only Visual C++ build scripts have been removed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Drastically reduce postmaster's memory usage when it has many child
|
||
processes (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow regression tests to be started by an administrative
|
||
user (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add native shared memory implementation (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Programming Interface (<acronym>SPI</>)</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add cursor-related functionality in SPI (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
Allow access to the cursor-related planning options, and add
|
||
<command>FETCH</>/<command>MOVE</> routines.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow execution of cursor commands through
|
||
<function>SPI_execute</function> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The macro <literal>SPI_ERROR_CURSOR</> still exists but will
|
||
never be returned.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
|
||
<literal>void *</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This does not break application code, but switching is
|
||
recommended to help catch simple programming mistakes.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Build Options</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>configure</> option <literal>--enable-profiling</>
|
||
to enable code profiling (works only with <application>gcc</>)
|
||
(Korry Douglas and Nikhil Sontakke)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>configure</> option <literal>--with-system-tzdata</>
|
||
to use the operating system's time zone database (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
|
||
installations whose <application>pg_config</> program does not
|
||
appear first in the <varname>PATH</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <command>gmake draft</command> when building the
|
||
<acronym>SGML</> documentation (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Unless <literal>draft</> is used, the documentation build will
|
||
now be repeated if necessary to ensure the index is up-to-date.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
|
||
avoid conflicting with third party includes (like Tcl) that
|
||
define <literal>DLLIMPORT</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create <quote>operator families</quote> to improve planning of
|
||
queries involving cross-data-type comparisons (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update GIN <function>extractQuery()</> API to allow signalling
|
||
that nothing can satisfy the query (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move <literal>NAMEDATALEN</> definition from
|
||
<filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Provide <function>strlcpy()</function> and
|
||
<function>strlcat()</function> on all platforms, and replace
|
||
error-prone uses of <function>strncpy()</function>,
|
||
<function>strncat()</function>, etc (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create hooks to let an external plugin monitor (or even replace) the
|
||
planner and create plans for hypothetical situations (Gurjeet
|
||
Singh, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create a function variable <literal>join_search_hook</> to let plugins
|
||
override the join search order portion of the planner (Julius
|
||
Stroffek)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>tas()</> support for Renesas' M32R processor
|
||
(Kazuhiro Inaoka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>quote_identifier()</function> and
|
||
<application>pg_dump</application> no longer quote keywords that are
|
||
unreserved according to the grammar (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change the on-disk representation of the <type>NUMERIC</type>
|
||
data type so that the <structfield>sign_dscale</> word comes
|
||
before the weight (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
|
||
>= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="acronyms">acronym</link> and <link
|
||
linkend="creating-cluster-nfs">NFS</link> documentation
|
||
sections (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
"Postgres" is now documented as an accepted alias for
|
||
"PostgreSQL" (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add documentation about preventing database server spoofing when
|
||
the server is down (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move <filename>contrib</> <filename>README</> content into the
|
||
main <productname>PostgreSQL</> documentation (Albert Cervera i
|
||
Areny)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/pageinspect</filename> module for low-level
|
||
page inspection (Simon, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/pg_standby</filename> module for controlling
|
||
warm standby operation (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/uuid-ossp</filename> module for generating
|
||
<type>UUID</> values using the OSSP UUID library (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
Use <application>configure</>
|
||
<literal>--with-ossp-uuid</literal> to activate. This takes
|
||
advantage of the new <type>UUID</type> builtin type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/dict_int</filename>,
|
||
<filename>contrib/dict_xsyn</filename>, and
|
||
<filename>contrib/test_parser</filename> modules to provide
|
||
sample add-on text search dictionary templates and parsers
|
||
(Sergey Karpov)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
|
||
Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add timestamps to <application>contrib/pgbench</> <literal>-l</>
|
||
(Greg Smith)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add usage count statistics to
|
||
<filename>contrib/pgbuffercache</filename> (Greg Smith)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add GIN support for <filename>contrib/hstore</> (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update OS/X startup scripts in
|
||
<filename>contrib/start-scripts</filename> (Mark Cotner, David
|
||
Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Restrict <function>pgrowlocks()</function> and
|
||
<function>dblink_get_pkey()</function> to users who have
|
||
<literal>SELECT</literal> privilege on the target table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Restrict <filename>contrib/pgstattuple</filename> functions to
|
||
superusers (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>contrib/xml2</filename> is deprecated and planned for
|
||
removal in 8.4 (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
The new XML support in core PostgreSQL supersedes this module.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-13">
|
||
<title>Release 8.2.13</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-03-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.12.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.13</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.11,
|
||
see the release notes for 8.2.11.
|
||
</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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
||
for the specified conversion function (Heikki)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible failure in <filename>contrib/tsearch2</> when C locale is
|
||
used with a multi-byte encoding (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
Crashes were possible on platforms where <type>wchar_t</> is narrower
|
||
than <type>int</>; Windows in particular.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix extreme inefficiency in <filename>contrib/tsearch2</> parser's
|
||
handling of an email-like string containing multiple <literal>@</>
|
||
characters (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
|
||
(Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
|
||
</para>
|
||
|
||
<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>
|
||
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>
|
||
Clean up PL/pgSQL error status variables fully at block exit
|
||
(Ashesh Vashi and Dave Page)
|
||
</para>
|
||
|
||
<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>
|
||
Retry failed calls to <function>CallNamedPipe()</> on Windows
|
||
(Steve Marshall, Magnus)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
||
of known timezone abbreviations (Xavier Bugaud)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-12">
|
||
<title>Release 8.2.12</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-02-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.11.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.12</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.11,
|
||
see the release notes for 8.2.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of URLs in <function>headline()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of overlength headlines in <function>headline()</>
|
||
function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible Assert failure or misconversion if an encoding
|
||
conversion is created with the wrong conversion function for the
|
||
specified pair of encodings (Tom, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible Assert failure if a statement executed in PL/pgSQL is
|
||
rewritten into another kind of statement, for example if an
|
||
<command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that a snapshot is available to datatype input functions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This primarily affects domains that are declared with <literal>CHECK</>
|
||
constraints involving user-defined stable or immutable functions. Such
|
||
functions typically fail if no snapshot has been set.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make it safer for SPI-using functions to be used within datatype I/O;
|
||
in particular, to be used in domain check constraints (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a problem that made <literal>UPDATE RETURNING tableoid</>
|
||
return zero instead of the correct OID (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner misestimation of selectivity when transitive equality
|
||
is applied to an outer-join clause (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could result in bad plans for queries like
|
||
<literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimizer's handling of long <literal>IN</> lists (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This change avoids wasting large amounts of time on such lists
|
||
when constraint exclusion is enabled.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that the contents of a holdable cursor don't depend on the
|
||
contents of TOAST tables (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, large field values in a cursor result might be represented
|
||
as TOAST pointers, which would fail if the referenced table got dropped
|
||
before the cursor is read, or if the large value is deleted and then
|
||
vacuumed away. This cannot happen with an ordinary cursor,
|
||
but it could with a cursor that is held past its creating transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leak when a set-returning function is terminated without
|
||
reading its whole result (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/dblink</>'s
|
||
<function>dblink_get_result(text,bool)</> function (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible garbage output from <filename>contrib/sslinfo</> functions
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>configure</> script to properly report failure when
|
||
unable to obtain linkage information for PL/Perl (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make all documentation reference <literal>pgsql-bugs</> and/or
|
||
<literal>pgsql-hackers</> as appropriate, instead of the
|
||
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
||
mailing lists (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2009a (for
|
||
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-11">
|
||
<title>Release 8.2.11</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-11-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.10.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.11</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.7,
|
||
see the release notes for 8.2.7. Also, if you were running a previous
|
||
8.2.X release, it is recommended to <command>REINDEX</> all GiST
|
||
indexes after the upgrade.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GiST index corruption due to marking the wrong index entry
|
||
<quote>dead</> after a deletion (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
This would result in index searches failing to find rows they
|
||
should have found. Corrupted indexes can be fixed with
|
||
<command>REINDEX</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix backend crash when the client encoding cannot represent a localized
|
||
error message (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We have addressed similar issues before, but it would still fail if
|
||
the <quote>character has no equivalent</> message itself couldn't
|
||
be converted. The fix is to disable localization and send the plain
|
||
ASCII error message when we detect such a situation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash when deeply nested functions are invoked from
|
||
a trigger (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimization of <replaceable>expression</> <literal>IN</>
|
||
(<replaceable>expression-list</>) queries (Tom, per an idea from Robert
|
||
Haas)
|
||
</para>
|
||
|
||
<para>
|
||
Cases in which there are query variables on the right-hand side had been
|
||
handled less efficiently in 8.2.x and 8.3.x than in prior versions.
|
||
The fix restores 8.1 behavior for such cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
|
||
in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
|
||
list, or a <literal>RETURNING</> list (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The usual symptom of this problem is an <quote>unrecognized node type</>
|
||
error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leak during rescan of a hashed aggregation plan (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure an error is reported when a newly-defined PL/pgSQL trigger
|
||
function is invoked as a normal function (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible collision of <structfield>relfilenode</> numbers
|
||
when moving a table to another tablespace with <command>ALTER SET
|
||
TABLESPACE</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
The command tried to re-use the existing filename, instead of
|
||
picking one that is known unused in the destination directory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect tsearch2 headline generation when single query
|
||
item matches first word of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix improper display of fractional seconds in interval values when
|
||
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
||
build (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
||
behave correctly when the passed tuple and tuple descriptor have
|
||
different numbers of columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is normal when a table has had columns added or removed,
|
||
but these two functions didn't handle it properly.
|
||
The only likely consequence is an incorrect error indication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <filename>pg_control</> is opened in binary mode
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
|
||
<para>
|
||
<application>pg_controldata</> and <application>pg_resetxlog</>
|
||
did this incorrectly, and so could fail on Windows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008i (for
|
||
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-10">
|
||
<title>Release 8.2.10</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-09-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.9.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.10</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.7,
|
||
see the release notes for 8.2.7.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in btree WAL recovery code (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
Recovery failed if the WAL ended partway through a page split operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This error may explain some recent reports of failure to remove old
|
||
<structname>pg_clog</> data.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Widen local lock counters from 32 to 64 bits (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This responds to reports that the counters could overflow in
|
||
sufficiently long transactions, leading to unexpected <quote>lock is
|
||
already held</> errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix missed permissions checks when a view contains a simple
|
||
<literal>UNION ALL</> construct (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
Permissions for the referenced tables were checked properly, but not
|
||
permissions for the view itself.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add checks in executor startup to ensure that the tuples produced by an
|
||
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
||
current rowtype (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<command>ALTER COLUMN TYPE</>, followed by re-use of a previously
|
||
cached plan, could produce this type of situation. The check protects
|
||
against data corruption and/or crashes that could ensue.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible repeated drops during <command>DROP OWNED</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This would typically result in strange errors such as <quote>cache
|
||
lookup failed for relation NNN</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
|
||
argument as a timezone abbreviation, and only try it as a full timezone
|
||
name if that fails, rather than the other way around as formerly (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The timestamp input functions have always resolved ambiguous zone names
|
||
in this order. Making <literal>AT TIME ZONE</> do so as well improves
|
||
consistency, and fixes a compatibility bug introduced in 8.1:
|
||
in ambiguous cases we now behave the same as 8.0 and before did,
|
||
since in the older versions <literal>AT TIME ZONE</> accepted
|
||
<emphasis>only</> abbreviations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix datetime input functions to correctly detect integer overflow when
|
||
running on a 64-bit platform (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent integer overflows during units conversion when displaying a
|
||
configuration parameter that has units (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of writing very long log messages to syslog (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow spaces in the suffix part of an LDAP URL in
|
||
<filename>pg_hba.conf</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
||
ON</> query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner bug with nested sub-select expressions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If the outer sub-select has no direct dependency on the parent query,
|
||
but the inner one does, the outer value might not get recalculated
|
||
for new parent query rows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
||
boolean results always result in two groups, regardless of the
|
||
expressions' contents (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is very substantially more accurate than the regular <literal>GROUP
|
||
BY</> estimate for certain boolean tests like <replaceable>col</>
|
||
<literal>IS NULL</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/PgSQL to not fail when a <literal>FOR</> loop's target variable
|
||
is a record containing composite-type fields (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
|
||
about the encoding of data sent to or from Tcl (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
On Windows, work around a Microsoft bug by preventing
|
||
<application>libpq</> from trying to send more than 64kB per system call
|
||
(Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
||
error reporting after failure to send a SQL command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to properly preserve postmaster
|
||
command-line arguments across a <literal>restart</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008f (for
|
||
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
||
Pakistan, Palestine, and Paraguay)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-9">
|
||
<title>Release 8.2.9</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-06-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious and one minor bug fix over 8.2.8.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.9</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.7,
|
||
see the release notes for 8.2.7.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Before this fix, a negative constant in a view or rule might be dumped
|
||
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
||
be <literal>(-42)::integer</> due to operator precedence rules.
|
||
Usually this would make little difference, but it could interact with
|
||
another recent patch to cause
|
||
<productname>PostgreSQL</> to reject what had been a valid
|
||
<command>SELECT DISTINCT</> view query. Since this could result in
|
||
<application>pg_dump</> output failing to reload, it is being treated
|
||
as a high-priority fix. The only released versions in which dump
|
||
output is actually incorrect are 8.3.1 and 8.2.7.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER AGGREGATE ... OWNER TO</> update
|
||
<structname>pg_shdepend</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This oversight could lead to problems if the aggregate was later
|
||
involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
|
||
operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-8">
|
||
<title>Release 8.2.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>never released</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.7.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, if you are upgrading from a version earlier than 8.2.7,
|
||
see the release notes for 8.2.7.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
|
||
occurred on Windows when using UTF-8 database encoding and a different
|
||
client encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
||
column is correctly checked to see if it's been initialized to all
|
||
non-nulls (Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Previous versions neglected to check this requirement at all.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
||
<quote>same</> constraint from multiple parent relations that
|
||
inherited that constraint from a common ancestor (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
|
||
to the target table of an <command>UPDATE</> or <command>DELETE</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GIN bug that could result in a <literal>too many LWLocks
|
||
taken</literal> failure (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid possible crash when decompressing corrupted data
|
||
(Zdenek Kotala)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair two places where SIGTERM exit of a backend could leave corrupted
|
||
state in shared memory (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Neither case is very important if SIGTERM is used to shut down the
|
||
whole database cluster together, but there was a problem if someone
|
||
tried to SIGTERM individual backends.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix conversions between ISO-8859-5 and other encodings to handle
|
||
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
||
two dots) (Sergey Burladyan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several datatype input functions, notably <function>array_in()</>,
|
||
that were allowing unused bytes in their results to contain
|
||
uninitialized, unpredictable values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failures in which two apparently identical literal
|
||
values were not seen as equal, resulting in the parser complaining
|
||
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
||
expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a corner case in regular-expression substring matching
|
||
(<literal>substring(<replaceable>string</> from
|
||
<replaceable>pattern</>)</literal>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The problem occurs when there is a match to the pattern overall but
|
||
the user has specified a parenthesized subexpression and that
|
||
subexpression hasn't got a match. An example is
|
||
<literal>substring('foo' from 'foo(bar)?')</>.
|
||
This should return NULL, since <literal>(bar)</> isn't matched, but
|
||
it was mistakenly returning the whole-pattern match instead (ie,
|
||
<literal>foo</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008c (for
|
||
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
|
||
Argentina/San_Luis)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect result from <application>ecpg</>'s
|
||
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix broken GiST comparison function for <filename>contrib/tsearch2</>'s
|
||
<type>tsquery</> type (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crashes in <filename>contrib/cube</> functions (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix core dump in <filename>contrib/xml2</>'s
|
||
<function>xpath_table()</> function when the input query returns a
|
||
NULL value (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/xml2</>'s makefile to not override
|
||
<literal>CFLAGS</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
||
4.3 (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This problem affects <quote>old style</> (V0) C functions that
|
||
return boolean. The fix is already in 8.3, but the need to
|
||
back-patch it was not realized at the time.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-7">
|
||
<title>Release 8.2.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-03-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.6.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
However, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the Windows locale
|
||
issue described below.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix character string comparison for Windows locales that consider
|
||
different character combinations as equal (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fix applies only on Windows and only when using UTF-8
|
||
database encoding. The same fix was made for all other cases
|
||
over two years ago, but Windows with UTF-8 uses a separate code
|
||
path that was not updated. If you are using a locale that
|
||
considers some non-identical strings as equal, you may need to
|
||
<command>REINDEX</> to fix existing indexes on textual columns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair potential deadlock between concurrent <command>VACUUM FULL</>
|
||
operations on different system catalogs (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
||
race condition (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In rare cases a session that had just executed a
|
||
<command>LISTEN</> might not get a notification, even though
|
||
one would be expected because the concurrent transaction executing
|
||
<command>NOTIFY</> was observed to commit later.
|
||
</para>
|
||
|
||
<para>
|
||
A side effect of the fix is that a transaction that has executed
|
||
a not-yet-committed <command>LISTEN</> command will not see any
|
||
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
||
should it choose to look; formerly it would have. This behavior
|
||
was never documented one way or the other, but it is possible that
|
||
some applications depend on the old behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
|
||
prepared transaction (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was formerly allowed but trying to do it had various unpleasant
|
||
consequences, notably that the originating backend could not exit
|
||
as long as an <command>UNLISTEN</> remained uncommitted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow dropping a temporary table within a
|
||
prepared transaction (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This was correctly disallowed by 8.1, but the check was inadvertently
|
||
broken in 8.2.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare crash when an error occurs during a query using a hash index
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory leaks in certain usages of set-returning functions (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix input of datetime values for February 29 in years BC (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The former coding was mistaken about which years were leap years.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>unrecognized node type</> error in some variants of
|
||
<command>ALTER OWNER</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
|
||
is cleared when a lock wait is aborted (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix handling of process permissions on Windows Vista (Dave, Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, this fix allows starting the server as the Administrator
|
||
user.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008a
|
||
(in particular, recent Chile changes); adjust timezone abbreviation
|
||
<literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
||
number from command-line options (Itagaki Takahiro, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, <literal>pg_ctl start -w</> could try to contact the
|
||
postmaster on the wrong port, leading to bogus reports of startup
|
||
failure.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <option>-fwrapv</> to defend against possible misoptimization
|
||
in recent <application>gcc</> versions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to be necessary when building <productname>PostgreSQL</>
|
||
with <application>gcc</> 4.3 or later.
|
||
</para>
|
||
</listitem>
|
||
|
||
|
||
<listitem>
|
||
<para>
|
||
Correctly enforce <varname>statement_timeout</> values longer
|
||
than <literal>INT_MAX</> microseconds (about 35 minutes) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This bug affects only builds with <option>--enable-integer-datetimes</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>unexpected PARAM_SUBLINK ID</> planner error when
|
||
constant-folding simplifies a sub-select (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix logical errors in constraint-exclusion handling of <literal>IS
|
||
NULL</> and <literal>NOT</> expressions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The planner would sometimes exclude partitions that should not
|
||
have been excluded because of the possibility of NULL results.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix another cause of <quote>failed to build any N-way joins</>
|
||
planner errors (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could happen in cases where a clauseless join needed to be
|
||
forced before a join clause could be exploited.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect constant propagation in outer-join planning (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The planner could sometimes incorrectly conclude that a variable
|
||
could be constrained to be equal to a constant, leading
|
||
to wrong query results.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix display of constant expressions in <literal>ORDER BY</>
|
||
and <literal>GROUP BY</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An explictly casted constant would be shown incorrectly. This could
|
||
for example lead to corruption of a view definition during
|
||
dump and reload.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> to handle NOTICE messages correctly
|
||
during COPY OUT (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This failure has only been observed to occur when a user-defined
|
||
datatype's output routine issues a NOTICE, but there is no
|
||
guarantee it couldn't happen due to other causes.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-6">
|
||
<title>Release 8.2.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-01-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.5,
|
||
including fixes for significant security issues.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.6</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent functions in indexes from executing with the privileges of
|
||
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Functions used in index expressions and partial-index
|
||
predicates are evaluated whenever a new table entry is made. It has
|
||
long been understood that this poses a risk of trojan-horse code
|
||
execution if one modifies a table owned by an untrustworthy user.
|
||
(Note that triggers, defaults, check constraints, etc. pose the
|
||
same type of risk.) But functions in indexes pose extra danger
|
||
because they will be executed by routine maintenance operations
|
||
such as <command>VACUUM FULL</>, which are commonly performed
|
||
automatically under a superuser account. For example, a nefarious user
|
||
can execute code with superuser privileges by setting up a
|
||
trojan-horse index definition and waiting for the next routine vacuum.
|
||
The fix arranges for standard maintenance operations
|
||
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
||
and <command>CLUSTER</>) to execute as the table owner rather than
|
||
the calling user, using the same privilege-switching mechanism already
|
||
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
||
this security measure, execution of <command>SET SESSION
|
||
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
||
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
||
</para>
|
||
|
||
<para>
|
||
Suitably crafted regular-expression patterns could cause crashes,
|
||
infinite or near-infinite looping, and/or massive memory consumption,
|
||
all of which pose denial-of-service hazards for applications that
|
||
accept regex search patterns from untrustworthy sources.
|
||
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
|
||
<para>
|
||
The fix that appeared for this in 8.2.5 was incomplete, as it plugged
|
||
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
||
CVE-2007-3278)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs in WAL replay for GIN indexes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GIN index build to work properly when
|
||
<varname>maintenance_work_mem</> is 4GB or more (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2007k
|
||
(in particular, recent Argentina changes) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve planner's handling of LIKE/regex estimation in non-C locales
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planning-speed problem for deep outer-join nests, as well as
|
||
possible poor choice of join order (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
||
(SELECT ...)</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE TABLE ... SERIAL</> and
|
||
<command>ALTER SEQUENCE ... OWNED BY</> not change the
|
||
<function>currval()</> state of the sequence (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Preserve the tablespace and storage parameters of indexes that are
|
||
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make archive recovery always start a new WAL timeline, rather than only
|
||
when a recovery stop time was used (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids a corner-case risk of trying to overwrite an existing
|
||
archived copy of the last WAL segment, and seems simpler and cleaner
|
||
than the original definition.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
|
||
when the table is too small for it to be useful (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in <function>translate()</> when using a multibyte
|
||
database encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>corr()</> return the correct result for negative
|
||
correlation values (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix overflow in <literal>extract(epoch from interval)</> for intervals
|
||
exceeding 68 years (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Perl to not fail when a UTF-8 regular expression is used
|
||
in a trusted function (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
|
||
as <literal>int</> rather than <literal>char</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
While this could theoretically happen anywhere, no standard build of
|
||
Perl did things this way ... until <productname>Mac OS X</> 10.5.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to work correctly with Python 2.5 on 64-bit machines
|
||
(Marko Kreen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to not crash on long exception messages (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_dump</> to correctly handle inheritance child tables
|
||
that have default expressions different from their parent's (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers
|
||
to a file that is not a plain file (Martin Pitt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>ecpg</> parser fixes (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/pgcrypto</> defend against
|
||
<application>OpenSSL</> libraries that fail on keys longer than 128
|
||
bits; which is the case at least on some Solaris versions (Marko Kreen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
||
NULL rowid as a category in its own right, rather than crashing (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
||
escape backslashes correctly (Teodor, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a specific version of <productname>Autoconf</> to be used
|
||
when re-generating the <command>configure</> script (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This affects developers and packagers only. The change was made
|
||
to prevent accidental use of untested combinations of
|
||
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
||
You can remove the version check if you really want to use a
|
||
different <productname>Autoconf</> version, but it's
|
||
your responsibility whether the result works or not.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update <function>gettimeofday</> configuration check so that
|
||
<productname>PostgreSQL</> can be built on newer versions of
|
||
<productname>MinGW</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-5">
|
||
<title>Release 8.2.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-09-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.4.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.5</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent index corruption when a transaction inserts rows and
|
||
then aborts close to the end of a concurrent <command>VACUUM</>
|
||
on the same table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving
|
||
domains over domains (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix some planner problems with outer joins, notably poor
|
||
size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the <type>interval</> data type to accept input consisting only of
|
||
milliseconds or microseconds (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow timezone name to appear before the year in <type>timestamp</> input (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Speed up rtree index insertion (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix excessive logging of <acronym>SSL</> error messages (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix logging so that log messages are never interleaved when using
|
||
the syslogger process (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash when <varname>log_min_error_statement</> logging runs out
|
||
of memory (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect handling of some foreign-key corner cases (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>stddev_pop(numeric)</> and <function>var_pop(numeric)</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
|
||
due to attempting to process temporary tables of other sessions (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Windows socket and semaphore improvements (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>pg_ctl -w</> work properly in Windows service mode (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
|
||
because of possible encoding mismatches (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Do not let <filename>/contrib/intarray</> try to make its GIN opclass
|
||
the default (this caused problems at dump/restore) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-4">
|
||
<title>Release 8.2.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-04-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.3,
|
||
including a security fix.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.4</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support explicit placement of the temporary-table schema within
|
||
<varname>search_path</>, and disable searching it for functions
|
||
and operators (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is needed to allow a security-definer function to set a
|
||
truly secure value of <varname>search_path</>. Without it,
|
||
an unprivileged SQL user can use temporary objects to execute code
|
||
with the privileges of the security-definer function (CVE-2007-2138).
|
||
See <command>CREATE FUNCTION</> for more information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <varname>shared_preload_libraries</> for Windows
|
||
by forcing reload in each backend (Korry Douglas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>to_char()</> so it properly upper/lower cases localized day or month
|
||
names (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require <command>COMMIT PREPARED</> to be executed in the same
|
||
database as the transaction was prepared in (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>pg_dump</> to do binary backups larger than two gigabytes
|
||
on Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New traditional (Taiwan) Chinese <acronym>FAQ</> (Zhou Daojing)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent the statistics collector from writing to disk too frequently (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
||
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in domains that use array types (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>pg_dump</> so it can dump a serial column's sequence
|
||
using <option>-t</> when not also dumping the owning table
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Planner fixes, including improving outer join and bitmap scan
|
||
selection logic (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible wrong answers or crash when a PL/pgSQL function tries
|
||
to <literal>RETURN</> from within an <literal>EXCEPTION</> block
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PANIC during enlargement of a hash index (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-3">
|
||
<title>Release 8.2.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains two fixes from 8.2.2.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.3</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove overly-restrictive check for type length in constraints and
|
||
functional indexes(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-2">
|
||
<title>Release 8.2.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.1, including
|
||
a security fix.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.2</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove security vulnerabilities that allowed connected users
|
||
to read backend memory (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The vulnerabilities involve suppressing the normal check that a SQL
|
||
function returns the data type it's declared to, and changing the
|
||
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
|
||
errors can easily be exploited to cause a backend crash, and in
|
||
principle might be used to read database content that the user
|
||
should not be able to access.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix not-so-rare-anymore bug wherein btree index page splits could fail
|
||
due to choosing an infeasible split point (Heikki Linnakangas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix Borland C compile scripts (L Bayuk)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Properly handle <function>to_char('CC')</> for years ending in
|
||
<literal>00</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Year 2000 is in the twentieth century, not the twenty-first.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect permission check in
|
||
<literal>information_schema.key_column_usage</> view (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The symptom is <quote>relation with OID nnnnn does not exist</> errors.
|
||
To get this fix without using <command>initdb</>, use <command>CREATE OR
|
||
REPLACE VIEW</> to install the corrected definition found in
|
||
<filename>share/information_schema.sql</>. Note you will need to do
|
||
this in each database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>VACUUM</> performance for databases with many tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potentially incorrect results from index searches using
|
||
<literal>ROW</> inequality conditions (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten security of multi-byte character processing for UTF8 sequences
|
||
over three bytes long (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bogus <quote>permission denied</> failures occurring on Windows
|
||
due to attempts to fsync already-deleted files (Magnus, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug that could cause the statistics collector
|
||
to hang on Windows (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This would in turn lead to autovacuum not working.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crashes when an already-in-use PL/pgSQL function is
|
||
updated (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible errors in processing PL/pgSQL exception blocks (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2-1">
|
||
<title>Release 8.2.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-01-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.2.
|
||
For information about new features in the 8.2 major release, see
|
||
<xref linkend="release-8-2">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2.1</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash with <literal>SELECT</> ... <literal>LIMIT ALL</> (also
|
||
<literal>LIMIT NULL</>) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>Several /contrib/tsearch2</> fixes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
On Windows, make log messages coming from the operating system use
|
||
<acronym>ASCII</> encoding (Hiroshi Saito)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a conversion problem when there is a mismatch between
|
||
the encoding of the operating system and database server.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix Windows linking of <application>pg_dump</> using
|
||
<filename>win32.mak</>
|
||
(Hiroshi Saito)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner mistakes for outer join queries (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several problems in queries involving sub-SELECTs (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in SPI during subtransaction abort (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This affects all PL functions since they all use SPI.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve build speed of <acronym>PDF</> documentation (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimization decisions related to index scans (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <application>psql</> print multi-byte combining characters as
|
||
before, rather than output as <literal>\u</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve index usage of regular expressions that use parentheses (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <application>psql</> <literal>\d</> performance also.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>pg_dumpall</> assume that databases have public
|
||
<literal>CONNECT</> privilege, when dumping from a pre-8.2 server (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This preserves the previous behavior that anyone can connect to a
|
||
database if allowed by <filename>pg_hba.conf</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-2">
|
||
<title>Release 8.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-12-05</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
This release adds many functionality and performance improvements that
|
||
were requested by users, including:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Query language enhancements including <command>INSERT/UPDATE/DELETE
|
||
RETURNING</command>, multirow <literal>VALUES</literal> lists, and
|
||
optional target-table alias in
|
||
<command>UPDATE</>/<command>DELETE</command>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Index creation without blocking concurrent
|
||
<command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
|
||
operations
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Many query optimization improvements, including support for
|
||
reordering outer joins
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved sorting performance with lower memory usage
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
More efficient locking with better concurrency
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
More efficient vacuuming
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Easier administration of warm standby servers
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <literal>FILLFACTOR</literal> support for tables and indexes
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Monitoring, logging, and performance tuning additions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
More control over creating and dropping objects
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Table inheritance relationships can be defined
|
||
for and removed from pre-existing tables
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>COPY TO</command> can copy the output of an arbitrary
|
||
<command>SELECT</command> statement
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Array improvements, including nulls in arrays
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Aggregate-function improvements, including multiple-input
|
||
aggregates and SQL:2003 statistical functions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Many <filename>contrib/</filename> improvements
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.2</title>
|
||
|
||
<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>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Set <link
|
||
linkend="guc-escape-string-warning"><varname>escape_string_warning</></link>
|
||
to <literal>on</> by default (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This issues a warning if backslash escapes are used in
|
||
<link linkend="sql-syntax-strings">non-escape (non-<literal>E''</>)
|
||
strings</link>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change the <link linkend="sql-syntax-row-constructors">row
|
||
constructor syntax</link> (<literal>ROW(...)</>) so that
|
||
list elements <literal>foo.*</> will be expanded to a list
|
||
of their member fields, rather than creating a nested
|
||
row type field as formerly (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The new behavior is substantially more useful since it
|
||
allows, for example, triggers to check for data changes
|
||
with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>.
|
||
The old behavior is still available by omitting <literal>.*</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <link linkend="row-wise-comparison">row comparisons</link>
|
||
follow <acronym>SQL</> standard semantics and allow them
|
||
to be used in index scans (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, row = and <> comparisons followed the
|
||
standard but < <= > >= did not. A row comparison
|
||
can now be used as an index constraint for a multicolumn
|
||
index matching the row value.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</> NULL</literal></link>
|
||
tests follow <acronym>SQL</> standard semantics (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The former behavior conformed to the standard for simple cases
|
||
with <literal>IS NULL</>, but <literal>IS NOT NULL</> would return
|
||
true if any row field was non-null, whereas the standard says it
|
||
should return true only when all fields are non-null.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <link linkend="SQL-SET-CONSTRAINTS"><command>SET
|
||
CONSTRAINT</></link> affect only one constraint (Kris Jurka)
|
||
</para>
|
||
|
||
<para>
|
||
In previous releases, <command>SET CONSTRAINT</> modified
|
||
all constraints with a matching name. In this release,
|
||
the schema search path is used to modify only the first
|
||
matching constraint. A schema specification is also
|
||
supported. This more nearly conforms to the SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <literal>RULE</> permission for tables, for security reasons
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
As of this release, only a table's owner can create or modify
|
||
rules for the table. For backwards compatibility,
|
||
<command>GRANT</>/<command>REVOKE RULE</> is still accepted,
|
||
but it does nothing.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Array comparison improvements (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Now array dimensions are also compared.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <link linkend="functions-array">array concatenation</link>
|
||
to match documented behavior (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This changes the previous behavior where concatenation
|
||
would modify the array lower bound.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make command-line options of <application>postmaster</>
|
||
and <link linkend="app-postgres"><application>postgres</></link>
|
||
identical (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This allows the postmaster to pass arguments to each backend
|
||
without using <literal>-o</>. Note that some options are now
|
||
only available as long-form options, because there were conflicting
|
||
single-letter options.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Deprecate use of <application>postmaster</> symbolic link (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
<application>postmaster</> and <application>postgres</>
|
||
commands now act identically, with the behavior determined
|
||
by command-line options. The <application>postmaster</> symbolic link is
|
||
kept for compatibility, but is not really needed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <link
|
||
linkend="guc-log-duration"><varname>log_duration</></link>
|
||
to output even if the query is not output (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In prior releases, <varname>log_duration</> only printed if
|
||
the query appeared earlier in the log.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <link
|
||
linkend="functions-formatting"><function>to_char(time)</></link>
|
||
and <link
|
||
linkend="functions-formatting"><function>to_char(interval)</></link>
|
||
treat <literal>HH</> and <literal>HH12</> as 12-hour
|
||
intervals
|
||
</para>
|
||
|
||
<para>
|
||
Most applications should use <literal>HH24</> unless they
|
||
want a 12-hour display.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Zero unmasked bits in conversion from <link
|
||
linkend="datatype-inet"><type>INET</></link> to <link
|
||
linkend="datatype-inet"><type>CIDR</></link> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This ensures that the converted value is actually valid for
|
||
<type>CIDR</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>australian_timezones</> configuration variable
|
||
(Joachim Wieland)
|
||
</para>
|
||
|
||
<para>
|
||
This variable has been superseded by a more general facility
|
||
for configuring timezone abbreviations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve cost estimation for nested-loop index scans (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This might eliminate the need to set unrealistically small
|
||
values of <link
|
||
linkend="guc-random-page-cost"><varname>random_page_cost</></link>.
|
||
If you have been using a very small <varname>random_page_cost</>,
|
||
please recheck your test cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change behavior of <command>pg_dump</> <literal>-n</> and
|
||
<literal>-t</> options. (Greg Sabino Mullane)
|
||
</para>
|
||
<para>
|
||
See the <command>pg_dump</> manual page for details.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <link linkend="libpq"><application>libpq</></link>
|
||
<function>PQdsplen()</> to return a useful value (Martijn
|
||
van Oosterhout)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Declare <link linkend="libpq"><application>libpq</></link>
|
||
<function>PQgetssl()</> as returning <literal>void *</>,
|
||
rather than <literal>SSL *</> (Martijn van Oosterhout)
|
||
</para>
|
||
|
||
<para>
|
||
This allows applications to use the function without including
|
||
the OpenSSL headers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
C-language loadable modules must now include a
|
||
<link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
|
||
macro call for version compatibility checking
|
||
(Martijn van Oosterhout)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
For security's sake, modules used by a PL/PerlU function are no
|
||
longer available to PL/Perl functions (Andrew)
|
||
</para>
|
||
<note>
|
||
<para>
|
||
This also implies that data can no longer be shared between a PL/Perl
|
||
function and a PL/PerlU function.
|
||
Some Perl installations have not been compiled with the correct flags
|
||
to allow multiple interpreters to exist within a single process.
|
||
In this situation PL/Perl and PL/PerlU cannot both be used in a
|
||
single backend. The solution is to get a Perl installation which
|
||
supports multiple interpreters.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <filename>contrib/xml2/</>, rename <function>xml_valid()</> to
|
||
<function>xml_is_well_formed()</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<function>xml_valid()</> will remain for backward compatibility,
|
||
but its behavior will change to do schema checking in a future
|
||
release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <filename>contrib/ora2pg/</>, now at <ulink
|
||
url="http://www.samse.fr/GPL/ora2pg"></ulink>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove contrib modules that have been migrated to PgFoundry:
|
||
<filename>adddepend</>, <filename>dbase</>, <filename>dbmirror</>,
|
||
<filename>fulltextindex</>, <filename>mac</>, <filename>userlock</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove abandoned contrib modules:
|
||
<filename>mSQL-interface</>, <filename>tips</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
These ports no longer had active maintainers.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
Below you will find a detailed account of the
|
||
changes between <productname>PostgreSQL</productname> 8.2 and
|
||
the previous major release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Performance Improvements</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the planner to reorder <link linkend="queries-join">outer
|
||
joins</link> in some circumstances (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In previous releases, outer joins would always be evaluated in
|
||
the order written in the query. This change allows the
|
||
query optimizer to consider reordering outer joins, in cases where
|
||
it can determine that the join order can be changed without
|
||
altering the meaning of the query. This can make a
|
||
considerable performance difference for queries involving
|
||
multiple outer joins or mixed inner and outer joins.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve efficiency of <link
|
||
linkend="functions-comparisons"><literal>IN</>
|
||
(list-of-expressions)</link> clauses (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve sorting speed and reduce memory usage (Simon, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve subtransaction performance (Alvaro, Itagaki Takahiro,
|
||
Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>FILLFACTOR</> to <link
|
||
linkend="SQL-CREATETABLE">table</link> and <link
|
||
linkend="SQL-CREATEINDEX">index</link> creation (ITAGAKI
|
||
Takahiro)
|
||
</para>
|
||
|
||
<para>
|
||
This leaves extra free space in each table or index page,
|
||
allowing improved performance as the database grows. This
|
||
is particularly valuable to maintain clustering.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Increase default values for <link
|
||
linkend="guc-shared-buffers"><varname>shared_buffers</></link>
|
||
and <varname>max_fsm_pages</>
|
||
(Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve locking performance by breaking the lock manager tables into
|
||
sections
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows locking to be more fine-grained, reducing
|
||
contention.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce locking requirements of sequential scans (Qingqing
|
||
Zhou)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce locking required for database creation and destruction
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the optimizer's selectivity estimates for <link
|
||
linkend="functions-like"><literal>LIKE</></link>, <link
|
||
linkend="functions-like"><literal>ILIKE</></link>, and
|
||
<link linkend="functions-posix-regexp">regular expression</link>
|
||
operations (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve planning of joins to <link linkend="ddl-inherit">inherited
|
||
tables</link> and <link linkend="queries-union"><literal>UNION
|
||
ALL</></link> views (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="guc-constraint-exclusion">constraint
|
||
exclusion</link> to be applied to <link
|
||
linkend="ddl-inherit">inherited</link> <command>UPDATE</> and
|
||
<command>DELETE</> queries (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<command>SELECT</> already honored constraint exclusion.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve planning of constant <literal>WHERE</> clauses, such as
|
||
a condition that depends only on variables inherited from an
|
||
outer query level (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Protocol-level unnamed prepared statements are re-planned
|
||
for each set of <literal>BIND</> values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves performance because the exact parameter values
|
||
can be used in the plan.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
|
||
Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid extra scan of tables without indexes during <link
|
||
linkend="SQL-VACUUM"><command>VACUUM</></link> (Greg Stark)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve multicolumn <link linkend="GiST"><acronym>GiST</></link>
|
||
indexing (Oleg, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove dead index entries before B-Tree page split (Junji
|
||
Teramoto)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow a forced switch to a new transaction log file (Simon, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is valuable for keeping warm standby slave servers
|
||
in sync with the master. Transaction log file switching now also happens
|
||
automatically during <link
|
||
linkend="functions-admin"><function>pg_stop_backup()</></link>.
|
||
This ensures that all
|
||
transaction log files needed for recovery can be archived immediately.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <acronym>WAL</> informational functions (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Add functions for interrogating the current transaction log insertion
|
||
point and determining <acronym>WAL</> filenames from the
|
||
hex <acronym>WAL</> locations displayed by <link
|
||
linkend="functions-admin"><function>pg_stop_backup()</></link>
|
||
and related functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve recovery from a crash during <acronym>WAL</> replay (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
The server now does periodic checkpoints during <acronym>WAL</>
|
||
recovery, so if there is a crash, future <acronym>WAL</>
|
||
recovery is shortened. This also eliminates the need for
|
||
warm standby servers to replay the entire log since the
|
||
base backup if they crash.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reliability of long-term <acronym>WAL</> replay
|
||
(Heikki, Simon, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, trying to roll forward through more than 2 billion
|
||
transactions would not work due to XID wraparound. This meant
|
||
warm standby servers had to be reloaded
|
||
from fresh base backups periodically.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="guc-archive-timeout"><varname>archive_timeout</></link>
|
||
to force transaction log file switches at a given interval (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This enforces a maximum replication delay for warm standby servers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add native <link linkend="auth-ldap"><acronym>LDAP</></link>
|
||
authentication (Magnus Hagander)
|
||
</para>
|
||
|
||
<para>
|
||
This is particularly useful for platforms that do not
|
||
support <acronym>PAM</>, such as Windows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="sql-grant-description-objects"><literal>GRANT
|
||
CONNECT ON DATABASE</></link> (Gevik Babakhani)
|
||
</para>
|
||
|
||
<para>
|
||
This gives SQL-level control over database access. It works as
|
||
an additional filter on top of the existing
|
||
<link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
|
||
controls.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <link linkend="ssl-tcp"><acronym>SSL</>
|
||
Certificate Revocation List</link> (<acronym>CRL</>) files
|
||
(Libor Hohoš)
|
||
</para>
|
||
|
||
<para>
|
||
The server and <application>libpq</> both recognize <acronym>CRL</>
|
||
files now.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<link linkend="GiST"><acronym>GiST</></link> indexes are
|
||
now clusterable (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove routine autovacuum server log entries (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
<link
|
||
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
|
||
now shows autovacuum activity.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track maximum XID age within individual tables, instead of whole databases (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This reduces the overhead involved in preventing transaction
|
||
ID wraparound, by avoiding unnecessary VACUUMs.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add last vacuum and analyze timestamp columns to the stats
|
||
collector (Larry Rosenman)
|
||
</para>
|
||
|
||
<para>
|
||
These values now appear in the <link
|
||
linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</></link>
|
||
system views.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of statistics monitoring, especially
|
||
<varname>stats_command_string</>
|
||
(Tom, Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This release enables <varname>stats_command_string</> by
|
||
default, now that its overhead is minimal. This means
|
||
<link
|
||
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
|
||
will now show all active queries by default.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>waiting</> column to <link
|
||
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows <structname>pg_stat_activity</> to show all the
|
||
information included in the <application>ps</> display.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configuration parameter <link
|
||
linkend="guc-update-process-title"><varname>update_process_title</></link>
|
||
to control whether the <application>ps</> display is updated
|
||
for every command (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
On platforms where it is expensive to update the <application>ps</>
|
||
display, it might be worthwhile to turn this off and rely solely on
|
||
<structname>pg_stat_activity</> for status information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow units to be specified in configuration settings
|
||
(Peter)
|
||
</para>
|
||
|
||
<para>
|
||
For example, you can now set <link
|
||
linkend="guc-shared-buffers"><varname>shared_buffers</></link>
|
||
to <literal>32MB</> rather than mentally converting sizes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <link linkend="config-setting">include
|
||
directives</link> in <filename>postgresql.conf</> (Joachim
|
||
Wieland)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve logging of protocol-level prepare/bind/execute
|
||
messages (Bruce, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Such logging now shows statement names, bind parameter
|
||
values, and the text of the query being executed. Also,
|
||
the query text is properly included in logged error messages
|
||
when enabled by <varname>log_min_error_statement</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <link
|
||
linkend="guc-max-stack-depth"><varname>max_stack_depth</></link>
|
||
from being set to unsafe values
|
||
</para>
|
||
|
||
<para>
|
||
On platforms where we can determine the actual kernel stack depth
|
||
limit (which is most), make sure that the initial default value of
|
||
<varname>max_stack_depth</> is safe, and reject attempts to set it
|
||
to unsafely large values.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable highlighting of error location in query in more
|
||
cases (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The server is now able to report a specific error location for
|
||
some semantic errors (such as unrecognized column name), rather
|
||
than just for basic syntax errors as before.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>failed to re-find parent key</> errors in
|
||
<command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean out <filename>pg_internal.init</> cache files during server
|
||
restart (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids a hazard that the cache files might contain stale
|
||
data after PITR recovery.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix race condition for truncation of a large relation across a
|
||
gigabyte boundary by <command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug causing needless deadlock errors on row-level locks (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Each backend process is now its own process group leader (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows query cancel to abort subprocesses invoked from a
|
||
backend or archive/recovery process.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Query Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-INSERT"><command>INSERT</></link>/<link
|
||
linkend="SQL-UPDATE"><command>UPDATE</></link>/<link
|
||
linkend="SQL-DELETE"><command>DELETE</></link>
|
||
<literal>RETURNING</> (Jonah Harris, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows these commands to return values, such as the
|
||
computed serial key for a new row. In the <command>UPDATE</>
|
||
case, values from the updated version of the row are returned.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for multiple-row <link
|
||
linkend="queries-values"><literal>VALUES</></link> clauses,
|
||
per SQL standard (Joe, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows <command>INSERT</> to insert multiple rows of
|
||
constants, or queries to generate result sets using constants.
|
||
For example, <literal>INSERT ... VALUES (...), (...),
|
||
....</>, and <literal>SELECT * FROM (VALUES (...), (...),
|
||
....) AS alias(f1, ...)</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
|
||
and <link linkend="SQL-DELETE"><command>DELETE</></link>
|
||
to use an alias for the target table (Atsushi Ogawa)
|
||
</para>
|
||
|
||
<para>
|
||
The SQL standard does not permit an alias in these commands, but
|
||
many database systems allow one anyway for notational convenience.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
|
||
to set multiple columns with a list of values (Susanne
|
||
Ebrecht)
|
||
</para>
|
||
|
||
<para>
|
||
This is basically a short-hand for assigning the columns
|
||
and values in pairs. The syntax is <literal>UPDATE tab
|
||
SET (<replaceable>column</>, ...) = (<replaceable>val</>, ...)</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make row comparisons work per standard (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The forms <, <=, >, >= now compare rows lexicographically,
|
||
that is, compare the first elements, if equal compare the second
|
||
elements, and so on. Formerly they expanded to an AND condition
|
||
across all the elements, which was neither standard nor very useful.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-TRUNCATE"><literal>CASCADE</></link>
|
||
option to <command>TRUNCATE</> (Joachim Wieland)
|
||
</para>
|
||
|
||
<para>
|
||
This causes <command>TRUNCATE</> to automatically include all tables
|
||
that reference the specified table(s) via foreign keys. While
|
||
convenient, this is a dangerous tool — use with caution!
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>FOR UPDATE</> and <literal>FOR SHARE</>
|
||
in the same <link linkend="SQL-INSERT"><literal>SELECT</></link>
|
||
command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="functions-comparisons"><literal>IS NOT
|
||
DISTINCT FROM</></link> (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
This operator is similar to equality (<literal>=</>), but
|
||
evaluates to true when both left and right operands are
|
||
<literal>NULL</>, and to false when just one is, rather than
|
||
yielding <literal>NULL</> in these cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the length output used by <link
|
||
linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
When all corresponding columns are of the same defined length, that
|
||
length is used for the result, rather than a generic length.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="functions-like"><literal>ILIKE</></link>
|
||
to work for multi-byte encodings (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Internally, <literal>ILIKE</> now calls <function>lower()</>
|
||
and then uses <literal>LIKE</>. Locale-specific regular
|
||
expression patterns still do not work in these encodings.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable <link
|
||
linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link>
|
||
to be turned <literal>on</> (Kevin Grittner)
|
||
</para>
|
||
|
||
<para>
|
||
This allows backslash escaping in strings to be disabled,
|
||
making <productname>PostgreSQL</> more
|
||
standards-compliant. The default is <literal>off</> for backwards
|
||
compatibility, but future releases will default this to <literal>on</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Do not flatten subqueries that contain <literal>volatile</>
|
||
functions in their target lists (Jaime Casanova)
|
||
</para>
|
||
|
||
<para>
|
||
This prevents surprising behavior due to multiple evaluation
|
||
of a <literal>volatile</> function (such as <function>random()</>
|
||
or <function>nextval()</>). It might cause performance
|
||
degradation in the presence of functions that are unnecessarily
|
||
marked as <literal>volatile</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add system views <link
|
||
linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link>
|
||
and <link
|
||
linkend="view-pg-cursors"><literal>pg_cursors</></link>
|
||
to show prepared statements and open cursors (Joachim Wieland, Neil)
|
||
</para>
|
||
|
||
<para>
|
||
These are very useful in pooled connection setups.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support portal parameters in <link
|
||
linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> and <link
|
||
linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows, for example, <acronym>JDBC</> <literal>?</> parameters to
|
||
work in these commands.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
If <acronym>SQL</>-level <link
|
||
linkend="SQL-PREPARE"><command>PREPARE</></link> parameters
|
||
are unspecified, infer their types from the content of the
|
||
query (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
Protocol-level <command>PREPARE</> already did this.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed
|
||
two billion (Dhanaraj M)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>TABLESPACE</> clause to <link
|
||
linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
|
||
(Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This allows a tablespace to be specified for the new table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>ON COMMIT</> clause to <link
|
||
linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
|
||
(Neil)
|
||
</para>
|
||
|
||
<para>
|
||
This allows temporary tables to be truncated or dropped on
|
||
transaction commit. The default behavior is for the table
|
||
to remain until the session ends.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>INCLUDING CONSTRAINTS</> to <link
|
||
linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link>
|
||
(Greg Stark)
|
||
</para>
|
||
|
||
<para>
|
||
This allows easy copying of <literal>CHECK</> constraints to a new
|
||
table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the creation of placeholder (shell) <link
|
||
linkend="SQL-CREATETYPE">types</link> (Martijn van Oosterhout)
|
||
</para>
|
||
|
||
<para>
|
||
A shell type declaration creates a type name, without specifying
|
||
any of the details of the type. Making a shell type is useful
|
||
because it allows cleaner declaration of the type's input/output
|
||
functions, which must exist before the type can be defined <quote>for
|
||
real</>. The syntax is <command>CREATE TYPE <replaceable
|
||
class="parameter">typename</replaceable></>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<link linkend="SQL-CREATEAGGREGATE">Aggregate functions</link>
|
||
now support multiple input parameters (Sergey Koposov, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new aggregate creation <link
|
||
linkend="SQL-CREATEAGGREGATE">syntax</link> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The new syntax is <command>CREATE AGGREGATE
|
||
<replaceable>aggname</> (<replaceable>input_type</>)
|
||
(<replaceable>parameter_list</>)</command>. This more
|
||
naturally supports the new multi-parameter aggregate
|
||
functionality. The previous syntax is still supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="SQL-ALTERROLE"><command>ALTER ROLE PASSWORD NULL</></link>
|
||
to remove a previously set role password (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>DROP</> object <literal>IF EXISTS</> for many
|
||
object types (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
This allows <command>DROP</> operations on non-existent
|
||
objects without generating an error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link>
|
||
to drop all objects owned by a role (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN
|
||
OWNED</></link> to reassign ownership of all objects owned
|
||
by a role (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This, and <literal>DROP OWNED</> above, facilitate dropping
|
||
roles.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link>
|
||
syntax (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This was added for setting sequence-specific permissions.
|
||
<literal>GRANT ON TABLE</> for sequences is still supported
|
||
for backward compatibility.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-GRANT"><literal>USAGE</></link>
|
||
permission for sequences that allows only <function>currval()</>
|
||
and <function>nextval()</>, not <function>setval()</>
|
||
(Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>USAGE</> permission allows more fine-grained
|
||
control over sequence access. Granting <literal>USAGE</>
|
||
allows users to increment
|
||
a sequence, but prevents them from setting the sequence to
|
||
an arbitrary value using <function>setval()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE
|
||
[ NO ] INHERIT</></link> (Greg Stark)
|
||
</para>
|
||
|
||
<para>
|
||
This allows inheritance to be adjusted dynamically, rather than
|
||
just at table creation and destruction. This is very valuable
|
||
when using inheritance to implement table partitioning.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-COMMENT">comments</link> on global
|
||
objects to be stored globally (Kris Jurka)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, comments attached to databases were stored in individual
|
||
databases, making them ineffective, and there was no provision
|
||
at all for comments on roles or tablespaces. This change adds a new
|
||
shared catalog <link
|
||
linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
|
||
and stores comments on databases, roles, and tablespaces therein.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Command Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add option to allow indexes to be created without blocking
|
||
concurrent writes to the table (Greg Stark, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE
|
||
INDEX CONCURRENTLY</></link>. The default behavior is
|
||
still to block table modification while a index is being
|
||
created.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Provide <link linkend="functions-advisory-locks">advisory
|
||
locking</link> functionality (Abhijit Menon-Sen, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is a new locking API designed to replace what used to be
|
||
in /contrib/userlock. The userlock code is now on pgfoundry.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-COPY"><command>COPY</></link> to
|
||
dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel
|
||
Zak)
|
||
</para>
|
||
|
||
<para>
|
||
This allows <command>COPY</> to dump arbitrary <acronym>SQL</>
|
||
queries. The syntax is <literal>COPY (SELECT ...) TO</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make the <link linkend="SQL-COPY"><command>COPY</></link>
|
||
command return a command tag that includes the number of
|
||
rows copied (Volkan YAZICI)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link>
|
||
to expire rows without being affected by other concurrent
|
||
<command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <link linkend="APP-INITDB"><application>initdb</></link>
|
||
detect the operating system locale and set the default
|
||
<varname>DateStyle</> accordingly (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This makes it more likely that the installed
|
||
<filename>postgresql.conf</> <varname>DateStyle</> value will
|
||
be as desired.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce number of progress messages displayed by <application>initdb</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Date/Time Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow full timezone names in <link
|
||
linkend="datatype-datetime"><type>timestamp</></link> input values
|
||
(Joachim Wieland)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>'2006-05-24 21:11
|
||
America/New_York'::timestamptz</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support configurable timezone abbreviations (Joachim Wieland)
|
||
</para>
|
||
|
||
<para>
|
||
A desired set of timezone abbreviations can be chosen via the
|
||
configuration parameter <link
|
||
linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</></link>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link>
|
||
and <link
|
||
linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link>
|
||
views to show supported timezones (Magnus Hagander)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="functions-datetime-table"><function>clock_timestamp()</></link>,
|
||
<link
|
||
linkend="functions-datetime-table"><function>statement_timestamp()</></link>,
|
||
and <link
|
||
linkend="functions-datetime-table"><function>transaction_timestamp()</></link>
|
||
(Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
<function>clock_timestamp()</> is the current wall-clock time,
|
||
<function>statement_timestamp()</> is the time the current
|
||
statement arrived at the server, and
|
||
<function>transaction_timestamp()</> is an alias for
|
||
<function>now()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link
|
||
linkend="functions-formatting"><function>to_char()</></link>
|
||
to print localized month and day names (Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link
|
||
linkend="functions-formatting"><function>to_char(time)</></link>
|
||
and <link
|
||
linkend="functions-formatting"><function>to_char(interval)</></link>
|
||
to output <acronym>AM</>/<acronym>PM</> specifications
|
||
(Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Intervals and times are treated as 24-hour periods, e.g.
|
||
<literal>25 hours</> is considered <acronym>AM</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new function <link
|
||
linkend="functions-datetime-table"><function>justify_interval()</></link>
|
||
to adjust interval units (Mark Dilger)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow timezone offsets up to 14:59 away from GMT
|
||
</para>
|
||
|
||
<para>
|
||
Kiribati uses GMT+14, so we'd better accept that.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Interval computation improvements (Michael Glaesemann, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Other Data Type and Function Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow arrays to contain <literal>NULL</> elements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow assignment to array elements not contiguous with the existing
|
||
entries (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The intervening array positions will be filled with nulls.
|
||
This is per SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New built-in <link linkend="functions-array">operators</link>
|
||
for array-subset comparisons (<literal>@></>,
|
||
<literal><@</>, <literal>&&</>) (Teodor, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These operators can be indexed for many data types using
|
||
<acronym>GiST</> or <acronym>GIN</> indexes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add convenient arithmetic <link
|
||
linkend="cidr-inet-operators-table">operations</link> on
|
||
<type>INET</>/<type>CIDR</> values (Stephen R. van den
|
||
Berg)
|
||
</para>
|
||
|
||
<para>
|
||
The new operators are <literal>&</> (and), <literal>|</>
|
||
(or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>,
|
||
<type>inet</> <literal>-</> <type>int8</>, and
|
||
<type>inet</> <literal>-</> <type>inet</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new <link
|
||
linkend="functions-aggregate-statistics-table">aggregate functions</link>
|
||
from SQL:2003 (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
The new functions are <function>var_pop()</>,
|
||
<function>var_samp()</>, <function>stddev_pop()</>, and
|
||
<function>stddev_samp()</>. <function>var_samp()</> and
|
||
<function>stddev_samp()</> are merely renamings of the
|
||
existing aggregates <function>variance()</> and
|
||
<function>stddev()</>. The latter names remain available
|
||
for backward compatibility.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add SQL:2003 statistical <link
|
||
linkend="functions-aggregate-statistics-table">aggregates</link>
|
||
(Sergey Koposov)
|
||
</para>
|
||
|
||
<para>
|
||
New functions: <function>regr_intercept()</>,
|
||
<function>regr_slope()</>, <function>regr_r2()</>,
|
||
<function>corr()</>, <function>covar_samp()</>,
|
||
<function>covar_pop()</>, <function>regr_avgx()</>,
|
||
<function>regr_avgy()</>, <function>regr_sxy()</>,
|
||
<function>regr_sxx()</>, <function>regr_syy()</>,
|
||
<function>regr_count()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
|
||
based on other domains (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Properly enforce domain <link
|
||
linkend="ddl-constraints"><literal>CHECK</></link> constraints
|
||
everywhere (Neil, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, the result of a user-defined function that is
|
||
declared to return a domain type is now checked against the
|
||
domain's constraints. This closes a significant hole in the domain
|
||
implementation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problems with dumping renamed <link
|
||
linkend="datatype-serial"><type>SERIAL</></link> columns
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The fix is to dump a <type>SERIAL</> column by explicitly
|
||
specifying its <literal>DEFAULT</> and sequence elements,
|
||
and reconstructing the <type>SERIAL</> column on reload
|
||
using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER
|
||
SEQUENCE OWNED BY</></link> command. This also allows
|
||
dropping a <type>SERIAL</> column specification.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a server-side sleep function <link
|
||
linkend="functions-datetime-delay"><function>pg_sleep()</></link>
|
||
(Joachim Wieland)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add all comparison operators for the <link
|
||
linkend="datatype-oid"><type>tid</></link> (tuple id) data
|
||
type (Mark Kirkwood, Greg Stark, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/PgSQL Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>TG_table_name</> and <literal>TG_table_schema</> to
|
||
trigger parameters (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>TG_relname</> is now deprecated. Comparable
|
||
changes have been made in the trigger parameters for the other
|
||
PLs as well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>FOR</> statements to return values to scalars
|
||
as well as records and row types (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>BY</> clause to the <literal>FOR</> loop,
|
||
to control the iteration increment (Jaime Casanova)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>STRICT</> to <link
|
||
linkend="plpgsql-statements-sql-onerow"><command>SELECT
|
||
INTO</></link> (Matt Miller)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>STRICT</> mode throws an exception if more or less
|
||
than one row is returned by the <command>SELECT</>, for
|
||
<productname>Oracle PL/SQL</> compatibility.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/Perl Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>table_name</> and <literal>table_schema</> to
|
||
trigger parameters (Adam Sjøgren)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add prepared queries (Dmitry Karasik)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>$_TD</> trigger data a global variable (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, it was lexical, which caused unexpected sharing
|
||
violations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Run PL/Perl and PL/PerlU in separate interpreters, for security
|
||
reasons (Andrew)
|
||
</para>
|
||
<para>
|
||
In consequence, they can no longer share data nor loaded modules.
|
||
Also, if Perl has not been compiled with the requisite flags to
|
||
allow multiple interpreters, only one of these languages can be used
|
||
in any given backend process.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/Python Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Named parameters are passed as ordinary variables, as well as in the
|
||
<literal>args[]</> array (Sven Suursoho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>table_name</> and <literal>table_schema</> to
|
||
trigger parameters (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow returning of composite types and result sets (Sven Suursoho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Return result-set as <literal>list</>, <literal>iterator</>,
|
||
or <literal>generator </>(Sven Suursoho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow functions to return <literal>void</> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Python 2.5 is now supported (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new command <literal>\password</> for changing role
|
||
password with client-side password encryption (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>\c</> to connect to a new host and port
|
||
number (David, Volkan YAZICI)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add tablespace display to <literal>\l+</> (Philip Yarra)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <literal>\df</> slash command to include the argument
|
||
names and modes (<literal>OUT</> or <literal>INOUT</>) of
|
||
the function (David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support binary <command>COPY</> (Andreas Pflug)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add option to run the entire session in a single transaction
|
||
(Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Use option <literal>-1</> or <literal>--single-transaction</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support for automatically retrieving <command>SELECT</>
|
||
results in batches using a cursor (Chris Mair)
|
||
</para>
|
||
|
||
<para>
|
||
This is enabled using <command>\set FETCH_COUNT
|
||
<replaceable>n</></command>. This
|
||
feature allows large result sets to be retrieved in
|
||
<application>psql</> without attempting to buffer the entire
|
||
result set in memory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make multi-line values align in the proper column
|
||
(Martijn van Oosterhout)
|
||
</para>
|
||
|
||
<para>
|
||
Field values containing newlines are now displayed in a more
|
||
readable fashion.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Save multi-line statements as a single entry, rather than
|
||
one line at a time (Sergey E. Koposov)
|
||
</para>
|
||
|
||
<para>
|
||
This makes up-arrow recall of queries easier. (This is
|
||
not available on Windows, because that platform uses the native
|
||
command-line editing present in the operating system.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make the line counter 64-bit so it can handle files with more
|
||
than two billion lines (David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Report both the returned data and the command status tag
|
||
for <command>INSERT</>/<command>UPDATE</>/<command>DELETE
|
||
RETURNING</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow complex selection of objects to be included or excluded
|
||
by <application>pg_dump</> (Greg Sabino Mullane)
|
||
</para>
|
||
|
||
<para>
|
||
<application>pg_dump</> now supports multiple <literal>-n</>
|
||
(schema) and <literal>-t</> (table) options, and adds
|
||
<literal>-N</> and <literal>-T</> options to exclude objects.
|
||
Also, the arguments of these switches can now be wild-card expressions
|
||
rather than single object names, for example
|
||
<literal>-t 'foo*'</>, and a schema can be part of
|
||
a <literal>-t</> or <literal>-T</> switch, for example
|
||
<literal>-t schema1.table1</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
|
||
<literal>--no-data-for-failed-tables</> option to suppress
|
||
loading data if table creation failed (i.e., the table already
|
||
exists) (Martin Pitt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
|
||
option to run the entire session in a single transaction
|
||
(Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Use option <literal>-1</> or <literal>--single-transaction</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="libpq"><application>libpq</></link> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="libpq-misc"><function>PQencryptPassword()</></link>
|
||
to encrypt passwords (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows passwords to be sent pre-encrypted for commands
|
||
like <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ...
|
||
PASSWORD</></link>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add function <link
|
||
linkend="libpq-threading"><function>PQisthreadsafe()</></link>
|
||
(Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This allows applications to query the thread-safety status
|
||
of the library.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="libpq-exec-main"><function>PQdescribePrepared()</></link>,
|
||
<link
|
||
linkend="libpq-exec-main"><function>PQdescribePortal()</></link>,
|
||
and related functions to return information about previously
|
||
prepared statements and open cursors (Volkan YAZICI)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="libpq-ldap"><acronym>LDAP</></link> lookups
|
||
from <link
|
||
linkend="libpq-pgservice"><filename>pg_service.conf</></link>
|
||
(Laurenz Albe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow a hostname in <link
|
||
linkend="libpq-pgpass"><filename>~/.pgpass</></link>
|
||
to match the default socket directory (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
A blank hostname continues to match any Unix-socket connection,
|
||
but this addition allows entries that are specific to one of
|
||
several postmasters on the machine.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to
|
||
put its result into a variable (Joachim Wieland)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></link>
|
||
(Joachim Wieland)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add regression tests (Joachim Wieland, Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Major source code cleanups (Joachim Wieland, Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>Windows</> Port</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</>
|
||
server (Magnus, Hiroshi Saito)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <acronym>MSVC</> support for utility commands and <link
|
||
linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi
|
||
Saito)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for Windows code pages <literal>1253</>,
|
||
<literal>1254</>, <literal>1255</>, and <literal>1257</>
|
||
(Kris Jurka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Drop privileges on startup, so that the server can be started from
|
||
an administrative account (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Stability fixes (Qingqing Zhou, Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add native semaphore implementation (Qingqing Zhou)
|
||
</para>
|
||
|
||
<para>
|
||
The previous code mimicked SysV semaphores.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link linkend="GIN"><acronym>GIN</></link> (Generalized
|
||
Inverted iNdex) index access method (Teodor, Oleg)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove R-tree indexing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Rtree has been re-implemented using <link
|
||
linkend="GiST"><acronym>GiST</></link>. Among other
|
||
differences, this means that rtree indexes now have support
|
||
for crash recovery via write-ahead logging (WAL).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce libraries needlessly linked into the backend (Martijn
|
||
van Oosterhout, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a configure flag to allow libedit to be preferred over
|
||
<acronym>GNU</> readline (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Use configure <link
|
||
linkend="configure"><literal>--with-libedit-preferred</></link>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow installation into directories containing spaces
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve ability to relocate installation directories (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <productname>Solaris x86_64</> using the
|
||
<productname>Solaris</> compiler (Pierre Girard, Theo
|
||
Schlossnagle, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>DTrace</> support (Robert Lor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>PG_VERSION_NUM</> for use by third-party
|
||
applications wanting to test the backend version in C using >
|
||
and < comparisons (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</>
|
||
(Mark Wong)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>LWLOCK_STATS</> define to report locking
|
||
activity (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Emit warnings for unknown <application>configure</> options
|
||
(Martijn van Oosterhout)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add server support for <quote>plugin</> libraries
|
||
that can be used for add-on tasks such as debugging and performance
|
||
measurement (Korry Douglas)
|
||
</para>
|
||
|
||
<para>
|
||
This consists of two features: a table of <quote>rendezvous
|
||
variables</> that allows separately-loaded shared libraries to
|
||
communicate, and a new configuration parameter <link
|
||
linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
|
||
that allows libraries to be loaded into specific sessions without
|
||
explicit cooperation from the client application. This allows
|
||
external add-ons to implement features such as a PL/PgSQL debugger.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename existing configuration parameter
|
||
<varname>preload_libraries</> to <link
|
||
linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was done for clarity in comparison to
|
||
<varname>local_preload_libraries</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new configuration parameter <link
|
||
linkend="guc-server-version-num"><varname>server_version_num</></link>
|
||
(Greg Sabino Mullane)
|
||
</para>
|
||
|
||
<para>
|
||
This is like <varname>server_version</varname>, but is an
|
||
integer, e.g. <literal>80200</>. This allows applications to
|
||
make version checks more easily.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a configuration parameter <link
|
||
linkend="guc-seq-page-cost"><varname>seq_page_cost</></link>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Re-implement the <link linkend="regress">regression test</link> script as a C program
|
||
(Magnus, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow loadable modules to allocate shared memory and
|
||
lightweight locks (Marc Munro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add automatic initialization and finalization of dynamically
|
||
loaded libraries (Ralf Engelschall, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
New <link linkend="xfunc-c-dynload">functions</link>
|
||
<function>_PG_init()</> and <function>_PG_fini()</> are
|
||
called if the library defines such symbols. Hence we no
|
||
longer need to specify an initialization function in
|
||
<varname>shared_preload_libraries</>; we can assume that
|
||
the library used the <function>_PG_init()</> convention
|
||
instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <link
|
||
linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
|
||
header block to all shared object files (Martijn van
|
||
Oosterhout)
|
||
</para>
|
||
|
||
<para>
|
||
The magic block prevents version mismatches between loadable object
|
||
files and servers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add shared library support for AIX (Laurenz Albe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <link linkend="datatype-xml"><acronym>XML</></link>
|
||
documentation section (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Major tsearch2 improvements (Oleg, Teodor)
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
multibyte encoding support, including <acronym>UTF8</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
query rewriting support
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
improved ranking functions
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
thesaurus dictionary support
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Ispell dictionaries now recognize <application>MySpell</>
|
||
format, used by <application>OpenOffice</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<acronym>GIN</> support
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add adminpack module containing <application>Pgadmin</> administration
|
||
functions (Dave)
|
||
</para>
|
||
|
||
<para>
|
||
These functions provide additional file system access
|
||
routines not present in the default <productname>PostgreSQL</>
|
||
server.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add sslinfo module (Victor Wagner)
|
||
</para>
|
||
|
||
<para>
|
||
Reports information about the current connection's <acronym>SSL</>
|
||
certificate.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add pgrowlocks module (Tatsuo)
|
||
</para>
|
||
|
||
<para>
|
||
This shows row locking information for a specified table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add hstore module (Oleg, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add isn module, replacing isbn_issn (Jeremy Kronuz)
|
||
</para>
|
||
|
||
<para>
|
||
This new implementation supports <acronym>EAN13</>, <acronym>UPC</>,
|
||
<acronym>ISBN</> (books), <acronym>ISMN</> (music), and
|
||
<acronym>ISSN</> (serials).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add index information functions to pgstattuple (ITAGAKI Takahiro,
|
||
Satoshi Nagayasu)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add pg_freespacemap module to display free space map information
|
||
(Mark Kirkwood)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
pgcrypto now has all planned functionality (Marko Kreen)
|
||
</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Include iMath library in pgcrypto to have the public-key encryption
|
||
functions always available.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Add SHA224 algorithm that was missing in OpenBSD code.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Activate builtin code for SHA224/256/384/512 hashes on older
|
||
OpenSSL to have those algorithms always available.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
New function gen_random_bytes() that returns cryptographically strong
|
||
randomness. Useful for generating encryption keys.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Remove digest_exists(), hmac_exists() and cipher_exists() functions.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improvements to cube module (Joshua Reich)
|
||
</para>
|
||
|
||
<para>
|
||
New functions are <function>cube(float[])</>,
|
||
<function>cube(float[], float[])</>, and
|
||
<function>cube_subset(cube, int4[])</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add async query capability to dblink (Kai Londenberg,
|
||
Joe Conway)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New operators for array-subset comparisons (<literal>@></>,
|
||
<literal><@</>, <literal>&&</>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Various contrib packages already had these operators for their
|
||
datatypes, but the naming wasn't consistent. We have now added
|
||
consistently named array-subset comparison operators to the core code
|
||
and all the contrib packages that have such functionality.
|
||
(The old names remain available, but are deprecated.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add uninstall scripts for all contrib packages that have install
|
||
scripts (David, Josh Drake)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-17">
|
||
<title>Release 8.1.17</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-03-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.16.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.17</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.15,
|
||
see the release notes for 8.1.15.
|
||
</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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
||
for the specified conversion function (Heikki)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
|
||
(Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
|
||
</para>
|
||
|
||
<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>
|
||
Clean up PL/pgSQL error status variables fully at block exit
|
||
(Ashesh Vashi and Dave Page)
|
||
</para>
|
||
|
||
<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>
|
||
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
||
of known timezone abbreviations (Xavier Bugaud)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-16">
|
||
<title>Release 8.1.16</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-02-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.15.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.16</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.15,
|
||
see the release notes for 8.1.15.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash in autovacuum (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
The crash occurs only after vacuuming a whole database for
|
||
anti-transaction-wraparound purposes, which means that it occurs
|
||
infrequently and is hard to track down.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of URLs in <function>headline()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of overlength headlines in <function>headline()</>
|
||
function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible Assert failure or misconversion if an encoding
|
||
conversion is created with the wrong conversion function for the
|
||
specified pair of encodings (Tom, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that the contents of a holdable cursor don't depend on the
|
||
contents of TOAST tables (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, large field values in a cursor result might be represented
|
||
as TOAST pointers, which would fail if the referenced table got dropped
|
||
before the cursor is read, or if the large value is deleted and then
|
||
vacuumed away. This cannot happen with an ordinary cursor,
|
||
but it could with a cursor that is held past its creating transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix uninitialized variables in <filename>contrib/tsearch2</>'s
|
||
<function>get_covers()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>configure</> script to properly report failure when
|
||
unable to obtain linkage information for PL/Perl (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make all documentation reference <literal>pgsql-bugs</> and/or
|
||
<literal>pgsql-hackers</> as appropriate, instead of the
|
||
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
||
mailing lists (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2009a (for
|
||
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-15">
|
||
<title>Release 8.1.15</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-11-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.14.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.15</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2. Also, if you were running a previous
|
||
8.1.X release, it is recommended to <command>REINDEX</> all GiST
|
||
indexes after the upgrade.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix GiST index corruption due to marking the wrong index entry
|
||
<quote>dead</> after a deletion (Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
This would result in index searches failing to find rows they
|
||
should have found. Corrupted indexes can be fixed with
|
||
<command>REINDEX</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix backend crash when the client encoding cannot represent a localized
|
||
error message (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We have addressed similar issues before, but it would still fail if
|
||
the <quote>character has no equivalent</> message itself couldn't
|
||
be converted. The fix is to disable localization and send the plain
|
||
ASCII error message when we detect such a situation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash when deeply nested functions are invoked from
|
||
a trigger (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
|
||
in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
|
||
list, or a <literal>RETURNING</> list (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The usual symptom of this problem is an <quote>unrecognized node type</>
|
||
error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure an error is reported when a newly-defined PL/pgSQL trigger
|
||
function is invoked as a normal function (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible collision of <structfield>relfilenode</> numbers
|
||
when moving a table to another tablespace with <command>ALTER SET
|
||
TABLESPACE</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
The command tried to re-use the existing filename, instead of
|
||
picking one that is known unused in the destination directory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect tsearch2 headline generation when single query
|
||
item matches first word of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix improper display of fractional seconds in interval values when
|
||
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
||
build (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
||
behave correctly when the passed tuple and tuple descriptor have
|
||
different numbers of columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is normal when a table has had columns added or removed,
|
||
but these two functions didn't handle it properly.
|
||
The only likely consequence is an incorrect error indication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008i (for
|
||
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-14">
|
||
<title>Release 8.1.14</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-09-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.13.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.14</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Widen local lock counters from 32 to 64 bits (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This responds to reports that the counters could overflow in
|
||
sufficiently long transactions, leading to unexpected <quote>lock is
|
||
already held</> errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add checks in executor startup to ensure that the tuples produced by an
|
||
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
||
current rowtype (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<command>ALTER COLUMN TYPE</>, followed by re-use of a previously
|
||
cached plan, could produce this type of situation. The check protects
|
||
against data corruption and/or crashes that could ensue.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
|
||
argument as a timezone abbreviation, and only try it as a full timezone
|
||
name if that fails, rather than the other way around as formerly (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The timestamp input functions have always resolved ambiguous zone names
|
||
in this order. Making <literal>AT TIME ZONE</> do so as well improves
|
||
consistency, and fixes a compatibility bug introduced in 8.1:
|
||
in ambiguous cases we now behave the same as 8.0 and before did,
|
||
since in the older versions <literal>AT TIME ZONE</> accepted
|
||
<emphasis>only</> abbreviations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix datetime input functions to correctly detect integer overflow when
|
||
running on a 64-bit platform (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of writing very long log messages to syslog (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
||
ON</> query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner bug with nested sub-select expressions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
If the outer sub-select has no direct dependency on the parent query,
|
||
but the inner one does, the outer value might not get recalculated
|
||
for new parent query rows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
||
boolean results always result in two groups, regardless of the
|
||
expressions' contents (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is very substantially more accurate than the regular <literal>GROUP
|
||
BY</> estimate for certain boolean tests like <replaceable>col</>
|
||
<literal>IS NULL</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/PgSQL to not fail when a <literal>FOR</> loop's target variable
|
||
is a record containing composite-type fields (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
|
||
about the encoding of data sent to or from Tcl (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to work with Python 2.5
|
||
</para>
|
||
|
||
<para>
|
||
This is a back-port of fixes made during the 8.2 development cycle.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
||
error reporting after failure to send a SQL command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to properly preserve postmaster
|
||
command-line arguments across a <literal>restart</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008f (for
|
||
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
||
Pakistan, Palestine, and Paraguay)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-13">
|
||
<title>Release 8.1.13</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-06-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious and one minor bug fix over 8.1.12.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.13</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Before this fix, a negative constant in a view or rule might be dumped
|
||
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
||
be <literal>(-42)::integer</> due to operator precedence rules.
|
||
Usually this would make little difference, but it could interact with
|
||
another recent patch to cause
|
||
<productname>PostgreSQL</> to reject what had been a valid
|
||
<command>SELECT DISTINCT</> view query. Since this could result in
|
||
<application>pg_dump</> output failing to reload, it is being treated
|
||
as a high-priority fix. The only released versions in which dump
|
||
output is actually incorrect are 8.3.1 and 8.2.7.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER AGGREGATE ... OWNER TO</> update
|
||
<structname>pg_shdepend</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This oversight could lead to problems if the aggregate was later
|
||
involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
|
||
operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-12">
|
||
<title>Release 8.1.12</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>never released</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.11.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.12</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
||
column is correctly checked to see if it's been initialized to all
|
||
non-nulls (Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Previous versions neglected to check this requirement at all.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
||
<quote>same</> constraint from multiple parent relations that
|
||
inherited that constraint from a common ancestor (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix conversions between ISO-8859-5 and other encodings to handle
|
||
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
||
two dots) (Sergey Burladyan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a few datatype input functions
|
||
that were allowing unused bytes in their results to contain
|
||
uninitialized, unpredictable values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failures in which two apparently identical literal
|
||
values were not seen as equal, resulting in the parser complaining
|
||
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
||
expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a corner case in regular-expression substring matching
|
||
(<literal>substring(<replaceable>string</> from
|
||
<replaceable>pattern</>)</literal>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The problem occurs when there is a match to the pattern overall but
|
||
the user has specified a parenthesized subexpression and that
|
||
subexpression hasn't got a match. An example is
|
||
<literal>substring('foo' from 'foo(bar)?')</>.
|
||
This should return NULL, since <literal>(bar)</> isn't matched, but
|
||
it was mistakenly returning the whole-pattern match instead (ie,
|
||
<literal>foo</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008c (for
|
||
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
|
||
Argentina/San_Luis, and Chile)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect result from <application>ecpg</>'s
|
||
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix core dump in <filename>contrib/xml2</>'s
|
||
<function>xpath_table()</> function when the input query returns a
|
||
NULL value (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/xml2</>'s makefile to not override
|
||
<literal>CFLAGS</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
||
4.3 (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This problem affects <quote>old style</> (V0) C functions that
|
||
return boolean. The fix is already in 8.3, but the need to
|
||
back-patch it was not realized at the time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
||
race condition (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In rare cases a session that had just executed a
|
||
<command>LISTEN</> might not get a notification, even though
|
||
one would be expected because the concurrent transaction executing
|
||
<command>NOTIFY</> was observed to commit later.
|
||
</para>
|
||
|
||
<para>
|
||
A side effect of the fix is that a transaction that has executed
|
||
a not-yet-committed <command>LISTEN</> command will not see any
|
||
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
||
should it choose to look; formerly it would have. This behavior
|
||
was never documented one way or the other, but it is possible that
|
||
some applications depend on the old behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
|
||
prepared transaction (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This was formerly allowed but trying to do it had various unpleasant
|
||
consequences, notably that the originating backend could not exit
|
||
as long as an <command>UNLISTEN</> remained uncommitted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare crash when an error occurs during a query using a hash index
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix input of datetime values for February 29 in years BC (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The former coding was mistaken about which years were leap years.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>unrecognized node type</> error in some variants of
|
||
<command>ALTER OWNER</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
||
number from command-line options (Itagaki Takahiro, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, <literal>pg_ctl start -w</> could try to contact the
|
||
postmaster on the wrong port, leading to bogus reports of startup
|
||
failure.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <option>-fwrapv</> to defend against possible misoptimization
|
||
in recent <application>gcc</> versions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to be necessary when building <productname>PostgreSQL</>
|
||
with <application>gcc</> 4.3 or later.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix display of constant expressions in <literal>ORDER BY</>
|
||
and <literal>GROUP BY</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An explictly casted constant would be shown incorrectly. This could
|
||
for example lead to corruption of a view definition during
|
||
dump and reload.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> to handle NOTICE messages correctly
|
||
during COPY OUT (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This failure has only been observed to occur when a user-defined
|
||
datatype's output routine issues a NOTICE, but there is no
|
||
guarantee it couldn't happen due to other causes.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-11">
|
||
<title>Release 8.1.11</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-01-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.10,
|
||
including fixes for significant security issues.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<para>
|
||
This is the last 8.1.X release for which the <productname>PostgreSQL</>
|
||
community will produce binary packages for <productname>Windows</>.
|
||
Windows users are encouraged to move to 8.2.X or later,
|
||
since there are Windows-specific fixes in 8.2.X that
|
||
are impractical to back-port. 8.1.X will continue to
|
||
be supported on other platforms.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.11</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent functions in indexes from executing with the privileges of
|
||
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Functions used in index expressions and partial-index
|
||
predicates are evaluated whenever a new table entry is made. It has
|
||
long been understood that this poses a risk of trojan-horse code
|
||
execution if one modifies a table owned by an untrustworthy user.
|
||
(Note that triggers, defaults, check constraints, etc. pose the
|
||
same type of risk.) But functions in indexes pose extra danger
|
||
because they will be executed by routine maintenance operations
|
||
such as <command>VACUUM FULL</>, which are commonly performed
|
||
automatically under a superuser account. For example, a nefarious user
|
||
can execute code with superuser privileges by setting up a
|
||
trojan-horse index definition and waiting for the next routine vacuum.
|
||
The fix arranges for standard maintenance operations
|
||
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
||
and <command>CLUSTER</>) to execute as the table owner rather than
|
||
the calling user, using the same privilege-switching mechanism already
|
||
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
||
this security measure, execution of <command>SET SESSION
|
||
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
||
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
||
</para>
|
||
|
||
<para>
|
||
Suitably crafted regular-expression patterns could cause crashes,
|
||
infinite or near-infinite looping, and/or massive memory consumption,
|
||
all of which pose denial-of-service hazards for applications that
|
||
accept regex search patterns from untrustworthy sources.
|
||
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
|
||
<para>
|
||
The fix that appeared for this in 8.1.10 was incomplete, as it plugged
|
||
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
||
CVE-2007-3278)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2007k
|
||
(in particular, recent Argentina changes) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve planner's handling of LIKE/regex estimation in non-C locales
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
||
(SELECT ...)</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Preserve the tablespace of indexes that are
|
||
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make archive recovery always start a new WAL timeline, rather than only
|
||
when a recovery stop time was used (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids a corner-case risk of trying to overwrite an existing
|
||
archived copy of the last WAL segment, and seems simpler and cleaner
|
||
than the original definition.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
|
||
when the table is too small for it to be useful (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in <function>translate()</> when using a multibyte
|
||
database encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix overflow in <literal>extract(epoch from interval)</> for intervals
|
||
exceeding 68 years (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Perl to not fail when a UTF-8 regular expression is used
|
||
in a trusted function (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
|
||
as <literal>int</> rather than <literal>char</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
While this could theoretically happen anywhere, no standard build of
|
||
Perl did things this way ... until <productname>Mac OS X</> 10.5.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to not crash on long exception messages (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_dump</> to correctly handle inheritance child tables
|
||
that have default expressions different from their parent's (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers
|
||
to a file that is not a plain file (Martin Pitt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>ecpg</> parser fixes (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/pgcrypto</> defend against
|
||
<application>OpenSSL</> libraries that fail on keys longer than 128
|
||
bits; which is the case at least on some Solaris versions (Marko Kreen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
||
NULL rowid as a category in its own right, rather than crashing (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
||
escape backslashes correctly (Teodor, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a specific version of <productname>Autoconf</> to be used
|
||
when re-generating the <command>configure</> script (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This affects developers and packagers only. The change was made
|
||
to prevent accidental use of untested combinations of
|
||
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
||
You can remove the version check if you really want to use a
|
||
different <productname>Autoconf</> version, but it's
|
||
your responsibility whether the result works or not.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-10">
|
||
<title>Release 8.1.10</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-09-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.9.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.10</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent index corruption when a transaction inserts rows and
|
||
then aborts close to the end of a concurrent <command>VACUUM</>
|
||
on the same table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the <type>interval</> data type to accept input consisting only of
|
||
milliseconds or microseconds (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Speed up rtree index insertion (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix excessive logging of <acronym>SSL</> error messages (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix logging so that log messages are never interleaved when using
|
||
the syslogger process (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash when <varname>log_min_error_statement</> logging runs out
|
||
of memory (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect handling of some foreign-key corner cases (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
|
||
due to attempting to process temporary tables of other sessions (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Windows socket improvements (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
|
||
because of possible encoding mismatches (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-9">
|
||
<title>Release 8.1.9</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-04-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.8,
|
||
including a security fix.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.9</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support explicit placement of the temporary-table schema within
|
||
<varname>search_path</>, and disable searching it for functions
|
||
and operators (Tom)
|
||
</para>
|
||
<para>
|
||
This is needed to allow a security-definer function to set a
|
||
truly secure value of <varname>search_path</>. Without it,
|
||
an unprivileged SQL user can use temporary objects to execute code
|
||
with the privileges of the security-definer function (CVE-2007-2138).
|
||
See <command>CREATE FUNCTION</> for more information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require <command>COMMIT PREPARED</> to be executed in the same
|
||
database as the transaction was prepared in (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
||
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Planner fixes, including improving outer join and bitmap scan
|
||
selection logic (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-8">
|
||
<title>Release 8.1.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one fix from 8.1.7.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove overly-restrictive check for type length in constraints and
|
||
functional indexes(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-7">
|
||
<title>Release 8.1.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.6, including
|
||
a security fix.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove security vulnerabilities that allowed connected users
|
||
to read backend memory (Tom)
|
||
</para>
|
||
<para>
|
||
The vulnerabilities involve suppressing the normal check that a SQL
|
||
function returns the data type it's declared to, and changing the
|
||
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
|
||
errors can easily be exploited to cause a backend crash, and in
|
||
principle might be used to read database content that the user
|
||
should not be able to access.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare bug wherein btree index page splits could fail
|
||
due to choosing an infeasible split point (Heikki Linnakangas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>VACUUM</> performance for databases with many tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix autovacuum to avoid leaving non-permanent transaction IDs in
|
||
non-connectable databases (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This bug affects the 8.1 branch only.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten security of multi-byte character processing for UTF8 sequences
|
||
over three bytes long (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bogus <quote>permission denied</> failures occurring on Windows
|
||
due to attempts to fsync already-deleted files (Magnus, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crashes when an already-in-use PL/pgSQL function is
|
||
updated (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-6">
|
||
<title>Release 8.1.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-01-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.5.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.6</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of <function>getaddrinfo()</> on AIX (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a problem with starting the statistics collector,
|
||
among other things.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_restore</> to handle a tar-format backup
|
||
that contains large objects (blobs) with comments (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>failed to re-find parent key</> errors in
|
||
<command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean out <filename>pg_internal.init</> cache files during server
|
||
restart (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids a hazard that the cache files might contain stale
|
||
data after PITR recovery.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix race condition for truncation of a large relation across a
|
||
gigabyte boundary by <command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug causing needless deadlock errors on row-level locks (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible deadlock in Windows signal handling (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix error when constructing an <literal>ARRAY[]</> made up of multiple
|
||
empty elements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix ecpg memory leak during connection (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix for Darwin (OS X) compilation (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>to_number()</> and <function>to_char(numeric)</>
|
||
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
||
new <application>initdb</> installs (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is because <varname>lc_numeric</> can potentially
|
||
change the output of these functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve index usage of regular expressions that use parentheses (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <application>psql</> <literal>\d</> performance also.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update timezone database
|
||
</para>
|
||
|
||
<para>
|
||
This affects Australian and Canadian daylight-savings rules in
|
||
particular.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-5">
|
||
<title>Release 8.1.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-10-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.4.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.5</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Disallow aggregate functions in <command>UPDATE</>
|
||
commands, except within sub-SELECTs (Tom)</para>
|
||
<para>The behavior of such an aggregate was unpredictable, and in 8.1.X
|
||
could cause a crash, so it has been disabled. The SQL standard does not allow
|
||
this either.</para></listitem>
|
||
<listitem><para>Fix core dump when an untyped literal is taken as
|
||
ANYARRAY</para></listitem>
|
||
<listitem><para>Fix core dump in duration logging for extended query protocol
|
||
when a <command>COMMIT</> or <command>ROLLBACK</> is
|
||
executed</para></listitem>
|
||
<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
|
||
function returning multiple rows (Tom)</para></listitem>
|
||
<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
|
||
<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
|
||
<listitem><para>Fix <function>string_to_array()</> to handle overlapping
|
||
matches for the separator string</para>
|
||
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>to_timestamp()</> for
|
||
<literal>AM</>/<literal>PM</> formats (Bruce)</para></listitem>
|
||
<listitem><para>Fix autovacuum's calculation that decides whether
|
||
<command>ANALYZE</> is needed (Alvaro)</para></listitem>
|
||
<listitem><para>Fix corner cases in pattern matching for
|
||
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
||
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
||
(Teodor)</para></listitem>
|
||
<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
|
||
Wieland)</para></listitem>
|
||
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
||
<listitem><para>Minor fixes in /contrib/dblink and /contrib/tsearch2</para>
|
||
</listitem>
|
||
<listitem><para>Efficiency improvements in hash tables and bitmap index scans
|
||
(Tom)</para></listitem>
|
||
<listitem><para>Fix instability of statistics collection on Windows (Tom, Andrew)</para></listitem>
|
||
<listitem><para>Fix <varname>statement_timeout</> to use the proper
|
||
units on Win32 (Bruce)</para>
|
||
<para>In previous Win32 8.1.X versions, the delay was off by a factor of
|
||
100.</para></listitem>
|
||
<listitem><para>Fixes for <acronym>MSVC</> and <productname>Borland C++</>
|
||
compilers (Hiroshi Saito)</para></listitem>
|
||
<listitem><para>Fixes for <systemitem class="osname">AIX</> and
|
||
<productname>Intel</> compilers (Tom)</para></listitem>
|
||
<listitem><para>Fix rare bug in continuous archiving (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-4">
|
||
<title>Release 8.1.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-05-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.3,
|
||
including patches for extremely serious security issues.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.4</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
|
||
<para>
|
||
Full security against the SQL-injection attacks described in
|
||
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
||
code. If you have applications that embed untrustworthy strings
|
||
into SQL commands, you should examine them as soon as possible to
|
||
ensure that they are using recommended escaping techniques. In
|
||
most cases, applications should be using subroutines provided by
|
||
libraries or drivers (such as <application>libpq</>'s
|
||
<function>PQescapeStringConn()</>) to perform string escaping,
|
||
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
||
characters in all cases (Tatsuo, Tom)</para>
|
||
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
||
some time, the checks are now applied uniformly to all encodings and all
|
||
textual input, and are now always errors not merely warnings. This change
|
||
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
||
<para>As a server-side defense against SQL-injection attacks of the type
|
||
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
||
<literal>\'</> as a representation of ASCII single quote in SQL string
|
||
literals. By default, <literal>\'</> is rejected only when
|
||
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
||
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
||
A new configuration parameter <varname>backslash_quote</> is available to
|
||
adjust this behavior when needed. Note that full security against
|
||
CVE-2006-2314 might require client-side changes; the purpose of
|
||
<varname>backslash_quote</> is in part to make it obvious that insecure
|
||
clients are insecure.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
||
aware of encoding considerations and
|
||
<varname>standard_conforming_strings</></para>
|
||
<para>This fixes <application>libpq</>-using applications for the security
|
||
issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
|
||
them against the planned changeover to SQL-standard string literal syntax.
|
||
Applications that use multiple <productname>PostgreSQL</> connections
|
||
concurrently should migrate to <function>PQescapeStringConn()</> and
|
||
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
||
for the settings in use in each database connection. Applications that
|
||
do string escaping <quote>by hand</> should be modified to rely on library
|
||
routines instead.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix weak key selection in pgcrypto (Marko Kreen)</para>
|
||
<para>Errors in fortuna PRNG reseeding logic could cause a predictable
|
||
session key to be selected by <function>pgp_sym_encrypt()</> in some cases.
|
||
This only affects non-OpenSSL-using builds.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
||
<para><function>win1251_to_iso</>, <function>win866_to_iso</>,
|
||
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
||
<function>mic_to_euc_tw</> were all broken to varying
|
||
extents.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
||
(Bruce, Jan)</para></listitem>
|
||
|
||
<listitem><para>Make autovacuum visible in <structname>pg_stat_activity</>
|
||
(Alvaro)</para></listitem>
|
||
|
||
<listitem><para>Disable <literal>full_page_writes</> (Tom)</para>
|
||
<para>In certain cases, having <literal>full_page_writes</> off would cause
|
||
crash recovery to fail. A proper fix will appear in 8.2; for now it's just
|
||
disabled.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Various planner fixes, particularly for bitmap index scans and
|
||
MIN/MAX optimization (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix incorrect optimization in merge join (Tom)</para>
|
||
<para>Outer joins could sometimes emit multiple copies of unmatched rows.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix crash from using and modifying a plpgsql function in the
|
||
same transaction</para></listitem>
|
||
|
||
<listitem><para>Fix WAL replay for case where a B-Tree index has been
|
||
truncated</para></listitem>
|
||
|
||
<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
|
||
<literal>|</> (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
|
||
create tables in the default tablespace, not the base directory (Kris
|
||
Jurka)</para></listitem>
|
||
|
||
<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
|
||
Fuhr)</para></listitem>
|
||
|
||
<listitem><para>Improve qsort performance (Dann Corbit)</para>
|
||
<para>Currently this code is only used on Solaris.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix for OS/X Bonjour on x86 systems (Ashley Clark)</para></listitem>
|
||
|
||
<listitem><para>Fix various minor memory leaks</para></listitem>
|
||
|
||
<listitem><para>Fix problem with password prompting on some Win32 systems
|
||
(Robert Kinberg)</para></listitem>
|
||
|
||
<listitem><para>Improve <application>pg_dump</>'s handling of default values
|
||
for domains</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pg_dumpall</> to handle identically-named
|
||
users and groups reasonably (only possible when dumping from a pre-8.1 server)
|
||
(Tom)</para>
|
||
<para>The user and group will be merged into a single role with
|
||
<literal>LOGIN</> permission. Formerly the merged role wouldn't have
|
||
<literal>LOGIN</> permission, making it unusable as a user.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pg_restore</> <literal>-n</> to work as
|
||
documented (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-3">
|
||
<title>Release 8.1.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-02-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.2,
|
||
including one very serious security issue.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.3</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, if you are upgrading from a version earlier than 8.1.2,
|
||
see the release notes for 8.1.2.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix bug that allowed any logged-in user to <command>SET
|
||
ROLE</> to any other database user id (CVE-2006-0553)</para>
|
||
<para>Due to inadequate validity checking, a user could exploit the special
|
||
case that <command>SET ROLE</> normally uses to restore the previous role
|
||
setting after an error. This allowed ordinary users to acquire superuser
|
||
status, for example.
|
||
The escalation-of-privilege risk exists only in 8.1.0-8.1.2.
|
||
However, in all releases back to 7.3 there is a related bug in <command>SET
|
||
SESSION AUTHORIZATION</> that allows unprivileged users to crash the server,
|
||
if it has been compiled with Asserts enabled (which is not the default).
|
||
Thanks to Akio Ishida for reporting this problem.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug with row visibility logic in self-inserted
|
||
rows (Tom)</para>
|
||
<para>Under rare circumstances a row inserted by the current command
|
||
could be seen as already valid, when it should not be. Repairs bug
|
||
created in 8.0.4, 7.4.9, and 7.3.11 releases.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix race condition that could lead to <quote>file already
|
||
exists</> errors during pg_clog and pg_subtrans file creation
|
||
(Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
|
||
message arrives at just the wrong time (Tom)</para></listitem>
|
||
|
||
<listitem><para>Properly check <literal>DOMAIN</> constraints for
|
||
<literal>UNKNOWN</> parameters in prepared statements
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
|
||
<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
|
||
constraints in the proper order (Nakano Yoshihisa)</para></listitem>
|
||
|
||
<listitem><para>Fixes to allow restoring dumps that have cross-schema
|
||
references to custom operators or operator classes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Allow <application>pg_restore</> to continue properly after a
|
||
<command>COPY</> failure; formerly it tried to treat the remaining
|
||
<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
|
||
when the data directory is not specified (Magnus)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>libpq</> <function>PQprint</> HTML tags
|
||
(Christoph Zwerschke)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Allow <literal>SETOF</> and <literal>%TYPE</> to be used
|
||
together in function result type declarations</para></listitem>
|
||
|
||
<listitem><para>Recover properly if error occurs during argument passing
|
||
in <application>PL/python</> (Neil)</para></listitem>
|
||
|
||
<listitem><para>Fix memory leak in <function>plperl_return_next</>
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>PL/perl</>'s handling of locales on
|
||
Win32 to match the backend (Andrew)</para></listitem>
|
||
|
||
<listitem><para>Various optimizer fixes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix crash when <literal>log_min_messages</> is set to
|
||
<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
|
||
(Bruce)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pgxs</> <literal>-L</> library path
|
||
specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
|
||
|
||
<listitem><para>Check that SID is enabled while checking for Win32 admin
|
||
privileges (Magnus)</para></listitem>
|
||
|
||
<listitem><para>Properly reject out-of-range date inputs (Kris
|
||
Jurka)</para></listitem>
|
||
|
||
<listitem><para>Portability fix for testing presence of <function>finite</>
|
||
and <function>isinf</> during configure (Tom)</para></listitem>
|
||
|
||
<listitem><para>Improve speed of <command>COPY IN</> via libpq, by
|
||
avoiding a kernel call per data line (Alon Goldshuv)</para></listitem>
|
||
|
||
<listitem><para>Improve speed of <filename>/contrib/tsearch2</> index
|
||
creation (Tom)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-2">
|
||
<title>Release 8.1.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-01-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.1.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.2</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
However, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the locale or
|
||
<application>plperl</> issues described below.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix Windows code so that postmaster will continue rather
|
||
than exit if there is no more room in ShmemBackendArray (Magnus)</para>
|
||
<para>The previous behavior could lead to a denial-of-service situation if too
|
||
many connection requests arrive close together. This applies
|
||
<emphasis>only</> to the Windows port.</para></listitem>
|
||
|
||
<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
|
||
to return an already-used page as new, potentially causing loss of
|
||
recently-committed data (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix for protocol-level Describe messages issued
|
||
outside a transaction or in a failed transaction (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix character string comparison for locales that consider
|
||
different character combinations as equal, such as Hungarian (Tom)</para>
|
||
<para>This might require <command>REINDEX</> to fix existing indexes on
|
||
textual columns.</para></listitem>
|
||
|
||
<listitem><para>Set locale environment variables during postmaster startup
|
||
to ensure that <application>plperl</> won't change the locale later</para>
|
||
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
||
started with environment variables specifying a different locale than what
|
||
<application>initdb</> had been told. Under these conditions, any use of
|
||
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
||
<command>REINDEX</> to fix existing indexes on
|
||
textual columns if this has happened to you.</para></listitem>
|
||
|
||
<listitem><para>Allow more flexible relocation of installation
|
||
directories (Tom)</para>
|
||
<para>Previous releases supported relocation only if all installation
|
||
directory paths were the same except for the last component.</para></listitem>
|
||
|
||
<listitem><para>Prevent crashes caused by the use of
|
||
<literal>ISO-8859-5</> and <literal>ISO-8859-9</> encodings
|
||
(Tatsuo)</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
||
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug where COPY CSV mode considered any
|
||
<literal>\.</> to terminate the copy data</para> <para>The new code
|
||
requires <literal>\.</> to appear alone on a line, as per
|
||
documentation.</para></listitem>
|
||
|
||
<listitem><para>Make COPY CSV mode quote a literal data value of
|
||
<literal>\.</> to ensure it cannot be interpreted as the
|
||
end-of-data marker (Bruce)</para></listitem>
|
||
|
||
<listitem><para>Various fixes for functions returning <literal>RECORD</>s
|
||
(Tom) </para></listitem>
|
||
|
||
<listitem><para>Fix processing of <filename>postgresql.conf</> so a
|
||
final line with no newline is processed properly (Tom)
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
||
which caused it not to use all available salt space for MD5 and
|
||
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
||
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
||
|
||
<listitem><para>Fix autovacuum crash when processing expression indexes
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
||
rather than crashing, when the number of columns specified is different from
|
||
what's actually returned by the query (Joe)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1-1">
|
||
<title>Release 8.1.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-12-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.1.0.
|
||
For information about new features in the 8.1 major release, see
|
||
<xref linkend="release-8-1">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1.1</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.1.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix incorrect optimizations of outer-join conditions
|
||
(Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix problems with wrong reported column names in cases
|
||
involving sub-selects flattened by the optimizer (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix update failures in scenarios involving CHECK constraints,
|
||
toasted columns, <emphasis>and</> indexes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix bgwriter problems after recovering from errors
|
||
(Tom)</para>
|
||
<para>
|
||
The background writer was found to leak buffer pins after write errors.
|
||
While not fatal in itself, this might lead to mysterious blockages of
|
||
later VACUUM commands.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Prevent failure if client sends Bind protocol message
|
||
when current transaction is already aborted</para></listitem>
|
||
|
||
<listitem><para><filename>/contrib/tsearch2</> and <filename>/contrib/ltree</>
|
||
fixes (Teodor)</para></listitem>
|
||
|
||
<listitem><para>Fix problems with translated error messages in
|
||
languages that require word reordering, such as Turkish; also problems with
|
||
unexpected truncation of output strings and wrong display of the smallest
|
||
possible bigint value (Andrew, Tom)</para>
|
||
<para>
|
||
These problems only appeared on platforms that were using our
|
||
<filename>port/snprintf.c</> code, which includes BSD variants if
|
||
<literal>--enable-nls</> was given, and perhaps others. In addition,
|
||
a different form of the translated-error-message problem could appear
|
||
on Windows depending on which version of <filename>libintl</> was used.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Re-allow <literal>AM</>/<literal>PM</>, <literal>HH</>,
|
||
<literal>HH12</>, and <literal>D</> format specifiers for
|
||
<function>to_char(time)</> and <function>to_char(interval)</>.
|
||
(<function>to_char(interval)</> should probably use
|
||
<literal>HH24</>.) (Bruce)</para></listitem>
|
||
|
||
<listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi
|
||
Saito)</para></listitem>
|
||
|
||
<listitem><para>Optimizer improvements (Tom)</para></listitem>
|
||
|
||
<listitem><para>Retry file reads and writes after Windows
|
||
NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
|
||
|
||
<listitem><para>Prevent <application>autovacuum</> from crashing during
|
||
ANALYZE of expression index (Alvaro)</para></listitem>
|
||
|
||
<listitem><para>Fix problems with ON COMMIT DELETE ROWS temp
|
||
tables</para></listitem>
|
||
|
||
<listitem><para>Fix problems when a trigger alters the output of a SELECT
|
||
DISTINCT query</para></listitem>
|
||
|
||
<listitem><para>Add 8.1.0 release note item on how to migrate invalid
|
||
<literal>UTF-8</> byte sequences (Paul Lindner)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-1">
|
||
<title>Release 8.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-11-08</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Improve concurrent access to the shared buffer cache (Tom)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Access to the shared buffer cache was identified as a
|
||
significant scalability problem, particularly on multi-CPU
|
||
systems. In this release, the way that locking is done in the
|
||
buffer manager has been overhauled to reduce lock contention
|
||
and improve scalability. The buffer manager has also been
|
||
changed to use a <quote>clock sweep</quote> replacement
|
||
policy.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Allow index scans to use an intermediate in-memory bitmap (Tom)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, only a single index could be used to do
|
||
lookups on a table. With this feature, if a query has
|
||
<command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is
|
||
no multicolumn index on <literal>col1</> and <literal>col2</>,
|
||
but there is an index on <literal>col1</> and another on
|
||
<literal>col2</>, it is possible to search both indexes and
|
||
combine the results in memory, then do heap fetches for only
|
||
the rows matching both the <literal>col1</> and
|
||
<literal>col2</> restrictions. This is very useful in
|
||
environments that have a lot of unstructured queries where it
|
||
is impossible to create indexes that match all possible access
|
||
conditions. Bitmap scans are useful even with a single index,
|
||
as they reduce the amount of random access needed; a bitmap
|
||
index scan is efficient for retrieving fairly large fractions
|
||
of the complete table, whereas plain index scans are not.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Two-phase commit allows transactions to be "prepared" on several
|
||
computers, and once all computers have successfully prepared
|
||
their transactions (none failed), all transactions can be
|
||
committed. Even if a machine crashes after a prepare, the
|
||
prepared transaction can be committed after the machine is
|
||
restarted. New syntax includes <command>PREPARE TRANSACTION</> and
|
||
<command>COMMIT/ROLLBACK PREPARED</>. A new system view
|
||
<literal>pg_prepared_xacts</> has also been added.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Create a new role system that replaces users and groups
|
||
(Stephen Frost)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Roles are a combination of users and groups. Like users, they
|
||
can have login capability, and like groups, a role can have
|
||
other roles as members. Roles basically remove the distinction
|
||
between users and groups. For example, a role can:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have login capability (optionally)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Own objects
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Hold access permissions for database objects
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Inherit permissions from other roles it is a member of
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
<para>
|
||
Once a user logs into a role, she obtains capabilities of
|
||
the login role plus any inherited roles, and can use
|
||
<command>SET ROLE</> to switch to other roles she is a member of.
|
||
This feature is a generalization of the SQL standard's concept of
|
||
roles.
|
||
This change also replaces <structname>pg_shadow</> and
|
||
<structname>pg_group</> by new role-capable catalogs
|
||
<structname>pg_authid</> and <structname>pg_auth_members</>. The old
|
||
tables are redefined as read-only views on the new role tables.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Automatically use indexes for <function>MIN()</> and
|
||
<function>MAX()</> (Tom)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, the only way to use an index for
|
||
<function>MIN()</> or <function>MAX()</> was to rewrite the
|
||
query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
|
||
Index usage now happens automatically.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Move <filename>/contrib/pg_autovacuum</> into the main server
|
||
(Alvaro)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Integrating autovacuum into the server allows it to be
|
||
automatically started and stopped in sync with the database
|
||
server, and allows autovacuum to be configured from
|
||
<filename>postgresql.conf</>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Add shared row level locks using <command>SELECT ... FOR SHARE</>
|
||
(Alvaro)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
While <productname>PostgreSQL</productname>'s MVCC locking
|
||
allows <command>SELECT</> to never be blocked by writers and
|
||
therefore does not need shared row locks for typical operations,
|
||
shared locks are useful for applications that require shared row
|
||
locking. In particular this reduces the locking requirements
|
||
imposed by referential integrity checks.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Add dependencies on shared objects, specifically roles
|
||
(Alvaro)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
This extension of the dependency mechanism prevents roles from
|
||
being dropped while there are still database objects they own.
|
||
Formerly it was possible to accidentally <quote>orphan</> objects by
|
||
deleting their owner. While this could be recovered from, it
|
||
was messy and unpleasant.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Improve performance for partitioned tables (Simon)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The new <varname>constraint_exclusion</varname> configuration
|
||
parameter avoids lookups on child tables where constraints indicate
|
||
that no matching rows exist in the child table.
|
||
</para>
|
||
<para>
|
||
This allows for a basic type of table partitioning. If child tables
|
||
store separate key ranges and this is enforced using appropriate
|
||
<command>CHECK</> constraints, the optimizer will skip child
|
||
table accesses when the constraint guarantees no matching rows
|
||
exist in the child table.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.1</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application> is required
|
||
for those wishing to migrate data from any previous release.
|
||
</para>
|
||
|
||
<para>
|
||
The 8.0 release announced that the <function>to_char()</> function
|
||
for intervals would be removed in 8.1. However, since no better API
|
||
has been suggested, <function>to_char(interval)</> has been enhanced in
|
||
8.1 and will remain in the server.
|
||
</para>
|
||
|
||
<para>
|
||
Observe the following incompatibilities:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>add_missing_from</> is now false by default (Neil)
|
||
</para>
|
||
<para>
|
||
By default, we now generate an error if a table is used in a query
|
||
without a <literal>FROM</> reference. The old behavior is still
|
||
available, but the parameter must be set to 'true' to obtain it.
|
||
</para>
|
||
|
||
<para>
|
||
It might be necessary to set <varname>add_missing_from</> to true
|
||
in order to load an existing dump file, if the dump contains any
|
||
views or rules created using the implicit-<literal>FROM</> syntax.
|
||
This should be a one-time annoyance, because
|
||
<productname>PostgreSQL</productname> 8.1 will convert
|
||
such views and rules to standard explicit-<literal>FROM</> syntax.
|
||
Subsequent dumps will therefore not have the problem.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Cause input of a zero-length string (<literal>''</literal>) for
|
||
<type>float4</type>/<type>float8</type>/<type>oid</type>
|
||
to throw an error, rather than treating it as a zero (Neil)
|
||
</para>
|
||
<para>
|
||
This change is consistent with the current handling of
|
||
zero-length strings for integers. The schedule for this change
|
||
was announced in 8.0.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>default_with_oids</> is now false by default (Neil)
|
||
</para>
|
||
<para>
|
||
With this option set to false, user-created tables no longer
|
||
have an OID column unless <command>WITH OIDS</> is specified in
|
||
<command>CREATE TABLE</>. Though OIDs have existed in all
|
||
releases of <productname>PostgreSQL</>, their use is limited
|
||
because they are only four bytes long and the counter is shared
|
||
across all installed databases. The preferred way of uniquely
|
||
identifying rows is via sequences and the <type>SERIAL</> type,
|
||
which have been supported since <productname>PostgreSQL</> 6.4.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>E''</> syntax so eventually ordinary strings can
|
||
treat backslashes literally (Bruce)
|
||
</para>
|
||
<para>
|
||
Currently <productname>PostgreSQL</productname> processes a
|
||
backslash in a string literal as introducing a special escape sequence,
|
||
e.g. <literal>\n</> or <literal>\010</>.
|
||
While this allows easy entry of special values, it is
|
||
nonstandard and makes porting of applications from other
|
||
databases more difficult. For this reason, the
|
||
<productname>PostgreSQL</productname> project is planning to
|
||
remove the special meaning of backslashes in strings. For
|
||
backward compatibility and for users who want special backslash
|
||
processing, a new string syntax has been created. This new string
|
||
syntax is formed by writing an <literal>E</> immediately preceding the
|
||
single quote that starts the string, e.g. <literal>E'hi\n'</>. While
|
||
this release does not change the handling of backslashes in strings, it
|
||
does add new configuration parameters to help users migrate applications
|
||
for future releases:
|
||
</para>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>standard_conforming_strings</> — does this release
|
||
treat backslashes literally in ordinary strings?
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>escape_string_warning</> — warn about backslashes in
|
||
ordinary (non-E) strings
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
The <varname>standard_conforming_strings</> value is read-only.
|
||
Applications can retrieve the value to know how backslashes are
|
||
processed. (Presence of the parameter can also be taken as an
|
||
indication that <literal>E''</> string syntax is supported.)
|
||
In a future release, <varname>standard_conforming_strings</>
|
||
will be true, meaning backslashes will be treated literally in
|
||
non-E strings. To prepare for this change, use <literal>E''</>
|
||
strings in places that need special backslash processing, and
|
||
turn on <varname>escape_string_warning</> to find additional
|
||
strings that need to be converted to use <literal>E''</>.
|
||
Also, use two single-quotes (<literal>''</>) to embed a literal
|
||
single-quote in a string, rather than the
|
||
<productname>PostgreSQL</productname>-supported syntax of
|
||
backslash single-quote (<literal>\'</>). The former is
|
||
standards-conforming and does not require the use of the
|
||
<literal>E''</> string syntax. You can also use the
|
||
<literal>$$</> string syntax, which does not treat backslashes
|
||
specially.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>REINDEX DATABASE</> reindex all indexes in the
|
||
database (Tom)
|
||
</para>
|
||
<para>
|
||
Formerly, <command>REINDEX DATABASE</> reindexed only
|
||
system tables. This new behavior seems more intuitive. A new
|
||
command <command>REINDEX SYSTEM</> provides the old functionality
|
||
of reindexing just the system tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Read-only large object descriptors now obey MVCC snapshot semantics
|
||
</para>
|
||
<para>
|
||
When a large object is opened with <literal>INV_READ</> (and not
|
||
<literal>INV_WRITE</>), the data read from the descriptor will now
|
||
reflect a <quote>snapshot</> of the large object's state at the
|
||
time of the transaction snapshot in use by the query that called
|
||
<function>lo_open()</>. To obtain the old behavior of always
|
||
returning the latest committed data, include <literal>INV_WRITE</>
|
||
in the mode flags for <function>lo_open()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add proper dependencies for arguments of sequence functions (Tom)
|
||
</para>
|
||
<para>
|
||
In previous releases, sequence names passed to <function>nextval()</>,
|
||
<function>currval()</>, and <function>setval()</> were stored as
|
||
simple text strings, meaning that renaming or dropping a
|
||
sequence used in a <literal>DEFAULT</> clause made the clause
|
||
invalid. This release stores all newly-created sequence function
|
||
arguments as internal OIDs, allowing them to track sequence
|
||
renaming, and adding dependency information that prevents
|
||
improper sequence removal. It also makes such <literal>DEFAULT</>
|
||
clauses immune to schema renaming and search path changes.
|
||
</para>
|
||
<para>
|
||
Some applications might rely on the old behavior of
|
||
run-time lookup for sequence names. This can still be done by
|
||
explicitly casting the argument to <type>text</>, for example
|
||
<literal>nextval('myseq'::text)</>.
|
||
</para>
|
||
<para>
|
||
Pre-8.1 database dumps loaded into 8.1 will use the old text-based
|
||
representation and therefore will not have the features of
|
||
OID-stored arguments. However, it is possible to update a
|
||
database containing text-based <literal>DEFAULT</> clauses.
|
||
First, save this query into a file, such as <filename>fixseq.sql</>:
|
||
<programlisting>
|
||
SELECT 'ALTER TABLE ' ||
|
||
pg_catalog.quote_ident(n.nspname) || '.' ||
|
||
pg_catalog.quote_ident(c.relname) ||
|
||
' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) ||
|
||
' SET DEFAULT ' ||
|
||
regexp_replace(d.adsrc,
|
||
$$val\(\(('[^']*')::text\)::regclass$$,
|
||
$$val(\1$$,
|
||
'g') ||
|
||
';'
|
||
FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d
|
||
WHERE n.oid = c.relnamespace AND
|
||
c.oid = a.attrelid AND
|
||
a.attrelid = d.adrelid AND
|
||
a.attnum = d.adnum AND
|
||
d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$;
|
||
</programlisting>
|
||
Next, run the query against a database to find what
|
||
adjustments are required, like this for database <literal>db1</>:
|
||
<programlisting>
|
||
psql -t -f fixseq.sql db1
|
||
</programlisting>
|
||
This will show the <command>ALTER TABLE</> commands needed to
|
||
convert the database to the newer OID-based representation.
|
||
If the commands look reasonable, run this to update the database:
|
||
<programlisting>
|
||
psql -t -f fixseq.sql db1 | psql -e db1
|
||
</programlisting>
|
||
This process must be repeated in each database to be updated.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <application>psql</application>, treat unquoted
|
||
<literal>\{digit}+</> sequences as octal (Bruce)
|
||
</para>
|
||
<para>
|
||
In previous releases, <literal>\{digit}+</> sequences were
|
||
treated as decimal, and only <literal>\0{digit}+</> were treated
|
||
as octal. This change was made for consistency.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove grammar productions for prefix and postfix <literal>%</>
|
||
and <literal>^</> operators
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
These have never been documented and complicated the use of the
|
||
modulus operator (<literal>%</>) with negative numbers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>&<</> and <literal>&></> for polygons
|
||
consistent with the box "over" operators (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>CREATE LANGUAGE</> can ignore the provided arguments
|
||
in favor of information from <structname>pg_pltemplate</>
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
A new system catalog <structname>pg_pltemplate</> has been defined
|
||
to carry information about the preferred definitions of procedural
|
||
languages (such as whether they have validator functions). When
|
||
an entry exists in this catalog for the language being created,
|
||
<command>CREATE LANGUAGE</> will ignore all its parameters except the
|
||
language name and instead use the catalog information. This measure
|
||
was taken because of increasing problems with obsolete language
|
||
definitions being loaded by old dump files. As of 8.1,
|
||
<application>pg_dump</> will dump procedural language definitions as
|
||
just <command>CREATE LANGUAGE <replaceable>name</></command>, relying
|
||
on a template entry to exist at load time. We expect this will be a
|
||
more future-proof representation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_cancel_backend(int)</function> return a
|
||
<type>boolean</type> rather than an <type>integer</type> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Some users are having problems loading UTF-8 data into 8.1.X.
|
||
This is because previous versions allowed invalid UTF-8 byte
|
||
sequences to be entered into the database, and this release
|
||
properly accepts only valid UTF-8 sequences. One way to correct a
|
||
dumpfile is to run the command <command>iconv -c -f UTF-8 -t
|
||
UTF-8 -o cleanfile.sql dumpfile.sql</>. The <literal>-c</> option
|
||
removes invalid character sequences. A diff of the two files will
|
||
show the sequences that are invalid. <command>iconv</> reads the
|
||
entire input file into memory so it might be necessary to use
|
||
<application>split</> to break up the dump into multiple smaller
|
||
files for processing.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Additional Changes</title>
|
||
|
||
<para>
|
||
Below you will find a detailed account of the additional changes
|
||
between <productname>PostgreSQL</productname> 8.1 and the
|
||
previous major release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Performance Improvements</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve GiST and R-tree index performance (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the optimizer, including auto-resizing of hash joins
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overhaul internal API in several areas
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change WAL record CRCs from 64-bit to 32-bit (Tom)
|
||
</para>
|
||
<para>
|
||
We determined that the extra cost of computing 64-bit CRCs was
|
||
significant, and the gain in reliability too marginal to justify it.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent writing large empty gaps in WAL pages (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve spinlock behavior on SMP machines, particularly Opterons (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow nonconsecutive index columns to be used in a multicolumn
|
||
index (Tom)
|
||
</para>
|
||
<para>
|
||
For example, this allows an index on columns a,b,c to be used in
|
||
a query with <command>WHERE a = 4 and c = 10</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Skip WAL logging for <command>CREATE TABLE AS</> /
|
||
<command>SELECT INTO</> (Simon)
|
||
</para>
|
||
<para>
|
||
Since a crash during <command>CREATE TABLE AS</> would cause the
|
||
table to be dropped during recovery, there is no reason to WAL
|
||
log as the table is loaded. (Logging still happens if WAL
|
||
archiving is enabled, however.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow concurrent GiST index access (Teodor, Oleg)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configuration parameter <varname>full_page_writes</> to
|
||
control writing full pages to WAL (Bruce)
|
||
</para>
|
||
<para>
|
||
To prevent partial disk writes from corrupting the database,
|
||
<productname>PostgreSQL</productname> writes a complete copy of
|
||
each database disk page to WAL the first time it is modified
|
||
after a checkpoint. This option turns off that functionality for more
|
||
speed. This is safe to use with battery-backed disk caches where
|
||
partial page writes cannot happen.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <literal>O_DIRECT</> if available when using
|
||
<literal>O_SYNC</> for <varname>wal_sync_method</varname>
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
<para>
|
||
<literal>O_DIRECT</> causes disk writes to bypass the kernel
|
||
cache, and for WAL writes, this improves performance.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>COPY FROM</> performance (Alon Goldshuv)
|
||
</para>
|
||
<para>
|
||
This was accomplished by reading <command>COPY</> input in
|
||
larger chunks, rather than character by character.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the performance of <function>COUNT()</function>,
|
||
<function>SUM</function>, <function>AVG()</function>,
|
||
<function>STDDEV()</function>, and
|
||
<function>VARIANCE()</function> (Neil, Tom)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent problems due to transaction ID (XID) wraparound (Tom)
|
||
</para>
|
||
<para>
|
||
The server will now warn when the transaction counter approaches
|
||
the wraparound point. If the counter becomes too close to wraparound,
|
||
the server will stop accepting queries. This ensures that data is
|
||
not lost before needed vacuuming is performed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problems with object IDs (OIDs) conflicting with existing system
|
||
objects after the OID counter has wrapped around (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add warning about the need to increase
|
||
<varname>max_fsm_relations</> and <varname>max_fsm_pages</>
|
||
during <command>VACUUM</> (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>temp_buffers</> configuration parameter to allow
|
||
users to determine the size of the local buffer area for
|
||
temporary table access (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add session start time and client IP address to
|
||
<literal>pg_stat_activity</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Adjust <literal>pg_stat</> views for bitmap scans (Tom)
|
||
</para>
|
||
<para>
|
||
The meanings of some of the fields have changed slightly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enhance <literal>pg_locks</> view (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Log queries for client-side <command>PREPARE</> and
|
||
<command>EXECUTE</> (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow Kerberos name and user name case sensitivity to be
|
||
specified in <filename>postgresql.conf</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configuration parameter <varname>krb_server_hostname</> so
|
||
that the server host name can be specified as part of service
|
||
principal (Todd Kover)
|
||
</para>
|
||
<para>
|
||
If not set, any service principal matching an entry in the
|
||
keytab can be used. This is new Kerberos matching behavior in
|
||
this release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>log_line_prefix</> options for millisecond
|
||
timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed
|
||
L.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add WAL logging for GiST indexes (Teodor, Oleg)
|
||
</para>
|
||
<para>
|
||
GiST indexes are now safe for crash and point-in-time recovery.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove old <filename>*.backup</> files when we do
|
||
<function>pg_stop_backup()</> (Bruce)
|
||
</para>
|
||
<para>
|
||
This prevents a large number of <filename>*.backup</> files from
|
||
existing in <filename>pg_xlog/</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configuration parameters to control TCP/IP keep-alive
|
||
times for idle, interval, and count (Oliver Jowett)
|
||
</para>
|
||
|
||
<para>
|
||
These values can be changed to allow more rapid detection of
|
||
lost client connections.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add per-user and per-database connection limits (Petr Jelinek)
|
||
</para>
|
||
<para>
|
||
Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
|
||
limits can now be enforced on the maximum number of sessions that
|
||
can concurrently connect as a specific user or to a specific database.
|
||
Setting the limit to zero disables user or database connections.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow more than two gigabytes of shared memory and per-backend
|
||
work memory on 64-bit machines (Koichi Suzuki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New system catalog <structname>pg_pltemplate</> allows overriding
|
||
obsolete procedural-language definitions in dump files (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Query Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add temporary views (Koju Iijima, Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>HAVING</> without any aggregate functions or
|
||
<command>GROUP BY</> so that the query returns a single group (Tom)
|
||
</para>
|
||
<para>
|
||
Previously, such a case would treat the <command>HAVING</>
|
||
clause the same as a <command>WHERE</> clause. This was not per spec.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>USING</> clause to allow additional tables to be
|
||
specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil)
|
||
</para>
|
||
<para>
|
||
In prior releases, there was no clear method for specifying
|
||
additional tables to be used for joins in a <command>DELETE</>
|
||
statement. <command>UPDATE</> already has a <literal>FROM</>
|
||
clause for this purpose.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>\x</> hex escapes in backend and ecpg
|
||
strings (Bruce)
|
||
</para>
|
||
<para>
|
||
This is just like the standard C <literal>\x</> escape syntax.
|
||
Octal escapes were already supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule)
|
||
</para>
|
||
<para>
|
||
This feature allows <command>BETWEEN</> comparisons without
|
||
requiring the first value to be less than the second. For
|
||
example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns
|
||
false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns
|
||
true. <command>BETWEEN ASYMMETRIC</> was already supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>NOWAIT</> option to <command>SELECT ... FOR
|
||
UPDATE/SHARE</> (Hans-Juergen Schoenig)
|
||
</para>
|
||
<para>
|
||
While the <varname>statement_timeout</> configuration
|
||
parameter allows a query taking more than a certain amount of
|
||
time to be cancelled, the <command>NOWAIT</> option allows a
|
||
query to be canceled as soon as a <command>SELECT ... FOR
|
||
UPDATE/SHARE</> command cannot immediately acquire a row lock.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Object Manipulation Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track dependencies of shared objects (Alvaro)
|
||
</para>
|
||
<para>
|
||
<productname>PostgreSQL</productname> allows global tables
|
||
(users, databases, tablespaces) to reference information in
|
||
multiple databases. This addition adds dependency information
|
||
for global tables, so, for example, user ownership can be
|
||
tracked across databases, so a user who owns something in any
|
||
database can no longer be removed. Dependency tracking already
|
||
existed for database-local objects.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow limited <command>ALTER OWNER</> commands to be performed
|
||
by the object owner (Stephen Frost)
|
||
</para>
|
||
<para>
|
||
Prior releases allowed only superusers to change object owners.
|
||
Now, ownership can be transferred if the user executing the command
|
||
owns the object and would be able to create it as the new owner
|
||
(that is, the user is a member of the new owning role and that role
|
||
has the CREATE permission that would be needed to create the object
|
||
afresh).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER</> object <command>SET SCHEMA</> capability
|
||
for some object types (tables, functions, types) (Bernd Helmle)
|
||
</para>
|
||
<para>
|
||
This allows objects to be moved to different schemas.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
|
||
disable triggers (Satoshi Nagayasu)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Utility Command Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>TRUNCATE</> to truncate multiple tables in a
|
||
single command (Alvaro)
|
||
</para>
|
||
<para>
|
||
Because of referential integrity checks, it is not allowed to
|
||
truncate a table that is part of a referential integrity
|
||
constraint. Using this new functionality, <command>TRUNCATE</>
|
||
can be used to truncate such tables, if both tables involved in
|
||
a referential integrity constraint are truncated in a single
|
||
<command>TRUNCATE</> command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Properly process carriage returns and line feeds in
|
||
<command>COPY CSV</> mode (Andrew)
|
||
</para>
|
||
<para>
|
||
In release 8.0, carriage returns and line feeds in <command>CSV
|
||
COPY TO</> were processed in an inconsistent manner. (This was
|
||
documented on the TODO list.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>COPY WITH CSV HEADER</> to allow a header line as
|
||
the first line in <command>COPY</> (Andrew)
|
||
</para>
|
||
<para>
|
||
This allows handling of the common <command>CSV</> usage of
|
||
placing the column names on the first line of the data file. For
|
||
<command>COPY TO</>, the first line contains the column names,
|
||
and for <command>COPY FROM</>, the first line is ignored.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
On Windows, display better sub-second precision in
|
||
<command>EXPLAIN ANALYZE</> (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add trigger duration display to <command>EXPLAIN ANALYZE</>
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
Prior releases included trigger execution time as part of the
|
||
total execution time, but did not show it separately. It is now
|
||
possible to see how much time is spent in each trigger.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>\x</> hex escapes in <command>COPY</>
|
||
(Sergey Ten)
|
||
</para>
|
||
<para>
|
||
Previous releases only supported octal escapes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>SHOW ALL</> include variable descriptions
|
||
(Matthias Schmidt)
|
||
</para>
|
||
<para>
|
||
<command>SHOW</> varname still only displays the variable's
|
||
value and does not include the description.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>initdb</application> create a new standard
|
||
database called <literal>postgres</>, and convert utilities to
|
||
use <literal>postgres</> rather than <literal>template1</> for
|
||
standard lookups (Dave)
|
||
</para>
|
||
<para>
|
||
In prior releases, <literal>template1</> was used both as a
|
||
default connection for utilities like
|
||
<application>createuser</application>, and as a template for
|
||
new databases. This caused <command>CREATE DATABASE</> to
|
||
sometimes fail, because a new database cannot be created if
|
||
anyone else is in the template database. With this change, the
|
||
default connection database is now <literal>postgres</>,
|
||
meaning it is much less likely someone will be using
|
||
<literal>template1</> during <command>CREATE DATABASE</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create new <application>reindexdb</application> command-line
|
||
utility by moving <filename>/contrib/reindexdb</> into the
|
||
server (Euler Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Data Type and Function Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>MAX()</> and <function>MIN()</> aggregates for
|
||
array types (Koju Iijima)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>to_date()</> and <function>to_timestamp()</> to
|
||
behave reasonably when <literal>CC</> and <literal>YY</> fields
|
||
are both used (Karel Zak)
|
||
</para>
|
||
<para>
|
||
If the format specification contains <literal>CC</> and a year
|
||
specification is <literal>YYY</> or longer, ignore the
|
||
<literal>CC</>. If the year specification is <literal>YY</> or
|
||
shorter, interpret <literal>CC</> as the previous century.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>md5(bytea)</> (Abhijit Menon-Sen)
|
||
</para>
|
||
<para>
|
||
<function>md5(text)</> already existed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <command>numeric ^ numeric</> based on
|
||
<function>power(numeric, numeric)</>
|
||
</para>
|
||
<para>
|
||
The function already existed, but there was no operator assigned
|
||
to it.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>NUMERIC</> modulus by properly truncating the quotient
|
||
during computation (Bruce)
|
||
</para>
|
||
<para>
|
||
In previous releases, modulus for large values sometimes
|
||
returned negative results due to rounding of the quotient.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a function <function>lastval()</> (Dennis Björklund)
|
||
</para>
|
||
<para>
|
||
<function>lastval()</> is a simplified version of
|
||
<function>currval()</>. It automatically determines the proper
|
||
sequence name based on the most recent <function>nextval()</> or
|
||
<function>setval()</> call performed by the current session.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>to_timestamp(DOUBLE PRECISION) (Michael Glaesemann)</>
|
||
</para>
|
||
<para>
|
||
Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
|
||
TIMEZONE</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_postmaster_start_time()</> function (Euler
|
||
Taveira de Oliveira, Matthias Schmidt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the full use of time zone names in <command>AT TIME
|
||
ZONE</>, not just the short list previously available (Magnus)
|
||
</para>
|
||
<para>
|
||
Previously, only a predefined list of time zone names were
|
||
supported by <command>AT TIME ZONE</>. Now any supported time
|
||
zone name can be used, e.g.:
|
||
<programlisting>
|
||
SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
|
||
</programlisting>
|
||
In the above query, the time zone used is adjusted based on the
|
||
daylight saving time rules that were in effect on the supplied
|
||
date.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>GREATEST()</> and <function>LEAST()</> variadic
|
||
functions (Pavel Stehule)
|
||
</para>
|
||
<para>
|
||
These functions take a variable number of arguments and return
|
||
the greatest or least value among the arguments.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_column_size()</> (Mark Kirkwood)
|
||
</para>
|
||
<para>
|
||
This returns storage size of a column, which might be compressed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>regexp_replace()</> (Atsushi Ogawa)
|
||
</para>
|
||
<para>
|
||
This allows regular expression replacement, like sed. An optional
|
||
flag argument allows selection of global (replace all) and
|
||
case-insensitive modes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix interval division and multiplication (Bruce)
|
||
</para>
|
||
<para>
|
||
Previous versions sometimes returned unjustified results, like
|
||
<command>'4 months'::interval / 5</> returning <command>'1 mon
|
||
-6 days'</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix roundoff behavior in timestamp, time, and interval output (Tom)
|
||
</para>
|
||
<para>
|
||
This fixes some cases in which the seconds field would be shown as
|
||
<literal>60</> instead of incrementing the higher-order fields.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a separate day field to type <type>interval</> so a one day
|
||
interval can be distinguished from a 24 hour interval (Michael
|
||
Glaesemann)
|
||
</para>
|
||
<para>
|
||
Days that contain a daylight saving time adjustment are not 24
|
||
hours long, but typically 23 or 25 hours. This change creates a
|
||
conceptual distinction between intervals of <quote>so many days</>
|
||
and intervals of <quote>so many hours</>. Adding
|
||
<literal>1 day</> to a timestamp now gives the same local time on
|
||
the next day even if a daylight saving time adjustment occurs
|
||
between, whereas adding <literal>24 hours</> will give a different
|
||
local time when this happens. For example, under US DST rules:
|
||
<programlisting>
|
||
'2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04'
|
||
'2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04'
|
||
</programlisting>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>justify_days()</> and <function>justify_hours()</>
|
||
(Michael Glaesemann)
|
||
</para>
|
||
<para>
|
||
These functions, respectively, adjust days to an appropriate
|
||
number of full months and days, and adjust hours to an
|
||
appropriate number of full days and hours.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move <filename>/contrib/dbsize</> into the backend, and rename
|
||
some of the functions (Dave Page, Andreas Pflug)
|
||
</para>
|
||
<para>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_tablespace_size()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_database_size()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_relation_size()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_total_relation_size()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_size_pretty()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
<function>pg_total_relation_size()</> includes indexes and TOAST
|
||
tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add functions for read-only file access to the cluster directory
|
||
(Dave Page, Andreas Pflug)
|
||
</para>
|
||
<para>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_stat_file()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_read_file()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>pg_ls_dir()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_reload_conf()</> to force reloading of the
|
||
configuration files (Dave Page, Andreas Pflug)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_rotate_logfile()</> to force rotation of the
|
||
server log file (Dave Page, Andreas Pflug)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Encoding and Locale Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename some encodings to be more consistent and to follow
|
||
international standards (Bruce)
|
||
</para>
|
||
<para>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>UNICODE</> is now <literal>UTF8</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>ALT</> is now <literal>WIN866</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>WIN</> is now <literal>WIN1251</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>TCVN</> is now <literal>WIN1258</>
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<para>
|
||
The original names still work.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>WIN1252</> encoding (Roland Volkmann)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for four-byte <literal>UTF8</> characters (John
|
||
Hansen)
|
||
</para>
|
||
<para>
|
||
Previously only one, two, and three-byte <literal>UTF8</> characters
|
||
were supported. This is particularly important for support for
|
||
some Chinese character sets.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow direct conversion between <literal>EUC_JP</> and
|
||
<literal>SJIS</> to improve performance (Atsushi Ogawa)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the UTF8 encoding to work on Windows (Magnus)
|
||
</para>
|
||
<para>
|
||
This is done by mapping UTF8 to the Windows-native UTF16
|
||
implementation.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>General Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow function characteristics, like strictness and volatility,
|
||
to be modified via <command>ALTER FUNCTION</> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Increase the maximum number of function arguments to 100 (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow SQL and PL/PgSQL functions to use <command>OUT</> and
|
||
<command>INOUT</> parameters (Tom)
|
||
</para>
|
||
<para>
|
||
<command>OUT</> is an alternate way for a function to return
|
||
values. Instead of using <command>RETURN</>, values can be
|
||
returned by assigning to parameters declared as <command>OUT</> or
|
||
<command>INOUT</>. This is notationally simpler in some cases,
|
||
particularly so when multiple values need to be returned.
|
||
While returning multiple values from a function
|
||
was possible in previous releases, this greatly simplifies the
|
||
process. (The feature will be extended to other server-side
|
||
languages in future releases.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move language handler functions into the <literal>pg_catalog</> schema
|
||
</para>
|
||
<para>
|
||
This makes it easier to drop the public schema if desired.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>SPI_getnspname()</function> to SPI (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/PgSQL Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overhaul the memory management of PL/PgSQL functions (Neil)
|
||
</para>
|
||
<para>
|
||
The parsetree of each function is now stored in a separate
|
||
memory context. This allows this memory to be easily reclaimed
|
||
when it is no longer needed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Check function syntax at <command>CREATE FUNCTION</> time,
|
||
rather than at runtime (Neil)
|
||
</para>
|
||
<para>
|
||
Previously, most syntax errors were reported only when the
|
||
function was executed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>OPEN</> to open non-<command>SELECT</> queries
|
||
like <command>EXPLAIN</> and <command>SHOW</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
No longer require functions to issue a <command>RETURN</>
|
||
statement (Tom)
|
||
</para>
|
||
<para>
|
||
This is a byproduct of the newly added <command>OUT</> and
|
||
<command>INOUT</> functionality. <command>RETURN</> can
|
||
be omitted when it is not needed to provide the function's
|
||
return value.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for an optional <command>INTO</> clause to
|
||
PL/PgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return
|
||
the <literal>SQLSTATE</> and error message of the current
|
||
exception (Pavel Stehule, Neil)
|
||
</para>
|
||
<para>
|
||
These variables are only defined inside exception blocks.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the parameters to the <command>RAISE</> statement to be
|
||
expressions (Pavel Stehule, Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow block and loop labels (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>PL/Perl Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow large result sets to be returned efficiently (Abhijit
|
||
Menon-Sen)
|
||
</para>
|
||
<para>
|
||
This allows functions to use <function>return_next()</> to avoid
|
||
building the entire result set in memory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
|
||
</para>
|
||
<para>
|
||
This allows functions to use <function>spi_query()</> and
|
||
<function>spi_fetchrow()</> to avoid accumulating the entire
|
||
result set in memory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Force PL/Perl to handle strings as <literal>UTF8</> if the
|
||
server encoding is <literal>UTF8</> (David Kamholz)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a validator function for PL/Perl (Andrew)
|
||
</para>
|
||
<para>
|
||
This allows syntax errors to be reported at definition time,
|
||
rather than execution time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow PL/Perl to return a Perl array when the function returns
|
||
an array type (Andrew)
|
||
</para>
|
||
<para>
|
||
This basically maps <productname>PostgreSQL</productname> arrays
|
||
to Perl arrays.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow Perl nonfatal warnings to generate <command>NOTICE</>
|
||
messages (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow Perl's <literal>strict</> mode to be enabled (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title><application>psql</> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in
|
||
a transaction to error without affecting the rest of the
|
||
transaction (Greg Sabino Mullane)
|
||
</para>
|
||
<para>
|
||
This is basically implemented by wrapping every statement in a
|
||
sub-transaction.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>\x</> hex strings in
|
||
<application>psql</> variables (Bruce)
|
||
</para>
|
||
<para>
|
||
Octal escapes were already supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <command>troff -ms</> output format (Roger
|
||
Leigh)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the history file location to be controlled by
|
||
<envar>HISTFILE</> (Andreas Seltenreich)
|
||
</para>
|
||
<para>
|
||
This allows configuration of per-database history storage.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>\x</> (expanded mode) from affecting
|
||
the output of <command>\d tablename</> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>-L</> option to <application>psql</application> to
|
||
log sessions (Lorne Sunley)
|
||
</para>
|
||
<para>
|
||
This option was added because some operating systems do not have
|
||
simple command-line activity logging functionality.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d</> show the tablespaces of indexes (Qingqing
|
||
Zhou)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>psql</application> help (<command>\h</>) to
|
||
make a best guess on the proper help information (Greg Sabino
|
||
Mullane)
|
||
</para>
|
||
<para>
|
||
This allows the user to just add <command>\h</> to the front of
|
||
the syntax error query and get help on the supported syntax.
|
||
Previously any additional query text beyond the command name
|
||
had to be removed to use <command>\h</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>\pset numericlocale</> to allow numbers to be
|
||
output in a locale-aware format (Eugen Nedelcu)
|
||
</para>
|
||
<para>
|
||
For example, using <literal>C</> locale <literal>100000</> would
|
||
be output as <literal>100,000.0</> while a European locale might
|
||
output this value as <literal>100.000,0</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make startup banner show both server version number and
|
||
<application>psql</>'s version number, when they are different (Bruce)
|
||
</para>
|
||
<para>
|
||
Also, a warning will be shown if the server and <application>psql</>
|
||
are from different major releases.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title><application>pg_dump</> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>-n</> / <option>--schema</> switch to
|
||
<application>pg_restore</> (Richard van den Berg)
|
||
</para>
|
||
<para>
|
||
This allows just the objects in a specified schema to be restored.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_dump</> to dump large objects even in
|
||
text mode (Tom)
|
||
</para>
|
||
<para>
|
||
With this change, large objects are now always dumped; the former
|
||
<option>-b</> switch is a no-op.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_dump</> to dump a consistent snapshot of
|
||
large objects (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Dump comments for large objects (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>--encoding</> to <application>pg_dump</>
|
||
(Magnus Hagander)
|
||
</para>
|
||
<para>
|
||
This allows a database to be dumped in an encoding that is
|
||
different from the server's encoding. This is valuable when
|
||
transferring the dump to a machine with a different encoding.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rely on <structname>pg_pltemplate</> for procedural languages (Tom)
|
||
</para>
|
||
<para>
|
||
If the call handler for a procedural language is in the
|
||
<literal>pg_catalog</> schema, <application>pg_dump</> does not
|
||
dump the handler. Instead, it dumps the language using just
|
||
<command>CREATE LANGUAGE <replaceable>name</></command>,
|
||
relying on the <structname>pg_pltemplate</> catalog to provide
|
||
the language's creation parameters at load time.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title><application>libpq</application> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <envar>PGPASSFILE</> environment variable to specify the
|
||
password file's filename (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>lo_create()</>, that is similar to
|
||
<function>lo_creat()</> but allows the OID of the large object
|
||
to be specified (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>libpq</application> consistently return an error
|
||
to the client application on <function>malloc()</function>
|
||
failure (Neil)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Source Code Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pgxs</> to support building against a relocated
|
||
installation
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add spinlock support for the Itanium processor using Intel
|
||
compiler (Vikram Kalsi)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add Kerberos 5 support for Windows (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add Chinese FAQ (laser@pgsqldb.com)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename Rendezvous to Bonjour to match OS/X feature renaming
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>fsync_writethrough</literal> on
|
||
Darwin (Chris Campbell)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Streamline the passing of information within the server, the
|
||
optimizer, and the lock system (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_config</> to be compiled using MSVC (Andrew)
|
||
</para>
|
||
<para>
|
||
This is required to build DBD::Pg using <application>MSVC</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove support for Kerberos V4 (Magnus)
|
||
</para>
|
||
<para>
|
||
Kerberos 4 had security vulnerabilities and is no longer
|
||
maintained.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Code cleanups (Coverity static analysis performed by
|
||
EnterpriseDB)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify <filename>postgresql.conf</> to use documentation defaults
|
||
<literal>on</>/<literal>off</> rather than
|
||
<literal>true</>/<literal>false</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enhance <application>pg_config</> to be able to report more
|
||
build-time values (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>libpq</application> to be built thread-safe
|
||
on Windows (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow IPv6 connections to be used on Windows (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add Server Administration documentation about I/O subsystem
|
||
reliability (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move private declarations from <filename>gist.h</filename> to
|
||
<filename>gist_private.h</filename> (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
In previous releases, <filename>gist.h</> contained both the
|
||
public GiST API (intended for use by authors of GiST index
|
||
implementations) as well as some private declarations used by
|
||
the implementation of GiST itself. The latter have been moved
|
||
to a separate file, <filename>gist_private.h</>. Most GiST
|
||
index implementations should be unaffected.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overhaul GiST memory management (Neil)
|
||
</para>
|
||
|
||
<para>
|
||
GiST methods are now always invoked in a short-lived memory
|
||
context. Therefore, memory allocated via <function>palloc()</>
|
||
will be reclaimed automatically, so GiST index implementations
|
||
do not need to manually release allocated memory via
|
||
<function>pfree()</>.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Contrib Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>/contrib/pg_buffercache</> contrib module (Mark
|
||
Kirkwood)
|
||
</para>
|
||
<para>
|
||
This displays the contents of the buffer cache, for debugging and
|
||
performance tuning purposes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <filename>/contrib/array</> because it is obsolete (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean up the <filename>/contrib/lo</> module (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move <filename>/contrib/findoidjoins</> to
|
||
<filename>/src/tools</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the <literal><<</>, <literal>>></>,
|
||
<literal>&<</>, and <literal>&></> operators from
|
||
<filename>/contrib/cube</>
|
||
</para>
|
||
<para>
|
||
These operators were not useful.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <filename>/contrib/btree_gist</> (Janko Richter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <filename>/contrib/pgbench</> (Tomoaki Sato, Tatsuo)
|
||
</para>
|
||
<para>
|
||
There is now a facility for testing with SQL command scripts given
|
||
by the user, instead of only a hard-wired command sequence.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implementation of OpenPGP symmetric-key and public-key encryption
|
||
</para>
|
||
<para>
|
||
Both RSA and Elgamal public-key algorithms are supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Take build parameters (OpenSSL, zlib) from <filename>configure</> result
|
||
</para>
|
||
<para>
|
||
There is no need to edit the <filename>Makefile</> anymore.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove support for <filename>libmhash</> and <filename>libmcrypt</>
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-21">
|
||
<title>Release 8.0.21</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-03-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.20.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.21</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
||
for the specified conversion function (Heikki)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
||
of known timezone abbreviations (Xavier Bugaud)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-20">
|
||
<title>Release 8.0.20</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-02-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.19.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.20</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of URLs in <function>headline()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of overlength headlines in <function>headline()</>
|
||
function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible Assert failure or misconversion if an encoding
|
||
conversion is created with the wrong conversion function for the
|
||
specified pair of encodings (Tom, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix uninitialized variables in <filename>contrib/tsearch2</>'s
|
||
<function>get_covers()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make all documentation reference <literal>pgsql-bugs</> and/or
|
||
<literal>pgsql-hackers</> as appropriate, instead of the
|
||
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
||
mailing lists (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2009a (for
|
||
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-19">
|
||
<title>Release 8.0.19</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-11-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.18.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.19</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix backend crash when the client encoding cannot represent a localized
|
||
error message (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We have addressed similar issues before, but it would still fail if
|
||
the <quote>character has no equivalent</> message itself couldn't
|
||
be converted. The fix is to disable localization and send the plain
|
||
ASCII error message when we detect such a situation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash when deeply nested functions are invoked from
|
||
a trigger (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure an error is reported when a newly-defined PL/pgSQL trigger
|
||
function is invoked as a normal function (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect tsearch2 headline generation when single query
|
||
item matches first word of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix improper display of fractional seconds in interval values when
|
||
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
||
build (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
||
behave correctly when the passed tuple and tuple descriptor have
|
||
different numbers of columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is normal when a table has had columns added or removed,
|
||
but these two functions didn't handle it properly.
|
||
The only likely consequence is an incorrect error indication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008i (for
|
||
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-18">
|
||
<title>Release 8.0.18</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-09-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.17.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.18</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Widen local lock counters from 32 to 64 bits (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This responds to reports that the counters could overflow in
|
||
sufficiently long transactions, leading to unexpected <quote>lock is
|
||
already held</> errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add checks in executor startup to ensure that the tuples produced by an
|
||
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
||
current rowtype (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<command>ALTER COLUMN TYPE</>, followed by re-use of a previously
|
||
cached plan, could produce this type of situation. The check protects
|
||
against data corruption and/or crashes that could ensue.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix datetime input functions to correctly detect integer overflow when
|
||
running on a 64-bit platform (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of writing very long log messages to syslog (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
||
ON</> query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
||
boolean results always result in two groups, regardless of the
|
||
expressions' contents (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is very substantially more accurate than the regular <literal>GROUP
|
||
BY</> estimate for certain boolean tests like <replaceable>col</>
|
||
<literal>IS NULL</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
|
||
about the encoding of data sent to or from Tcl (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to work with Python 2.5
|
||
</para>
|
||
|
||
<para>
|
||
This is a back-port of fixes made during the 8.2 development cycle.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
||
error reporting after failure to send a SQL command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to properly preserve postmaster
|
||
command-line arguments across a <literal>restart</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008f (for
|
||
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
||
Pakistan, Palestine, and Paraguay)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-17">
|
||
<title>Release 8.0.17</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-06-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious bug fix over 8.0.16.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.17</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Before this fix, a negative constant in a view or rule might be dumped
|
||
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
||
be <literal>(-42)::integer</> due to operator precedence rules.
|
||
Usually this would make little difference, but it could interact with
|
||
another recent patch to cause
|
||
<productname>PostgreSQL</> to reject what had been a valid
|
||
<command>SELECT DISTINCT</> view query. Since this could result in
|
||
<application>pg_dump</> output failing to reload, it is being treated
|
||
as a high-priority fix. The only released versions in which dump
|
||
output is actually incorrect are 8.3.1 and 8.2.7.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-16">
|
||
<title>Release 8.0.16</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>never released</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.15.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.16</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X.
|
||
However, if you are upgrading from a version earlier than 8.0.6,
|
||
see the release notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
||
column is correctly checked to see if it's been initialized to all
|
||
non-nulls (Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Previous versions neglected to check this requirement at all.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
||
<quote>same</> constraint from multiple parent relations that
|
||
inherited that constraint from a common ancestor (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix conversions between ISO-8859-5 and other encodings to handle
|
||
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
||
two dots) (Sergey Burladyan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a few datatype input functions
|
||
that were allowing unused bytes in their results to contain
|
||
uninitialized, unpredictable values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failures in which two apparently identical literal
|
||
values were not seen as equal, resulting in the parser complaining
|
||
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
||
expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a corner case in regular-expression substring matching
|
||
(<literal>substring(<replaceable>string</> from
|
||
<replaceable>pattern</>)</literal>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The problem occurs when there is a match to the pattern overall but
|
||
the user has specified a parenthesized subexpression and that
|
||
subexpression hasn't got a match. An example is
|
||
<literal>substring('foo' from 'foo(bar)?')</>.
|
||
This should return NULL, since <literal>(bar)</> isn't matched, but
|
||
it was mistakenly returning the whole-pattern match instead (ie,
|
||
<literal>foo</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2008c (for
|
||
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
|
||
Argentina/San_Luis, and Chile)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect result from <application>ecpg</>'s
|
||
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix core dump in <filename>contrib/xml2</>'s
|
||
<function>xpath_table()</> function when the input query returns a
|
||
NULL value (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/xml2</>'s makefile to not override
|
||
<literal>CFLAGS</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
||
4.3 (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This problem affects <quote>old style</> (V0) C functions that
|
||
return boolean. The fix is already in 8.3, but the need to
|
||
back-patch it was not realized at the time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
||
race condition (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In rare cases a session that had just executed a
|
||
<command>LISTEN</> might not get a notification, even though
|
||
one would be expected because the concurrent transaction executing
|
||
<command>NOTIFY</> was observed to commit later.
|
||
</para>
|
||
|
||
<para>
|
||
A side effect of the fix is that a transaction that has executed
|
||
a not-yet-committed <command>LISTEN</> command will not see any
|
||
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
||
should it choose to look; formerly it would have. This behavior
|
||
was never documented one way or the other, but it is possible that
|
||
some applications depend on the old behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare crash when an error occurs during a query using a hash index
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix input of datetime values for February 29 in years BC (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The former coding was mistaken about which years were leap years.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>unrecognized node type</> error in some variants of
|
||
<command>ALTER OWNER</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
||
number from command-line options (Itagaki Takahiro, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, <literal>pg_ctl start -w</> could try to contact the
|
||
postmaster on the wrong port, leading to bogus reports of startup
|
||
failure.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <option>-fwrapv</> to defend against possible misoptimization
|
||
in recent <application>gcc</> versions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to be necessary when building <productname>PostgreSQL</>
|
||
with <application>gcc</> 4.3 or later.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix display of constant expressions in <literal>ORDER BY</>
|
||
and <literal>GROUP BY</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An explictly casted constant would be shown incorrectly. This could
|
||
for example lead to corruption of a view definition during
|
||
dump and reload.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> to handle NOTICE messages correctly
|
||
during COPY OUT (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This failure has only been observed to occur when a user-defined
|
||
datatype's output routine issues a NOTICE, but there is no
|
||
guarantee it couldn't happen due to other causes.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-15">
|
||
<title>Release 8.0.15</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-01-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.14,
|
||
including fixes for significant security issues.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<para>
|
||
This is the last 8.0.X release for which the <productname>PostgreSQL</>
|
||
community will produce binary packages for <productname>Windows</>.
|
||
Windows users are encouraged to move to 8.2.X or later,
|
||
since there are Windows-specific fixes in 8.2.X that
|
||
are impractical to back-port. 8.0.X will continue to
|
||
be supported on other platforms.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.15</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent functions in indexes from executing with the privileges of
|
||
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Functions used in index expressions and partial-index
|
||
predicates are evaluated whenever a new table entry is made. It has
|
||
long been understood that this poses a risk of trojan-horse code
|
||
execution if one modifies a table owned by an untrustworthy user.
|
||
(Note that triggers, defaults, check constraints, etc. pose the
|
||
same type of risk.) But functions in indexes pose extra danger
|
||
because they will be executed by routine maintenance operations
|
||
such as <command>VACUUM FULL</>, which are commonly performed
|
||
automatically under a superuser account. For example, a nefarious user
|
||
can execute code with superuser privileges by setting up a
|
||
trojan-horse index definition and waiting for the next routine vacuum.
|
||
The fix arranges for standard maintenance operations
|
||
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
||
and <command>CLUSTER</>) to execute as the table owner rather than
|
||
the calling user, using the same privilege-switching mechanism already
|
||
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
||
this security measure, execution of <command>SET SESSION
|
||
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
||
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
||
</para>
|
||
|
||
<para>
|
||
Suitably crafted regular-expression patterns could cause crashes,
|
||
infinite or near-infinite looping, and/or massive memory consumption,
|
||
all of which pose denial-of-service hazards for applications that
|
||
accept regex search patterns from untrustworthy sources.
|
||
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
|
||
<para>
|
||
The fix that appeared for this in 8.0.14 was incomplete, as it plugged
|
||
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
||
CVE-2007-3278)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2007k
|
||
(in particular, recent Argentina changes) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
||
(SELECT ...)</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Preserve the tablespace of indexes that are
|
||
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make archive recovery always start a new WAL timeline, rather than only
|
||
when a recovery stop time was used (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This avoids a corner-case risk of trying to overwrite an existing
|
||
archived copy of the last WAL segment, and seems simpler and cleaner
|
||
than the original definition.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
|
||
when the table is too small for it to be useful (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in <function>translate()</> when using a multibyte
|
||
database encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
|
||
as <literal>int</> rather than <literal>char</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
While this could theoretically happen anywhere, no standard build of
|
||
Perl did things this way ... until <productname>Mac OS X</> 10.5.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to not crash on long exception messages (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_dump</> to correctly handle inheritance child tables
|
||
that have default expressions different from their parent's (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>ecpg</> parser fixes (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
||
NULL rowid as a category in its own right, rather than crashing (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
||
escape backslashes correctly (Teodor, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a specific version of <productname>Autoconf</> to be used
|
||
when re-generating the <command>configure</> script (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This affects developers and packagers only. The change was made
|
||
to prevent accidental use of untested combinations of
|
||
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
||
You can remove the version check if you really want to use a
|
||
different <productname>Autoconf</> version, but it's
|
||
your responsibility whether the result works or not.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-14">
|
||
<title>Release 8.0.14</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-09-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.13.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.14</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent index corruption when a transaction inserts rows and
|
||
then aborts close to the end of a concurrent <command>VACUUM</>
|
||
on the same table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix excessive logging of <acronym>SSL</> error messages (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix logging so that log messages are never interleaved when using
|
||
the syslogger process (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash when <varname>log_min_error_statement</> logging runs out
|
||
of memory (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect handling of some foreign-key corner cases (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>CLUSTER</> from failing
|
||
due to attempting to process temporary tables of other sessions (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Windows socket improvements (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
|
||
because of possible encoding mismatches (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-13">
|
||
<title>Release 8.0.13</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-04-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.12,
|
||
including a security fix.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.13</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support explicit placement of the temporary-table schema within
|
||
<varname>search_path</>, and disable searching it for functions
|
||
and operators (Tom)
|
||
</para>
|
||
<para>
|
||
This is needed to allow a security-definer function to set a
|
||
truly secure value of <varname>search_path</>. Without it,
|
||
an unprivileged SQL user can use temporary objects to execute code
|
||
with the privileges of the security-definer function (CVE-2007-2138).
|
||
See <command>CREATE FUNCTION</> for more information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
||
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-12">
|
||
<title>Release 8.0.12</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one fix from 8.0.11.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.12</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove overly-restrictive check for type length in constraints and
|
||
functional indexes(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-11">
|
||
<title>Release 8.0.11</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.10, including
|
||
a security fix.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.11</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove security vulnerabilities that allowed connected users
|
||
to read backend memory (Tom)
|
||
</para>
|
||
<para>
|
||
The vulnerabilities involve suppressing the normal check that a SQL
|
||
function returns the data type it's declared to, and changing the
|
||
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
|
||
errors can easily be exploited to cause a backend crash, and in
|
||
principle might be used to read database content that the user
|
||
should not be able to access.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare bug wherein btree index page splits could fail
|
||
due to choosing an infeasible split point (Heikki Linnakangas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten security of multi-byte character processing for UTF8 sequences
|
||
over three bytes long (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-10">
|
||
<title>Release 8.0.10</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-01-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.9.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.10</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of <function>getaddrinfo()</> on AIX (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a problem with starting the statistics collector,
|
||
among other things.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>failed to re-find parent key</> errors in
|
||
<command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix race condition for truncation of a large relation across a
|
||
gigabyte boundary by <command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible deadlock in Windows signal handling (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix error when constructing an <literal>ARRAY[]</> made up of multiple
|
||
empty elements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix ecpg memory leak during connection (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>to_number()</> and <function>to_char(numeric)</>
|
||
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
||
new <application>initdb</> installs (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is because <varname>lc_numeric</> can potentially
|
||
change the output of these functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve index usage of regular expressions that use parentheses (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <application>psql</> <literal>\d</> performance also.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update timezone database
|
||
</para>
|
||
|
||
<para>
|
||
This affects Australian and Canadian daylight-savings rules in
|
||
particular.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-9">
|
||
<title>Release 8.0.9</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-10-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.8.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.9</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix crash when referencing <literal>NEW</> row
|
||
values in rule WHERE expressions (Tom)</para></listitem>
|
||
<listitem><para>Fix core dump when an untyped literal is taken as
|
||
ANYARRAY</para></listitem>
|
||
<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
|
||
function returning multiple rows (Tom)</para></listitem>
|
||
<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
|
||
<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
|
||
<listitem><para>Fix <function>string_to_array()</> to handle overlapping
|
||
matches for the separator string</para>
|
||
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
|
||
</para></listitem>
|
||
<listitem><para>Fix corner cases in pattern matching for
|
||
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
||
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
||
(Teodor)</para></listitem>
|
||
<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
|
||
Wieland)</para></listitem>
|
||
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
||
<listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem>
|
||
<listitem><para>Fixes for <systemitem class="osname">AIX</> and
|
||
<productname>Intel</> compilers (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-8">
|
||
<title>Release 8.0.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-05-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.7,
|
||
including patches for extremely serious security issues.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
|
||
<para>
|
||
Full security against the SQL-injection attacks described in
|
||
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
||
code. If you have applications that embed untrustworthy strings
|
||
into SQL commands, you should examine them as soon as possible to
|
||
ensure that they are using recommended escaping techniques. In
|
||
most cases, applications should be using subroutines provided by
|
||
libraries or drivers (such as <application>libpq</>'s
|
||
<function>PQescapeStringConn()</>) to perform string escaping,
|
||
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
||
characters in all cases (Tatsuo, Tom)</para>
|
||
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
||
some time, the checks are now applied uniformly to all encodings and all
|
||
textual input, and are now always errors not merely warnings. This change
|
||
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
||
<para>As a server-side defense against SQL-injection attacks of the type
|
||
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
||
<literal>\'</> as a representation of ASCII single quote in SQL string
|
||
literals. By default, <literal>\'</> is rejected only when
|
||
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
||
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
||
A new configuration parameter <varname>backslash_quote</> is available to
|
||
adjust this behavior when needed. Note that full security against
|
||
CVE-2006-2314 might require client-side changes; the purpose of
|
||
<varname>backslash_quote</> is in part to make it obvious that insecure
|
||
clients are insecure.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
||
aware of encoding considerations and
|
||
<varname>standard_conforming_strings</></para>
|
||
<para>This fixes <application>libpq</>-using applications for the security
|
||
issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
|
||
them against the planned changeover to SQL-standard string literal syntax.
|
||
Applications that use multiple <productname>PostgreSQL</> connections
|
||
concurrently should migrate to <function>PQescapeStringConn()</> and
|
||
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
||
for the settings in use in each database connection. Applications that
|
||
do string escaping <quote>by hand</> should be modified to rely on library
|
||
routines instead.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
||
<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
|
||
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
||
<function>mic_to_euc_tw</> were all broken to varying
|
||
extents.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
||
(Bruce, Jan)</para></listitem>
|
||
|
||
<listitem><para>Fix bug that sometimes caused OR'd index scans to
|
||
miss rows they should have returned</para></listitem>
|
||
|
||
<listitem><para>Fix WAL replay for case where a btree index has been
|
||
truncated</para></listitem>
|
||
|
||
<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
|
||
<literal>|</> (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
|
||
create tables in the default tablespace, not the base directory (Kris
|
||
Jurka)</para></listitem>
|
||
|
||
<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
|
||
Fuhr)</para></listitem>
|
||
|
||
<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
|
||
|
||
<listitem><para>Fix various minor memory leaks</para></listitem>
|
||
|
||
<listitem><para>Fix problem with password prompting on some Win32 systems
|
||
(Robert Kinberg)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-7">
|
||
<title>Release 8.0.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-02-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.6.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.6, see the release
|
||
notes for 8.0.6.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix potential crash in <command>SET
|
||
SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
|
||
<para>An unprivileged user could crash the server process, resulting in
|
||
momentary denial of service to other users, if the server has been compiled
|
||
with Asserts enabled (which is not the default).
|
||
Thanks to Akio Ishida for reporting this problem.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug with row visibility logic in self-inserted
|
||
rows (Tom)</para>
|
||
<para>Under rare circumstances a row inserted by the current command
|
||
could be seen as already valid, when it should not be. Repairs bug
|
||
created in 8.0.4, 7.4.9, and 7.3.11 releases.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix race condition that could lead to <quote>file already
|
||
exists</> errors during pg_clog and pg_subtrans file creation
|
||
(Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
|
||
message arrives at just the wrong time (Tom)</para></listitem>
|
||
|
||
<listitem><para>Properly check <literal>DOMAIN</> constraints for
|
||
<literal>UNKNOWN</> parameters in prepared statements
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
|
||
<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
|
||
constraints in the proper order (Nakano Yoshihisa)</para></listitem>
|
||
|
||
<listitem><para>Fixes to allow restoring dumps that have cross-schema
|
||
references to custom operators or operator classes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Allow <application>pg_restore</> to continue properly after a
|
||
<command>COPY</> failure; formerly it tried to treat the remaining
|
||
<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
|
||
when the data directory is not specified (Magnus)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Recover properly if error occurs during argument passing
|
||
in <application>PL/python</> (Neil)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>PL/perl</>'s handling of locales on
|
||
Win32 to match the backend (Andrew)</para></listitem>
|
||
|
||
<listitem><para>Fix crash when <literal>log_min_messages</> is set to
|
||
<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
|
||
(Bruce)</para></listitem>
|
||
|
||
<listitem><para>Fix <application>pgxs</> <literal>-L</> library path
|
||
specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
|
||
|
||
<listitem><para>Check that SID is enabled while checking for Win32 admin
|
||
privileges (Magnus)</para></listitem>
|
||
|
||
<listitem><para>Properly reject out-of-range date inputs (Kris
|
||
Jurka)</para></listitem>
|
||
|
||
<listitem><para>Portability fix for testing presence of <function>finite</>
|
||
and <function>isinf</> during configure (Tom)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-6">
|
||
<title>Release 8.0.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-01-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.5.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.6</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.3, see the release
|
||
notes for 8.0.3.
|
||
Also, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the locale or
|
||
<application>plperl</> issues described below.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix Windows code so that postmaster will continue rather
|
||
than exit if there is no more room in ShmemBackendArray (Magnus)</para>
|
||
<para>The previous behavior could lead to a denial-of-service situation if too
|
||
many connection requests arrive close together. This applies
|
||
<emphasis>only</> to the Windows port.</para></listitem>
|
||
|
||
<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
|
||
to return an already-used page as new, potentially causing loss of
|
||
recently-committed data (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix for protocol-level Describe messages issued
|
||
outside a transaction or in a failed transaction (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix character string comparison for locales that consider
|
||
different character combinations as equal, such as Hungarian (Tom)</para>
|
||
<para>This might require <command>REINDEX</> to fix existing indexes on
|
||
textual columns.</para></listitem>
|
||
|
||
<listitem><para>Set locale environment variables during postmaster startup
|
||
to ensure that <application>plperl</> won't change the locale later</para>
|
||
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
||
started with environment variables specifying a different locale than what
|
||
<application>initdb</> had been told. Under these conditions, any use of
|
||
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
||
<command>REINDEX</> to fix existing indexes on
|
||
textual columns if this has happened to you.</para></listitem>
|
||
|
||
<listitem><para>Allow more flexible relocation of installation
|
||
directories (Tom)</para>
|
||
<para>Previous releases supported relocation only if all installation
|
||
directory paths were the same except for the last component.</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
||
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
||
</para></listitem>
|
||
|
||
<listitem><para>Various fixes for functions returning <literal>RECORD</>s
|
||
(Tom) </para></listitem>
|
||
|
||
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
||
which caused it not to use all available salt space for MD5 and
|
||
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
||
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
||
|
||
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
||
rather than crashing, when the number of columns specified is different from
|
||
what's actually returned by the query (Joe)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-5">
|
||
<title>Release 8.0.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-12-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.4.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.5</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.3, see the release
|
||
notes for 8.0.3.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix race condition in transaction log management</para>
|
||
<para>There was a narrow window in which an I/O operation could be initiated
|
||
for the wrong page, leading to an Assert failure or data
|
||
corruption.</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Fix bgwriter problems after recovering from errors
|
||
(Tom)</para>
|
||
<para>
|
||
The background writer was found to leak buffer pins after write errors.
|
||
While not fatal in itself, this might lead to mysterious blockages of
|
||
later VACUUM commands.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Prevent failure if client sends Bind protocol message
|
||
when current transaction is already aborted</para></listitem>
|
||
|
||
<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
|
||
|
||
<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Retry file reads and writes after Windows
|
||
NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
|
||
|
||
<listitem><para>Fix intermittent failure when <varname>log_line_prefix</>
|
||
includes <literal>%i</></para></listitem>
|
||
|
||
<listitem><para>Fix <application>psql</> performance issue with long scripts
|
||
on Windows (Merlin Moncure)</para></listitem>
|
||
|
||
<listitem><para>Fix missing updates of <filename>pg_group</> flat
|
||
file</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding planning error for outer joins</para>
|
||
<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
|
||
only supported with merge-joinable join conditions</>.</para></listitem>
|
||
|
||
<listitem><para>Postpone timezone initialization until after
|
||
<filename>postmaster.pid</> is created</para>
|
||
<para>This avoids confusing startup scripts that expect the pid file to appear
|
||
quickly.</para></listitem>
|
||
|
||
<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
|
||
table has been dropped</para></listitem>
|
||
|
||
<listitem><para>Fix problems with whole-row references (<literal>foo.*</>)
|
||
to subquery results</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-4">
|
||
<title>Release 8.0.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-10-04</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.3.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.4</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
if you are upgrading from a version earlier than 8.0.3, see the release
|
||
notes for 8.0.3.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix error that allowed <command>VACUUM</> to remove
|
||
<literal>ctid</> chains too soon, and add more checking in code that follows
|
||
<literal>ctid</> links</para>
|
||
<para>This fixes a long-standing problem that could cause crashes in very rare
|
||
circumstances.</para></listitem>
|
||
<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
|
||
length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
|
||
<para>In prior releases, the padding of <type>CHAR()</> was incorrect
|
||
because it only padded to the specified number of bytes without
|
||
considering how many characters were stored.</para></listitem>
|
||
<listitem><para>Force a checkpoint before committing <command>CREATE
|
||
DATABASE</></para>
|
||
<para>This should fix recent reports of <quote>index is not a btree</>
|
||
failures when a crash occurs shortly after <command>CREATE
|
||
DATABASE</>.</para></listitem>
|
||
<listitem><para>Fix the sense of the test for read-only transaction
|
||
in <command>COPY</></para>
|
||
<para>The code formerly prohibited <command>COPY TO</>, where it should
|
||
prohibit <command>COPY FROM</>.
|
||
</para></listitem>
|
||
<listitem><para>Handle consecutive embedded newlines in <command>COPY</>
|
||
CSV-mode input</para></listitem>
|
||
<listitem><para>Fix <function>date_trunc(week)</> for dates near year
|
||
end</para></listitem>
|
||
<listitem><para>Fix planning problem with outer-join ON clauses that reference
|
||
only the inner-side relation</para></listitem>
|
||
<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
|
||
cases</para></listitem>
|
||
<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
|
||
DISTINCT ...)</> and related cases</para></listitem>
|
||
<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</>
|
||
values due to poorly thought out <quote>fuzzy</> cost
|
||
comparison</para></listitem>
|
||
<listitem><para>Make <function>array_in</> and <function>array_recv</> more
|
||
paranoid about validating their OID parameter</para></listitem>
|
||
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
||
a...</> with GiST index on column <literal>a</></para></listitem>
|
||
<listitem><para>Improve robustness of datetime parsing</para></listitem>
|
||
<listitem><para>Improve checking for partially-written WAL
|
||
pages</para></listitem>
|
||
<listitem><para>Improve robustness of signal handling when SSL is
|
||
enabled</para></listitem>
|
||
<listitem><para>Improve MIPS and M68K spinlock code</para></listitem>
|
||
<listitem><para>Don't try to open more than <literal>max_files_per_process</>
|
||
files during postmaster startup</para></listitem>
|
||
<listitem><para>Various memory leakage fixes</para></listitem>
|
||
<listitem><para>Various portability improvements</para></listitem>
|
||
<listitem><para>Update timezone data files</para></listitem>
|
||
<listitem><para>Improve handling of DLL load failures on Windows</para></listitem>
|
||
<listitem><para>Improve random-number generation on Windows</para></listitem>
|
||
<listitem><para>Make <literal>psql -f filename</> return a nonzero exit code
|
||
when opening the file fails</para></listitem>
|
||
<listitem><para>Change <application>pg_dump</> to handle inherited check
|
||
constraints more reliably</para></listitem>
|
||
<listitem><para>Fix password prompting in <application>pg_restore</> on
|
||
Windows</para></listitem>
|
||
<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
|
||
the variable is of pass-by-reference type</para></listitem>
|
||
<listitem><para>Fix PL/Perl <literal>%_SHARED</> so it's actually
|
||
shared</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/pg_autovacuum</> to allow sleep
|
||
intervals over 2000 sec</para></listitem>
|
||
<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
|
||
code</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-3">
|
||
<title>Release 8.0.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-05-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.2, including several
|
||
security-related issues.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.3</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.X. However,
|
||
it is one possible way of handling two significant security problems
|
||
that have been found in the initial contents of 8.0.X system
|
||
catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will
|
||
automatically correct these problems.
|
||
</para>
|
||
|
||
<para>
|
||
The larger security problem is that the built-in character set encoding
|
||
conversion functions can be invoked from SQL commands by unprivileged
|
||
users, but the functions were not designed for such use and are not
|
||
secure against malicious choices of arguments. The fix involves changing
|
||
the declared parameter list of these functions so that they can no longer
|
||
be invoked from SQL commands. (This does not affect their normal use
|
||
by the encoding conversion machinery.)
|
||
</para>
|
||
|
||
<para>
|
||
The lesser problem is that the <filename>contrib/tsearch2</> module
|
||
creates several functions that are improperly declared to return
|
||
<type>internal</> when they do not accept <type>internal</> arguments.
|
||
This breaks type safety for all functions using <type>internal</>
|
||
arguments.
|
||
</para>
|
||
|
||
<para>
|
||
It is strongly recommended that all installations repair these errors,
|
||
either by initdb or by following the manual repair procedure given
|
||
below. The errors at least allow unprivileged database users to crash
|
||
their server process, and might allow unprivileged users to gain the
|
||
privileges of a database superuser.
|
||
</para>
|
||
|
||
<para>
|
||
If you wish not to do an initdb, perform the same manual repair
|
||
procedures shown in the <link linkend="release-7-4-8">7.4.8 release
|
||
notes</link>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change encoding function signature to prevent
|
||
misuse</para></listitem>
|
||
<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
|
||
<type>INTERNAL</> function results</para></listitem>
|
||
<listitem><para>Guard against incorrect second parameter to
|
||
<function>record_out</></para></listitem>
|
||
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
||
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
||
than for other purposes</para>
|
||
<para>This is an extremely serious bug since it could lead to apparent
|
||
data inconsistencies being briefly visible to applications.</para></listitem>
|
||
<listitem><para>Repair race condition between relation extension and
|
||
VACUUM</para>
|
||
<para>This could theoretically have caused loss of a page's worth of
|
||
freshly-inserted data, although the scenario seems of very low probability.
|
||
There are no known cases of it having caused more than an Assert failure.
|
||
</para></listitem>
|
||
<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
|
||
<para>
|
||
The comparison code was wrong in the case where the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
|
||
it will need to be <command>REINDEX</>ed after installing this update, because
|
||
the fix corrects the sort order of column values.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
||
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
||
<listitem><para>Fix mis-display of negative fractional seconds in
|
||
<type>INTERVAL</> values</para>
|
||
<para>
|
||
This error only occurred when the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
</para></listitem>
|
||
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
|
||
correctly (Neil)</para></listitem>
|
||
<listitem><para>Still more 64-bit fixes for
|
||
<filename>contrib/intagg</></para></listitem>
|
||
<listitem><para>Prevent incorrect optimization of functions returning
|
||
<type>RECORD</></para></listitem>
|
||
<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
|
||
<listitem><para>Fix Borland makefile for libpq</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type
|
||
(Teodor)</para></listitem>
|
||
<listitem><para>Make <command>pg_ctl</> check the PID found in
|
||
<filename>postmaster.pid</> to see if it is still a live
|
||
process</para></listitem>
|
||
<listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused
|
||
by addition of dump timestamps</para></listitem>
|
||
<listitem><para>Fix interaction between materializing holdable cursors and
|
||
firing deferred triggers during transaction commit</para></listitem>
|
||
<listitem><para>Fix memory leak in SQL functions returning pass-by-reference
|
||
data types</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-2">
|
||
<title>Release 8.0.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-04-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.1.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.2</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.*.
|
||
This release updates the major version number of the
|
||
<productname>PostgreSQL</productname> libraries, so it might be
|
||
necessary to re-link some user applications if they cannot
|
||
find the properly-numbered shared library.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Increment the major version number of all interface
|
||
libraries (Bruce)</para>
|
||
<para>
|
||
This should have been done in 8.0.0. It is required so 7.4.X versions
|
||
of PostgreSQL client applications, like <application>psql</>,
|
||
can be used on the same machine as 8.0.X applications. This might require
|
||
re-linking user applications that use these libraries.
|
||
</para></listitem>
|
||
<listitem><para>Add Windows-only <varname>wal_sync_method</> setting of
|
||
<option>fsync_writethrough</> (Magnus, Bruce)</para>
|
||
<para>
|
||
This setting causes <productname>PostgreSQL</productname> to write through
|
||
any disk-drive write cache when writing to WAL.
|
||
This behavior was formerly called <option>fsync</>, but was
|
||
renamed because it acts quite differently from <option>fsync</> on other
|
||
platforms.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Enable the <varname>wal_sync_method</> setting of
|
||
<option>open_datasync</> on Windows, and make it the default for that
|
||
platform (Magnus, Bruce)</para>
|
||
<para>
|
||
Because the default is no longer <option>fsync_writethrough</>,
|
||
data loss is possible during a power failure if the disk drive has
|
||
write caching enabled. To turn off the write cache on Windows,
|
||
from the <application>Device Manager</>, choose the drive properties,
|
||
then <literal>Policies</>.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>New cache management algorithm <acronym>2Q</> replaces
|
||
<acronym>ARC</> (Tom)</para>
|
||
<para>
|
||
This was done to avoid a pending US patent on <acronym>ARC</>. The
|
||
<acronym>2Q</> code might be a few percentage points slower than
|
||
<acronym>ARC</> for some work loads. A better cache management algorithm
|
||
will appear in 8.1.
|
||
</para></listitem>
|
||
<listitem><para>Planner adjustments to improve behavior on freshly-created
|
||
tables (Tom)</para></listitem>
|
||
<listitem><para>Allow plpgsql to assign to an element of an array that is
|
||
initially <literal>NULL</> (Tom)</para>
|
||
<para>
|
||
Formerly the array would remain <literal>NULL</>, but now it becomes a
|
||
single-element array. The main SQL engine was changed to handle
|
||
<command>UPDATE</> of a null array value this way in 8.0, but the similar
|
||
case in plpgsql was overlooked.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</>
|
||
in plpython function bodies (Michael Fuhr)</para>
|
||
<para>
|
||
This prevents syntax errors when plpython code is written on a Windows or
|
||
Mac client.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Allow SPI cursors to handle utility commands that return rows,
|
||
such as <command>EXPLAIN</> (Tom)</para></listitem>
|
||
<listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE
|
||
SET WITHOUT OIDS</> (Tom)</para></listitem>
|
||
<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</>
|
||
(Neil)</para></listitem>
|
||
<listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem>
|
||
<listitem><para>Document the Windows-only <literal>register</> and
|
||
<literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem>
|
||
<listitem><para>Ensure operations done during backend shutdown are counted by
|
||
statistics collector</para>
|
||
<para>
|
||
This is expected to resolve reports of <application>pg_autovacuum</>
|
||
not vacuuming the system catalogs often enough — it was not being
|
||
told about catalog deletions caused by temporary table removal during
|
||
backend exit.
|
||
</para></listitem>
|
||
<listitem><para>Change the Windows default for configuration parameter
|
||
<varname>log_destination</> to <option>eventlog</> (Magnus)</para>
|
||
<para>
|
||
By default, a server running on Windows will now send log output to the
|
||
Windows event logger rather than standard error.
|
||
</para></listitem>
|
||
<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
|
||
<listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers
|
||
who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
|
||
<listitem><para>Modify WAL log entries for <command>CREATE</> and
|
||
<command>DROP DATABASE</> to not specify absolute paths (Tom)</para>
|
||
<para>This allows point-in-time recovery on a different machine with possibly
|
||
different database location. Note that <command>CREATE TABLESPACE</> still
|
||
poses a hazard in such situations.
|
||
</para></listitem>
|
||
<listitem><para>Fix crash from a backend exiting with an open transaction
|
||
that created a table and opened a cursor on it (Tom)</para></listitem>
|
||
<listitem><para>Fix <function>array_map()</> so it can call PL functions
|
||
(Tom)</para></listitem>
|
||
<listitem><para>Several <filename>contrib/tsearch2</> and
|
||
<filename>contrib/btree_gist</> fixes (Teodor)
|
||
</para></listitem>
|
||
<listitem><para>Fix crash of some <filename>contrib/pgcrypto</>
|
||
functions on some platforms (Marko Kreen)</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms
|
||
(Tom)</para></listitem>
|
||
<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement
|
||
(Michael)</para></listitem>
|
||
<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
|
||
ecpg (Christof Petig)</para></listitem>
|
||
<listitem><para>Do not use locale-aware versions of <function>upper()</>,
|
||
<function>lower()</>, and <function>initcap()</> when the locale is
|
||
<literal>C</> (Bruce)</para>
|
||
<para>
|
||
This allows these functions to work on platforms that generate errors
|
||
for non-7-bit data when the locale is <literal>C</>.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem>
|
||
<listitem><para>Fix <function>to_date()</> to behave reasonably when
|
||
<literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem>
|
||
<listitem><para>Prevent <function>to_char(interval)</> from failing
|
||
when given a zero-month interval (Tom)</para></listitem>
|
||
<listitem><para>Fix wrong week returned by <function>date_trunc('week')</>
|
||
(Bruce)</para>
|
||
<para>
|
||
<function>date_trunc('week')</>
|
||
returned the wrong year for the first few days of January in some years.
|
||
</para></listitem>
|
||
<listitem><para>Use the correct default mask length for class <literal>D</>
|
||
addresses in <type>INET</> data types (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0-1">
|
||
<title>Release 8.0.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-01-31</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.0.0, including several
|
||
security-related issues.
|
||
For information about new features in the 8.0 major release, see
|
||
<xref linkend="release-8-0">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0.1</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.0.0.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
||
<para>
|
||
On platforms that will automatically execute initialization functions of a
|
||
shared library (this includes at least Windows and ELF-based Unixen),
|
||
<command>LOAD</> can be used to make the server execute arbitrary code.
|
||
Thanks to NGS Software for reporting this.</para></listitem>
|
||
<listitem><para>Check that creator of an aggregate function has the right to
|
||
execute the specified transition functions</para>
|
||
<para>
|
||
This oversight made it possible to bypass denial of EXECUTE
|
||
permission on a function.</para></listitem>
|
||
<listitem><para>Fix security and 64-bit issues in
|
||
contrib/intagg</para></listitem>
|
||
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
||
Jurka)</para></listitem>
|
||
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
||
many parameters (Neil)</para></listitem>
|
||
<listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain
|
||
constraints in all cases</para></listitem>
|
||
<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
|
||
<para>
|
||
The result of the join was mistakenly supposed to be sorted the same as the
|
||
left input. This could not only deliver mis-sorted output to the user, but
|
||
in case of nested merge joins could give outright wrong answers.
|
||
</para></listitem>
|
||
<listitem><para>Improve planning of grouped aggregate queries</para></listitem>
|
||
<listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command>
|
||
closes cursors created since the savepoint</para></listitem>
|
||
<listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
|
||
<listitem><para>Avoid SHGetSpecialFolderPath() on Windows
|
||
(Magnus)</para></listitem>
|
||
<listitem><para>Fix some problems in running pg_autovacuum as a Windows
|
||
service (Dave Page)</para></listitem>
|
||
<listitem><para>Multiple minor bug fixes in
|
||
pg_dump/pg_restore</para></listitem>
|
||
<listitem><para>Fix ecpg segfault with named structs used in
|
||
typedefs (Michael)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-0">
|
||
<title>Release 8.0</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-01-19</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
Microsoft Windows Native Server
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
This is the first <productname>PostgreSQL</productname> release
|
||
to run natively on <trademark class="registered">Microsoft Windows</> as
|
||
a server. It can run as a <productname>Windows</> service. This
|
||
release supports NT-based Windows releases like
|
||
<productname>Windows 2000 SP4</>, <productname>Windows XP</>, and
|
||
<productname>Windows 2003</>. Older releases like
|
||
<productname>Windows 95</>, <productname>Windows 98</>, and
|
||
<productname>Windows ME</> are not supported because these operating
|
||
systems do not have the infrastructure to support
|
||
<productname>PostgreSQL</productname>. A separate installer
|
||
project has been created to ease installation on
|
||
<productname>Windows</> — see <ulink
|
||
url="http://www.postgresql.org/ftp/win32/"></ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
Although tested throughout our release cycle, the Windows port
|
||
does not have the benefit of years of use in production
|
||
environments that <productname>PostgreSQL</productname> has on
|
||
Unix platforms. Therefore it should be treated with the same
|
||
level of caution as you would a new product.
|
||
</para>
|
||
|
||
<para>
|
||
Previous releases required the Unix emulation toolkit
|
||
<productname>Cygwin</> in order to run the server on Windows
|
||
operating systems. <productname>PostgreSQL</productname> has
|
||
supported native clients on Windows for many years.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Savepoints
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Savepoints allow specific parts of a transaction to be aborted
|
||
without affecting the remainder of the transaction. Prior
|
||
releases had no such capability; there was no way to recover
|
||
from a statement failure within a transaction except by
|
||
aborting the whole transaction. This feature is valuable for
|
||
application writers who require error recovery within a
|
||
complex transaction.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Point-In-Time Recovery
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases there was no way to recover from disk
|
||
drive failure except to restore from a previous backup or use
|
||
a standby replication server. Point-in-time recovery allows
|
||
continuous backup of the server. You can recover either to
|
||
the point of failure or to some transaction in the past.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Tablespaces
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tablespaces allow administrators to select different file systems
|
||
for storage of individual tables, indexes, and databases.
|
||
This improves performance and control over disk space
|
||
usage. Prior releases used <application>initlocation</> and
|
||
manual symlink management for such tasks.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Improved Buffer Management, <command>CHECKPOINT</command>,
|
||
<command>VACUUM</command>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
This release has a more intelligent buffer replacement strategy,
|
||
which will make better use of available shared buffers and
|
||
improve performance. The performance impact of vacuum and
|
||
checkpoints is also lessened.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Change Column Types
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
A column's data type can now be changed with <command>ALTER
|
||
TABLE</command>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New Perl Server-Side Language
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
A new version of the <application>plperl</> server-side language now
|
||
supports a persistent shared storage area, triggers, returning records
|
||
and arrays of records, and SPI calls to access the database.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Comma-separated-value (CSV) support in <command>COPY</command>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>COPY</command> can now read and write
|
||
comma-separated-value files. It has the flexibility to
|
||
interpret nonstandard quoting and separation characters too.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.0</title>
|
||
|
||
<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>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <option>READ COMMITTED</> serialization mode, volatile functions
|
||
now see the results of concurrent transactions committed up to the
|
||
beginning of each statement within the function, rather than up to the
|
||
beginning of the interactive command that called the function.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Functions declared <option>STABLE</> or <option>IMMUTABLE</> always
|
||
use the snapshot of the calling query, and therefore do not see the
|
||
effects of actions taken after the calling query starts, whether in
|
||
their own transaction or other transactions. Such a function must be
|
||
read-only, too, meaning that it cannot use any SQL commands other than
|
||
<command>SELECT</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Nondeferred <option>AFTER</> triggers are now fired immediately
|
||
after completion of the triggering query, rather than upon
|
||
finishing the current interactive command. This makes a
|
||
difference when the triggering query occurred within a function:
|
||
the trigger is invoked before the function proceeds to its next
|
||
operation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameters <varname>virtual_host</> and
|
||
<varname>tcpip_socket</> have been replaced with a more general
|
||
parameter <varname>listen_addresses</>. Also, the server now listens on
|
||
<literal>localhost</> by default, which eliminates the need for the
|
||
<literal>-i</> postmaster switch in many scenarios.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameters <varname>SortMem</> and
|
||
<varname>VacuumMem</> have been renamed to <varname>work_mem</>
|
||
and <varname>maintenance_work_mem</> to better reflect their
|
||
use. The original names are still supported in
|
||
<command>SET</command> and <command>SHOW</command>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameters <varname>log_pid</>,
|
||
<varname>log_timestamp</>, and <varname>log_source_port</> have been
|
||
replaced with a more general parameter <varname>log_line_prefix</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameter <varname>syslog</> has been
|
||
replaced with a more logical <varname>log_destination</> variable to
|
||
control the log output destination.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameter <varname>log_statement</> has been
|
||
changed so it can selectively log just database modification or
|
||
data definition statements. Server configuration parameter
|
||
<varname>log_duration</> now prints only when <varname>log_statement</>
|
||
prints the query.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Server configuration parameter <varname>max_expr_depth</> parameter has
|
||
been replaced with <varname>max_stack_depth</> which measures the
|
||
physical stack size rather than the expression nesting depth. This
|
||
helps prevent session termination due to stack overflow caused by
|
||
recursive functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The <function>length()</> function no longer counts trailing spaces in
|
||
<type>CHAR(n)</> values.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the
|
||
integer, not the leftmost N bits as before.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Updating an element or slice of a NULL array value now produces
|
||
a nonnull array result, namely an array containing
|
||
just the assigned-to positions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Syntax checking of array input values has been tightened up
|
||
considerably. Junk that was previously allowed in odd places with
|
||
odd results now causes an error. Empty-string element values
|
||
must now be written as <literal>""</>, rather than writing nothing.
|
||
Also changed behavior with respect to whitespace surrounding
|
||
array elements: trailing whitespace is now ignored, for symmetry
|
||
with leading whitespace (which has always been ignored).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overflow in integer arithmetic operations is now detected and
|
||
reported as an error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The arithmetic operators associated with the single-byte
|
||
<type>"char"</> data type have been removed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The <function>extract()</> function (also called
|
||
<function>date_part</>) now returns the proper year for BC dates.
|
||
It previously returned one less than the correct year. The
|
||
function now also returns the proper values for millennium and
|
||
century.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<type>CIDR</> values now must have their nonmasked bits be zero.
|
||
For example, we no longer allow
|
||
<literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
|
||
values should never have been accepted by
|
||
<productname>PostgreSQL</productname> and will now be rejected.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>EXECUTE</command> now returns a completion tag that
|
||
matches the executed statement.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>psql</>'s <command>\copy</> command now reads or
|
||
writes to the query's <literal>stdin/stdout</>, rather than
|
||
<application>psql</>'s <literal>stdin/stdout</>. The previous
|
||
behavior can be accessed via new
|
||
<option>pstdin</>/<option>pstdout</> parameters.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The JDBC client interface has been removed from the core
|
||
distribution, and is now hosted at <ulink url=
|
||
"http://jdbc.postgresql.org"></ulink>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The Tcl client interface has also been removed. There are several
|
||
Tcl interfaces now hosted at <ulink url=
|
||
"http://gborg.postgresql.org"></ulink>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The server now uses its own time zone database, rather than the
|
||
one supplied by the operating system. This will provide consistent
|
||
behavior across all platforms. In most cases, there should be
|
||
little noticeable difference in time zone behavior, except that
|
||
the time zone names used by <command>SET</>/<command>SHOW</>
|
||
<varname>TimeZone</> might be different from what your platform provides.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>Configure</>'s threading option no longer requires
|
||
users to run tests or edit configuration files; threading options
|
||
are now detected automatically.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Now that tablespaces have been implemented,
|
||
<application>initlocation</> has been removed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The API for user-defined GiST indexes has been changed. The
|
||
Union and PickSplit methods are now passed a pointer to a
|
||
special <structname>GistEntryVector</structname> structure,
|
||
rather than a <type>bytea</type>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Deprecated Features</title>
|
||
|
||
<para>
|
||
Some aspects of <productname>PostgreSQL</productname>'s behavior
|
||
have been determined to be suboptimal. For the sake of backward
|
||
compatibility these have not been removed in 8.0, but they are
|
||
considered deprecated and will be removed in the next major
|
||
release.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
The 8.1 release will remove the <function>to_char()</> function
|
||
for intervals.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The server now warns of empty strings passed to
|
||
<type>oid</type>/<type>float4</type>/<type>float8</type> data
|
||
types, but continues to interpret them as zeroes as before.
|
||
In the next major release, empty strings will be considered
|
||
invalid input for these data types.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
By default, tables in <productname>PostgreSQL</productname> 8.0
|
||
and earlier are created with <type>OID</>s. In the next release,
|
||
this will <emphasis>not</emphasis> be the case: to create a table
|
||
that contains <type>OID</>s, the <option>WITH OIDS</> clause must
|
||
be specified or the <varname>default_with_oids</varname>
|
||
configuration parameter must be set. Users are encouraged to
|
||
explicitly specify <option>WITH OIDS</> if their tables
|
||
require OIDs for compatibility with future releases of
|
||
<productname>PostgreSQL</productname>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
Below you will find a detailed account of the changes between
|
||
release 8.0 and the previous major release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Performance Improvements</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support cross-data-type index usage (Tom)
|
||
</para>
|
||
<para>
|
||
Before this change, many queries would not use an index if the data
|
||
types did not match exactly. This improvement makes index usage more
|
||
intuitive and consistent.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New buffer replacement strategy that improves caching (Jan)
|
||
</para>
|
||
<para>
|
||
Prior releases used a least-recently-used (LRU) cache to keep
|
||
recently referenced pages in memory. The LRU algorithm
|
||
did not consider the number of times a specific cache entry was
|
||
accessed, so large table scans could force out useful cache pages.
|
||
The new cache algorithm uses four separate lists to track most
|
||
recently used and most frequently used cache pages and dynamically
|
||
optimize their replacement based on the work load. This should
|
||
lead to much more efficient use of the shared buffer cache.
|
||
Administrators who have tested shared buffer sizes in the past
|
||
should retest with this new cache replacement policy.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add subprocess to write dirty buffers periodically to reduce
|
||
checkpoint writes (Jan)
|
||
</para>
|
||
<para>
|
||
In previous releases, the checkpoint process, which runs every few
|
||
minutes, would write all dirty buffers to the operating system's
|
||
buffer cache then flush all dirty operating system buffers to
|
||
disk. This resulted in a periodic spike in disk usage that often
|
||
hurt performance. The new code uses a background writer to trickle
|
||
disk writes at a steady pace so checkpoints have far fewer dirty
|
||
pages to write to disk. Also, the new code does not issue a global
|
||
<function>sync()</> call, but instead <function>fsync()</>s just
|
||
the files written since the last checkpoint. This should improve
|
||
performance and minimize degradation during checkpoints.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add ability to prolong vacuum to reduce performance impact (Jan)
|
||
</para>
|
||
<para>
|
||
On busy systems, <command>VACUUM</command> performs many I/O
|
||
requests which can hurt performance for other users. This
|
||
release allows you to slow down <command>VACUUM</command> to
|
||
reduce its impact on other users, though this increases the
|
||
total duration of <command>VACUUM</command>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
|
||
</para>
|
||
<para>
|
||
This improves the way indexes are scanned when many duplicate
|
||
values exist in the index.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use dynamically-generated table size estimates while planning (Tom)
|
||
</para>
|
||
<para>
|
||
Formerly the planner estimated table sizes using the values seen
|
||
by the last <command>VACUUM</command> or <command>ANALYZE</command>,
|
||
both as to physical table size (number of pages) and number of rows.
|
||
Now, the current physical table size is obtained from the kernel,
|
||
and the number of rows is estimated by multiplying the table size
|
||
by the row density (rows per page) seen by the last
|
||
<command>VACUUM</command> or <command>ANALYZE</command>. This should
|
||
produce more reliable estimates in cases where the table size has
|
||
changed significantly since the last housekeeping command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved index usage with <literal>OR</> clauses (Tom)
|
||
</para>
|
||
<para>
|
||
This allows the optimizer to use indexes in statements with many OR
|
||
clauses that would not have been indexed in the past. It can also use
|
||
multi-column indexes where the first column is specified and the second
|
||
column is part of an <literal>OR</> clause.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve matching of partial index clauses (Tom)
|
||
</para>
|
||
<para>
|
||
The server is now smarter about using partial indexes in queries
|
||
involving complex <option>WHERE</> clauses.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of the GEQO optimizer (Tom)
|
||
</para>
|
||
<para>
|
||
The GEQO optimizer is used to plan queries involving many tables (by
|
||
default, twelve or more). This release speeds up the way queries are
|
||
analyzed to decrease time spent in optimization.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Miscellaneous optimizer improvements
|
||
</para>
|
||
<para>
|
||
There is not room here to list all the minor improvements made, but
|
||
numerous special cases work better than in prior releases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve lookup speed for C functions (Tom)
|
||
</para>
|
||
<para>
|
||
This release uses a hash table to lookup information for dynamically
|
||
loaded C functions. This improves their speed so they perform nearly as
|
||
quickly as functions that are built into the server executable.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add type-specific <command>ANALYZE</command> statistics
|
||
capability (Mark Cave-Ayland)
|
||
</para>
|
||
<para>
|
||
This feature allows more flexibility in generating statistics
|
||
for nonstandard data types.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>ANALYZE</command> now collects statistics for
|
||
expression indexes (Tom)
|
||
</para>
|
||
<para>
|
||
Expression indexes (also called functional indexes) allow users to
|
||
index not just columns but the results of expressions and function
|
||
calls. With this release, the optimizer can gather and use statistics
|
||
about the contents of expression indexes. This will greatly improve
|
||
the quality of planning for queries in which an expression index is
|
||
relevant.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New two-stage sampling method for <command>ANALYZE</command>
|
||
(Manfred Koizar)
|
||
</para>
|
||
<para>
|
||
This gives better statistics when the density of valid rows is very
|
||
different in different regions of a table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Speed up <command>TRUNCATE</command> (Tom)
|
||
</para>
|
||
<para>
|
||
This buys back some of the performance loss observed in 7.4, while still
|
||
keeping <command>TRUNCATE</command> transaction-safe.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Server Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add WAL file archiving and point-in-time recovery (Simon Riggs)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add tablespaces so admins can control disk layout (Gavin)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a built-in log rotation program (Andreas Pflug)
|
||
</para>
|
||
<para>
|
||
It is now possible to log server messages conveniently without
|
||
relying on either <application>syslog</> or an external log
|
||
rotation program.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new read-only server configuration parameters to show server
|
||
compile-time settings: <varname>block_size</>,
|
||
<varname>integer_datetimes</>, <varname>max_function_args</>,
|
||
<varname>max_identifier_length</>, <varname>max_index_keys</> (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make quoting of <literal>sameuser</>, <literal>samegroup</>, and
|
||
<literal>all</> remove special meaning of these terms in
|
||
<filename>pg_hba.conf</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use clearer IPv6 name <literal>::1/128</> for
|
||
<literal>localhost</> in default <filename>pg_hba.conf</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use CIDR format in <filename>pg_hba.conf</> examples (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rename server configuration parameters <varname>SortMem</> and
|
||
<varname>VacuumMem</> to <varname>work_mem</> and
|
||
<varname>maintenance_work_mem</> (Old names still supported) (Tom)
|
||
</para>
|
||
<para>
|
||
This change was made to clarify that bulk operations such as index and
|
||
foreign key creation use <varname>maintenance_work_mem</>, while
|
||
<varname>work_mem</> is for workspaces used during query execution.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow logging of session disconnections using server configuration
|
||
<varname>log_disconnections</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new server configuration parameter <varname>log_line_prefix</> to
|
||
allow control of information emitted in each log line (Andrew)
|
||
</para>
|
||
<para>
|
||
Available information includes user name, database name, remote IP
|
||
address, and session start time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove server configuration parameters <varname>log_pid</>,
|
||
<varname>log_timestamp</>, <varname>log_source_port</>; functionality
|
||
superseded by <varname>log_line_prefix</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace the <varname>virtual_host</> and <varname>tcpip_socket</>
|
||
parameters with a unified <varname>listen_addresses</> parameter
|
||
(Andrew, Tom)
|
||
</para>
|
||
<para>
|
||
<varname>virtual_host</> could only specify a single IP address to
|
||
listen on. <varname>listen_addresses</> allows multiple addresses
|
||
to be specified.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Listen on localhost by default, which eliminates the need for the
|
||
<option>-i</> postmaster switch in many scenarios (Andrew)
|
||
</para>
|
||
<para>
|
||
Listening on localhost (<literal>127.0.0.1</>) opens no new
|
||
security holes but allows configurations like Windows and JDBC,
|
||
which do not support local sockets, to work without special
|
||
adjustments.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>syslog</> server configuration parameter, and add more
|
||
logical <varname>log_destination</> variable to control log output
|
||
location (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change server configuration parameter <varname>log_statement</> to take
|
||
values <varname>all</>, <varname>mod</>, <varname>ddl</>, or
|
||
<varname>none</> to select which queries are logged (Bruce)
|
||
</para>
|
||
<para>
|
||
This allows administrators to log only data definition changes or
|
||
only data modification statements.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Some logging-related configuration parameters could formerly be adjusted
|
||
by ordinary users, but only in the <quote>more verbose</> direction.
|
||
They are now treated more strictly: only superusers can set them.
|
||
However, a superuser can use <command>ALTER USER</> to provide per-user
|
||
settings of these values for non-superusers. Also, it is now possible
|
||
for superusers to set values of superuser-only configuration parameters
|
||
via <literal>PGOPTIONS</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow configuration files to be placed outside the data directory (mlw)
|
||
</para>
|
||
<para>
|
||
By default, configuration files are kept in the cluster's top directory.
|
||
With this addition, configuration files can be placed outside the
|
||
data directory, easing administration.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Plan prepared queries only when first executed so constants can be
|
||
used for statistics (Oliver Jowett)
|
||
</para>
|
||
<para>
|
||
Prepared statements plan queries once and execute them many
|
||
times. While prepared queries avoid the overhead of re-planning
|
||
on each use, the quality of the plan suffers from not knowing the exact
|
||
parameters to be used in the query. In this release, planning of
|
||
unnamed prepared statements is delayed until the first execution,
|
||
and the actual parameter values of that execution are used as
|
||
optimization hints. This allows use of out-of-line parameter passing
|
||
without incurring a performance penalty.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>DECLARE CURSOR</command> to take parameters
|
||
(Oliver Jowett)
|
||
</para>
|
||
<para>
|
||
It is now useful to issue <command>DECLARE CURSOR</command> in a
|
||
<function>Parse</> message with parameters. The parameter values
|
||
sent at <function>Bind</> time will be substituted into the
|
||
execution of the cursor's query.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix hash joins and aggregates of <type>inet</type> and
|
||
<type>cidr</type> data types (Tom)
|
||
</para>
|
||
<para>
|
||
Release 7.4 handled hashing of mixed <type>inet</type> and
|
||
<type>cidr</type> values incorrectly. (This bug did not exist
|
||
in prior releases because they wouldn't try to hash either
|
||
data type.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <varname>log_duration</> print only when <varname>log_statement</>
|
||
prints the query (Ed L.)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Query Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add savepoints (nested transactions) (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Unsupported isolation levels are now accepted and promoted to the
|
||
nearest supported level (Peter)
|
||
</para>
|
||
<para>
|
||
The SQL specification states that if a database doesn't support a
|
||
specific isolation level, it should use the next more restrictive level.
|
||
This change complies with that recommendation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>BEGIN WORK</command> to specify transaction
|
||
isolation levels like <command>START TRANSACTION</command> does
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix table permission checking for cases in which rules generate
|
||
a query type different from the originally submitted query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
|
||
David Fetter)
|
||
</para>
|
||
<para>
|
||
In previous releases, because single quotes had to be used to
|
||
quote a function's body, the use of single quotes inside the
|
||
function text required use of two single quotes or other error-prone
|
||
notations. With this release we add the ability to use "dollar
|
||
quoting" to quote a block of text. The ability to use different
|
||
quoting delimiters at different nesting levels greatly simplifies
|
||
the task of quoting correctly, especially in complex functions.
|
||
Dollar quoting can be used anywhere quoted text is needed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom)
|
||
</para>
|
||
<para>
|
||
<option>CASE</> no longer evaluates the tested expression multiple
|
||
times. This has benefits when the expression is complex or is
|
||
volatile.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Test <option>HAVING</> before computing target list of an
|
||
aggregate query (Tom)
|
||
</para>
|
||
<para>
|
||
Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
|
||
... GROUP BY ... HAVING SUM(lose) > 0</>. This should work but formerly
|
||
could fail with divide-by-zero.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace <varname>max_expr_depth</> parameter with
|
||
<varname>max_stack_depth</> parameter, measured in kilobytes of stack
|
||
size (Tom)
|
||
</para>
|
||
<para>
|
||
This gives us a fairly bulletproof defense against crashing due to
|
||
runaway recursive functions. Instead of measuring the depth of expression
|
||
nesting, we now directly measure the size of the execution stack.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow arbitrary row expressions (Tom)
|
||
</para>
|
||
<para>
|
||
This release allows SQL expressions to contain arbitrary composite
|
||
types, that is, row values. It also allows functions to more easily
|
||
take rows as arguments and return row values.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator
|
||
in row and subselect comparisons (Fabien Coelho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid locale-specific case conversion of basic ASCII letters in
|
||
identifiers and keywords (Tom)
|
||
</para>
|
||
<para>
|
||
This solves the <quote>Turkish problem</> with mangling of words
|
||
containing <literal>I</> and <literal>i</>. Folding of characters
|
||
outside the 7-bit-ASCII set is still locale-aware.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve syntax error reporting (Fabien, Tom)
|
||
</para>
|
||
<para>
|
||
Syntax error reports are more useful than before.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <command>EXECUTE</command> to return a completion tag
|
||
matching the executed statement (Kris Jurka)
|
||
</para>
|
||
<para>
|
||
Previous releases return an <command>EXECUTE</command> tag for
|
||
any <command>EXECUTE</command> call. In this release, the tag
|
||
returned will reflect the command executed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom)
|
||
</para>
|
||
<para>
|
||
Such a clause makes no logical sense, but in some cases the rule
|
||
decompiler formerly produced this syntax.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Object Manipulation Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>COMMENT ON</> for casts, conversions, languages,
|
||
operator classes, and large objects (Christopher)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new server configuration parameter <varname>default_with_oids</> to
|
||
control whether tables are created with <type>OID</>s by default (Neil)
|
||
</para>
|
||
<para>
|
||
This allows administrators to control whether <command>CREATE
|
||
TABLE</command> commands create tables with or without <type>OID</>
|
||
columns by default. (Note: the current factory default setting for
|
||
<varname>default_with_oids</> is <literal>TRUE</>, but the default
|
||
will become <literal>FALSE</> in future releases.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>WITH</> / <option>WITHOUT OIDS</> clause to
|
||
<command>CREATE TABLE AS</command> (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</>
|
||
column (<command>ALTER TABLE SET WITHOUT OIDS</> still works)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow composite types as table columns (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>ALTER ... ADD COLUMN</> with defaults and
|
||
<option>NOT NULL</> constraints; works per SQL spec (Rod)
|
||
</para>
|
||
<para>
|
||
It is now possible for <option>ADD COLUMN</> to create a column
|
||
that is not initially filled with NULLs, but with a specified
|
||
default value.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER COLUMN TYPE</> to change column's type (Rod)
|
||
</para>
|
||
<para>
|
||
It is now possible to alter a column's data type without dropping
|
||
and re-adding the column.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow multiple <command>ALTER</> actions in a single <command>ALTER
|
||
TABLE</command> command (Rod)
|
||
</para>
|
||
<para>
|
||
This is particularly useful for <command>ALTER</> commands that
|
||
rewrite the table (which include <option>ALTER COLUMN TYPE</> and
|
||
<option>ADD COLUMN</> with a default). By grouping
|
||
<command>ALTER</> commands together, the table need be rewritten
|
||
only once.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
|
||
columns (Tom)
|
||
</para>
|
||
<para>
|
||
This falls out from the new capability of specifying defaults for new
|
||
columns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow changing the owners of aggregates, conversions, databases,
|
||
functions, operators, operator classes, schemas, types, and tablespaces
|
||
(Christopher, Euler Taveira de Oliveira)
|
||
</para>
|
||
<para>
|
||
Previously this required modifying the system tables directly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow temporary object creation to be limited to <option>SECURITY
|
||
DEFINER</> functions (Sean Chittenden)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher)
|
||
</para>
|
||
<para>
|
||
Prior to this release, there was no way to clear an auto-cluster
|
||
specification except to modify the system tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Constraint/Index/<type>SERIAL</> names are now
|
||
<replaceable>table_column_type</>
|
||
with numbers appended to guarantee uniqueness within the schema
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
The SQL specification states that such names should be unique
|
||
within a schema.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_get_serial_sequence()</> to return a
|
||
<type>SERIAL</> column's sequence name (Christopher)
|
||
</para>
|
||
<para>
|
||
This allows automated scripts to reliably find the <type>SERIAL</>
|
||
sequence name.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Warn when primary/foreign key data type mismatch requires costly lookup
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <command>ALTER INDEX</> command to allow moving of indexes
|
||
between tablespaces (Gavin)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER TABLE OWNER</> change dependent sequence
|
||
ownership too (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Utility Command Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE SCHEMA</command> to create triggers,
|
||
indexes, and sequences (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien
|
||
Coelho)
|
||
</para>
|
||
<para>
|
||
This allows <option>ALSO</> to be added to rule creation to contrast it with
|
||
<option>INSTEAD</> rules.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo)
|
||
</para>
|
||
<para>
|
||
This allows the <command>LOCK</command> command to fail if it
|
||
would have to wait for the requested lock.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>COPY</command> to read and write
|
||
comma-separated-value (CSV) files (Andrew, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Generate error if the <command>COPY</command> delimiter and NULL
|
||
string conflict (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>GRANT</command>/<command>REVOKE</command> behavior
|
||
follows the SQL spec more closely
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid locking conflict between <command>CREATE INDEX</command>
|
||
and <command>CHECKPOINT</command> (Tom)
|
||
</para>
|
||
<para>
|
||
In 7.3 and 7.4, a long-running B-tree index build could block concurrent
|
||
<command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
|
||
WAL log could not be recycled.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Database-wide <command>ANALYZE</command> does not hold locks
|
||
across tables (Tom)
|
||
</para>
|
||
<para>
|
||
This reduces the potential for deadlocks against other backends
|
||
that want exclusive locks on tables. To get the benefit of this
|
||
change, do not execute database-wide <command>ANALYZE</command>
|
||
inside a transaction block (<command>BEGIN</command> block); it
|
||
must be able to commit and start a new transaction for each
|
||
table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>REINDEX</command> does not exclusively lock the index's
|
||
parent table anymore
|
||
</para>
|
||
<para>
|
||
The index itself is still exclusively locked, but readers of the
|
||
table can continue if they are not using the particular index
|
||
being rebuilt.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Erase MD5 user passwords when a user is renamed (Bruce)
|
||
</para>
|
||
<para>
|
||
<productname>PostgreSQL</productname> uses the user name as salt
|
||
when encrypting passwords via MD5. When a user's name is changed,
|
||
the salt will no longer match the stored MD5 password, so the
|
||
stored password becomes useless. In this release a notice is
|
||
generated and the password is cleared. A new password must then
|
||
be assigned if the user is to be able to log in with a password.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <application>pg_ctl</> <option>kill</> option for Windows (Andrew)
|
||
</para>
|
||
<para>
|
||
Windows does not have a <literal>kill</> command to send signals to
|
||
backends so this capability was added to <application>pg_ctl</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Information schema improvements
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>--pwfile</> option to
|
||
<application>initdb</application> so the initial password can be
|
||
set by GUI tools (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Detect locale/encoding mismatch in
|
||
<application>initdb</application> (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>register</> command to <application>pg_ctl</> to
|
||
register Windows operating system service (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Data Type and Function Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
More complete support for composite types (row types) (Tom)
|
||
</para>
|
||
<para>
|
||
Composite values can be used in many places where only scalar values
|
||
worked before.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reject nonrectangular array values as erroneous (Joe)
|
||
</para>
|
||
<para>
|
||
Formerly, <function>array_in</> would silently build a
|
||
surprising result.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overflow in integer arithmetic operations is now detected (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The arithmetic operators associated with the single-byte
|
||
<type>"char"</> data type have been removed.
|
||
</para>
|
||
<para>
|
||
Formerly, the parser would select these operators in many situations
|
||
where an <quote>unable to select an operator</> error would be more
|
||
appropriate, such as <literal>null * null</>. If you actually want
|
||
to do arithmetic on a <type>"char"</> column, you can cast it to
|
||
integer explicitly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Syntax checking of array input values considerably tightened up (Joe)
|
||
</para>
|
||
<para>
|
||
Junk that was previously allowed in odd places with odd results
|
||
now causes an <literal>ERROR</>, for example, non-whitespace
|
||
after the closing right brace.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Empty-string array element values must now be written as
|
||
<literal>""</>, rather than writing nothing (Joe)
|
||
</para>
|
||
<para>
|
||
Formerly, both ways of writing an empty-string element value were
|
||
allowed, but now a quoted empty string is required. The case where
|
||
nothing at all appears will probably be considered to be a NULL
|
||
element value in some future release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Array element trailing whitespace is now ignored (Joe)
|
||
</para>
|
||
<para>
|
||
Formerly leading whitespace was ignored, but trailing whitespace
|
||
between an element value and the delimiter or right brace was
|
||
significant. Now trailing whitespace is also ignored.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Emit array values with explicit array bounds when lower bound is not one
|
||
(Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Accept <literal>YYYY-monthname-DD</> as a date string (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>netmask</> and <function>hostmask</> functions
|
||
return maximum-length mask length (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change factorial function to return <type>numeric</type> (Gavin)
|
||
</para>
|
||
<para>
|
||
Returning <type>numeric</type> allows the factorial function to
|
||
work for a wider range of input values.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>to_char</>/<function>to_date()</> date conversion
|
||
improvements (Kurt Roeckx, Fabien Coelho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>length()</> disregard trailing spaces in
|
||
<type>CHAR(n)</> (Gavin)
|
||
</para>
|
||
<para>
|
||
This change was made to improve consistency: trailing spaces are
|
||
semantically insignificant in <type>CHAR(n)</> data, so they
|
||
should not be counted by <function>length()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Warn about empty string being passed to
|
||
<type>OID</>/<type>float4</>/<type>float8</> data types (Neil)
|
||
</para>
|
||
<para>
|
||
8.1 will throw an error instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow leading or trailing whitespace in
|
||
<type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</>
|
||
input routines
|
||
(Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Better support for IEEE <literal>Infinity</> and <literal>NaN</>
|
||
values in <type>float4</type>/<type>float8</type> (Neil)
|
||
</para>
|
||
<para>
|
||
These should now work on all platforms that support IEEE-compliant
|
||
floating point arithmetic.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>week</> option to <function>date_trunc()</> (Robert Creager)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>to_char</function> for <literal>1 BC</>
|
||
(previously it returned <literal>1 AD</>) (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>date_part(year)</> for BC dates (previously it
|
||
returned one less than the correct year) (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>date_part()</> to return the proper millennium and
|
||
century (Fabien Coelho)
|
||
</para>
|
||
<para>
|
||
In previous versions, the century and millennium results had a wrong
|
||
number and started in the wrong year, as compared to standard
|
||
reckoning of such things.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>ceiling()</> as an alias for <function>ceil()</>,
|
||
and <function>power()</> as an alias for <function>pow()</> for
|
||
standards compliance (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <function>ln()</>, <function>log()</>,
|
||
<function>power()</>, and <function>sqrt()</> to emit the correct
|
||
<literal>SQLSTATE</> error codes for certain error conditions, as
|
||
specified by SQL:2003 (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>width_bucket()</> function as defined by SQL:2003 (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>generate_series()</> functions to simplify working
|
||
with numeric sets (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>upper/lower/initcap()</> functions to work with
|
||
multibyte encodings (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add boolean and bitwise integer <option>AND</>/<option>OR</>
|
||
aggregates (Fabien Coelho)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New session information functions to return network addresses for client
|
||
and server (Sean Chittenden)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add function to determine the area of a closed path (Sean Chittenden)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add function to send cancel request to other backends (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <type>interval</> plus <type>datetime</> operators (Tom)
|
||
</para>
|
||
<para>
|
||
The reverse ordering, <type>datetime</> plus <type>interval</>,
|
||
was already supported, but both are required by the SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Casting an integer to <type>BIT(N)</> selects the rightmost N bits
|
||
of the integer
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
In prior releases, the leftmost N bits were selected, but this was
|
||
deemed unhelpful, not to mention inconsistent with casting from bit
|
||
to int.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require <type>CIDR</> values to have all nonmasked bits be zero
|
||
(Kevin Brintnall)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Server-Side Language Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <literal>READ COMMITTED</> serialization mode, volatile functions
|
||
now see the results of concurrent transactions committed up to the
|
||
beginning of each statement within the function, rather than up to the
|
||
beginning of the interactive command that called the function.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always
|
||
use the snapshot of the calling query, and therefore do not see the
|
||
effects of actions taken after the calling query starts, whether in
|
||
their own transaction or other transactions. Such a function must be
|
||
read-only, too, meaning that it cannot use any SQL commands other than
|
||
<command>SELECT</>. There is a considerable performance gain from
|
||
declaring a function <literal>STABLE</> or <literal>IMMUTABLE</>
|
||
rather than <literal>VOLATILE</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Nondeferred <option>AFTER</> triggers are now fired immediately
|
||
after completion of the triggering query, rather than upon
|
||
finishing the current interactive command. This makes a difference
|
||
when the triggering query occurred within a function: the trigger
|
||
is invoked before the function proceeds to its next operation. For
|
||
example, if a function inserts a new row into a table, any
|
||
nondeferred foreign key checks occur before proceeding with the
|
||
function.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow function parameters to be declared with names (Dennis Björklund)
|
||
</para>
|
||
<para>
|
||
This allows better documentation of functions. Whether the names
|
||
actually do anything depends on the specific function language
|
||
being used.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund)
|
||
</para>
|
||
<para>
|
||
This basically creates an automatic alias for each named parameter.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
|
||
</para>
|
||
<para>
|
||
This allows us to catch simple syntax errors sooner.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
More support for composite types (row and record variables) in PL/pgSQL
|
||
</para>
|
||
<para>
|
||
For example, it now works to pass a rowtype variable to another function
|
||
as a single variable.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Default values for PL/pgSQL variables can now reference previously
|
||
declared variables
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve parsing of PL/pgSQL FOR loops (Tom)
|
||
</para>
|
||
<para>
|
||
Parsing is now driven by presence of <literal>".."</> rather than
|
||
data type of <option>FOR</> variable. This makes no difference for
|
||
correct functions, but should result in more understandable error
|
||
messages when a mistake is made.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In PL/Tcl, SPI commands are now run in subtransactions. If an error
|
||
occurs, the subtransaction is cleaned up and the error is reported
|
||
as an ordinary Tcl error, which can be trapped with <literal>catch</>.
|
||
Formerly, it was not possible to catch such errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Accept <command>ELSEIF</> in PL/pgSQL (Neil)
|
||
</para>
|
||
<para>
|
||
Previously PL/pgSQL only allowed <command>ELSIF</>, but many people
|
||
are accustomed to spelling this keyword <command>ELSEIF</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title><application>psql</> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>psql</> information display about database
|
||
objects (Christopher)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>psql</> to display group membership in
|
||
<command>\du</> and <command>\dg</> (Markus Bertheau)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <application>psql</> <command>\dn</command> from showing
|
||
temporary schemas (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>psql</> to handle tilde user expansion for file
|
||
names (Zach Irmen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>psql</> to display fancy prompts, including
|
||
color, via <application>readline</> (Reece Hart, Chet Ramey)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax
|
||
fully (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show the location of syntax errors (Fabien Coelho, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>CLUSTER</command> information to <application>psql</>
|
||
<command>\d</> display
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <application>psql</> <command>\copy stdin/stdout</> to read
|
||
from command input/output (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>pstdin</>/<option>pstdout</> to read from
|
||
<application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark
|
||
Feit)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
|
||
(Bruce)
|
||
</para>
|
||
<para>
|
||
This allows a central file where global <application>psql</> startup commands can
|
||
be stored.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <application>psql</> <command>\d+</> indicate if the table
|
||
has an <type>OID</> column (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
On Windows, use binary mode in <application>psql</> when reading files so control-Z
|
||
is not seen as end-of-file
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <command>\dn+</> show permissions and description for schemas (Dennis
|
||
Björklund)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow boolean settings to be set using upper or lower case (Michael Paesold)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title><application>pg_dump</> Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use dependency information to improve the reliability of
|
||
<application>pg_dump</> (Tom)
|
||
</para>
|
||
<para>
|
||
This should solve the longstanding problems with related objects
|
||
sometimes being dumped in the wrong order.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <application>pg_dump</> output objects in alphabetical order if possible (Tom)
|
||
</para>
|
||
<para>
|
||
This should make it easier to identify changes between
|
||
dump files.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho)
|
||
</para>
|
||
<para>
|
||
This makes <application>pg_restore</>'s behavior similar to the
|
||
results of feeding a <application>pg_dump</> output script to
|
||
<application>psql</>. In most cases, ignoring errors and plowing
|
||
ahead is the most useful thing to do. Also added was a pg_restore
|
||
option to give the old behavior of exiting on an error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>pg_restore</> <option>-l</> display now includes
|
||
objects' schema names
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New begin/end markers in <application>pg_dump</> text output (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add start/stop times for
|
||
<application>pg_dump</>/<application>pg_dumpall</> in verbose mode
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow most <application>pg_dump</> options in
|
||
<application>pg_dumpall</> (Christopher)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <application>pg_dump</> use <command>ALTER OWNER</> rather
|
||
than <command>SET SESSION AUTHORIZATION</> by default
|
||
(Christopher)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>libpq Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>PQmbdsplen()</> which returns the display length
|
||
of a character (Tatsuo)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add thread locking to <application>SSL</> and
|
||
<application>Kerberos</> connections (Manfred Spraul)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and
|
||
<function>PQoidStatus()</> to work on <command>EXECUTE</command>
|
||
commands (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>PQserverVersion()</> to provide more convenient
|
||
access to the server version number (Greg Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>PQprepare/PQsendPrepared()</> functions to support
|
||
preparing statements without necessarily specifying the data types
|
||
of their parameters (Abhijit Menon-Sen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Source Code Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Shell script commands converted to C versions for Windows support (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create an extension makefile framework (Fabien Coelho, Peter)
|
||
</para>
|
||
<para>
|
||
This simplifies the task of building extensions outside the original
|
||
source tree.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support relocatable installations (Bruce)
|
||
</para>
|
||
<para>
|
||
Directory paths for installed files (such as the
|
||
<filename>/share</> directory) are now computed relative to the
|
||
actual location of the executables, so that an installation tree
|
||
can be moved to another place without reconfiguring and
|
||
rebuilding.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use <option>--with-docdir</> to choose installation location of documentation; also
|
||
allow <option>--infodir</> (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <option>--without-docdir</> to prevent installation of documentation (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Upgrade to <application>DocBook</> V4.2 SGML (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <literal>PostgreSQL</> <application>CVS</> tag (Marc)
|
||
</para>
|
||
<para>
|
||
This was done to make it easier for organizations to manage their
|
||
own copies of the <productname>PostgreSQL</productname>
|
||
<application>CVS</> repository. File version stamps from the master
|
||
repository will not get munged by checking into or out of a copied
|
||
repository.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clarify locking code (Manfred Koizar)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Buffer manager cleanup (Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Decouple platform tests from CPU spinlock code (Bruce, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add inlined test-and-set code on PA-RISC for <application>gcc</>
|
||
(ViSolve, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve i386 spinlock code (Manfred Spraul)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean up spinlock assembly code to avoid warnings from newer
|
||
<application>gcc</> releases (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove JDBC from source tree; now a separate project
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the libpgtcl client interface; now a separate project
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
More accurately estimate memory and file descriptor usage (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improvements to the Mac OS X startup scripts (Ray A.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <function>fsync()</> test program (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Major documentation improvements (Neil, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <application>pg_encoding</application>; not needed
|
||
anymore
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <application>pg_id</application>; not needed anymore
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <application>initlocation</application>; not needed
|
||
anymore
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Auto-detect thread flags (no more manual testing) (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use Olson's public domain <application>timezone</> library (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
With threading enabled, use thread flags on Unixware for
|
||
backend executables too (Bruce)
|
||
</para>
|
||
<para>
|
||
Unixware cannot mix threaded and nonthreaded object files in the
|
||
same executable, so everything must be compiled as threaded.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>psql</> now uses a <application>flex</>-generated
|
||
lexical analyzer to process command strings
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reimplement the linked list data structure used throughout the
|
||
backend (Neil)
|
||
</para>
|
||
<para>
|
||
This improves performance by allowing list append and length
|
||
operations to be more efficient.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow dynamically loaded modules to create their own server configuration
|
||
parameters (Thomas Hallgren)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New Brazilian version of FAQ (Euler Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add French FAQ (Guillaume Lelarge)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <application>pgevent</> for Windows logging
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make libpq and ECPG build as proper shared libraries on OS X (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Contrib Changes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Overhaul of <filename>contrib/dblink</> (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>contrib/dbmirror</> improvements (Steven Singer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <filename>contrib/xml2</> (John Gray, Torchbox)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Updated <filename>contrib/mysql</filename>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New version of <filename>contrib/btree_gist</> (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <filename>contrib/trgm</>, trigram matching for
|
||
<productname>PostgreSQL</productname> (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Many <filename>contrib/tsearch2</> improvements (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging
|
||
subprocess
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Removed <filename>contrib/rserv</>: obsoleted by various separate projects
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-25">
|
||
<title>Release 7.4.25</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-03-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.24.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.25</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</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)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
||
for the specified conversion function (Heikki)
|
||
</para>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
||
of known timezone abbreviations (Xavier Bugaud)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-24">
|
||
<title>Release 7.4.24</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-02-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.23.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.24</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of URLs in <function>headline()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of overlength headlines in <function>headline()</>
|
||
function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent possible Assert failure or misconversion if an encoding
|
||
conversion is created with the wrong conversion function for the
|
||
specified pair of encodings (Tom, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix uninitialized variables in <filename>contrib/tsearch2</>'s
|
||
<function>get_covers()</> function (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in <function>to_char()</>'s handling of <literal>TH</>
|
||
format codes (Andreas Scherbaum)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make all documentation reference <literal>pgsql-bugs</> and/or
|
||
<literal>pgsql-hackers</> as appropriate, instead of the
|
||
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
||
mailing lists (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-23">
|
||
<title>Release 7.4.23</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-11-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.22.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.23</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix backend crash when the client encoding cannot represent a localized
|
||
error message (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
We have addressed similar issues before, but it would still fail if
|
||
the <quote>character has no equivalent</> message itself couldn't
|
||
be converted. The fix is to disable localization and send the plain
|
||
ASCII error message when we detect such a situation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect tsearch2 headline generation when single query
|
||
item matches first word of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix improper display of fractional seconds in interval values when
|
||
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
||
build (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
||
behave correctly when the passed tuple and tuple descriptor have
|
||
different numbers of columns (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This situation is normal when a table has had columns added or removed,
|
||
but these two functions didn't handle it properly.
|
||
The only likely consequence is an incorrect error indication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-22">
|
||
<title>Release 7.4.22</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-09-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.21.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.22</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix datetime input functions to correctly detect integer overflow when
|
||
running on a 64-bit platform (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of writing very long log messages to syslog (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
||
ON</> query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
||
boolean results always result in two groups, regardless of the
|
||
expressions' contents (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is very substantially more accurate than the regular <literal>GROUP
|
||
BY</> estimate for certain boolean tests like <replaceable>col</>
|
||
<literal>IS NULL</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
||
error reporting after failure to send a SQL command (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-21">
|
||
<title>Release 7.4.21</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-06-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious bug fix over 7.4.20.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.21</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Before this fix, a negative constant in a view or rule might be dumped
|
||
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
||
be <literal>(-42)::integer</> due to operator precedence rules.
|
||
Usually this would make little difference, but it could interact with
|
||
another recent patch to cause
|
||
<productname>PostgreSQL</> to reject what had been a valid
|
||
<command>SELECT DISTINCT</> view query. Since this could result in
|
||
<application>pg_dump</> output failing to reload, it is being treated
|
||
as a high-priority fix. The only released versions in which dump
|
||
output is actually incorrect are 8.3.1 and 8.2.7.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-20">
|
||
<title>Release 7.4.20</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>never released</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.19.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.20</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
However, if you are upgrading from a version earlier than 7.4.11,
|
||
see the release notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix conversions between ISO-8859-5 and other encodings to handle
|
||
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
||
two dots) (Sergey Burladyan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a few datatype input functions
|
||
that were allowing unused bytes in their results to contain
|
||
uninitialized, unpredictable values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failures in which two apparently identical literal
|
||
values were not seen as equal, resulting in the parser complaining
|
||
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
||
expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a corner case in regular-expression substring matching
|
||
(<literal>substring(<replaceable>string</> from
|
||
<replaceable>pattern</>)</literal>) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The problem occurs when there is a match to the pattern overall but
|
||
the user has specified a parenthesized subexpression and that
|
||
subexpression hasn't got a match. An example is
|
||
<literal>substring('foo' from 'foo(bar)?')</>.
|
||
This should return NULL, since <literal>(bar)</> isn't matched, but
|
||
it was mistakenly returning the whole-pattern match instead (ie,
|
||
<literal>foo</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect result from <application>ecpg</>'s
|
||
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
||
4.3 (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This problem affects <quote>old style</> (V0) C functions that
|
||
return boolean. The fix is already in 8.3, but the need to
|
||
back-patch it was not realized at the time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
||
race condition (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In rare cases a session that had just executed a
|
||
<command>LISTEN</> might not get a notification, even though
|
||
one would be expected because the concurrent transaction executing
|
||
<command>NOTIFY</> was observed to commit later.
|
||
</para>
|
||
|
||
<para>
|
||
A side effect of the fix is that a transaction that has executed
|
||
a not-yet-committed <command>LISTEN</> command will not see any
|
||
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
||
should it choose to look; formerly it would have. This behavior
|
||
was never documented one way or the other, but it is possible that
|
||
some applications depend on the old behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix display of constant expressions in <literal>ORDER BY</>
|
||
and <literal>GROUP BY</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An explictly casted constant would be shown incorrectly. This could
|
||
for example lead to corruption of a view definition during
|
||
dump and reload.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>libpq</> to handle NOTICE messages correctly
|
||
during COPY OUT (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This failure has only been observed to occur when a user-defined
|
||
datatype's output routine issues a NOTICE, but there is no
|
||
guarantee it couldn't happen due to other causes.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-19">
|
||
<title>Release 7.4.19</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-01-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.18,
|
||
including fixes for significant security issues.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.19</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent functions in indexes from executing with the privileges of
|
||
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Functions used in index expressions and partial-index
|
||
predicates are evaluated whenever a new table entry is made. It has
|
||
long been understood that this poses a risk of trojan-horse code
|
||
execution if one modifies a table owned by an untrustworthy user.
|
||
(Note that triggers, defaults, check constraints, etc. pose the
|
||
same type of risk.) But functions in indexes pose extra danger
|
||
because they will be executed by routine maintenance operations
|
||
such as <command>VACUUM FULL</>, which are commonly performed
|
||
automatically under a superuser account. For example, a nefarious user
|
||
can execute code with superuser privileges by setting up a
|
||
trojan-horse index definition and waiting for the next routine vacuum.
|
||
The fix arranges for standard maintenance operations
|
||
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
||
and <command>CLUSTER</>) to execute as the table owner rather than
|
||
the calling user, using the same privilege-switching mechanism already
|
||
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
||
this security measure, execution of <command>SET SESSION
|
||
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
||
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
||
</para>
|
||
|
||
<para>
|
||
Suitably crafted regular-expression patterns could cause crashes,
|
||
infinite or near-infinite looping, and/or massive memory consumption,
|
||
all of which pose denial-of-service hazards for applications that
|
||
accept regex search patterns from untrustworthy sources.
|
||
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
|
||
<para>
|
||
The fix that appeared for this in 7.4.18 was incomplete, as it plugged
|
||
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
||
CVE-2007-3278)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
||
(SELECT ...)</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in <function>translate()</> when using a multibyte
|
||
database encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PL/Python to not crash on long exception messages (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<application>ecpg</> parser fixes (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
||
NULL rowid as a category in its own right, rather than crashing (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
||
escape backslashes correctly (Teodor, Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a specific version of <productname>Autoconf</> to be used
|
||
when re-generating the <command>configure</> script (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This affects developers and packagers only. The change was made
|
||
to prevent accidental use of untested combinations of
|
||
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
||
You can remove the version check if you really want to use a
|
||
different <productname>Autoconf</> version, but it's
|
||
your responsibility whether the result works or not.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-18">
|
||
<title>Release 7.4.18</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-09-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains fixes from 7.4.17.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.18</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent index corruption when a transaction inserts rows and
|
||
then aborts close to the end of a concurrent <command>VACUUM</>
|
||
on the same table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix excessive logging of <acronym>SSL</> error messages (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash when <varname>log_min_error_statement</> logging runs out
|
||
of memory (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent <command>CLUSTER</> from failing
|
||
due to attempting to process temporary tables of other sessions (Alvaro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-17">
|
||
<title>Release 7.4.17</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-04-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains fixes from 7.4.16,
|
||
including a security fix.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.17</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support explicit placement of the temporary-table schema within
|
||
<varname>search_path</>, and disable searching it for functions
|
||
and operators (Tom)
|
||
</para>
|
||
<para>
|
||
This is needed to allow a security-definer function to set a
|
||
truly secure value of <varname>search_path</>. Without it,
|
||
an unprivileged SQL user can use temporary objects to execute code
|
||
with the privileges of the security-definer function (CVE-2007-2138).
|
||
See <command>CREATE FUNCTION</> for more information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
||
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-16">
|
||
<title>Release 7.4.16</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.15, including
|
||
a security fix.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.16</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove security vulnerability that allowed connected users
|
||
to read backend memory (Tom)
|
||
</para>
|
||
<para>
|
||
The vulnerability involves suppressing the normal check that a SQL
|
||
function returns the data type it's declared to, or changing the
|
||
data type of a table column used in a SQL function (CVE-2007-0555).
|
||
This error can easily be exploited to cause a backend crash, and in
|
||
principle might be used to read database content that the user
|
||
should not be able to access.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare bug wherein btree index page splits could fail
|
||
due to choosing an infeasible split point (Heikki Linnakangas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten security of multi-byte character processing for UTF8 sequences
|
||
over three bytes long (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-15">
|
||
<title>Release 7.4.15</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-01-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.14.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.15</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve handling of <function>getaddrinfo()</> on AIX (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a problem with starting the statistics collector,
|
||
among other things.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>failed to re-find parent key</> errors in
|
||
<command>VACUUM</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix error when constructing an <literal>ARRAY[]</> made up of multiple
|
||
empty elements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>to_number()</> and <function>to_char(numeric)</>
|
||
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
||
new <application>initdb</> installs (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is because <varname>lc_numeric</> can potentially
|
||
change the output of these functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve index usage of regular expressions that use parentheses (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <application>psql</> <literal>\d</> performance also.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-14">
|
||
<title>Release 7.4.14</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-10-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.13.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.14</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix core dump when an untyped literal is taken as
|
||
ANYARRAY</para></listitem>
|
||
<listitem><para>Fix <function>string_to_array()</> to handle overlapping
|
||
matches for the separator string</para>
|
||
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
|
||
</para></listitem>
|
||
<listitem><para>Fix corner cases in pattern matching for
|
||
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
||
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
||
(Teodor)</para></listitem>
|
||
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
||
<listitem><para>Adjust regression tests for recent changes in US DST laws
|
||
</para> </listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-13">
|
||
<title>Release 7.4.13</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-05-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.12,
|
||
including patches for extremely serious security issues.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.13</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
|
||
<para>
|
||
Full security against the SQL-injection attacks described in
|
||
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
||
code. If you have applications that embed untrustworthy strings
|
||
into SQL commands, you should examine them as soon as possible to
|
||
ensure that they are using recommended escaping techniques. In
|
||
most cases, applications should be using subroutines provided by
|
||
libraries or drivers (such as <application>libpq</>'s
|
||
<function>PQescapeStringConn()</>) to perform string escaping,
|
||
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
||
characters in all cases (Tatsuo, Tom)</para>
|
||
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
||
some time, the checks are now applied uniformly to all encodings and all
|
||
textual input, and are now always errors not merely warnings. This change
|
||
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
||
<para>As a server-side defense against SQL-injection attacks of the type
|
||
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
||
<literal>\'</> as a representation of ASCII single quote in SQL string
|
||
literals. By default, <literal>\'</> is rejected only when
|
||
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
||
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
||
A new configuration parameter <varname>backslash_quote</> is available to
|
||
adjust this behavior when needed. Note that full security against
|
||
CVE-2006-2314 might require client-side changes; the purpose of
|
||
<varname>backslash_quote</> is in part to make it obvious that insecure
|
||
clients are insecure.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
||
aware of encoding considerations and
|
||
<varname>standard_conforming_strings</></para>
|
||
<para>This fixes <application>libpq</>-using applications for the security
|
||
issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
|
||
them against the planned changeover to SQL-standard string literal syntax.
|
||
Applications that use multiple <productname>PostgreSQL</> connections
|
||
concurrently should migrate to <function>PQescapeStringConn()</> and
|
||
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
||
for the settings in use in each database connection. Applications that
|
||
do string escaping <quote>by hand</> should be modified to rely on library
|
||
routines instead.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
||
<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
|
||
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
||
<function>mic_to_euc_tw</> were all broken to varying
|
||
extents.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
||
(Bruce, Jan)</para></listitem>
|
||
|
||
<listitem><para>Fix bug that sometimes caused OR'd index scans to
|
||
miss rows they should have returned</para></listitem>
|
||
|
||
<listitem><para>Fix WAL replay for case where a btree index has been
|
||
truncated</para></listitem>
|
||
|
||
<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
|
||
<literal>|</> (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
|
||
Fuhr)</para></listitem>
|
||
|
||
<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
|
||
|
||
<listitem><para>Fix various minor memory leaks</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-12">
|
||
<title>Release 7.4.12</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-02-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.11.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.12</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.11, see the release
|
||
notes for 7.4.11.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix potential crash in <command>SET
|
||
SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
|
||
<para>An unprivileged user could crash the server process, resulting in
|
||
momentary denial of service to other users, if the server has been compiled
|
||
with Asserts enabled (which is not the default).
|
||
Thanks to Akio Ishida for reporting this problem.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug with row visibility logic in self-inserted
|
||
rows (Tom)</para>
|
||
<para>Under rare circumstances a row inserted by the current command
|
||
could be seen as already valid, when it should not be. Repairs bug
|
||
created in 7.4.9 and 7.3.11 releases.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix race condition that could lead to <quote>file already
|
||
exists</> errors during pg_clog file creation
|
||
(Tom)</para></listitem>
|
||
|
||
<listitem><para>Properly check <literal>DOMAIN</> constraints for
|
||
<literal>UNKNOWN</> parameters in prepared statements
|
||
(Neil)</para></listitem>
|
||
|
||
<listitem><para>Fix to allow restoring dumps that have cross-schema
|
||
references to custom operators (Tom)</para></listitem>
|
||
|
||
<listitem><para>Portability fix for testing presence of <function>finite</>
|
||
and <function>isinf</> during configure (Tom)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-11">
|
||
<title>Release 7.4.11</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-01-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.10.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.11</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.8, see the release
|
||
notes for 7.4.8.
|
||
Also, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the locale or
|
||
<application>plperl</> issues described below.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix for protocol-level Describe messages issued
|
||
outside a transaction or in a failed transaction (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix character string comparison for locales that consider
|
||
different character combinations as equal, such as Hungarian (Tom)</para>
|
||
<para>This might require <command>REINDEX</> to fix existing indexes on
|
||
textual columns.</para></listitem>
|
||
|
||
<listitem><para>Set locale environment variables during postmaster startup
|
||
to ensure that <application>plperl</> won't change the locale later</para>
|
||
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
||
started with environment variables specifying a different locale than what
|
||
<application>initdb</> had been told. Under these conditions, any use of
|
||
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
||
<command>REINDEX</> to fix existing indexes on
|
||
textual columns if this has happened to you.</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
||
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
||
which caused it not to use all available salt space for MD5 and
|
||
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
||
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
||
|
||
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
||
rather than crashing, when the number of columns specified is different from
|
||
what's actually returned by the query (Joe)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-10">
|
||
<title>Release 7.4.10</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-12-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.9.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.10</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.8, see the release
|
||
notes for 7.4.8.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix race condition in transaction log management</para>
|
||
<para>There was a narrow window in which an I/O operation could be initiated
|
||
for the wrong page, leading to an Assert failure or data
|
||
corruption.</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Prevent failure if client sends Bind protocol message
|
||
when current transaction is already aborted</para></listitem>
|
||
|
||
<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
|
||
|
||
<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding planning error for outer joins</para>
|
||
<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
|
||
only supported with merge-joinable join conditions</>.</para></listitem>
|
||
|
||
<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
|
||
table has been dropped</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-9">
|
||
<title>Release 7.4.9</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-10-04</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.8.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.9</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
if you are upgrading from a version earlier than 7.4.8, see the release
|
||
notes for 7.4.8.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix error that allowed <command>VACUUM</> to remove
|
||
<literal>ctid</> chains too soon, and add more checking in code that follows
|
||
<literal>ctid</> links</para>
|
||
<para>This fixes a long-standing problem that could cause crashes in very rare
|
||
circumstances.</para></listitem>
|
||
<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
|
||
length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
|
||
<para>In prior releases, the padding of <type>CHAR()</> was incorrect
|
||
because it only padded to the specified number of bytes without
|
||
considering how many characters were stored.</para></listitem>
|
||
<listitem><para>Fix the sense of the test for read-only transaction
|
||
in <command>COPY</></para>
|
||
<para>The code formerly prohibited <command>COPY TO</>, where it should
|
||
prohibit <command>COPY FROM</>.
|
||
</para></listitem>
|
||
<listitem><para>Fix planning problem with outer-join ON clauses that reference
|
||
only the inner-side relation</para></listitem>
|
||
<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
|
||
cases</para></listitem>
|
||
<listitem><para>Make <function>array_in</> and <function>array_recv</> more
|
||
paranoid about validating their OID parameter</para></listitem>
|
||
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
||
a...</> with GiST index on column <literal>a</></para></listitem>
|
||
<listitem><para>Improve robustness of datetime parsing</para></listitem>
|
||
<listitem><para>Improve checking for partially-written WAL
|
||
pages</para></listitem>
|
||
<listitem><para>Improve robustness of signal handling when SSL is
|
||
enabled</para></listitem>
|
||
<listitem><para>Don't try to open more than <literal>max_files_per_process</>
|
||
files during postmaster startup</para></listitem>
|
||
<listitem><para>Various memory leakage fixes</para></listitem>
|
||
<listitem><para>Various portability improvements</para></listitem>
|
||
<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
|
||
the variable is of pass-by-reference type</para></listitem>
|
||
<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
|
||
code</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-8">
|
||
<title>Release 7.4.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-05-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.7, including several
|
||
security-related issues.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
it is one possible way of handling two significant security problems
|
||
that have been found in the initial contents of 7.4.X system
|
||
catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
|
||
automatically correct these problems.
|
||
</para>
|
||
|
||
<para>
|
||
The larger security problem is that the built-in character set encoding
|
||
conversion functions can be invoked from SQL commands by unprivileged
|
||
users, but the functions were not designed for such use and are not
|
||
secure against malicious choices of arguments. The fix involves changing
|
||
the declared parameter list of these functions so that they can no longer
|
||
be invoked from SQL commands. (This does not affect their normal use
|
||
by the encoding conversion machinery.)
|
||
</para>
|
||
|
||
<para>
|
||
The lesser problem is that the <filename>contrib/tsearch2</> module
|
||
creates several functions that are misdeclared to return
|
||
<type>internal</> when they do not accept <type>internal</> arguments.
|
||
This breaks type safety for all functions using <type>internal</>
|
||
arguments.
|
||
</para>
|
||
|
||
<para>
|
||
It is strongly recommended that all installations repair these errors,
|
||
either by initdb or by following the manual repair procedures given
|
||
below. The errors at least allow unprivileged database users to crash
|
||
their server process, and might allow unprivileged users to gain the
|
||
privileges of a database superuser.
|
||
</para>
|
||
|
||
<para>
|
||
If you wish not to do an initdb, perform the following procedures instead.
|
||
As the database superuser, do:
|
||
|
||
<programlisting>
|
||
BEGIN;
|
||
UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
|
||
WHERE pronamespace = 11 AND pronargs = 5
|
||
AND proargtypes[2] = 'cstring'::regtype;
|
||
-- The command should report having updated 90 rows;
|
||
-- if not, rollback and investigate instead of committing!
|
||
COMMIT;
|
||
</programlisting>
|
||
|
||
Next, if you have installed <filename>contrib/tsearch2</>, do:
|
||
|
||
<programlisting>
|
||
BEGIN;
|
||
UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
|
||
WHERE oid IN (
|
||
'dex_init(text)'::regprocedure,
|
||
'snb_en_init(text)'::regprocedure,
|
||
'snb_ru_init(text)'::regprocedure,
|
||
'spell_init(text)'::regprocedure,
|
||
'syn_init(text)'::regprocedure
|
||
);
|
||
-- The command should report having updated 5 rows;
|
||
-- if not, rollback and investigate instead of committing!
|
||
COMMIT;
|
||
</programlisting>
|
||
|
||
If this command fails with a message like <quote>function
|
||
"dex_init(text)" does not exist</>, then either <filename>tsearch2</>
|
||
is not installed in this database, or you already did the update.
|
||
</para>
|
||
|
||
<para>
|
||
The above procedures must be carried out in <emphasis>each</> database
|
||
of an installation, including <literal>template1</>, and ideally
|
||
including <literal>template0</> as well. If you do not fix the
|
||
template databases then any subsequently created databases will contain
|
||
the same errors. <literal>template1</> can be fixed in the same way
|
||
as any other database, but fixing <literal>template0</> requires
|
||
additional steps. First, from any database issue:
|
||
<programlisting>
|
||
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
|
||
</programlisting>
|
||
Next connect to <literal>template0</> and perform the above repair
|
||
procedures. Finally, do:
|
||
<programlisting>
|
||
-- re-freeze template0:
|
||
VACUUM FREEZE;
|
||
-- and protect it against future alterations:
|
||
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change encoding function signature to prevent
|
||
misuse</para></listitem>
|
||
<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
|
||
<type>INTERNAL</> function results</para></listitem>
|
||
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
||
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
||
than for other purposes</para>
|
||
<para>This is an extremely serious bug since it could lead to apparent
|
||
data inconsistencies being briefly visible to applications.</para></listitem>
|
||
<listitem><para>Repair race condition between relation extension and
|
||
VACUUM</para>
|
||
<para>This could theoretically have caused loss of a page's worth of
|
||
freshly-inserted data, although the scenario seems of very low probability.
|
||
There are no known cases of it having caused more than an Assert failure.
|
||
</para></listitem>
|
||
<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
|
||
<para>
|
||
The comparison code was wrong in the case where the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
|
||
it will need to be <command>REINDEX</>ed after installing this update, because
|
||
the fix corrects the sort order of column values.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
||
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
||
<listitem><para>Fix mis-display of negative fractional seconds in
|
||
<type>INTERVAL</> values</para>
|
||
<para>
|
||
This error only occurred when the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
</para></listitem>
|
||
<listitem><para>Ensure operations done during backend shutdown are counted by
|
||
statistics collector</para>
|
||
<para>
|
||
This is expected to resolve reports of <application>pg_autovacuum</>
|
||
not vacuuming the system catalogs often enough — it was not being
|
||
told about catalog deletions caused by temporary table removal during
|
||
backend exit.
|
||
</para></listitem>
|
||
<listitem><para>Additional buffer overrun checks in plpgsql
|
||
(Neil)</para></listitem>
|
||
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
|
||
correctly (Neil)</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
|
||
(Marko Kreen)</para></listitem>
|
||
<listitem><para>Still more 64-bit fixes for
|
||
<filename>contrib/intagg</></para></listitem>
|
||
<listitem><para>Prevent incorrect optimization of functions returning
|
||
<type>RECORD</></para></listitem>
|
||
<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
|
||
month-related formats</para></listitem>
|
||
<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
|
||
<listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
|
||
<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
|
||
<listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
|
||
<listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
|
||
<para>
|
||
This fixes a lock management error that would only be visible if a transaction
|
||
was kicked out of a wait for a lock (typically by query cancel) and then the
|
||
holder of the lock released it within a very narrow window.
|
||
</para></listitem>
|
||
<listitem><para>Fix problem with untyped parameter appearing in
|
||
<command>INSERT ... SELECT</></para></listitem>
|
||
<listitem><para>Fix <command>CLUSTER</> failure after
|
||
<command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-7">
|
||
<title>Release 7.4.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-01-31</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.6, including several
|
||
security-related issues.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
||
<para>
|
||
On platforms that will automatically execute initialization functions of a
|
||
shared library (this includes at least Windows and ELF-based Unixen),
|
||
<command>LOAD</> can be used to make the server execute arbitrary code.
|
||
Thanks to NGS Software for reporting this.</para></listitem>
|
||
<listitem><para>Check that creator of an aggregate function has the right to
|
||
execute the specified transition functions</para>
|
||
<para>
|
||
This oversight made it possible to bypass denial of EXECUTE
|
||
permission on a function.</para></listitem>
|
||
<listitem><para>Fix security and 64-bit issues in
|
||
contrib/intagg</para></listitem>
|
||
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
||
Jurka)</para></listitem>
|
||
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
||
many parameters (Neil)</para></listitem>
|
||
<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
|
||
<para>
|
||
The result of the join was mistakenly supposed to be sorted the same as the
|
||
left input. This could not only deliver mis-sorted output to the user, but
|
||
in case of nested merge joins could give outright wrong answers.
|
||
</para></listitem>
|
||
<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
|
||
<listitem><para>Fix display of negative intervals in SQL and GERMAN
|
||
datestyles</para></listitem>
|
||
<listitem><para>Make age(timestamptz) do calculation in local timezone not
|
||
GMT</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-6">
|
||
<title>Release 7.4.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-10-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.5.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.6</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair possible failure to update hint bits on disk</para>
|
||
<para>
|
||
Under rare circumstances this oversight could lead to
|
||
<quote>could not access transaction status</> failures, which qualifies
|
||
it as a potential-data-loss bug.
|
||
</para></listitem>
|
||
<listitem><para>Ensure that hashed outer join does not miss tuples</para>
|
||
<para>
|
||
Very large left joins using a hash join plan could fail to output unmatched
|
||
left-side rows given just the right data distribution.
|
||
</para></listitem>
|
||
<listitem><para>Disallow running <application>pg_ctl</> as root</para>
|
||
<para>
|
||
This is to guard against any possible security issues.
|
||
</para></listitem>
|
||
<listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
|
||
<para>
|
||
This has been reported as a security issue, though it's hardly worthy of
|
||
concern since there is no reason for non-developers to use this script anyway.
|
||
</para></listitem>
|
||
<listitem><para>Prevent forced backend shutdown from re-emitting prior command
|
||
result</para>
|
||
<para>
|
||
In rare cases, a client might think that its last command had succeeded when
|
||
it really had been aborted by forced database shutdown.
|
||
</para></listitem>
|
||
<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
|
||
<para>
|
||
This could lead to misbehavior in some of the system-statistics views.
|
||
</para></listitem>
|
||
<listitem><para>Fix small memory leak in postmaster</para></listitem>
|
||
<listitem><para>Fix <quote>expected both swapped tables to have TOAST
|
||
tables</> bug</para>
|
||
<para>
|
||
This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
|
||
</para></listitem>
|
||
<listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
|
||
<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
|
||
<listitem><para><literal>::</> is no longer interpreted as a variable in an
|
||
ECPG prepare statement</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-5">
|
||
<title>Release 7.4.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-08-18</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one serious bug fix over 7.4.4.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.5</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
|
||
<para>
|
||
This patch fixes a rare case in which concurrent insertions into a B-tree index
|
||
could result in a server panic. No permanent damage would result, but it's
|
||
still worth a re-release. The bug does not exist in pre-7.4 releases.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-4">
|
||
<title>Release 7.4.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-08-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.3.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.4</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Prevent possible loss of committed transactions during crash</para>
|
||
<para>
|
||
Due to insufficient interlocking between transaction commit and checkpointing,
|
||
it was possible for transactions committed just before the most recent
|
||
checkpoint to be lost, in whole or in part, following a database crash and
|
||
restart. This is a serious bug that has existed
|
||
since <productname>PostgreSQL</productname> 7.1.
|
||
</para></listitem>
|
||
<listitem><para>Check HAVING restriction before evaluating result list of an
|
||
aggregate plan</para></listitem>
|
||
<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
|
||
<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
|
||
<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
|
||
<listitem><para>Pretty-print UNION queries correctly</para></listitem>
|
||
<listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
|
||
<listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
|
||
<listitem><para>Fix thread support for OS X and Solaris</para></listitem>
|
||
<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
|
||
<listitem><para>ECPG fixes</para></listitem>
|
||
<listitem><para>Translation updates (various contributors)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-3">
|
||
<title>Release 7.4.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-06-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.2.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.3</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
|
||
<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
|
||
<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
|
||
<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
|
||
<listitem><para>Several important fixes in pg_autovacuum, including fixes for
|
||
large tables, unsigned oids, stability, temp tables, and debug mode
|
||
(Matthew T. O'Connor)</para></listitem>
|
||
<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
|
||
<listitem><para>Several JDBC fixes</para></listitem>
|
||
<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
|
||
<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
|
||
<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
|
||
<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
|
||
<listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
|
||
<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
|
||
<para>
|
||
Select-list aliases within the sub-select will now take precedence over
|
||
names from outer query levels.
|
||
</para></listitem>
|
||
<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
|
||
<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
|
||
<para>
|
||
This fixes a difficult-to-exploit security hole.
|
||
</para></listitem>
|
||
<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
|
||
<listitem><para>Numerous translation updates (various contributors)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-2">
|
||
<title>Release 7.4.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-03-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.1.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.2</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.4.X. However,
|
||
it might be advisable as the easiest method of incorporating fixes for
|
||
two errors that have been found in the initial contents of 7.4.X system
|
||
catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
|
||
automatically correct these problems.
|
||
</para>
|
||
|
||
<para>
|
||
The more severe of the two errors is that data type <type>anyarray</>
|
||
has the wrong alignment label; this is a problem because the
|
||
<structname>pg_statistic</> system catalog uses <type>anyarray</>
|
||
columns. The mislabeling can cause planner misestimations and even
|
||
crashes when planning queries that involve <literal>WHERE</> clauses on
|
||
double-aligned columns (such as <type>float8</> and <type>timestamp</>).
|
||
It is strongly recommended that all installations repair this error,
|
||
either by initdb or by following the manual repair procedure given
|
||
below.
|
||
</para>
|
||
|
||
<para>
|
||
The lesser error is that the system view <structname>pg_settings</>
|
||
ought to be marked as having public update access, to allow
|
||
<literal>UPDATE pg_settings</> to be used as a substitute for
|
||
<command>SET</>. This can also be fixed either by initdb or manually,
|
||
but it is not necessary to fix unless you want to use <literal>UPDATE
|
||
pg_settings</>.
|
||
</para>
|
||
|
||
<para>
|
||
If you wish not to do an initdb, the following procedure will work
|
||
for fixing <structname>pg_statistic</>. As the database superuser,
|
||
do:
|
||
|
||
<programlisting>
|
||
-- clear out old data in pg_statistic:
|
||
DELETE FROM pg_statistic;
|
||
VACUUM pg_statistic;
|
||
-- this should update 1 row:
|
||
UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
|
||
-- this should update 6 rows:
|
||
UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
|
||
--
|
||
-- At this point you MUST start a fresh backend to avoid a crash!
|
||
--
|
||
-- repopulate pg_statistic:
|
||
ANALYZE;
|
||
</programlisting>
|
||
|
||
This can be done in a live database, but beware that all backends
|
||
running in the altered database must be restarted before it is safe to
|
||
repopulate <structname>pg_statistic</>.
|
||
</para>
|
||
|
||
<para>
|
||
To repair the <structname>pg_settings</> error, simply do:
|
||
<programlisting>
|
||
GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
The above procedures must be carried out in <emphasis>each</> database
|
||
of an installation, including <literal>template1</>, and ideally
|
||
including <literal>template0</> as well. If you do not fix the
|
||
template databases then any subsequently created databases will contain
|
||
the same errors. <literal>template1</> can be fixed in the same way
|
||
as any other database, but fixing <literal>template0</> requires
|
||
additional steps. First, from any database issue:
|
||
<programlisting>
|
||
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
|
||
</programlisting>
|
||
Next connect to <literal>template0</> and perform the above repair
|
||
procedures. Finally, do:
|
||
<programlisting>
|
||
-- re-freeze template0:
|
||
VACUUM FREEZE;
|
||
-- and protect it against future alterations:
|
||
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
Release 7.4.2 incorporates all the fixes included in release 7.3.6,
|
||
plus the following fixes:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
|
||
<para>See above for details about this problem.</para></listitem>
|
||
<listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
|
||
<listitem><para>Fix several optimizer bugs, most of which led to
|
||
<quote>variable not found in subplan target lists</> errors</para></listitem>
|
||
<listitem><para>Avoid out-of-memory failure during startup of large multiple
|
||
index scan</para></listitem>
|
||
<listitem><para>Fix multibyte problem that could lead to <quote>out of
|
||
memory</> error during <command>COPY IN</></para></listitem>
|
||
<listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
|
||
TABLE AS</> from tables without OIDs</para></listitem>
|
||
<listitem><para>Fix problems with <filename>alter_table</> regression test
|
||
during parallel testing</para></listitem>
|
||
<listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
|
||
<listitem><para>Partial fix for Turkish-locale issues</para>
|
||
<para>initdb will succeed now in Turkish locale, but there are still some
|
||
inconveniences associated with the <literal>i/I</> problem.</para></listitem>
|
||
<listitem><para>Make pg_dump set client encoding on restore</para></listitem>
|
||
<listitem><para>Other minor pg_dump fixes</para></listitem>
|
||
<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
|
||
<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
|
||
<literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
|
||
<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
|
||
<listitem><para>Various other ecpg fixes (Michael)</para></listitem>
|
||
<listitem><para>Fixes for Borland compiler</para></listitem>
|
||
<listitem><para>Thread build improvements (Bruce)</para></listitem>
|
||
<listitem><para>Various other build fixes</para></listitem>
|
||
<listitem><para>Various JDBC fixes</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4-1">
|
||
<title>Release 7.4.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-12-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.4.
|
||
For information about new features in the 7.4 major release, see
|
||
<xref linkend="release-7-4">.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running 7.4.
|
||
</para>
|
||
|
||
<para>
|
||
If you want to install the fixes in the information schema
|
||
you need to reload it into the database.
|
||
This is either accomplished by initializing a new cluster
|
||
by running <command>initdb</command>, or by running the following
|
||
sequence of SQL commands in each database (ideally including
|
||
<literal>template1</literal>) as a superuser in
|
||
<application>psql</application>, after installing the new release:
|
||
<programlisting>
|
||
DROP SCHEMA information_schema CASCADE;
|
||
\i /usr/local/pgsql/share/information_schema.sql
|
||
</programlisting>
|
||
Substitute your installation path in the second command.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
|
||
<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
|
||
<listitem><para>Fix for subqueries that used hash joins (Tom)</para>
|
||
<para>
|
||
Certain subqueries that used hash joins would crash because of
|
||
improperly shared structures.
|
||
</para></listitem>
|
||
<listitem><para>Fix free space map compaction bug (Tom)</para>
|
||
<para>
|
||
This fixes a bug where compaction of the free space map could lead
|
||
to a database server shutdown.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
|
||
<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
|
||
<para>
|
||
Fix these functions to return values consistent with pre-7.4
|
||
releases.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
|
||
<para>
|
||
Fixes include improper variable initialization, missing vacuum after
|
||
<command>TRUNCATE</command>, and duration computation overflow for long vacuums.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
|
||
<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
|
||
<para>
|
||
Fix crash on Solaris caused by use of any type of password
|
||
authentication when no passwords were defined.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
|
||
<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
|
||
<listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
|
||
<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
|
||
<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
|
||
<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
|
||
<listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para>
|
||
<para>
|
||
If different client encodings are used for <type>bytea</type> output and input, it
|
||
is possible for <type>bytea</type> values to be corrupted by the differing
|
||
encodings. This fix escapes all bytes that might be affected.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
|
||
<listitem><para>New Czech FAQ</para></listitem>
|
||
<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
|
||
<listitem><para>ECPG fixes (Michael)</para></listitem>
|
||
<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
|
||
<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
|
||
<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
|
||
<para>
|
||
Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
|
||
By installing them in their own directory, name conflicts have been reduced.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Fix SSL memory leak (Neil)</para>
|
||
<para>
|
||
This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
|
||
<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-4">
|
||
<title>Release 7.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-11-17</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<literal>IN</literal> / <literal>NOT IN</literal> subqueries are
|
||
now much more efficient
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, <literal>IN</literal>/<literal>NOT
|
||
IN</literal> subqueries were joined to the upper query by
|
||
sequentially scanning the subquery looking for a match. The
|
||
7.4 code uses the same sophisticated techniques used by
|
||
ordinary joins and so is much faster. An
|
||
<literal>IN</literal> will now usually be as fast as or faster
|
||
than an equivalent <literal>EXISTS</literal> subquery; this
|
||
reverses the conventional wisdom that applied to previous
|
||
releases.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Improved <literal>GROUP BY</literal> processing by using hash buckets
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, rows to be grouped had to be sorted
|
||
first. The 7.4 code can do <literal>GROUP BY</literal>
|
||
without sorting, by accumulating results into a hash table
|
||
with one entry per group. It will still use the sort
|
||
technique, however, if the hash table is estimated to be too
|
||
large to fit in <varname>sort_mem</>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New multikey hash join capability
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, hash joins could only occur on single
|
||
keys. This release allows multicolumn hash joins.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Queries using the explicit <literal>JOIN</literal> syntax are
|
||
now better optimized
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prior releases evaluated queries using the explicit
|
||
<literal>JOIN</literal> syntax only in the order implied by
|
||
the syntax. 7.4 allows full optimization of these queries,
|
||
meaning the optimizer considers all possible join orderings
|
||
and chooses the most efficient. Outer joins, however, must
|
||
still follow the declared ordering.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Faster and more powerful regular expression code
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The entire regular expression module has been replaced with a
|
||
new version by Henry Spencer, originally written for Tcl. The
|
||
code greatly improves performance and supports several flavors
|
||
of regular expressions.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Function-inlining for simple SQL functions
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Simple SQL functions can now be inlined by including their SQL
|
||
in the main query. This improves performance by eliminating
|
||
per-call overhead. That means simple SQL functions now
|
||
behave like macros.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Full support for IPv6 connections and IPv6 address data types
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Previous releases allowed only IPv4 connections, and the IP
|
||
data types only supported IPv4 addresses. This release adds
|
||
full IPv6 support in both of these areas.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Major improvements in SSL performance and reliability
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Several people very familiar with the SSL API have overhauled
|
||
our SSL code to improve SSL key negotiation and error
|
||
recovery.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Make free space map efficiently reuse empty index pages,
|
||
and other free space management improvements
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
In previous releases, B-tree index pages that were left empty
|
||
because of deleted rows could only be reused by rows with
|
||
index values similar to the rows originally indexed on that
|
||
page. In 7.4, <command>VACUUM</command> records empty index
|
||
pages and allows them to be reused for any future index rows.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
SQL-standard information schema
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The information schema provides a standardized and stable way
|
||
to access information about the schema objects defined in a
|
||
database.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Cursors conform more closely to the SQL standard
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The commands <command>FETCH</command> and
|
||
<command>MOVE</command> have been overhauled to conform more
|
||
closely to the SQL standard.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Cursors can exist outside transactions
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
These cursors are also called holdable cursors.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New client-to-server protocol
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The new protocol adds error codes, more status information,
|
||
faster startup, better support for binary data transmission,
|
||
parameter values separated from SQL commands, prepared
|
||
statements available at the protocol level, and cleaner
|
||
recovery from <command>COPY</command> failures. The older
|
||
protocol is still supported by both server and clients.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<application>libpq</application> and
|
||
<application>ECPG</application> applications are now fully
|
||
thread-safe
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
While previous <application>libpq</application> releases
|
||
already supported threads, this release improves thread safety
|
||
by fixing some non-thread-safe code that was used during
|
||
database connection startup. The <command>configure</command>
|
||
option <option>--enable-thread-safety</option> must be used to
|
||
enable this feature.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New version of full-text indexing
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
A new full-text indexing suite is available in
|
||
<filename>contrib/tsearch2</filename>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New autovacuum tool
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
The new autovacuum tool in
|
||
<filename>contrib/autovacuum</filename> monitors the database
|
||
statistics tables for
|
||
<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
|
||
activity and automatically vacuums tables when needed.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Array handling has been improved and moved into the server core
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Many array limitations have been removed, and arrays behave
|
||
more like fully-supported data types.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.4</title>
|
||
|
||
<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>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
The server-side autocommit setting was removed and
|
||
reimplemented in client applications and languages.
|
||
Server-side autocommit was causing too many problems with
|
||
languages and applications that wanted to control their own
|
||
autocommit behavior, so autocommit was removed from the server
|
||
and added to individual client APIs as appropriate.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Error message wording has changed substantially in this
|
||
release. Significant effort was invested to make the messages
|
||
more consistent and user-oriented. If your applications try to
|
||
detect different error conditions by parsing the error message,
|
||
you are strongly encouraged to use the new error code facility instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Inner joins using the explicit <literal>JOIN</literal> syntax
|
||
might behave differently because they are now better
|
||
optimized.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
A number of server configuration parameters have been renamed
|
||
for clarity, primarily those related to
|
||
logging.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
|
||
does nothing. In prior releases, <literal>FETCH 0</literal>
|
||
would fetch all remaining rows, and <literal>MOVE 0</literal>
|
||
would move to the end of the cursor.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>FETCH</command> and <command>MOVE</command> now return
|
||
the actual number of rows fetched/moved, or zero if at the
|
||
beginning/end of the cursor. Prior releases would return the
|
||
row count passed to the command, not the number of rows
|
||
actually fetched or moved.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>COPY</command> now can process files that use
|
||
carriage-return or carriage-return/line-feed end-of-line
|
||
sequences. Literal carriage-returns and line-feeds are no
|
||
longer accepted in data values; use <literal>\r</literal> and
|
||
<literal>\n</literal> instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Trailing spaces are now trimmed when converting from type
|
||
<type>char(<replaceable>n</>)</type> to
|
||
<type>varchar(<replaceable>n</>)</type> or <type>text</type>.
|
||
This is what most people always expected to happen anyway.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The data type <type>float(<replaceable>p</>)</type> now
|
||
measures <replaceable>p</> in binary digits, not decimal
|
||
digits. The new behavior follows the SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ambiguous date values now must match the ordering specified by
|
||
the <varname>datestyle</varname> setting. In prior releases, a
|
||
date specification of <literal>10/20/03</> was interpreted as a
|
||
date in October even if <varname>datestyle</> specified that
|
||
the day should be first. 7.4 will throw an error if a date
|
||
specification is invalid for the current setting of
|
||
<varname>datestyle</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The functions <function>oidrand</function>,
|
||
<function>oidsrand</function>, and
|
||
<function>userfntest</function> have been removed. These
|
||
functions were determined to be no longer useful.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
String literals specifying time-varying date/time values, such
|
||
as <literal>'now'</literal> or <literal>'today'</literal> will
|
||
no longer work as expected in column default expressions; they
|
||
now cause the time of the table creation to be the default, not
|
||
the time of the insertion. Functions such as
|
||
<function>now()</>, <function>current_timestamp</>, or
|
||
<function>current_date</function> should be used instead.
|
||
</para>
|
||
|
||
<para>
|
||
In previous releases, there was special code so that strings
|
||
such as <literal>'now'</literal> were interpreted at
|
||
<command>INSERT</> time and not at table creation time, but
|
||
this work around didn't cover all cases. Release 7.4 now
|
||
requires that defaults be defined properly using functions such
|
||
as <function>now()</> or <function>current_timestamp</>. These
|
||
will work in all situations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The dollar sign (<literal>$</>) is no longer allowed in
|
||
operator names. It can instead be a non-first character in
|
||
identifiers. This was done to improve compatibility with other
|
||
database systems, and to avoid syntax problems when parameter
|
||
placeholders (<literal>$<replaceable>n</></>) are written
|
||
adjacent to operators.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
Below you will find a detailed account of the changes between
|
||
release 7.4 and the previous major release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Server Operation Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
|
||
Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix SSL to handle errors cleanly (Nathan Mueller)
|
||
</para>
|
||
<para>
|
||
In prior releases, certain SSL API error reports were not
|
||
handled correctly. This release fixes those problems.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
SSL protocol security and performance improvements (Sean Chittenden)
|
||
</para>
|
||
<para>
|
||
SSL key renegotiation was happening too frequently, causing poor
|
||
SSL performance. Also, initial key handling was improved.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Print lock information when a deadlock is detected (Tom)
|
||
</para>
|
||
<para>
|
||
This allows easier debugging of deadlock situations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update <filename>/tmp</filename> socket modification times
|
||
regularly to avoid their removal (Tom)
|
||
</para>
|
||
<para>
|
||
This should help prevent <filename>/tmp</filename> directory
|
||
cleaner administration scripts from removing server socket
|
||
files.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Make B-tree indexes fully WAL-safe (Tom)</para>
|
||
<para>
|
||
In prior releases, under certain rare cases, a server crash
|
||
could cause B-tree indexes to become corrupt. This release
|
||
removes those last few rare cases.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix inconsistent index lookups during split of first root page (Tom)
|
||
</para>
|
||
<para>
|
||
In prior releases, when a single-page index split into two
|
||
pages, there was a brief period when another database session
|
||
could miss seeing an index entry. This release fixes that rare
|
||
failure case.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Preserve free space information between server restarts (Tom)</para>
|
||
<para>
|
||
In prior releases, the free space map was not saved when the
|
||
postmaster was stopped, so newly started servers had no free
|
||
space information. This release saves the free space map, and
|
||
reloads it when the server is restarted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
|
||
<listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
|
||
<listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
|
||
<listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
|
||
<listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
|
||
<listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
|
||
<listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Performance Improvements</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
|
||
<listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
|
||
<listitem><para>Allow multikey hash joins (Tom)</para></listitem>
|
||
<listitem><para>Improve constant folding (Tom)</para></listitem>
|
||
<listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Reduce memory usage for queries using complex functions (Tom)</para>
|
||
<para>
|
||
In prior releases, functions returning allocated memory would
|
||
not free it until the query completed. This release allows the
|
||
freeing of function-allocated memory when the function call
|
||
completes, reducing the total memory used by functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Improve GEQO optimizer performance (Tom)</para>
|
||
<para>
|
||
This release fixes several inefficiencies in the way the GEQO optimizer
|
||
manages potential query paths.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
|
||
tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
|
||
performance (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow most <literal>IN</literal> subqueries to be processed as
|
||
joins (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pattern matching operations can use indexes regardless of
|
||
locale (Peter)
|
||
</para>
|
||
<para>
|
||
There is no way for non-ASCII locales to use the standard
|
||
indexes for <literal>LIKE</literal> comparisons. This release
|
||
adds a way to create a special index for
|
||
<literal>LIKE</literal>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
|
||
<para>
|
||
For shared libraries that require a long time to load, this
|
||
option is available so the library can be preloaded in the
|
||
postmaster and inherited by all database sessions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimizer cost computations, particularly for subqueries (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
|
||
means <literal>a.x = 42</literal> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow hash/merge joins on complex joins (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow hash joins for more data types (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow join optimization of explicit inner joins, disable with
|
||
<varname>join_collapse_limit</varname> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add parameter <varname>from_collapse_limit</varname> to control
|
||
conversion of subqueries to joins (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use faster and more powerful regular expression code from Tcl
|
||
(Henry Spencer, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use bit-mapped relation sets in the optimizer (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Improve connection startup time (Tom)</para>
|
||
<para>
|
||
The new client/server protocol requires fewer network packets to
|
||
start a database session.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve trigger/constraint performance (Stephan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix hash indexes which were broken in rare cases (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Improve hash index concurrency and speed (Tom)</para>
|
||
<para>
|
||
Prior releases suffered from poor hash index performance,
|
||
particularly for high concurrency situations. This release fixes
|
||
that, and the development group is interested in reports
|
||
comparing B-tree and hash index performance.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
|
||
<para>
|
||
Certain CPU's perform faster data copies when addresses are
|
||
32-byte aligned.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
|
||
<para>
|
||
<type>numeric</type> used to be stored in base 100. The new code
|
||
uses base 10000, for significantly better performance.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Configuration Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
|
||
<para>
|
||
This was done so most parameters that control the server logs
|
||
begin with <literal>log_</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
|
||
<listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
|
||
<listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
|
||
<para>
|
||
In prior releases, it was difficult to determine if checkpoint
|
||
was happening too frequently. This feature adds a warning to the
|
||
server logs when excessive checkpointing happens.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change debug server log messages to output as <literal>DEBUG</>
|
||
rather than <literal>LOG</> (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
|
||
<para>
|
||
This is a security feature so non-superusers cannot disable
|
||
logging that was enabled by the administrator.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>log_min_messages</>/<varname>client_min_messages</> now
|
||
controls <varname>debug_*</> output (Bruce)
|
||
</para>
|
||
<para>
|
||
This centralizes client debug information so all debug output
|
||
can be sent to either the client or server logs.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
|
||
<para>
|
||
This allows Mac OS X hosts to query the network for available
|
||
<productname>PostgreSQL</productname> servers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add ability to print only slow statements using
|
||
<varname>log_min_duration_statement</varname>
|
||
(Christopher)
|
||
</para>
|
||
<para>
|
||
This is an often requested debugging feature that allows
|
||
administrators to see only slow queries in their server logs.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
|
||
<para>
|
||
This allows administrators to merge the host IP address and
|
||
netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
|
||
<para>
|
||
This works with the new error reporting feature to supply
|
||
additional error information like hints, file names and line
|
||
numbers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
|
||
<para>
|
||
This option is useful for administration tools that need to know
|
||
the configuration variable names and their minimums, maximums,
|
||
defaults, and descriptions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new columns in <literal>pg_settings</literal>:
|
||
<literal>context</>, <literal>type</>, <literal>source</>,
|
||
<literal>min_val</>, <literal>max_val</> (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make default <varname>shared_buffers</> 1000 and
|
||
<varname>max_connections</> 100, if possible (Tom)
|
||
</para>
|
||
<para>
|
||
Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
|
||
would start on even very old systems. This release tests the
|
||
amount of shared memory allowed by the platform and selects more
|
||
reasonable default values if possible. Of course, users are
|
||
still encouraged to evaluate their resource load and size
|
||
<varname>shared_buffers</varname> accordingly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New <filename>pg_hba.conf</filename> record type
|
||
<literal>hostnossl</> to prevent SSL connections (Jon
|
||
Jensen)
|
||
</para>
|
||
<para>
|
||
In prior releases, there was no way to prevent SSL connections
|
||
if both the client and server supported SSL. This option allows
|
||
that capability.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove parameter <varname>geqo_random_seed</varname>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Query Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>New SQL-standard information schema (Peter)</para></listitem>
|
||
<listitem><para>Add read-only transactions (Peter)</para></listitem>
|
||
<listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
|
||
<para>
|
||
In prior releases, only the superuser could see query strings
|
||
using <literal>pg_stat_activity</literal>. Now ordinary users
|
||
can see their own query strings.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
|
||
<para>
|
||
The SQL standard says that an aggregate function appearing
|
||
within a nested subquery belongs to the outer query if its
|
||
argument contains only outer-query variables. Prior
|
||
<productname>PostgreSQL</productname> releases did not handle
|
||
this fine point correctly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
|
||
<para>
|
||
By default, tables mentioned in the query are automatically
|
||
added to the <literal>FROM</> clause if they are not already
|
||
there. This is compatible with historic
|
||
<productname>POSTGRES</productname> behavior but is contrary to
|
||
the SQL standard. This option allows selecting
|
||
standard-compatible behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
|
||
<para>
|
||
This allows <command>UPDATE</command> to set a column to its
|
||
declared default value.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
|
||
<para>
|
||
In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
|
||
only use constants, not expressions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add statement-level triggers (Neil)</para>
|
||
<para>
|
||
While this allows a trigger to fire at the end of a statement,
|
||
it does not allow the trigger to access all rows modified by the
|
||
statement. This capability is planned for a future release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add check constraints for domains (Rod)</para>
|
||
<para>
|
||
This greatly increases the usefulness of domains by allowing
|
||
them to use check constraints.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add <command>ALTER DOMAIN</command> (Rod)</para>
|
||
<para>
|
||
This allows manipulation of existing domains.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Fix several zero-column table bugs (Tom)</para>
|
||
<para>
|
||
<productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
|
||
that occur when using such tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
|
||
<para>
|
||
In prior releases, <literal>ALTER TABLE ... ADD
|
||
PRIMARY</literal> would add a unique index, but not a not-null
|
||
constraint. That is fixed in this release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
|
||
<para>
|
||
This allows control over whether new and updated rows will have
|
||
an OID column. This is most useful for saving storage space.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
|
||
increment, cache, cycle values (Rod)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
|
||
<para>
|
||
This command is used by <command>pg_dump</command> to record the
|
||
cluster column for each table previously clustered. This
|
||
information is used by database-wide cluster to cluster all
|
||
previously clustered tables.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
|
||
<listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
|
||
<listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow copying table schema using <literal>LIKE
|
||
<replaceable>subtable</replaceable></literal>, also SQL:2003
|
||
feature <literal>INCLUDING DEFAULTS</literal> (Rod)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>WITH GRANT OPTION</literal> clause to
|
||
<command>GRANT</command> (Peter)
|
||
</para>
|
||
<para>
|
||
This enabled <command>GRANT</command> to give other users the
|
||
ability to grant privileges on a object.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Command Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
|
||
<para>
|
||
This adds the ability for a table to be dropped or all rows
|
||
deleted on transaction commit.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
|
||
<para>
|
||
In previous releases, cursors were removed at the end of the
|
||
transaction that created them. Cursors can now be created with
|
||
the <literal>WITH HOLD</literal> option, which allows them to
|
||
continue to be accessed after the creating transaction has
|
||
committed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
|
||
<para>
|
||
In previous releases, <literal>FETCH 0</literal> fetched all
|
||
remaining rows, and <literal>MOVE 0</literal> moved to the end
|
||
of the cursor.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Cause <command>FETCH</command> and <command>MOVE</command> to
|
||
return the number of rows fetched/moved, or zero if at the
|
||
beginning/end of cursor, per SQL standard (Bruce)
|
||
</para>
|
||
<para>
|
||
In prior releases, the row count returned by
|
||
<command>FETCH</command> and <command>MOVE</command> did not
|
||
accurately reflect the number of rows processed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Properly handle <literal>SCROLL</literal> with cursors, or
|
||
report an error (Neil)</para>
|
||
<para>
|
||
Allowing random access (both forward and backward scrolling) to
|
||
some kinds of queries cannot be done without some additional
|
||
work. If <literal>SCROLL</literal> is specified when the cursor
|
||
is created, this additional work will be performed. Furthermore,
|
||
if the cursor has been created with <literal>NO SCROLL</literal>,
|
||
no random access is allowed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement SQL-compatible options <literal>FIRST</>,
|
||
<literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
|
||
<literal>RELATIVE <replaceable>n</></> for
|
||
<command>FETCH</command> and <command>MOVE</command> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
|
||
<para>
|
||
This allows all previously clustered tables in a database to be
|
||
reclustered with a single command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
|
||
|
||
<listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow literal carriage return as a data value,
|
||
backslash-carriage-return and <literal>\r</> are still allowed
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
|
||
<para>
|
||
<command>TRUNCATE</command> can now be used inside a
|
||
transaction. If the transaction aborts, the changes made by the
|
||
<command>TRUNCATE</command> are automatically rolled back.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow prepare/bind of utility commands like
|
||
<command>FETCH</command> and <command>EXPLAIN</command> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
|
||
<para>
|
||
In prior releases, functional indexes only supported a simple
|
||
function applied to one or more column names. This release
|
||
allows any type of scalar expression.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <command>SHOW TRANSACTION ISOLATION</command> match input
|
||
to <command>SET TRANSACTION ISOLATION</command>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <command>COMMENT ON DATABASE</command> on nonlocal
|
||
database generate a warning, rather than an error (Rod)
|
||
</para>
|
||
|
||
<para>
|
||
Database comments are stored in database-local tables so
|
||
comments on a database have to be stored in each database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
|
||
<para>
|
||
This allows system tables to be reindexed without the
|
||
requirement of a standalone session, which was necessary in
|
||
previous releases. The only tables that now require a standalone
|
||
session for reindexing are the global system tables
|
||
<literal>pg_database</>, <literal>pg_shadow</>, and
|
||
<literal>pg_group</>.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Type and Function Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
New server parameter <varname>extra_float_digits</varname> to
|
||
control precision display of floating-point numbers (Pedro
|
||
Ferreira, Tom)
|
||
</para>
|
||
<para>
|
||
This controls output precision which was causing regression
|
||
testing problems.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove rarely used functions <function>oidrand</>,
|
||
<function>oidsrand</>, and <function>userfntest</> functions
|
||
(Neil)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
|
||
<para>
|
||
An MD5 function was frequently requested. For more complex
|
||
encryption capabilities, use
|
||
<filename>contrib/pgcrypto</filename>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
|
||
<type>timestamp without time zone</type> is assumed to be in
|
||
local time, not GMT (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
|
||
<listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
|
||
<listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
|
||
<listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow functions that can take any argument data type and return
|
||
any data type, using <type>anyelement</type> and
|
||
<type>anyarray</type> (Joe)
|
||
</para>
|
||
<para>
|
||
This allows the creation of functions that can work with any
|
||
data type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
|
||
<literal>ARRAY[['a','b'],['c','d']]</literal>, or
|
||
<literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow proper comparisons for arrays, including <literal>ORDER
|
||
BY</literal> and <literal>DISTINCT</literal> support
|
||
(Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow indexes on array columns (Joe)</para></listitem>
|
||
<listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>WHERE</literal> qualification
|
||
<literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
|
||
(<replaceable>array_expr</>)</literal> (Joe)
|
||
</para>
|
||
<para>
|
||
This allows arrays to behave like a list of values, for purposes
|
||
like <literal>SELECT * FROM tab WHERE col IN
|
||
(array_val)</literal>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New array functions <function>array_append</>,
|
||
<function>array_cat</>, <function>array_lower</>,
|
||
<function>array_prepend</>, <function>array_to_string</>,
|
||
<function>array_upper</>, <function>string_to_array</> (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
|
||
<listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow 60 in seconds fields of <type>time</type>,
|
||
<type>timestamp</type>, and <type>interval</type> input values
|
||
(Tom)
|
||
</para>
|
||
<para>
|
||
Sixty-second values are needed for leap seconds.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
|
||
|
||
<listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Trim trailing spaces when <type>char</type> is cast to
|
||
<type>varchar</> or <type>text</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <type>float(<replaceable>p</>)</> measure the precision
|
||
<replaceable>p</> in binary digits, not decimal digits
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have <literal>SHOW datestyle</literal> generate output similar
|
||
to that used by <literal>SET datestyle</literal> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
|
||
TIME ZONE</literal> follow the SQL convention for the sign of
|
||
time zone offsets, i.e., positive is east from UTC (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Fix <literal>date_trunc('quarter', ...)</literal> (B<>jthe Zolt<6C>n)</para>
|
||
<para>
|
||
Prior releases returned an incorrect value for this function call.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
|
||
<para>
|
||
<function>initcap()</function> now uppercases a letter appearing
|
||
after any non-alphanumeric character, rather than only after
|
||
whitespace.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new <varname>datestyle</varname> values <literal>MDY</>,
|
||
<literal>DMY</>, and <literal>YMD</> to set input field order;
|
||
honor <literal>US</> and <literal>European</> for backward
|
||
compatibility (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
String literals like <literal>'now'</literal> or
|
||
<literal>'today'</literal> will no longer work as a column
|
||
default. Use functions such as <function>now()</function>,
|
||
<function>current_timestamp</function> instead. (change
|
||
required for prepared statements) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
|
||
<para>
|
||
NaN was already sorted after ordinary numeric values for most
|
||
purposes, but <function>min()</> and <function>max()</> didn't
|
||
get this right.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Prevent interval from suppressing <literal>:00</literal>
|
||
seconds display</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New functions <function>pg_get_triggerdef(prettyprint)</function>
|
||
and <function>pg_conversion_is_visible()</function> (Christopher)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
|
||
match <varname>datestyle</varname>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_get_constraintdef</function> support
|
||
unique, primary-key, and check constraints (Christopher)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server-Side Language Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
|
||
used on a zero-row record variable (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make PL/Python's <function>spi_execute</function> interface
|
||
handle null values properly (Andrew Bosma)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
|
||
<para>
|
||
The Python language no longer supports a restricted execution
|
||
environment, so the trusted version of PL/Python was removed. If
|
||
this situation changes, a version of PL/Python that can be used
|
||
by non-superusers will be readded.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow polymorphic SQL functions (Joe)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved compiled function caching mechanism in PL/pgSQL with
|
||
full support for polymorphism (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new parameter <literal>$0</> in PL/pgSQL representing the
|
||
function's actual return type (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
|
||
qualified type names in the parameter type list
|
||
(Jan)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>psql Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
|
||
<para>
|
||
This forces the pager to be used even if the number of rows is
|
||
less than the screen height. This is valuable for rows that
|
||
wrap across several screen rows.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
|
||
<listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
|
||
<listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>\encoding</> now changes based on the server parameter
|
||
<varname>client_encoding</varname> (Tom)
|
||
</para>
|
||
<para>
|
||
In previous versions, <command>\encoding</command> was not aware
|
||
of encoding changes made using <literal>SET
|
||
client_encoding</literal>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Save editor buffer into readline history (Ross)</para>
|
||
<para>
|
||
When <command>\e</> is used to edit a query, the result is saved
|
||
in the readline history for retrieval using the up arrow.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
|
||
<listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
|
||
<para>
|
||
This takes the place of the removed server parameter <varname>autocommit</varname>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
|
||
<para>
|
||
This controls the new error reporting details.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
|
||
<listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>pg_dump Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
|
||
<listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Make pg_dump preserve column storage characteristics (Christopher)</para>
|
||
<para>
|
||
This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow pg_dumpall to support the options <option>-a</>,
|
||
<option>-s</>, <option>-x</> of pg_dump (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
pg_dump options <option>--use-set-session-authorization</option>
|
||
and <option>--no-reconnect</option> now do nothing, all dumps
|
||
use <command>SET SESSION AUTHORIZATION</command>
|
||
</para>
|
||
<para>
|
||
pg_dump no longer reconnects to switch users, but instead always
|
||
uses <command>SET SESSION AUTHORIZATION</command>. This will
|
||
reduce password prompting during restores.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Long options for <application>pg_dump</application> are now available on all platforms</para>
|
||
<para>
|
||
<productname>PostgreSQL</productname> now includes its own
|
||
long-option processing routines.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>libpq Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Add function <function>PQfreemem</function> for freeing memory on
|
||
Windows, suggested for <command>NOTIFY</command> (Bruce)
|
||
</para>
|
||
<para>
|
||
Windows requires that memory allocated in a library be freed by
|
||
a function in the same library, hence
|
||
<function>free()</function> doesn't work for freeing memory
|
||
allocated by libpq. <function>PQfreemem</function> is the proper
|
||
way to free libpq memory, especially on Windows, and is
|
||
recommended for other platforms as well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Document service capability, and add sample file (Bruce)</para>
|
||
<para>
|
||
This allows clients to look up connection information in a
|
||
central file on the client machine.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>PQsetdbLogin</function> have the same defaults as
|
||
<function>PQconnectdb</function> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow thread-safe libpq with <filename>configure</filename>
|
||
option <option>--enable-thread-safety</option> (Lee Kindness,
|
||
Philip Yarra)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow function <function>pqInternalNotice</function> to accept a
|
||
format string and arguments instead of just a preformatted
|
||
message (Tom, Sean Chittenden)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Control SSL negotiation with <literal>sslmode</literal> values
|
||
<literal>disable</literal>, <literal>allow</literal>,
|
||
<literal>prefer</literal>, and <literal>require</literal> (Jon
|
||
Jensen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow new error codes and levels of text (Tom)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Allow access to the underlying table and column of a query result (Tom)</para>
|
||
<para>
|
||
This is helpful for query-builder applications that want to know
|
||
the underlying table and column names associated with a specific
|
||
result set.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
|
||
<listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add function <function>PQexecPrepared</function> and
|
||
<function>PQsendQueryPrepared</function> functions which perform
|
||
bind/execute of previously prepared statements (Tom)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>JDBC Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
|
||
<listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
|
||
<listitem><para>Support SSL connections (Barry)</para></listitem>
|
||
<listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
|
||
<listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Miscellaneous Interface Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Add Informix compatibility to ECPG (Michael)</para>
|
||
<para>
|
||
This allows ECPG to process embedded C programs that were
|
||
written using certain Informix extensions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow thread-safe embedded SQL programs with
|
||
<filename>configure</filename> option
|
||
<option>--enable-thread-safety</option> (Lee Kindness, Bruce)
|
||
</para>
|
||
<para>
|
||
This allows multiple threads to access the database at the same
|
||
time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
|
||
<listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
|
||
<listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
|
||
<listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
|
||
<listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
|
||
<listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
|
||
<listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
|
||
<listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
|
||
<listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
|
||
<listitem><para>Convert administration scripts to C (Peter)</para></listitem>
|
||
<listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
|
||
<listitem><para>Merge documentation into one book (Peter)</para></listitem>
|
||
<listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
|
||
<listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
|
||
<listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
|
||
<listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
|
||
<listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
|
||
<listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
|
||
<listitem>
|
||
<para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
|
||
<para>
|
||
This was no longer needed now that we have <command>CREATE CONVERSION</command>.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Generate a compile error if spinlock code is not found (Bruce)</para>
|
||
<para>
|
||
Platforms without spinlock code will now fail to compile, rather
|
||
than silently using semaphores. This failure can be disabled
|
||
with a new <command>configure</command> option.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change dbmirror license to BSD</para></listitem>
|
||
<listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
|
||
<listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
|
||
<listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
|
||
<listitem><para>Update oracle</para></listitem>
|
||
<listitem><para>Update mysql</para></listitem>
|
||
<listitem><para>Update cube (Bruno Wolff III)</para></listitem>
|
||
<listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
|
||
<listitem><para>Update btree_gist (Oleg)</para></listitem>
|
||
<listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
|
||
<listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
|
||
<listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
|
||
<listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
|
||
<listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
|
||
<listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
|
||
<listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
|
||
<listitem><para>Improve pgstattuple (Rod)</para></listitem>
|
||
<listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
|
||
<listitem><para>Improve adddepend (Rod)</para></listitem>
|
||
<listitem><para>Update spi/timetravel (B<>jthe Zolt<6C>n)</para></listitem>
|
||
<listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, M<>rcio Smiderle)</para></listitem>
|
||
<listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-21">
|
||
<title>Release 7.3.21</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2008-01-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.20,
|
||
including fixes for significant security issues.
|
||
</para>
|
||
|
||
<para>
|
||
This is expected to be the last <productname>PostgreSQL</> release
|
||
in the 7.3.X series. Users are encouraged to update to a newer
|
||
release branch soon.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.21</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent functions in indexes from executing with the privileges of
|
||
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Functions used in index expressions and partial-index
|
||
predicates are evaluated whenever a new table entry is made. It has
|
||
long been understood that this poses a risk of trojan-horse code
|
||
execution if one modifies a table owned by an untrustworthy user.
|
||
(Note that triggers, defaults, check constraints, etc. pose the
|
||
same type of risk.) But functions in indexes pose extra danger
|
||
because they will be executed by routine maintenance operations
|
||
such as <command>VACUUM FULL</>, which are commonly performed
|
||
automatically under a superuser account. For example, a nefarious user
|
||
can execute code with superuser privileges by setting up a
|
||
trojan-horse index definition and waiting for the next routine vacuum.
|
||
The fix arranges for standard maintenance operations
|
||
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
||
and <command>CLUSTER</>) to execute as the table owner rather than
|
||
the calling user, using the same privilege-switching mechanism already
|
||
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
||
this security measure, execution of <command>SET SESSION
|
||
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
||
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
|
||
<para>
|
||
The fix that appeared for this in 7.3.20 was incomplete, as it plugged
|
||
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
||
CVE-2007-3278)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential crash in <function>translate()</> when using a multibyte
|
||
database encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
||
NULL rowid as a category in its own right, rather than crashing (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a specific version of <productname>Autoconf</> to be used
|
||
when re-generating the <command>configure</> script (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This affects developers and packagers only. The change was made
|
||
to prevent accidental use of untested combinations of
|
||
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
||
You can remove the version check if you really want to use a
|
||
different <productname>Autoconf</> version, but it's
|
||
your responsibility whether the result works or not.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-20">
|
||
<title>Release 7.3.20</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-09-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains fixes from 7.3.19.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.20</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent index corruption when a transaction inserts rows and
|
||
then aborts close to the end of a concurrent <command>VACUUM</>
|
||
on the same table (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix crash when <varname>log_min_error_statement</> logging runs out
|
||
of memory (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
||
password authentication, as a security measure (Joe)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-19">
|
||
<title>Release 7.3.19</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-04-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains fixes from 7.3.18,
|
||
including a security fix.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.19</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support explicit placement of the temporary-table schema within
|
||
<varname>search_path</>, and disable searching it for functions
|
||
and operators (Tom)
|
||
</para>
|
||
<para>
|
||
This is needed to allow a security-definer function to set a
|
||
truly secure value of <varname>search_path</>. Without it,
|
||
an unprivileged SQL user can use temporary objects to execute code
|
||
with the privileges of the security-definer function (CVE-2007-2138).
|
||
See <command>CREATE FUNCTION</> for more information.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
||
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-18">
|
||
<title>Release 7.3.18</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-02-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.17, including
|
||
a security fix.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.18</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove security vulnerability that allowed connected users
|
||
to read backend memory (Tom)
|
||
</para>
|
||
<para>
|
||
The vulnerability involves changing the
|
||
data type of a table column used in a SQL function (CVE-2007-0555).
|
||
This error can easily be exploited to cause a backend crash, and in
|
||
principle might be used to read database content that the user
|
||
should not be able to access.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix rare bug wherein btree index page splits could fail
|
||
due to choosing an infeasible split point (Heikki Linnakangas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Tighten security of multi-byte character processing for UTF8 sequences
|
||
over three bytes long (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-17">
|
||
<title>Release 7.3.17</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2007-01-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.16.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.17</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>to_number()</> and <function>to_char(numeric)</>
|
||
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
||
new <application>initdb</> installs (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is because <varname>lc_numeric</> can potentially
|
||
change the output of these functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve index usage of regular expressions that use parentheses (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <application>psql</> <literal>\d</> performance also.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-16">
|
||
<title>Release 7.3.16</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-10-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.15.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.16</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix corner cases in pattern matching for
|
||
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
||
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
||
(Teodor)</para></listitem>
|
||
<listitem><para>Back-port 7.4 spinlock code to improve performance and support
|
||
64-bit architectures better</para> </listitem>
|
||
<listitem><para>Fix SSL-related memory leak in libpq</para> </listitem>
|
||
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
||
<listitem><para>Adjust regression tests for recent changes in US DST laws
|
||
</para> </listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-15">
|
||
<title>Release 7.3.15</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-05-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.14,
|
||
including patches for extremely serious security issues.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.15</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
|
||
<para>
|
||
Full security against the SQL-injection attacks described in
|
||
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
||
code. If you have applications that embed untrustworthy strings
|
||
into SQL commands, you should examine them as soon as possible to
|
||
ensure that they are using recommended escaping techniques. In
|
||
most cases, applications should be using subroutines provided by
|
||
libraries or drivers (such as <application>libpq</>'s
|
||
<function>PQescapeStringConn()</>) to perform string escaping,
|
||
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
||
characters in all cases (Tatsuo, Tom)</para>
|
||
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
||
some time, the checks are now applied uniformly to all encodings and all
|
||
textual input, and are now always errors not merely warnings. This change
|
||
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
||
<para>As a server-side defense against SQL-injection attacks of the type
|
||
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
||
<literal>\'</> as a representation of ASCII single quote in SQL string
|
||
literals. By default, <literal>\'</> is rejected only when
|
||
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
||
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
||
A new configuration parameter <varname>backslash_quote</> is available to
|
||
adjust this behavior when needed. Note that full security against
|
||
CVE-2006-2314 might require client-side changes; the purpose of
|
||
<varname>backslash_quote</> is in part to make it obvious that insecure
|
||
clients are insecure.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
||
aware of encoding considerations</para>
|
||
<para>This fixes <application>libpq</>-using applications for the security
|
||
issues described in CVE-2006-2313 and CVE-2006-2314.
|
||
Applications that use multiple <productname>PostgreSQL</> connections
|
||
concurrently should migrate to <function>PQescapeStringConn()</> and
|
||
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
||
for the settings in use in each database connection. Applications that
|
||
do string escaping <quote>by hand</> should be modified to rely on library
|
||
routines instead.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
||
<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
|
||
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
||
<function>mic_to_euc_tw</> were all broken to varying
|
||
extents.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
||
(Bruce, Jan)</para></listitem>
|
||
|
||
<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
|
||
Fuhr)</para></listitem>
|
||
|
||
<listitem><para>Fix various minor memory leaks</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-14">
|
||
<title>Release 7.3.14</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-02-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.13.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.14</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.13, see the release
|
||
notes for 7.3.13.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix potential crash in <command>SET
|
||
SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
|
||
<para>An unprivileged user could crash the server process, resulting in
|
||
momentary denial of service to other users, if the server has been compiled
|
||
with Asserts enabled (which is not the default).
|
||
Thanks to Akio Ishida for reporting this problem.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug with row visibility logic in self-inserted
|
||
rows (Tom)</para>
|
||
<para>Under rare circumstances a row inserted by the current command
|
||
could be seen as already valid, when it should not be. Repairs bug
|
||
created in 7.3.11 release.
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix race condition that could lead to <quote>file already
|
||
exists</> errors during pg_clog file creation
|
||
(Tom)</para></listitem>
|
||
|
||
<listitem><para>Fix to allow restoring dumps that have cross-schema
|
||
references to custom operators (Tom)</para></listitem>
|
||
|
||
<listitem><para>Portability fix for testing presence of <function>finite</>
|
||
and <function>isinf</> during configure (Tom)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-13">
|
||
<title>Release 7.3.13</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2006-01-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.12.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.13</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.10, see the release
|
||
notes for 7.3.10.
|
||
Also, you might need to <command>REINDEX</> indexes on textual
|
||
columns after updating, if you are affected by the locale or
|
||
<application>plperl</> issues described below.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix character string comparison for locales that consider
|
||
different character combinations as equal, such as Hungarian (Tom)</para>
|
||
<para>This might require <command>REINDEX</> to fix existing indexes on
|
||
textual columns.</para></listitem>
|
||
|
||
<listitem><para>Set locale environment variables during postmaster startup
|
||
to ensure that <application>plperl</> won't change the locale later</para>
|
||
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
||
started with environment variables specifying a different locale than what
|
||
<application>initdb</> had been told. Under these conditions, any use of
|
||
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
||
<command>REINDEX</> to fix existing indexes on
|
||
textual columns if this has happened to you.</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
||
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
||
</para></listitem>
|
||
|
||
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
||
which caused it not to use all available salt space for MD5 and
|
||
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
||
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
||
|
||
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
||
rather than crashing, when the number of columns specified is different from
|
||
what's actually returned by the query (Joe)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-12">
|
||
<title>Release 7.3.12</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-12-12</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.11.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.12</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.10, see the release
|
||
notes for 7.3.10.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Fix race condition in transaction log management</para>
|
||
<para>There was a narrow window in which an I/O operation could be initiated
|
||
for the wrong page, leading to an Assert failure or data
|
||
corruption.</para>
|
||
</listitem>
|
||
|
||
<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
|
||
|
||
<listitem><para>Fix longstanding planning error for outer joins</para>
|
||
<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
|
||
only supported with merge-joinable join conditions</>.</para></listitem>
|
||
|
||
<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
|
||
table has been dropped</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-11">
|
||
<title>Release 7.3.11</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-10-04</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.10.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.11</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
if you are upgrading from a version earlier than 7.3.10, see the release
|
||
notes for 7.3.10.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix error that allowed <command>VACUUM</> to remove
|
||
<literal>ctid</> chains too soon, and add more checking in code that follows
|
||
<literal>ctid</> links</para>
|
||
<para>This fixes a long-standing problem that could cause crashes in very rare
|
||
circumstances.</para></listitem>
|
||
<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
|
||
length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
|
||
<para>In prior releases, the padding of <type>CHAR()</> was incorrect
|
||
because it only padded to the specified number of bytes without
|
||
considering how many characters were stored.</para></listitem>
|
||
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
||
a...</> with GiST index on column <literal>a</></para></listitem>
|
||
<listitem><para>Improve checking for partially-written WAL
|
||
pages</para></listitem>
|
||
<listitem><para>Improve robustness of signal handling when SSL is
|
||
enabled</para></listitem>
|
||
<listitem><para>Various memory leakage fixes</para></listitem>
|
||
<listitem><para>Various portability improvements</para></listitem>
|
||
<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
|
||
the variable is of pass-by-reference type</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-10">
|
||
<title>Release 7.3.10</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-05-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.9, including several
|
||
security-related issues.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.10</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X. However,
|
||
it is one possible way of handling a significant security problem
|
||
that has been found in the initial contents of 7.3.X system
|
||
catalogs. A dump/initdb/reload sequence using 7.3.10's initdb will
|
||
automatically correct this problem.
|
||
</para>
|
||
|
||
<para>
|
||
The security problem is that the built-in character set encoding
|
||
conversion functions can be invoked from SQL commands by unprivileged
|
||
users, but the functions were not designed for such use and are not
|
||
secure against malicious choices of arguments. The fix involves changing
|
||
the declared parameter list of these functions so that they can no longer
|
||
be invoked from SQL commands. (This does not affect their normal use
|
||
by the encoding conversion machinery.)
|
||
It is strongly recommended that all installations repair this error,
|
||
either by initdb or by following the manual repair procedure given
|
||
below. The error at least allows unprivileged database users to crash
|
||
their server process, and might allow unprivileged users to gain the
|
||
privileges of a database superuser.
|
||
</para>
|
||
|
||
<para>
|
||
If you wish not to do an initdb, perform the following procedure instead.
|
||
As the database superuser, do:
|
||
|
||
<programlisting>
|
||
BEGIN;
|
||
UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
|
||
WHERE pronamespace = 11 AND pronargs = 5
|
||
AND proargtypes[2] = 'cstring'::regtype;
|
||
-- The command should report having updated 90 rows;
|
||
-- if not, rollback and investigate instead of committing!
|
||
COMMIT;
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
The above procedure must be carried out in <emphasis>each</> database
|
||
of an installation, including <literal>template1</>, and ideally
|
||
including <literal>template0</> as well. If you do not fix the
|
||
template databases then any subsequently created databases will contain
|
||
the same error. <literal>template1</> can be fixed in the same way
|
||
as any other database, but fixing <literal>template0</> requires
|
||
additional steps. First, from any database issue:
|
||
<programlisting>
|
||
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
|
||
</programlisting>
|
||
Next connect to <literal>template0</> and perform the above repair
|
||
procedure. Finally, do:
|
||
<programlisting>
|
||
-- re-freeze template0:
|
||
VACUUM FREEZE;
|
||
-- and protect it against future alterations:
|
||
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Change encoding function signature to prevent
|
||
misuse</para></listitem>
|
||
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
||
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
||
than for other purposes</para>
|
||
<para>This is an extremely serious bug since it could lead to apparent
|
||
data inconsistencies being briefly visible to applications.</para></listitem>
|
||
<listitem><para>Repair race condition between relation extension and
|
||
VACUUM</para>
|
||
<para>This could theoretically have caused loss of a page's worth of
|
||
freshly-inserted data, although the scenario seems of very low probability.
|
||
There are no known cases of it having caused more than an Assert failure.
|
||
</para></listitem>
|
||
<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
|
||
<para>
|
||
The comparison code was wrong in the case where the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
|
||
it will need to be <command>REINDEX</>ed after installing this update, because
|
||
the fix corrects the sort order of column values.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
||
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
||
<listitem><para>Fix mis-display of negative fractional seconds in
|
||
<type>INTERVAL</> values</para>
|
||
<para>
|
||
This error only occurred when the
|
||
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
||
</para></listitem>
|
||
<listitem><para>Additional buffer overrun checks in plpgsql
|
||
(Neil)</para></listitem>
|
||
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
|
||
correctly (Neil)</para></listitem>
|
||
<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
|
||
month-related formats</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
|
||
(Marko Kreen)</para></listitem>
|
||
<listitem><para>Still more 64-bit fixes for
|
||
<filename>contrib/intagg</></para></listitem>
|
||
<listitem><para>Prevent incorrect optimization of functions returning
|
||
<type>RECORD</></para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-9">
|
||
<title>Release 7.3.9</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-01-31</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.8, including several
|
||
security-related issues.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.9</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
||
<para>
|
||
On platforms that will automatically execute initialization functions of a
|
||
shared library (this includes at least Windows and ELF-based Unixen),
|
||
<command>LOAD</> can be used to make the server execute arbitrary code.
|
||
Thanks to NGS Software for reporting this.</para></listitem>
|
||
<listitem><para>Check that creator of an aggregate function has the right to
|
||
execute the specified transition functions</para>
|
||
<para>
|
||
This oversight made it possible to bypass denial of EXECUTE
|
||
permission on a function.</para></listitem>
|
||
<listitem><para>Fix security and 64-bit issues in
|
||
contrib/intagg</para></listitem>
|
||
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
||
Jurka)</para></listitem>
|
||
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
||
many parameters (Neil)</para></listitem>
|
||
<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
|
||
<para>
|
||
The result of the join was mistakenly supposed to be sorted the same as the
|
||
left input. This could not only deliver mis-sorted output to the user, but
|
||
in case of nested merge joins could give outright wrong answers.
|
||
</para></listitem>
|
||
<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
|
||
<listitem><para>Fix display of negative intervals in SQL and GERMAN
|
||
datestyles</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-8">
|
||
<title>Release 7.3.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-10-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.7.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair possible failure to update hint bits on disk</para>
|
||
<para>
|
||
Under rare circumstances this oversight could lead to
|
||
<quote>could not access transaction status</> failures, which qualifies
|
||
it as a potential-data-loss bug.
|
||
</para></listitem>
|
||
<listitem><para>Ensure that hashed outer join does not miss tuples</para>
|
||
<para>
|
||
Very large left joins using a hash join plan could fail to output unmatched
|
||
left-side rows given just the right data distribution.
|
||
</para></listitem>
|
||
<listitem><para>Disallow running pg_ctl as root</para>
|
||
<para>
|
||
This is to guard against any possible security issues.
|
||
</para></listitem>
|
||
<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
|
||
<para>
|
||
This has been reported as a security issue, though it's hardly worthy of
|
||
concern since there is no reason for non-developers to use this script anyway.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-7">
|
||
<title>Release 7.3.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-08-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains one critical fix over 7.3.6, and some minor items.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.3.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Prevent possible loss of committed transactions during crash</para>
|
||
<para>
|
||
Due to insufficient interlocking between transaction commit and checkpointing,
|
||
it was possible for transactions committed just before the most recent
|
||
checkpoint to be lost, in whole or in part, following a database crash and
|
||
restart. This is a serious bug that has existed
|
||
since <productname>PostgreSQL</productname> 7.1.
|
||
</para></listitem>
|
||
<listitem><para>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
|
||
<listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-6">
|
||
<title>Release 7.3.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-03-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.3.5.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.6</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running 7.3.*.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Revert erroneous changes in rule permissions checking</para>
|
||
<para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
|
||
turns out to have disabled rule-related permissions checks in many
|
||
not-so-corner cases. This would for example allow users to insert into views
|
||
they weren't supposed to have permission to insert into. We have therefore
|
||
reverted the 7.3.3 patch. The original bug will be fixed in 8.0.
|
||
</para></listitem>
|
||
<listitem><para>Repair incorrect order of operations in
|
||
GetNewTransactionId()</para>
|
||
<para>
|
||
This bug could result in failure under out-of-disk-space conditions, including
|
||
inability to restart even after disk space is freed.
|
||
</para></listitem>
|
||
<listitem><para>Ensure configure selects -fno-strict-aliasing even when
|
||
an external value for CFLAGS is supplied</para>
|
||
<para>
|
||
On some platforms, building with -fstrict-aliasing causes bugs.
|
||
</para></listitem>
|
||
<listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
|
||
<para>
|
||
This bug prevented proper restoration from archive files exceeding 4 GB.
|
||
</para></listitem>
|
||
<listitem><para>Make contrib/dblink not assume that local and remote type OIDs
|
||
match (Joe)</para></listitem>
|
||
<listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
|
||
<listitem><para>Don't crash when a rowtype argument to a plpgsql function is
|
||
NULL</para></listitem>
|
||
<listitem><para>Avoid generating invalid character encoding sequences in
|
||
corner cases when planning LIKE operations</para></listitem>
|
||
<listitem><para>Ensure text_position() cannot scan past end of source string
|
||
in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
|
||
<listitem><para>Fix index optimization and selectivity estimates for LIKE
|
||
operations on bytea columns (Joe)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-5">
|
||
<title>Release 7.3.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-12-03</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This has a variety of fixes from 7.3.4.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.5</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running 7.3.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
|
||
<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
|
||
<listitem><para>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
|
||
<listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
|
||
<listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
|
||
<listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
|
||
<listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
|
||
<listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
|
||
<listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
|
||
<listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
|
||
<listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
|
||
<listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
|
||
<listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
|
||
<listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
|
||
<listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
|
||
<listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
|
||
(prevents possible SQL-injection attacks)</para></listitem>
|
||
<listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
|
||
<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-3-4">
|
||
<title>Release 7.3.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-07-24</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This has a variety of fixes from 7.3.3.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.4</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running 7.3.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
|
||
<listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
|
||
<listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
|
||
<listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
|
||
<listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
|
||
<listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
|
||
<listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
|
||
<listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
|
||
<listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-3-3">
|
||
<title>Release 7.3.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-05-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.3.2.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.3</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.3.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
|
||
<listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
|
||
<listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
|
||
<listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
|
||
<listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
|
||
<listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
|
||
<listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
|
||
<listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
|
||
<listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
|
||
<listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
|
||
<listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
|
||
<type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
|
||
<listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
|
||
not applied unless you <application>initdb</application>)</para></listitem>
|
||
<listitem><para>Fix <application>pg_proc</application> entry for
|
||
<type>timestampt_izone</type> (fix is not applied unless you
|
||
<application>initdb</application>)</para></listitem>
|
||
<listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
|
||
<listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
|
||
<listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
|
||
<listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
|
||
synonym for <command>TEMPORARY</command></para></listitem>
|
||
<listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
|
||
<listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
|
||
<listitem><para>Fix incorrect time-qual check in row fetch for
|
||
<command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
|
||
<listitem><para>Foreign-key clauses were parsed but ignored in
|
||
<command>ALTER TABLE ADD COLUMN</command></para></listitem>
|
||
<listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
|
||
<listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
|
||
<listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
|
||
<listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
|
||
<listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
|
||
<listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
|
||
<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
|
||
<listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
|
||
<listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
|
||
<listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
|
||
<listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
|
||
<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
|
||
<listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
|
||
<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
|
||
<listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
|
||
<listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
|
||
<listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
|
||
<listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
|
||
<listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
|
||
<listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
|
||
<listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
|
||
<listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
|
||
<listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
|
||
<listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
|
||
<listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
|
||
<listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
|
||
<listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
|
||
<listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
|
||
<listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
|
||
<listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
|
||
<listitem><para>Allow qualified type names in <command>CREATE CAST</command>
|
||
and <command> DROP CAST</command></para></listitem>
|
||
<listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
|
||
be written <function>SETOF _type</function></para></listitem>
|
||
<listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
|
||
<listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
|
||
<listitem><para><application>pg_dump</application> failed to handle error return
|
||
from <function>lo_read</function> (Oleg Drokin)</para></listitem>
|
||
<listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
|
||
<listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
|
||
<listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
|
||
<listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
|
||
<listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
|
||
<listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
|
||
<listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
|
||
<listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
|
||
<listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
|
||
<listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
|
||
<listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
|
||
<listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-3-2">
|
||
<title>Release 7.3.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-02-04</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.3.1.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.3.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
|
||
<listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
|
||
<listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
|
||
<listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
|
||
<listitem><para>Increase default value of max_fsm_relations</para></listitem>
|
||
<listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
|
||
<listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
|
||
<listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
|
||
<listitem><para>Fix problem with all-numeric user names</para></listitem>
|
||
<listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
|
||
<listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
|
||
<listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
|
||
<listitem><para>Work with bison 1.875</para></listitem>
|
||
<listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
|
||
<listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
|
||
<listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
|
||
<listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
|
||
<listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
|
||
<listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
|
||
<listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
|
||
<listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
|
||
<listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
|
||
<listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
|
||
<listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
|
||
<listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
|
||
<listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
|
||
<listitem><para>Update my2pg, ora2pg</para></listitem>
|
||
<listitem><para>Translation updates</para></listitem>
|
||
<listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
|
||
<listitem><para>fastpath code now checks for privilege to call function</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-3-1">
|
||
<title>Release 7.3.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-12-18</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.3.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.3. However, it should be noted that the main
|
||
<productname>PostgreSQL</productname> interface library, libpq,
|
||
has a new major version number for this release, which might require
|
||
recompilation of client code in certain cases.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
|
||
<listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
|
||
<listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
|
||
<listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
|
||
<listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
|
||
<listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
|
||
<listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
|
||
<listitem><para>Optimizer fixes (Tom)</para></listitem>
|
||
<listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
|
||
<listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
|
||
<listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
|
||
<listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
|
||
<listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
|
||
<listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
|
||
<listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
|
||
<listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-3">
|
||
<title>Release 7.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-11-27</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>Schemas</term>
|
||
<listitem>
|
||
<para>
|
||
Schemas allow users to create objects in separate namespaces,
|
||
so two people or applications can have tables with the same
|
||
name. There is also a public schema for shared tables.
|
||
Table/index creation can be restricted by removing privileges
|
||
on the public schema.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Drop Column</term>
|
||
<listitem>
|
||
<para>
|
||
<productname>PostgreSQL</productname> now supports the
|
||
<literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Table Functions</term>
|
||
<listitem>
|
||
<para>
|
||
Functions returning multiple rows and/or multiple columns are
|
||
now much easier to use than before. You can call such a
|
||
<quote>table function</quote> in the <literal>SELECT</literal>
|
||
<literal>FROM</literal> clause, treating its output like a
|
||
table. Also, <application>PL/pgSQL</application> functions can
|
||
now return sets.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Prepared Queries</term>
|
||
<listitem>
|
||
<para>
|
||
<productname>PostgreSQL</productname> now supports prepared
|
||
queries, for improved performance.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Dependency Tracking</term>
|
||
<listitem>
|
||
<para>
|
||
<productname>PostgreSQL</productname> now records object
|
||
dependencies, which allows improvements in many areas.
|
||
<command>DROP</command> statements now take either
|
||
<literal>CASCADE</> or <literal>RESTRICT</> to control whether
|
||
dependent objects are also dropped.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Privileges</term>
|
||
<listitem>
|
||
<para>
|
||
Functions and procedural languages now have privileges, and
|
||
functions can be defined to run with the privileges of their
|
||
creator.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Internationalization</term>
|
||
<listitem>
|
||
<para>
|
||
Both multibyte and locale support are now always enabled.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Logging</term>
|
||
<listitem>
|
||
<para>
|
||
A variety of logging options have been enhanced.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Interfaces</term>
|
||
<listitem>
|
||
<para>
|
||
A large number of interfaces have been moved to <ulink
|
||
url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
|
||
where they can be developed and released independently.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Functions/Identifiers</term>
|
||
<listitem>
|
||
<para>
|
||
By default, functions can now take up to 32 parameters, and
|
||
identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</>
|
||
is now deprecated: there are specific <quote>pseudo-datatypes</>
|
||
to represent each of the former meanings of <literal>OPAQUE</>
|
||
in function argument and result types.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.3</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</> is required for those
|
||
wishing to migrate data from any previous release. If your
|
||
application examines the system catalogs, additional changes will
|
||
be required due to the introduction of schemas in 7.3; for more
|
||
information, see: <ulink
|
||
url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
|
||
</para>
|
||
|
||
<para>
|
||
Observe the following incompatibilities:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Pre-6.3 clients are no longer supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>pg_hba.conf</filename> now has a column for the user
|
||
name and additional features. Existing files need to be
|
||
adjusted.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Several <filename>postgresql.conf</filename> logging parameters
|
||
have been renamed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>LIMIT #,#</literal> has been disabled; use
|
||
<literal>LIMIT # OFFSET #</literal>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>INSERT</command> statements with column lists must
|
||
specify a value for each specified column. For example,
|
||
<literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
|
||
is now invalid. It's still allowed to supply fewer columns than
|
||
expected if the <command>INSERT</command> does not have a column list.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<type>serial</type> columns are no longer automatically
|
||
<literal>UNIQUE</>; thus, an index will not automatically be
|
||
created.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
A <command>SET</command> command inside an aborted transaction
|
||
is now rolled back.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>COPY</command> no longer considers missing trailing
|
||
columns to be null. All columns need to be specified.
|
||
(However, one can achieve a similar effect by specifying a
|
||
column list in the <command>COPY</command> command.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The data type <type>timestamp</type> is now equivalent to
|
||
<type>timestamp without time zone</type>, instead of
|
||
<type>timestamp with time zone</type>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pre-7.3 databases loaded into 7.3 will not have the new object
|
||
dependencies for <type>serial</type> columns, unique
|
||
constraints, and foreign keys. See the directory
|
||
<filename>contrib/adddepend/</filename> for a detailed
|
||
description and a script that will add such dependencies.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
An empty string (<literal>''</literal>) is no longer allowed as
|
||
the input into an integer field. Formerly, it was silently
|
||
interpreted as 0.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<sect3>
|
||
<title>Server Operation</title>
|
||
<itemizedlist>
|
||
<listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
|
||
<listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
|
||
<listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
|
||
<listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Performance</title>
|
||
<itemizedlist>
|
||
<listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
|
||
<listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
|
||
<listitem><para>Improve caching of index information (Tom)</para></listitem>
|
||
<listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
|
||
<listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
|
||
<listitem><para>Hash function improvements (Neil)</para></listitem>
|
||
<listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
|
||
<listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
|
||
<listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
|
||
<listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
|
||
<listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
|
||
<listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
|
||
<listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
|
||
<listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
|
||
<listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
|
||
<listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
|
||
<listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
|
||
<listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Privileges</title>
|
||
<itemizedlist>
|
||
<listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
|
||
<listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
|
||
<listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
|
||
<listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
|
||
<listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Configuration</title>
|
||
<itemizedlist>
|
||
<listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
|
||
<listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
|
||
<listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
|
||
<listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
|
||
<listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
|
||
<listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
|
||
<listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
|
||
<listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
|
||
<listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
|
||
<listitem><para>SSL improvements (Bear Giles)</para></listitem>
|
||
<listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
|
||
<listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
|
||
<listitem><para>Add log_duration parameter (Bruce)</para></listitem>
|
||
<listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
|
||
<listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
|
||
<listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
<itemizedlist>
|
||
<listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
|
||
<listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
|
||
<listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
|
||
<listitem><para>UNION fixes for merging >= 3 columns of different lengths (Tom)</para></listitem>
|
||
<listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
|
||
<listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
|
||
<listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)</para></listitem>
|
||
<listitem><para>Fix for join aliases (Tom)</para></listitem>
|
||
<listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
|
||
<listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
|
||
<listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
|
||
<listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
|
||
<listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
|
||
<listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
|
||
<listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
|
||
<listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
|
||
<listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
|
||
<listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation</title>
|
||
<itemizedlist>
|
||
<listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
|
||
<listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
|
||
<listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
|
||
<listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
|
||
<listitem><para>Create schema for temporary tables (Tom)</para></listitem>
|
||
<listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
|
||
<listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
|
||
<listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
|
||
<listitem><para>Make rule names unique only per table (Tom)</para></listitem>
|
||
<listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
|
||
<listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
|
||
<listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
|
||
<listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
|
||
<listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
|
||
<listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
|
||
<listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
|
||
<listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
|
||
<listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
|
||
<listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
|
||
<listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
|
||
<listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
|
||
<listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
|
||
<listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
|
||
<listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
|
||
<listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
|
||
<listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
|
||
<listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
|
||
<listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
|
||
<listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
|
||
<listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
|
||
<listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Commands</title>
|
||
<itemizedlist>
|
||
<listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
|
||
<listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
|
||
<listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
|
||
<listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
|
||
<listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
|
||
<listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
|
||
<listitem><para>Restrict database comment changes to the current database</para></listitem>
|
||
<listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
|
||
<listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
|
||
<listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
|
||
<listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
|
||
<listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
|
||
<listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
|
||
<listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
|
||
<listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
|
||
<listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
|
||
<listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
|
||
<listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
|
||
<listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
|
||
<listitem><para>Have SHOW output a query result (Joe)</para></listitem>
|
||
<listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
|
||
<listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
|
||
<listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
|
||
<listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
|
||
<listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
|
||
<listitem><para>Enable large file support, >2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
|
||
<listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
|
||
<listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
|
||
<listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
|
||
<listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
|
||
<listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
|
||
<listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
|
||
<listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
|
||
<listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Types and Functions</title>
|
||
<itemizedlist>
|
||
<listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
|
||
<listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
|
||
<listitem><para>Fix for array slice extraction (Tom)</para></listitem>
|
||
<listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
|
||
<listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
|
||
<listitem><para>Add domain support (Rod)</para></listitem>
|
||
<listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
|
||
<listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
|
||
<listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
|
||
<listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
|
||
<listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
|
||
<listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
|
||
<listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
|
||
<listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
|
||
<listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
|
||
<listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
|
||
<listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
|
||
<listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
|
||
<listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
|
||
<listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
|
||
<listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
|
||
<listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
|
||
<listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
|
||
<listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
|
||
<listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
|
||
<listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
|
||
<listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
|
||
<listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
|
||
<listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
|
||
<listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
|
||
<listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
|
||
<listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
|
||
<listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
|
||
<listitem><para>Add current_database() (Rod)</para></listitem>
|
||
<listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
|
||
<listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
|
||
<listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
|
||
<listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
|
||
<listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
|
||
<listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Internationalization</title>
|
||
<itemizedlist>
|
||
<listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
|
||
<listitem><para>Enable locale support by default (Peter)</para></listitem>
|
||
<listitem><para>Add locale variables (Peter)</para></listitem>
|
||
<listitem><para>Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
|
||
<listitem><para>Add locale awareness to regular expression character classes</para></listitem>
|
||
<listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
|
||
<listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
|
||
<listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
|
||
<listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
|
||
<listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
|
||
<listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
|
||
<listitem><para>New and updated translations</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server-side Languages</title>
|
||
<itemizedlist>
|
||
<listitem><para>Allow recursive SQL function (Peter)</para></listitem>
|
||
<listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
|
||
<listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
|
||
<listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
|
||
<listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
|
||
<listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
|
||
<listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>psql</title>
|
||
<itemizedlist>
|
||
<listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
|
||
<listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
|
||
<listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
|
||
<listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
|
||
<listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
|
||
<listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
|
||
<listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
|
||
<listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
|
||
<listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
|
||
<listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
|
||
<listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>libpq</title>
|
||
<itemizedlist>
|
||
<listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
|
||
<listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
|
||
<listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
|
||
<listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
|
||
<listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
|
||
<listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
|
||
<listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
|
||
<listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>JDBC</title>
|
||
<itemizedlist>
|
||
<listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
|
||
<listitem><para>Add JDBC 3 support (Barry)</para></listitem>
|
||
<listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
|
||
<listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
|
||
<listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
|
||
<listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
|
||
<listitem><para>Add query cancel capability</para></listitem>
|
||
<listitem><para>Add refresh row (Dave)</para></listitem>
|
||
<listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
|
||
<listitem><para>Add support for prepared statements (Barry)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Miscellaneous Interfaces</title>
|
||
<itemizedlist>
|
||
<listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
|
||
<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
|
||
<listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
|
||
<listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
|
||
<listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
|
||
<listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
|
||
<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
|
||
<listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
|
||
<listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
|
||
<listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code</title>
|
||
<itemizedlist>
|
||
<listitem><para>Fix for parallel make (Peter)</para></listitem>
|
||
<listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
|
||
<listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
|
||
<listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
|
||
<listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
|
||
<listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
|
||
<listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
|
||
<listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
|
||
<listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
|
||
<listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
|
||
<listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
|
||
<listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
|
||
<listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
|
||
<listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
|
||
<listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
|
||
<listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
|
||
<listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
|
||
<listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
|
||
<listitem><para>Bison >= 1.50 now required for developer builds</para></listitem>
|
||
<listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
|
||
<listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
|
||
<listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
|
||
<listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
|
||
<listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
|
||
<listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
|
||
<listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
|
||
<listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
|
||
<listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
|
||
<listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
|
||
<listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
|
||
<listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
|
||
<listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
|
||
<listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
|
||
<listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
|
||
<listitem><para>Add Posix semaphore support (Tom)</para></listitem>
|
||
<listitem><para>Document need for reindex (Bruce)</para></listitem>
|
||
<listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
|
||
<listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
|
||
<listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
|
||
<listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
|
||
<listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
|
||
<listitem><para>Remove unused system table columns (Peter)</para></listitem>
|
||
<listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
|
||
<listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
|
||
<listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
|
||
<listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
|
||
<listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
|
||
<listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
|
||
<listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib</title>
|
||
<itemizedlist>
|
||
<listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
|
||
<listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
|
||
<listitem><para>Upgrade /contrib/mysql</para></listitem>
|
||
<listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
|
||
<listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
|
||
<listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
|
||
<listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
|
||
<listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
|
||
<listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
|
||
<listitem><para>Update /contrib/dblink (Joe)</para></listitem>
|
||
<listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
|
||
<listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
|
||
<listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
|
||
<listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
|
||
<listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
|
||
<listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
|
||
<listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
|
||
<listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
|
||
<listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
|
||
<listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
|
||
<listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-2-8">
|
||
<title>Release 7.2.8</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-05-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.2.7, including one
|
||
security-related issue.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.8</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.2.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
||
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
||
than for other purposes</para>
|
||
<para>This is an extremely serious bug since it could lead to apparent
|
||
data inconsistencies being briefly visible to applications.</para></listitem>
|
||
<listitem><para>Repair race condition between relation extension and
|
||
VACUUM</para>
|
||
<para>This could theoretically have caused loss of a page's worth of
|
||
freshly-inserted data, although the scenario seems of very low probability.
|
||
There are no known cases of it having caused more than an Assert failure.
|
||
</para></listitem>
|
||
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
||
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
||
<listitem><para>Additional buffer overrun checks in plpgsql
|
||
(Neil)</para></listitem>
|
||
<listitem><para>Fix pg_dump to dump index names and trigger names containing
|
||
<literal>%</> correctly (Neil)</para></listitem>
|
||
<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
|
||
month-related formats</para></listitem>
|
||
<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
|
||
(Marko Kreen)</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-2-7">
|
||
<title>Release 7.2.7</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2005-01-31</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.2.6, including several
|
||
security-related issues.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.7</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.2.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
||
<para>
|
||
On platforms that will automatically execute initialization functions of a
|
||
shared library (this includes at least Windows and ELF-based Unixen),
|
||
<command>LOAD</> can be used to make the server execute arbitrary code.
|
||
Thanks to NGS Software for reporting this.</para></listitem>
|
||
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
||
Jurka)</para></listitem>
|
||
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
||
many parameters (Neil)</para></listitem>
|
||
<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
|
||
<para>
|
||
The result of the join was mistakenly supposed to be sorted the same as the
|
||
left input. This could not only deliver mis-sorted output to the user, but
|
||
in case of nested merge joins could give outright wrong answers.
|
||
</para></listitem>
|
||
<listitem><para>Fix display of negative intervals in SQL and GERMAN
|
||
datestyles</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-2-6">
|
||
<title>Release 7.2.6</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-10-22</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.2.5.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.6</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.2.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Repair possible failure to update hint bits on disk</para>
|
||
<para>
|
||
Under rare circumstances this oversight could lead to
|
||
<quote>could not access transaction status</> failures, which qualifies
|
||
it as a potential-data-loss bug.
|
||
</para></listitem>
|
||
<listitem><para>Ensure that hashed outer join does not miss tuples</para>
|
||
<para>
|
||
Very large left joins using a hash join plan could fail to output unmatched
|
||
left-side rows given just the right data distribution.
|
||
</para></listitem>
|
||
<listitem><para>Disallow running pg_ctl as root</para>
|
||
<para>
|
||
This is to guard against any possible security issues.
|
||
</para></listitem>
|
||
<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
|
||
<para>
|
||
This has been reported as a security issue, though it's hardly worthy of
|
||
concern since there is no reason for non-developers to use this script anyway.
|
||
</para></listitem>
|
||
<listitem><para>Update to newer versions of Bison</para></listitem>
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-2-5">
|
||
<title>Release 7.2.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2004-08-16</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 7.2.4.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.5</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 7.2.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Prevent possible loss of committed transactions during crash</para>
|
||
<para>
|
||
Due to insufficient interlocking between transaction commit and checkpointing,
|
||
it was possible for transactions committed just before the most recent
|
||
checkpoint to be lost, in whole or in part, following a database crash and
|
||
restart. This is a serious bug that has existed
|
||
since <productname>PostgreSQL</productname> 7.1.
|
||
</para></listitem>
|
||
<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
|
||
<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
|
||
<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
|
||
<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
|
||
<listitem><para>Repair memory leaks in pg_dump</para></listitem>
|
||
<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-2-4">
|
||
<title>Release 7.2.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2003-01-30</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.2.3,
|
||
including fixes to prevent possible data loss.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.4</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.2.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
|
||
<listitem><para>Prevent VACUUM from being called inside a function (Bruce)</para></listitem>
|
||
<listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
|
||
<listitem><para>Avoid integer overflow during large hash joins</para></listitem>
|
||
<listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
|
||
<listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
|
||
<listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil)</para></listitem>
|
||
<listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-2-3">
|
||
<title>Release 7.2.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-10-01</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.2.2,
|
||
including fixes to prevent possible data loss.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.3</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.2.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
|
||
<listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
|
||
<listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
|
||
<listitem><para>Fix possible hang during server shutdown</para></listitem>
|
||
<listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
|
||
<listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-2-2">
|
||
<title>Release 7.2.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-08-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.2.1.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.2.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
|
||
<listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
|
||
<listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
|
||
<listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
|
||
<listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
|
||
<listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
|
||
<listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
|
||
<listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
|
||
<listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
|
||
<listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-2-1">
|
||
<title>Release 7.2.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-03-21</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes for version 7.2.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those
|
||
running version 7.2.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
|
||
<listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
|
||
<listitem><para>Optimizer improvements (Tom)</para></listitem>
|
||
<listitem><para>Cash I/O improvements (Tom)</para></listitem>
|
||
<listitem><para>New Russian FAQ</para></listitem>
|
||
<listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
|
||
<listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
|
||
<listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
|
||
<listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
|
||
<listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
|
||
<listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
|
||
<listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
|
||
<listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
|
||
<listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
|
||
<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-2">
|
||
<title>Release 7.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2002-02-04</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
This release improves <productname>PostgreSQL</> for use in
|
||
high-volume applications.
|
||
</para>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>VACUUM</term>
|
||
<listitem>
|
||
<para>
|
||
Vacuuming no longer locks tables, thus allowing normal user
|
||
access during the vacuum. A new <command>VACUUM FULL</>
|
||
command does old-style vacuum by locking the table and
|
||
shrinking the on-disk copy of the table.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Transactions</term>
|
||
<listitem>
|
||
<para>
|
||
There is no longer a problem with installations that exceed
|
||
four billion transactions.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>OIDs</term>
|
||
<listitem>
|
||
<para>
|
||
OIDs are now optional. Users can now create tables without
|
||
OIDs for cases where OID usage is excessive.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Optimizer</term>
|
||
<listitem>
|
||
<para>
|
||
The system now computes histogram column statistics during
|
||
<command>ANALYZE</>, allowing much better optimizer choices.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Security</term>
|
||
<listitem>
|
||
<para>
|
||
A new MD5 encryption option allows more secure storage and
|
||
transfer of passwords. A new Unix-domain socket
|
||
authentication option is available on Linux and BSD systems.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Statistics</term>
|
||
<listitem>
|
||
<para>
|
||
Administrators can use the new table access statistics module
|
||
to get fine-grained information about table and index usage.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Internationalization</term>
|
||
<listitem>
|
||
<para>
|
||
Program and library messages can now be displayed in several
|
||
languages.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.2</title>
|
||
|
||
<para>
|
||
A dump/restore using <command>pg_dump</command> is required for
|
||
those wishing to migrate data from any previous release.
|
||
</para>
|
||
|
||
<para>
|
||
Observe the following incompatibilities:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
The semantics of the <command>VACUUM</command> command have
|
||
changed in this release. You might wish to update your
|
||
maintenance procedures accordingly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In this release, comparisons using <literal>= NULL</literal>
|
||
will always return false (or NULL, more precisely). Previous
|
||
releases automatically transformed this syntax to <literal>IS
|
||
NULL</literal>. The old behavior can be re-enabled using a
|
||
<filename>postgresql.conf</filename> parameter.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
|
||
configuration is now only reloaded after receiving a
|
||
<systemitem>SIGHUP</> signal, not with each connection.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The function <filename>octet_length()</> now returns the uncompressed data length.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The date/time value <literal>'current'</literal> is no longer
|
||
available. You will need to rewrite your applications.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The <literal>timestamp()</literal>, <literal>time()</literal>,
|
||
and <literal>interval()</literal> functions are no longer
|
||
available. Instead of <literal>timestamp()</literal>, use
|
||
<literal>timestamp 'string'</literal> or <literal>CAST</literal>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
|
||
in the next release. You should change your queries to use
|
||
separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
|
||
20</literal>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<sect3>
|
||
<title>Server Operation</title>
|
||
<itemizedlist>
|
||
<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
|
||
<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
|
||
<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
|
||
<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
|
||
<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
|
||
<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
|
||
<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
|
||
<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
|
||
<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
|
||
<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
|
||
<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
|
||
<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
|
||
<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
|
||
<listitem><para>Long value compression improvement (Tom)</para></listitem>
|
||
<listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
|
||
<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
|
||
<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
|
||
<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
|
||
<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
|
||
<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Performance</title>
|
||
<itemizedlist>
|
||
<listitem><para>Optimizer improvements (Tom)</para></listitem>
|
||
<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
|
||
<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
|
||
<listitem><para>Cache improvements (Tom)</para></listitem>
|
||
<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
|
||
<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
|
||
<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
|
||
<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
|
||
<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
|
||
<listitem><para>B-tree splits more efficient (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Privileges</title>
|
||
<itemizedlist>
|
||
<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
|
||
<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
|
||
<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
|
||
<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
|
||
<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
|
||
<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
|
||
<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
|
||
<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Client Authentication</title>
|
||
<itemizedlist>
|
||
<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
|
||
<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
|
||
<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
|
||
<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
|
||
<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
|
||
<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Configuration</title>
|
||
<itemizedlist>
|
||
<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
|
||
<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
|
||
<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
|
||
<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
|
||
<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
|
||
<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
<itemizedlist>
|
||
<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
|
||
<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
|
||
<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
|
||
<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
|
||
<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
|
||
<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
|
||
<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
|
||
<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
|
||
<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Schema Manipulation</title>
|
||
<itemizedlist>
|
||
<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
|
||
<listitem><para>Allow temporary sequences (Bruce)</para></listitem>
|
||
<listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
|
||
<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
|
||
<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
|
||
<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
|
||
<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
|
||
<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
|
||
<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
|
||
<listitem><para>Allow column renaming in views</para></listitem>
|
||
<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
|
||
<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
|
||
<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
|
||
<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
|
||
<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
|
||
<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
|
||
<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Commands</title>
|
||
<itemizedlist>
|
||
<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
|
||
<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
|
||
<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
|
||
<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
|
||
<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
|
||
<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
|
||
<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
|
||
<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
|
||
<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
|
||
<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Types and Functions</title>
|
||
<itemizedlist>
|
||
<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
|
||
<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
|
||
<listitem><para>New function bit_length() (Peter E)</para></listitem>
|
||
<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
|
||
<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
|
||
<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
|
||
<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
|
||
<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
|
||
<listitem><para>INET, CIDR operators << and <<= indexable (Alex Pilosov)</para></listitem>
|
||
<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
|
||
<listitem><para>Bytea comparison improvements, now supports =, <>, >, >=, <, and <=</para></listitem>
|
||
<listitem><para>Bytea now supports B-tree indexes</para></listitem>
|
||
<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
|
||
<listitem><para>Bytea now supports concatenation</para></listitem>
|
||
<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
|
||
<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
|
||
<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
|
||
<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
|
||
<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
|
||
<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
|
||
<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
|
||
<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
|
||
<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
|
||
<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
|
||
<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
|
||
<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
|
||
<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
|
||
<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
|
||
<listitem><para>Correct description of translate() function (Bruce)</para></listitem>
|
||
<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
|
||
<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
|
||
<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
|
||
<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
|
||
<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
|
||
<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
|
||
<listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
|
||
<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Internationalization</title>
|
||
<itemizedlist>
|
||
<listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem>
|
||
<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
|
||
<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
|
||
<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
|
||
<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
|
||
<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
|
||
<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
|
||
<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>PL/pgSQL</></title>
|
||
<itemizedlist>
|
||
<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
|
||
<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
|
||
<listitem><para>Can now return open cursors (Jan)</para></listitem>
|
||
<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
|
||
<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
|
||
<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
|
||
<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
|
||
<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
|
||
<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
|
||
<listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
|
||
<listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/Perl</title>
|
||
<itemizedlist>
|
||
<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
|
||
<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/Tcl</title>
|
||
<itemizedlist>
|
||
<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
|
||
<listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>PL/Python</title>
|
||
<itemizedlist>
|
||
<listitem><para>...is new (Andrew Bosma)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>psql</></title>
|
||
<itemizedlist>
|
||
<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
|
||
<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
|
||
<listitem><para>Read password from /dev/tty if possible</para></listitem>
|
||
<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
|
||
<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>libpq</></title>
|
||
<itemizedlist>
|
||
<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
|
||
<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>JDBC</title>
|
||
<itemizedlist>
|
||
<listitem><para>Return OID of INSERT (Ken K)</para></listitem>
|
||
<listitem><para>Handle more data types (Ken K)</para></listitem>
|
||
<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
|
||
<listitem><para>Handle NULL variables (Ken K)</para></listitem>
|
||
<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
|
||
<listitem><para>Improved Druid support</para></listitem>
|
||
<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
|
||
<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
|
||
<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
|
||
<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
|
||
<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
|
||
<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
|
||
<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
|
||
<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
|
||
<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
|
||
<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
|
||
<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
|
||
<listitem><para>Array fixes (Greg Zoller)</para></listitem>
|
||
<listitem><para>Serialize addition </para></listitem>
|
||
<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
|
||
<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
|
||
<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
|
||
<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
|
||
<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
|
||
<listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
|
||
<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
|
||
<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
|
||
<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
|
||
<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
|
||
<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
|
||
<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
|
||
<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>ODBC</title>
|
||
<itemizedlist>
|
||
<listitem><para>Remove query size limit (Hiroshi)</para></listitem>
|
||
<listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
|
||
<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
|
||
<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
|
||
<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
|
||
<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
|
||
<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
|
||
<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
|
||
<listitem><para>MD5 password encryption support (Bruce)</para></listitem>
|
||
<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><application>ECPG</></title>
|
||
<itemizedlist>
|
||
<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
|
||
<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
|
||
<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
|
||
<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
|
||
<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
|
||
<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
|
||
<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
|
||
<listitem><para>ECPGfree_auto_mem fixed</para></listitem>
|
||
<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
|
||
<listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Misc. Interfaces</title>
|
||
<itemizedlist>
|
||
<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
|
||
<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
|
||
<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
|
||
<listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem>
|
||
<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Build and Install</title>
|
||
<itemizedlist>
|
||
<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
|
||
<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
|
||
<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
|
||
<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
|
||
<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
|
||
<listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
|
||
<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
|
||
<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
|
||
<listitem><para>Fix parallel make (Peter E)</para></listitem>
|
||
<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
|
||
<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
|
||
<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code</title>
|
||
<itemizedlist>
|
||
<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
|
||
<listitem><para>New GUC hooks (Tom)</para></listitem>
|
||
<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
|
||
<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
|
||
<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
|
||
<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
|
||
<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
|
||
<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
|
||
<listitem><para>Dynahash portability improvements (Tom)</para></listitem>
|
||
<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
|
||
<listitem><para>Improve signal handling logic (Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib</title>
|
||
<itemizedlist>
|
||
<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
|
||
<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
|
||
<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
|
||
<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
|
||
<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
|
||
<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
|
||
<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
|
||
<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
|
||
<listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
|
||
<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-1-3">
|
||
<title>Release 7.1.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2001-08-15</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.1.3</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.1.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Remove unused WAL segments of large transactions (Tom)
|
||
Multiaction rule fix (Tom)
|
||
PL/pgSQL memory allocation fix (Jan)
|
||
VACUUM buffer fix (Tom)
|
||
Regression test fixes (Tom)
|
||
pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
|
||
Fix subselects with DISTINCT ON or LIMIT (Tom)
|
||
BeOS fix
|
||
Disable COPY TO/FROM a view (Tom)
|
||
Cygwin build (Jason Tishler)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-1-2">
|
||
<title>Release 7.1.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2001-05-11</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This has one fix from 7.1.1.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.1.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.1.X.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Fix PL/pgSQL SELECTs when returning no rows
|
||
Fix for psql backslash core dump
|
||
Referential integrity privilege fix
|
||
Optimizer fixes
|
||
pg_dump cleanups
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-1-1">
|
||
<title>Release 7.1.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2001-05-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This has a variety of fixes from 7.1.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.1.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.1.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Fix for numeric MODULO operator (Tom)
|
||
pg_dump fixes (Philip)
|
||
pg_dump can dump 7.0 databases (Philip)
|
||
readline 4.2 fixes (Peter E)
|
||
JOIN fixes (Tom)
|
||
AIX, MSWIN, VAX, N32K fixes (Tom)
|
||
Multibytes fixes (Tom)
|
||
Unicode fixes (Tatsuo)
|
||
Optimizer improvements (Tom)
|
||
Fix for whole rows in functions (Tom)
|
||
Fix for pg_ctl and option strings with spaces (Peter E)
|
||
ODBC fixes (Hiroshi)
|
||
EXTRACT can now take string argument (Thomas)
|
||
Python fixes (Darcy)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-1">
|
||
<title>Release 7.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2001-04-13</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release focuses on removing limitations that have existed in the
|
||
<productname>PostgreSQL</productname> code for many years.
|
||
</para>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
Write-ahead Log (WAL)
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
To maintain database consistency in case of an operating system crash,
|
||
previous releases of <productname>PostgreSQL</productname> have forced
|
||
all data modifications to disk before each transaction commit. With
|
||
WAL, only one log file must be flushed to disk, greatly improving
|
||
performance. If you have been using -F in previous releases to
|
||
disable disk flushes, you might want to consider discontinuing its use.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
TOAST
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
TOAST - Previous releases had a compiled-in row length limit,
|
||
typically 8k - 32k. This limit made storage of long text fields
|
||
difficult. With TOAST, long rows of any length can be stored with good
|
||
performance.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Outer Joins
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
We now support outer joins. The UNION/NOT IN
|
||
workaround for outer joins is no longer required. We use the SQL92
|
||
outer join syntax.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Function Manager
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
The previous C function manager did not
|
||
handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
|
||
function manager does. You can continue using your old custom
|
||
functions, but you might want to rewrite them in the future to use the new
|
||
function manager call interface.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Complex Queries
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
A large number of complex queries that were
|
||
unsupported in previous releases now work. Many combinations of views,
|
||
aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
|
||
now work properly. Inherited tables are now accessed by default.
|
||
Subqueries in FROM are now supported.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.1</title>
|
||
|
||
<para>
|
||
A dump/restore using pg_dump is required for those wishing to migrate
|
||
data from any previous release.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Many multibyte/Unicode/locale fixes (Tatsuo and others)
|
||
More reliable ALTER TABLE RENAME (Tom)
|
||
Kerberos V fixes (David Wragg)
|
||
Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
|
||
Prompt username/password on standard error (Bruce)
|
||
Large objects inv_read/inv_write fixes (Tom)
|
||
Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
|
||
Daniel Baldoni)
|
||
Prevent query expressions from leaking memory (Tom)
|
||
Allow UPDATE of arrays elements (Tom)
|
||
Wake up lock waiters during cancel (Hiroshi)
|
||
Fix rare cursor crash when using hash join (Tom)
|
||
Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
|
||
Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
|
||
Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
|
||
Fix PL/perl (Alex Kapranoff)
|
||
Disallow LOCK on views (Mark Hollomon)
|
||
Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
|
||
Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
|
||
Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
|
||
Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
|
||
Fix rare failure with TRUNCATE command (Tom)
|
||
Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
|
||
DISTINCT, ORDER BY, SELECT...INTO (Tom)
|
||
Fix parser failures during aborted transactions (Tom)
|
||
Allow temporary relations to properly clean up indexes (Bruce)
|
||
Fix VACUUM problem with moving rows in same page (Tom)
|
||
Modify pg_dump to better handle user-defined items in template1 (Philip)
|
||
Allow LIMIT in VIEW (Tom)
|
||
Require cursor FETCH to honor LIMIT (Tom)
|
||
Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
|
||
Allow ORDER BY, LIMIT in subqueries (Tom)
|
||
Allow UNION in CREATE RULE (Tom)
|
||
Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
|
||
Store initdb collation in pg_control so collation cannot be changed (Tom)
|
||
Fix INSERT...SELECT with rules (Tom)
|
||
Fix FOR UPDATE inside views and subselects (Tom)
|
||
Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
|
||
Fix lpad() and rpad() to handle length less than input string (Tom)
|
||
Fix use of NOTIFY in some rules (Tom)
|
||
Overhaul btree code (Tom)
|
||
Fix NOT NULL use in Pl/pgSQL variables (Tom)
|
||
Overhaul GIST code (Oleg)
|
||
Fix CLUSTER to preserve constraints and column default (Tom)
|
||
Improved deadlock detection handling (Tom)
|
||
Allow multiple SERIAL columns in a table (Tom)
|
||
Prevent occasional index corruption (Vadim)
|
||
|
||
Enhancements
|
||
------------
|
||
Add OUTER JOINs (Tom)
|
||
Function manager overhaul (Tom)
|
||
Allow ALTER TABLE RENAME on indexes (Tom)
|
||
Improve CLUSTER (Tom)
|
||
Improve ps status display for more platforms (Peter E, Marc)
|
||
Improve CREATE FUNCTION failure message (Ross)
|
||
JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
|
||
Gunnar)
|
||
Grand Unified Configuration scheme/GUC. Many options can now be set in
|
||
data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
|
||
Improved handling of file descriptor cache (Tom)
|
||
New warning code about auto-created table alias entries (Bruce)
|
||
Overhaul initdb process (Tom, Peter E)
|
||
Overhaul of inherited tables; inherited tables now accessed by default;
|
||
new ONLY key word prevents it (Chris Bitmead, Tom)
|
||
ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
|
||
Michael Fork)
|
||
Allow renaming of temp tables (Tom)
|
||
Overhaul memory manager contexts (Tom)
|
||
pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
|
||
Overhaul pg_dump (Philip Warner)
|
||
Allow pg_hba.conf secondary password file to specify only username (Peter E)
|
||
Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
|
||
New memory leak checker (Karel)
|
||
New SET SESSION CHARACTERISTICS (Thomas)
|
||
Allow nested block comments (Thomas)
|
||
Add WITHOUT TIME ZONE type qualifier (Thomas)
|
||
New ALTER TABLE ADD CONSTRAINT (Stephan)
|
||
Use NUMERIC accumulators for INTEGER aggregates (Tom)
|
||
Overhaul aggregate code (Tom)
|
||
New VARIANCE and STDDEV() aggregates
|
||
Improve dependency ordering of pg_dump (Philip)
|
||
New pg_restore command (Philip)
|
||
New pg_dump tar output option (Philip)
|
||
New pg_dump of large objects (Philip)
|
||
New ESCAPE option to LIKE (Thomas)
|
||
New case-insensitive LIKE - ILIKE (Thomas)
|
||
Allow functional indexes to use binary-compatible type (Tom)
|
||
Allow SQL functions to be used in more contexts (Tom)
|
||
New pg_config utility (Peter E)
|
||
New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
|
||
(Jan)
|
||
New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
|
||
New quote_identifiers() and quote_literal() functions (Jan)
|
||
New ALTER TABLE table OWNER TO user command (Mark Hollomon)
|
||
Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
|
||
Update PyGreSQL to version 3.1 (D'Arcy)
|
||
Store tables as files named by OID (Vadim)
|
||
New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
|
||
Require DROP VIEW to remove views, no DROP TABLE (Mark)
|
||
Allow DROP VIEW view1, view2 (Mark)
|
||
Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
|
||
Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
|
||
New /contrib/pgcrypto hashing functions (Marko Kreen)
|
||
New pg_dumpall --globals-only option (Peter E)
|
||
New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
|
||
New AT TIME ZONE syntax (Thomas)
|
||
Allow location of Unix domain socket to be configurable (David J. MacKenzie)
|
||
Allow postmaster to listen on a specific IP address (David J. MacKenzie)
|
||
Allow socket path name to be specified in hostname by using leading slash
|
||
(David J. MacKenzie)
|
||
Allow CREATE DATABASE to specify template database (Tom)
|
||
New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
|
||
New /contrib/rserv replication toolkit (Vadim)
|
||
New file format for COPY BINARY (Tom)
|
||
New /contrib/oid2name to map numeric files to table names (B Palmer)
|
||
New "idle in transaction" ps status message (Marc)
|
||
Update to pgaccess 0.98.7 (Constantin Teodorescu)
|
||
pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
|
||
Add rudimentary dependency checking to pg_dump (Philip)
|
||
|
||
Types
|
||
-----
|
||
Fix INET/CIDR type ordering and add new functions (Tom)
|
||
Make OID behave as an unsigned type (Tom)
|
||
Allow BIGINT as synonym for INT8 (Peter E)
|
||
New int2 and int8 comparison operators (Tom)
|
||
New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
|
||
CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
|
||
New GIST seg/cube examples (Gene Selkov)
|
||
Improved round(numeric) handling (Tom)
|
||
Fix CIDR output formatting (Tom)
|
||
New CIDR abbrev() function (Tom)
|
||
|
||
Performance
|
||
-----------
|
||
Write-Ahead Log (WAL) to provide crash recovery with less performance
|
||
overhead (Vadim)
|
||
ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
|
||
Reduced file seeks (Denis Perchine)
|
||
Improve BTREE code for duplicate keys (Tom)
|
||
Store all large objects in a single table (Denis Perchine, Tom)
|
||
Improve memory allocation performance (Karel, Tom)
|
||
|
||
Source Code
|
||
-----------
|
||
New function manager call conventions (Tom)
|
||
SGI portability fixes (David Kaelbling)
|
||
New configure --enable-syslog option (Peter E)
|
||
New BSDI README (Bruce)
|
||
configure script moved to top level, not /src (Peter E)
|
||
Makefile/configuration/compilation overhaul (Peter E)
|
||
New configure --with-python option (Peter E)
|
||
Solaris cleanups (Peter E)
|
||
Overhaul /contrib Makefiles (Karel)
|
||
New OpenSSL configuration option (Magnus, Peter E)
|
||
AIX fixes (Andreas)
|
||
QNX fixes (Maurizio)
|
||
New heap_open(), heap_openr() API (Tom)
|
||
Remove colon and semi-colon operators (Thomas)
|
||
New pg_class.relkind value for views (Mark Hollomon)
|
||
Rename ichar() to chr() (Karel)
|
||
New documentation for btrim(), ascii(), chr(), repeat() (Karel)
|
||
Fixes for NT/Cygwin (Pete Forman)
|
||
AIX port fixes (Andreas)
|
||
New BeOS port (David Reid, Cyril Velter)
|
||
Add proofreader's changes to docs (Addison-Wesley, Bruce)
|
||
New Alpha spinlock code (Adriaan Joubert, Compaq)
|
||
UnixWare port overhaul (Peter E)
|
||
New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
|
||
New FreeBSD Alpha port (Alfred)
|
||
Overhaul shared memory segments (Tom)
|
||
Add IBM S/390 support (Neale Ferguson)
|
||
Moved macmanuf to /contrib (Larry Rosenman)
|
||
Syslog improvements (Larry Rosenman)
|
||
New template0 database that contains no user additions (Tom)
|
||
New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
|
||
Allow NetBSD's libedit instead of readline (Peter)
|
||
Improved assembly language source code format (Bruce)
|
||
New contrib/pg_logger
|
||
New --template option to createdb
|
||
New contrib/pg_control utility (Oliver)
|
||
New FreeBSD tools ipc_check, start-scripts/freebsd
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-0-3">
|
||
<title>Release 7.0.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2000-11-11</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This has a variety of fixes from 7.0.2.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.0.3</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.0.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Jdbc fixes (Peter)
|
||
Large object fix (Tom)
|
||
Fix lean in COPY WITH OIDS leak (Tom)
|
||
Fix backwards-index-scan (Tom)
|
||
Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
|
||
Add --enable-syslog to configure (Marc)
|
||
Fix abort transaction at backend exit in rare cases (Tom)
|
||
Fix for psql \l+ when multibyte enabled (Tatsuo)
|
||
Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
|
||
Make vacuum always flush buffers (Tom)
|
||
Fix to allow cancel while waiting for a lock (Hiroshi)
|
||
Fix for memory allocation problem in user authentication code (Tom)
|
||
Remove bogus use of int4out() (Tom)
|
||
Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
|
||
Fix for failure of triggers on heap open in certain cases (Jeroen van
|
||
Vianen)
|
||
Fix for erroneous selectivity of not-equals (Tom)
|
||
Fix for erroneous use of strcmp() (Tom)
|
||
Fix for bug where storage manager accesses items beyond end of file
|
||
(Tom)
|
||
Fix to include kernel errno message in all smgr elog messages (Tom)
|
||
Fix for '.' not in PATH at build time (SL Baur)
|
||
Fix for out-of-file-descriptors error (Tom)
|
||
Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
|
||
Fix for subselect in targetlist of Append node (Tom)
|
||
Fix for mergejoin plans (Tom)
|
||
Fix TRUNCATE failure on relations with indexes (Tom)
|
||
Avoid database-wide restart on write error (Hiroshi)
|
||
Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
|
||
Fix VACUUM problem with moving chain of update row versions when source
|
||
and destination of a row version lie on the same page (Tom)
|
||
Fix user.c CommandCounterIncrement (Tom)
|
||
Fix for AM/PM boundary problem in to_char() (Karel Zak)
|
||
Fix TIME aggregate handling (Tom)
|
||
Fix to_char() to avoid coredump on NULL input (Tom)
|
||
Buffer fix (Tom)
|
||
Fix for inserting/copying longer multibyte strings into char() data
|
||
types (Tatsuo)
|
||
Fix for crash of backend, on abort (Tom)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-0-2">
|
||
<title>Release 7.0.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2000-06-05</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is a repackaging of 7.0.1 with added documentation.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.0.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Added documentation to tarball.
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-7-0-1">
|
||
<title>Release 7.0.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2000-06-01</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is a cleanup release for 7.0.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.0.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
7.0.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Fix many CLUSTER failures (Tom)
|
||
Allow ALTER TABLE RENAME works on indexes (Tom)
|
||
Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
|
||
New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
|
||
Fix the off by one errors in ResultSet from 6.5.3, and more.
|
||
jdbc ResultSet fixes (Joseph Shraibman)
|
||
optimizer tunings (Tom)
|
||
Fix create user for pgaccess
|
||
Fix for UNLISTEN failure
|
||
IRIX fixes (David Kaelbling)
|
||
QNX fixes (Andreas Kardos)
|
||
Reduce COPY IN lock level (Tom)
|
||
Change libpqeasy to use PQconnectdb() style parameters (Bruce)
|
||
Fix pg_dump to handle OID indexes (Tom)
|
||
Fix small memory leak (Tom)
|
||
Solaris fix for createdb/dropdb (Tatsuo)
|
||
Fix for non-blocking connections (Alfred Perlstein)
|
||
Fix improper recovery after RENAME TABLE failures (Tom)
|
||
Copy pg_ident.conf.sample into /lib directory in install (Bruce)
|
||
Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
|
||
Fix too long syslog message (Tatsuo)
|
||
Fix problem with quoted indexes that are too long (Tom)
|
||
JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
|
||
ecpg changes (Michael)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-7-0">
|
||
<title>Release 7.0</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2000-05-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains improvements in many areas, demonstrating
|
||
the continued growth of <productname>PostgreSQL</productname>.
|
||
There are more improvements and fixes in 7.0 than in any previous
|
||
release. The developers have confidence that this is the best
|
||
release yet; we do our best to put out only solid releases, and
|
||
this one is no exception.
|
||
</para>
|
||
|
||
<para>
|
||
Major changes in this release:
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
Foreign Keys
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Foreign keys are now implemented, with the exception of PARTIAL MATCH
|
||
foreign keys. Many users have been asking for this feature, and we are
|
||
pleased to offer it.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Optimizer Overhaul
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Continuing on work started a year ago, the optimizer has been
|
||
improved, allowing better query plan selection and faster performance
|
||
with less memory usage.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Updated <application>psql</application>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
<application>psql</application>, our interactive terminal monitor, has been
|
||
updated with a variety of new features. See the <application>psql</application> manual page for details.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Join Syntax
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
SQL92 join syntax is now supported, though only as
|
||
<literal>INNER JOIN</> for this release. <literal>JOIN</>,
|
||
<literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
|
||
and <literal>JOIN</>/<literal>ON</> are available, as are
|
||
column correlation names.
|
||
</para>
|
||
</listitem>
|
||
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 7.0</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application>
|
||
is required for those wishing to migrate data from any
|
||
previous release of <productname>PostgreSQL</productname>.
|
||
For those upgrading from 6.5.*, you can instead use
|
||
<application>pg_upgrade</application> to upgrade to this
|
||
release; however, a full dump/reload installation is always the
|
||
most robust method for upgrades.
|
||
</para>
|
||
|
||
<para>
|
||
Interface and compatibility issues to consider for the new
|
||
release include:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
The date/time types <type>datetime</type> and
|
||
<type>timespan</type> have been superseded by the
|
||
SQL92-defined types <type>timestamp</type> and
|
||
<type>interval</type>. Although there has been some effort to
|
||
ease the transition by allowing
|
||
<productname>PostgreSQL</productname> to recognize
|
||
the deprecated type names and translate them to the new type
|
||
names, this mechanism cannot be completely transparent to
|
||
your existing application.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The optimizer has been substantially improved in the area of
|
||
query cost estimation. In some cases, this will result in
|
||
decreased query times as the optimizer makes a better choice
|
||
for the preferred plan. However, in a small number of cases,
|
||
usually involving pathological distributions of data, your
|
||
query times might go up. If you are dealing with large amounts
|
||
of data, you might want to check your queries to verify
|
||
performance.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
|
||
interfaces have been upgraded and extended.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The string function <function>CHAR_LENGTH</function> is now a
|
||
native function. Previous versions translated this into a call
|
||
to <function>LENGTH</function>, which could result in
|
||
ambiguity with other types implementing
|
||
<function>LENGTH</function> such as the geometric types.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Prevent function calls exceeding maximum number of arguments (Tom)
|
||
Improve CASE construct (Tom)
|
||
Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
|
||
Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
|
||
Fix GROUP BY scan bug (Tom)
|
||
Improvements in SQL grammar processing (Tom)
|
||
Fix for views involved in INSERT ... SELECT ... (Tom)
|
||
Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
|
||
Fix for subselects in INSERT ... SELECT (Tom)
|
||
Prevent INSERT ... SELECT ... ORDER BY (Tom)
|
||
Fixes for relations greater than 2GB, including vacuum
|
||
Improve propagating system table changes to other backends (Tom)
|
||
Improve propagating user table changes to other backends (Tom)
|
||
Fix handling of temp tables in complex situations (Bruce, Tom)
|
||
Allow table locking at table open, improving concurrent reliability (Tom)
|
||
Properly quote sequence names in pg_dump (Ross J. Reedstrom)
|
||
Prevent DROP DATABASE while others accessing
|
||
Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
|
||
Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
|
||
Fix pg_upgrade so it works for MVCC (Tom)
|
||
Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
|
||
Fix for "f1 datetime DEFAULT 'now'" (Tom)
|
||
Fix problems with CURRENT_DATE used in DEFAULT (Tom)
|
||
Allow comment-only lines, and ;;; lines too. (Tom)
|
||
Improve recovery after failed disk writes, disk full (Hiroshi)
|
||
Fix cases where table is mentioned in FROM but not joined (Tom)
|
||
Allow HAVING clause without aggregate functions (Tom)
|
||
Fix for "--" comment and no trailing newline, as seen in perl interface
|
||
Improve pg_dump failure error reports (Bruce)
|
||
Allow sorts and hashes to exceed 2GB file sizes (Tom)
|
||
Fix for pg_dump dumping of inherited rules (Tom)
|
||
Fix for NULL handling comparisons (Tom)
|
||
Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
|
||
Fix for dbname with dash
|
||
Prevent DROP INDEX from interfering with other backends (Tom)
|
||
Fix file descriptor leak in verify_password()
|
||
Fix for "Unable to identify an operator =$" problem
|
||
Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
|
||
Fix for recursive exit call (Massimo)
|
||
Fix for extra-long timezones (Jeroen van Vianen)
|
||
Make pg_dump preserve primary key information (Peter E)
|
||
Prevent databases with single quotes (Peter E)
|
||
Prevent DROP DATABASE inside transaction (Peter E)
|
||
ecpg memory leak fixes (Stephen Birch)
|
||
Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
|
||
Y2K timestamp fix (Massimo)
|
||
Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
|
||
Fix for views with tables/columns containing spaces (Tom)
|
||
Prevent privileges on indexes (Peter E)
|
||
Fix for spinlock stuck problem when error is generated (Hiroshi)
|
||
Fix ipcclean on Linux
|
||
Fix handling of NULL constraint conditions (Tom)
|
||
Fix memory leak in odbc driver (Nick Gorham)
|
||
Fix for privilege check on UNION tables (Tom)
|
||
Fix to allow SELECT 'a' LIKE 'a' (Tom)
|
||
Fix for SELECT 1 + NULL (Tom)
|
||
Fixes to CHAR
|
||
Fix log() on numeric type (Tom)
|
||
Deprecate ':' and ';' operators
|
||
Allow vacuum of temporary tables
|
||
Disallow inherited columns with the same name as new columns
|
||
Recover or force failure when disk space is exhausted (Hiroshi)
|
||
Fix INSERT INTO ... SELECT with AS columns matching result columns
|
||
Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
|
||
Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
|
||
Fix UNION with LIMIT
|
||
Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
|
||
Fix CREATE TABLE test(col char(2) DEFAULT user)
|
||
Fix mismatched types in CREATE TABLE ... DEFAULT
|
||
Fix SELECT * FROM pg_class where oid in (0,-1)
|
||
Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
|
||
Prevent user who can create databases can modifying pg_database table (Peter E)
|
||
Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
|
||
Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
|
||
|
||
Enhancements
|
||
------------
|
||
New CLI interface include file sqlcli.h, based on SQL3/SQL98
|
||
Remove all limits on query length, row length limit still exists (Tom)
|
||
Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
|
||
Add TRUNCATE command to quickly truncate relation (Mike Mascari)
|
||
Fix to give super user and createdb user proper update catalog rights (Peter E)
|
||
Allow ecpg bool variables to have NULL values (Christof)
|
||
Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
|
||
Allow ^C to cancel COPY command (Massimo)
|
||
Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
|
||
Function name overloading for dynamically-loaded C functions (Frankpitt)
|
||
Add CmdTuples() to libpq++(Vince)
|
||
New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
|
||
Allow CREATE FUNCTION/WITH clause to be used for all language types
|
||
configure --enable-debug adds -g (Peter E)
|
||
configure --disable-debug removes -g (Peter E)
|
||
Allow more complex default expressions (Tom)
|
||
First real FOREIGN KEY constraint trigger functionality (Jan)
|
||
Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
|
||
Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
|
||
Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
|
||
Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
|
||
Change pgeasy connectdb() parameter ordering (Bruce)
|
||
Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
|
||
Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
|
||
libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
|
||
Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
|
||
Make USING in COPY optional (Bruce)
|
||
Allow subselects in the target list (Tom)
|
||
Allow subselects on the left side of comparison operators (Tom)
|
||
New parallel regression test (Jan)
|
||
Change backend-side COPY to write files with permissions 644 not 666 (Tom)
|
||
Force permissions on PGDATA directory to be secure, even if it exists (Tom)
|
||
Added psql LASTOID variable to return last inserted oid (Peter E)
|
||
Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
|
||
Add privilege check for vacuum (Peter E)
|
||
New libpq functions to allow asynchronous connections: PQconnectStart(),
|
||
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
|
||
PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
|
||
New libpq PQsetenv() function (Ewan Mellor)
|
||
create/alter user extension (Peter E)
|
||
New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
|
||
New scripts for create/drop user/db (Peter E)
|
||
Major psql overhaul (Peter E)
|
||
Add const to libpq interface (Peter E)
|
||
New libpq function PQoidValue (Peter E)
|
||
Show specific non-aggregate causing problem with GROUP BY (Tom)
|
||
Make changes to pg_shadow recreate pg_pwd file (Peter E)
|
||
Add aggregate(DISTINCT ...) (Tom)
|
||
Allow flag to control COPY input/output of NULLs (Peter E)
|
||
Make postgres user have a password by default (Peter E)
|
||
Add CREATE/ALTER/DROP GROUP (Peter E)
|
||
All administration scripts now support --long options (Peter E, Karel)
|
||
Vacuumdb script now supports --all option (Peter E)
|
||
ecpg new portable FETCH syntax
|
||
Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
|
||
and EXEC SQL ENDIF directives
|
||
Add pg_ctl script to control backend start-up (Tatsuo)
|
||
Add postmaster.opts.default file to store start-up flags (Tatsuo)
|
||
Allow --with-mb=SQL_ASCII
|
||
Increase maximum number of index keys to 16 (Bruce)
|
||
Increase maximum number of function arguments to 16 (Bruce)
|
||
Allow configuration of maximum number of index keys and arguments (Bruce)
|
||
Allow unprivileged users to change their passwords (Peter E)
|
||
Password authentication enabled; required for new users (Peter E)
|
||
Disallow dropping a user who owns a database (Peter E)
|
||
Change initdb option --with-mb to --enable-multibyte
|
||
Add option for initdb to prompts for superuser password (Peter E)
|
||
Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
|
||
Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
|
||
New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
|
||
libpq non-blocking mode (Alfred Perlstein)
|
||
Improve conversion of types in casts that don't specify a length
|
||
New plperl internal programming language (Mark Hollomon)
|
||
Allow COPY IN to read file that do not end with a newline (Tom)
|
||
Indicate when long identifiers are truncated (Tom)
|
||
Allow aggregates to use type equivalency (Peter E)
|
||
Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
|
||
conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
|
||
Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
|
||
Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
|
||
Add NUMERIC and int8 types to ODBC
|
||
Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
|
||
Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
|
||
Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
|
||
Enable backward sequential scan even after reaching EOF (Hiroshi)
|
||
Add btree indexing of boolean values, >= and <= (Don Baccus)
|
||
Print current line number when COPY FROM fails (Massimo)
|
||
Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
|
||
Add DEC as synonym for DECIMAL (Thomas)
|
||
Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
|
||
Implement SQL92 column aliases (aka correlation names) (Thomas)
|
||
Implement SQL92 join syntax (Thomas)
|
||
Make INTERVAL reserved word allowed as a column identifier (Thomas)
|
||
Implement REINDEX command (Hiroshi)
|
||
Accept ALL in aggregate function SUM(ALL col) (Tom)
|
||
Prevent GROUP BY from using column aliases (Tom)
|
||
New psql \encoding option (Tatsuo)
|
||
Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
|
||
Allow negation of a negative number in all cases
|
||
Add ecpg descriptors (Christof, Michael)
|
||
Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
|
||
Allow casts with length, like foo::char(8)
|
||
New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
|
||
Add support for SJIS user defined characters (Tatsuo)
|
||
Larger views/rules supported
|
||
Make libpq's PQconndefaults() thread-safe (Tom)
|
||
Disable // as comment to be ANSI conforming, should use -- (Tom)
|
||
Allow column aliases on views CREATE VIEW name (collist)
|
||
Fixes for views with subqueries (Tom)
|
||
Allow UPDATE table SET fld = (SELECT ...) (Tom)
|
||
SET command options no longer require quotes
|
||
Update pgaccess to 0.98.6
|
||
New SET SEED command
|
||
New pg_options.sample file
|
||
New SET FSYNC command (Massimo)
|
||
Allow pg_descriptions when creating tables
|
||
Allow pg_descriptions when creating types, columns, and functions
|
||
Allow psql \copy to allow delimiters (Peter E)
|
||
Allow psql to print nulls as distinct from "" [null] (Peter E)
|
||
|
||
Types
|
||
-----
|
||
Many array fixes (Tom)
|
||
Allow bare column names to be subscripted as arrays (Tom)
|
||
Improve type casting of int and float constants (Tom)
|
||
Cleanups for int8 inputs, range checking, and type conversion (Tom)
|
||
Fix for SELECT timespan('21:11:26'::time) (Tom)
|
||
netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
|
||
Add btree index on NUMERIC (Jan)
|
||
Perl fix for large objects containing NUL characters (Douglas Thomson)
|
||
ODBC fix for large objects (free)
|
||
Fix indexing of cidr data type
|
||
Fix for Ethernet MAC addresses (macaddr type) comparisons
|
||
Fix for date/time types when overflows happened in computations (Tom)
|
||
Allow array on int8 (Peter E)
|
||
Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
|
||
Allow NUMERIC arrays
|
||
Fix bugs in NUMERIC ceil() and floor() functions (Tom)
|
||
Make char_length()/octet_length including trailing blanks (Tom)
|
||
Made abstime/reltime use int4 instead of time_t (Peter E)
|
||
New lztext data type for compressed text fields
|
||
Revise code to handle coercion of int and float constants (Tom)
|
||
Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
|
||
NUMERIC now accepts scientific notation (Tom)
|
||
NUMERIC to int4 rounds (Tom)
|
||
Convert float4/8 to NUMERIC properly (Tom)
|
||
Allow type conversion with NUMERIC (Thomas)
|
||
Make ISO date style (2000-02-16 09:33) the default (Thomas)
|
||
Add NATIONAL CHAR [ VARYING ] (Thomas)
|
||
Allow NUMERIC round and trunc to accept negative scales (Tom)
|
||
New TIME WITH TIME ZONE type (Thomas)
|
||
Add MAX()/MIN() on time type (Thomas)
|
||
Add abs(), mod(), fac() for int8 (Thomas)
|
||
Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
|
||
Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
|
||
Add exp() and ln() for NUMERIC type
|
||
Rename NUMERIC power() to pow() (Thomas)
|
||
Improved TRANSLATE() function (Edwin Ramirez, Tom)
|
||
Allow X=-Y operators (Tom)
|
||
Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
|
||
Allow LOCALE to use indexes in regular expression searches (Tom)
|
||
Allow creation of functional indexes to use default types
|
||
|
||
Performance
|
||
-----------
|
||
Prevent exponential space consumption with many AND's and OR's (Tom)
|
||
Collect attribute selectivity values for system columns (Tom)
|
||
Reduce memory usage of aggregates (Tom)
|
||
Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
|
||
Fix r-tree index optimizer selectivity (Thomas)
|
||
Improve optimizer selectivity computations and functions (Tom)
|
||
Optimize btree searching for cases where many equal keys exist (Tom)
|
||
Enable fast LIKE index processing only if index present (Tom)
|
||
Re-use free space on index pages with duplicates (Tom)
|
||
Improve hash join processing (Tom)
|
||
Prevent descending sort if result is already sorted(Hiroshi)
|
||
Allow commuting of index scan query qualifications (Tom)
|
||
Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
|
||
Allocate large memory requests in fix-sized chunks for performance (Tom)
|
||
Fix vacuum's performance by reducing memory allocation requests (Tom)
|
||
Implement constant-expression simplification (Bernard Frankpitt, Tom)
|
||
Use secondary columns to be used to determine start of index scan (Hiroshi)
|
||
Prevent quadruple use of disk space when doing internal sorting (Tom)
|
||
Faster sorting by calling fewer functions (Tom)
|
||
Create system indexes to match all system caches (Bruce, Hiroshi)
|
||
Make system caches use system indexes (Bruce)
|
||
Make all system indexes unique (Bruce)
|
||
Improve pg_statistics management for VACUUM speed improvement (Tom)
|
||
Flush backend cache less frequently (Tom, Hiroshi)
|
||
COPY now reuses previous memory allocation, improving performance (Tom)
|
||
Improve optimization cost estimation (Tom)
|
||
Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
|
||
Use DNF instead of CNF where appropriate (Tom, Taral)
|
||
Further cleanup for OR-of-AND WHERE-clauses (Tom)
|
||
Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
|
||
Smarter optimizer computations for random index page access (Tom)
|
||
New SET variable to control optimizer costs (Tom)
|
||
Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
|
||
Reduce optimizer internal housekeeping of join paths for speedup (Tom)
|
||
Major subquery speedup (Tom)
|
||
Fewer fsync writes when fsync is not disabled (Tom)
|
||
Improved LIKE optimizer estimates (Tom)
|
||
Prevent fsync in SELECT-only queries (Vadim)
|
||
Make index creation use psort code, because it is now faster (Tom)
|
||
Allow creation of sort temp tables > 1 Gig
|
||
|
||
Source Tree Changes
|
||
-------------------
|
||
Fix for linux PPC compile
|
||
New generic expression-tree-walker subroutine (Tom)
|
||
Change form() to varargform() to prevent portability problems
|
||
Improved range checking for large integers on Alphas
|
||
Clean up #include in /include directory (Bruce)
|
||
Add scripts for checking includes (Bruce)
|
||
Remove un-needed #include's from *.c files (Bruce)
|
||
Change #include's to use <> and "" as appropriate (Bruce)
|
||
Enable Windows compilation of libpq
|
||
Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
|
||
Overhaul of optimizer data structures (Tom)
|
||
Fix to cygipc library (Yutaka Tanida)
|
||
Allow pgsql to work on newer Cygwin snapshots (Dan)
|
||
New catalog version number (Tom)
|
||
Add Linux ARM
|
||
Rename heap_replace to heap_update
|
||
Update for QNX (Dr. Andreas Kardos)
|
||
New platform-specific regression handling (Tom)
|
||
Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
|
||
Included all yacc and lex files into the distribution (Peter E.)
|
||
Remove lextest, no longer needed (Peter E)
|
||
Fix for libpq and psql on Windows (Magnus)
|
||
Internally change datetime and timespan into timestamp and interval (Thomas)
|
||
Fix for plpgsql on BSD/OS
|
||
Add SQL_ASCII test case to the regression test (Tatsuo)
|
||
configure --with-mb now deprecated (Tatsuo)
|
||
NT fixes
|
||
NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
|
||
Fixes for Alpha compiles
|
||
New multibyte encodings
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-5-3">
|
||
<title>Release 6.5.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1999-10-13</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is basically a cleanup release for 6.5.2. We have added a new
|
||
<application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.5.3</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
6.5.*.
|
||
</para>
|
||
</sect2>
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Updated version of pgaccess 0.98
|
||
NT-specific patch
|
||
Fix dumping rules on inherited tables
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-6-5-2">
|
||
<title>Release 6.5.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1999-09-15</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is basically a cleanup release for 6.5.1. We have fixed a variety of
|
||
problems reported by 6.5.1 users.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.5.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
6.5.*.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
subselect+CASE fixes(Tom)
|
||
Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
|
||
Fixes for CASE in WHERE join clauses(Tom)
|
||
Fix BTScan abort(Tom)
|
||
Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
|
||
Improve it so that it checks for multicolumn constraints(Thomas)
|
||
Fix for Windows making problem with MB enabled(Hiroki Kataoka)
|
||
Allow BSD yacc and bison to compile pl code(Bruce)
|
||
Fix SET NAMES working
|
||
int8 fixes(Thomas)
|
||
Fix vacuum's memory consumption(Hiroshi,Tatsuo)
|
||
Reduce the total memory consumption of vacuum(Tom)
|
||
Fix for timestamp(datetime)
|
||
Rule deparsing bugfixes(Tom)
|
||
Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
|
||
This is to re-use space on index pages freed by vacuum(Vadim)
|
||
document -x for pg_dump(Bruce)
|
||
Fix for unary operators in rule deparser(Tom)
|
||
Comment out FileUnlink of excess segments during mdtruncate()(Tom)
|
||
IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
|
||
Repair logic error in LIKE: should not return LIKE_ABORT
|
||
when reach end of pattern before end of text(Tom)
|
||
Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
|
||
Updated version of pgaccess 0.98
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-5-1">
|
||
<title>Release 6.5.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1999-07-15</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is basically a cleanup release for 6.5. We have fixed a variety of
|
||
problems reported by 6.5 users.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.5.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
6.5.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Add NT README file
|
||
Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
|
||
Remove QUERY_LIMIT, use SELECT...LIMIT
|
||
Fix for EXPLAIN on inheritance(Tom)
|
||
Patch to allow vacuum on multisegment tables(Hiroshi)
|
||
R-Tree optimizer selectivity fix(Tom)
|
||
ACL file descriptor leak fix(Atsushi Ogawa)
|
||
New expression subtree code(Tom)
|
||
Avoid disk writes for read-only transactions(Vadim)
|
||
Fix for removal of temp tables if last transaction was aborted(Bruce)
|
||
Fix to prevent too large row from being created(Bruce)
|
||
plpgsql fixes
|
||
Allow port numbers 32k - 64k(Bruce)
|
||
Add ^ precedence(Bruce)
|
||
Rename sort files called pg_temp to pg_sorttemp(Bruce)
|
||
Fix for microseconds in time values(Tom)
|
||
Tutorial source cleanup
|
||
New linux_m68k port
|
||
Fix for sorting of NULL's in some cases(Tom)
|
||
Shared library dependencies fixed (Tom)
|
||
Fixed glitches affecting GROUP BY in subselects(Tom)
|
||
Fix some compiler warnings (Tomoaki Nishiyama)
|
||
Add Win1250 (Czech) support (Pavel Behal)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-5">
|
||
<title>Release 6.5</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1999-06-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release marks a major step in the development team's mastery of the source
|
||
code we inherited from Berkeley. You will see we are now easily adding
|
||
major features, thanks to the increasing size and experience of our
|
||
world-wide development team.
|
||
</para>
|
||
|
||
<para>
|
||
Here is a brief summary of the more notable changes:
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
Multiversion concurrency control(MVCC)
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
This removes our old table-level locking, and replaces it with
|
||
a locking system that is superior to most commercial database
|
||
systems. In a traditional system, each row that is modified
|
||
is locked until committed, preventing reads by other users.
|
||
MVCC uses the natural multiversion nature of
|
||
<productname>PostgreSQL</productname> to allow readers to
|
||
continue reading consistent data during writer activity.
|
||
Writers continue to use the compact pg_log transaction system.
|
||
This is all performed without having to allocate a lock for
|
||
every row like traditional database systems. So, basically,
|
||
we no longer are restricted by simple table-level locking; we
|
||
have something better than row-level locking.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Hot backups from <application>pg_dump</application>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
<application>pg_dump</application> takes advantage of the new
|
||
MVCC features to give a consistent database dump/backup while
|
||
the database stays online and available for queries.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Numeric data type
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
We now have a true numeric data type, with
|
||
user-specified precision.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Temporary tables
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Temporary tables are guaranteed to have unique names
|
||
within a database session, and are destroyed on session exit.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
New SQL features
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
We now have CASE, INTERSECT, and EXCEPT statement
|
||
support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
|
||
SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Speedups
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
We continue to speed up <productname>PostgreSQL</productname>,
|
||
thanks to the variety of talents within our team. We have
|
||
sped up memory allocation, optimization, table joins, and row
|
||
transfer routines.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Ports
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
We continue to expand our port list, this time including
|
||
<systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Interfaces
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Most interfaces have new versions, and existing functionality
|
||
has been improved.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
Documentation
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
New and updated material is present throughout the
|
||
documentation. New <acronym>FAQ</acronym>s have been
|
||
contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
|
||
The <citetitle>Tutorial</citetitle> has introductory information
|
||
on <acronym>SQL</acronym> from Stefan Simkovics.
|
||
For the <citetitle>User's Guide</citetitle>, there are
|
||
reference pages covering the postmaster and more utility
|
||
programs, and a new appendix
|
||
contains details on date/time behavior.
|
||
The <citetitle>Administrator's Guide</citetitle> has a new
|
||
chapter on troubleshooting from Tom Lane.
|
||
And the <citetitle>Programmer's Guide</citetitle> has a
|
||
description of query processing, also from Stefan, and details
|
||
on obtaining the <productname>PostgreSQL</productname> source
|
||
tree via anonymous <productname>CVS</productname> and
|
||
<productname>CVSup</productname>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.5</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application>
|
||
is required for those wishing to migrate data from any
|
||
previous release of <productname>PostgreSQL</productname>.
|
||
<application>pg_upgrade</application> can <emphasis>not</emphasis>
|
||
be used to upgrade to this release because the on-disk structure
|
||
of the tables has changed compared to previous releases.
|
||
</para>
|
||
|
||
<para>
|
||
The new Multiversion Concurrency Control (MVCC) features can
|
||
give somewhat different behaviors in multiuser
|
||
environments. <emphasis>Read and understand the following section
|
||
to ensure that your existing applications will give you the
|
||
behavior you need.</emphasis>
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Multiversion Concurrency Control</title>
|
||
|
||
<para>
|
||
Because readers in 6.5 don't lock data, regardless of transaction
|
||
isolation level, data read by one transaction can be overwritten by
|
||
another. In other words, if a row is returned by
|
||
<command>SELECT</command> it doesn't mean that this row really exists
|
||
at the time it is returned (i.e. sometime after the statement or
|
||
transaction began) nor that the row is protected from being deleted or
|
||
updated by concurrent transactions before the current transaction does
|
||
a commit or rollback.
|
||
</para>
|
||
|
||
<para>
|
||
To ensure the actual existence of a row and protect it against
|
||
concurrent updates one must use <command>SELECT FOR UPDATE</command> or
|
||
an appropriate <command>LOCK TABLE</command> statement. This should be
|
||
taken into account when porting applications from previous releases of
|
||
<productname>PostgreSQL</productname> and other environments.
|
||
</para>
|
||
|
||
<para>
|
||
Keep the above in mind if you are using
|
||
<filename>contrib/refint.*</filename> triggers for
|
||
referential integrity. Additional techniques are required now. One way is
|
||
to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
|
||
command if a transaction is going to update/delete a primary key and
|
||
use <command>LOCK parent_table IN SHARE MODE</command> command if a
|
||
transaction is going to update/insert a foreign key.
|
||
|
||
<note>
|
||
<para>
|
||
Note that if you run a transaction in SERIALIZABLE mode then you must
|
||
execute the <command>LOCK</command> commands above before execution of any
|
||
<acronym>DML</acronym> statement
|
||
(<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
|
||
transaction.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
|
||
<para>
|
||
These inconveniences will disappear in the future
|
||
when the ability to read dirty
|
||
(uncommitted) data (regardless of isolation level) and true referential
|
||
integrity will be implemented.
|
||
</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Fix text<->float8 and text<->float4 conversion functions(Thomas)
|
||
Fix for creating tables with mixed-case constraints(Billy)
|
||
Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
|
||
Fix bug in pg_dump -z
|
||
Memory overrun cleanups(Tatsuo)
|
||
Fix for lo_import crash(Tatsuo)
|
||
Adjust handling of data type names to suppress double quotes(Thomas)
|
||
Use type coercion for matching columns and DEFAULT(Thomas)
|
||
Fix deadlock so it only checks once after one second of sleep(Bruce)
|
||
Fixes for aggregates and PL/pgsql(Hiroshi)
|
||
Fix for subquery crash(Vadim)
|
||
Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
|
||
Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
|
||
Fix for pg_dump -d or -D and quote special characters in INSERT
|
||
Repair serious problems with dynahash(Tom)
|
||
Fix INET/CIDR portability problems
|
||
Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
|
||
Fix executor so mergejoin of different column types works(Tom)
|
||
Fix for Alpha OR selectivity bug
|
||
Fix OR index selectivity problem(Bruce)
|
||
Fix so \d shows proper length for char()/varchar()(Ryan)
|
||
Fix tutorial code(Clark)
|
||
Improve destroyuser checking(Oliver)
|
||
Fix for Kerberos(Rodney McDuff)
|
||
Fix for dropping database while dirty buffers(Bruce)
|
||
Fix so sequence nextval() can be case-sensitive(Bruce)
|
||
Fix !!= operator
|
||
Drop buffers before destroying database files(Bruce)
|
||
Fix case where executor evaluates functions twice(Tatsuo)
|
||
Allow sequence nextval actions to be case-sensitive(Bruce)
|
||
Fix optimizer indexing not working for negative numbers(Bruce)
|
||
Fix for memory leak in executor with fjIsNull
|
||
Fix for aggregate memory leaks(Erik Riedel)
|
||
Allow user name containing a dash to grant privileges
|
||
Cleanup of NULL in inet types
|
||
Clean up system table bugs(Tom)
|
||
Fix problems of PAGER and \? command(Masaaki Sakaida)
|
||
Reduce default multisegment file size limit to 1GB(Peter)
|
||
Fix for dumping of CREATE OPERATOR(Tom)
|
||
Fix for backward scanning of cursors(Hiroshi Inoue)
|
||
Fix for COPY FROM STDIN when using \i(Tom)
|
||
Fix for subselect is compared inside an expression(Jan)
|
||
Fix handling of error reporting while returning rows(Tom)
|
||
Fix problems with reference to array types(Tom,Jan)
|
||
Prevent UPDATE SET oid(Jan)
|
||
Fix pg_dump so -t option can handle case-sensitive tablenames
|
||
Fixes for GROUP BY in special cases(Tom, Jan)
|
||
Fix for memory leak in failed queries(Tom)
|
||
DEFAULT now supports mixed-case identifiers(Tom)
|
||
Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
|
||
Disable use of pg_dump with both -o and -d options(Bruce)
|
||
Allow pg_dump to properly dump group privileges(Bruce)
|
||
Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
|
||
Fix for computations in views(Jan)
|
||
Fix for aggregates on array indexes(Tom)
|
||
Fix for DEFAULT handles single quotes in value requiring too many quotes
|
||
Fix security problem with non-super users importing/exporting large objects(Tom)
|
||
Rollback of transaction that creates table cleaned up properly(Tom)
|
||
Fix to allow long table and column names to generate proper serial names(Tom)
|
||
|
||
Enhancements
|
||
------------
|
||
Add "vacuumdb" utility
|
||
Speed up libpq by allocating memory better(Tom)
|
||
EXPLAIN all indexes used(Tom)
|
||
Implement CASE, COALESCE, NULLIF expression(Thomas)
|
||
New pg_dump table output format(Constantin)
|
||
Add string min()/max() functions(Thomas)
|
||
Extend new type coercion techniques to aggregates(Thomas)
|
||
New moddatetime contrib(Terry)
|
||
Update to pgaccess 0.96(Constantin)
|
||
Add routines for single-byte "char" type(Thomas)
|
||
Improved substr() function(Thomas)
|
||
Improved multibyte handling(Tatsuo)
|
||
Multiversion concurrency control/MVCC(Vadim)
|
||
New Serialized mode(Vadim)
|
||
Fix for tables over 2gigs(Peter)
|
||
New SET TRANSACTION ISOLATION LEVEL(Vadim)
|
||
New LOCK TABLE IN ... MODE(Vadim)
|
||
Update ODBC driver(Byron)
|
||
New NUMERIC data type(Jan)
|
||
New SELECT FOR UPDATE(Vadim)
|
||
Handle "NaN" and "Infinity" for input values(Jan)
|
||
Improved date/year handling(Thomas)
|
||
Improved handling of backend connections(Magnus)
|
||
New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
|
||
New TCL_ARRAYS option(Massimo)
|
||
New INTERSECT and EXCEPT(Stefan)
|
||
New pg_index.indisprimary for primary key tracking(D'Arcy)
|
||
New pg_dump option to allow dropping of tables before creation(Brook)
|
||
Speedup of row output routines(Tom)
|
||
New READ COMMITTED isolation level(Vadim)
|
||
New TEMP tables/indexes(Bruce)
|
||
Prevent sorting if result is already sorted(Jan)
|
||
New memory allocation optimization(Jan)
|
||
Allow psql to do \p\g(Bruce)
|
||
Allow multiple rule actions(Jan)
|
||
Added LIMIT/OFFSET functionality(Jan)
|
||
Improve optimizer when joining a large number of tables(Bruce)
|
||
New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
|
||
New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
|
||
Improved int8 support(Ryan Bradetich, Thomas, Tom)
|
||
New routines to convert between int8 and text/varchar types(Thomas)
|
||
New bushy plans, where meta-tables are joined(Bruce)
|
||
Enable right-hand queries by default(Bruce)
|
||
Allow reliable maximum number of backends to be set at configure time
|
||
(--with-maxbackends and postmaster switch (-N backends))(Tom)
|
||
GEQO default now 10 tables because of optimizer speedups(Tom)
|
||
Allow NULL=Var for MS-SQL portability(Michael, Bruce)
|
||
Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
|
||
Allow psql \d on a view show query(Ryan)
|
||
Speedup for LIKE(Bruce)
|
||
Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
|
||
JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
|
||
Make % operator have precedence like /(Bruce)
|
||
Add new postgres -O option to allow system table structure changes(Bruce)
|
||
Update contrib/pginterface/findoidjoins script(Tom)
|
||
Major speedup in vacuum of deleted rows with indexes(Vadim)
|
||
Allow non-SQL functions to run different versions based on arguments(Tom)
|
||
Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
|
||
Add version number in start-up banners for psql(Masaaki Sakaida)
|
||
New contrib/vacuumlo removes large objects not referenced(Peter)
|
||
New initialization for table sizes so non-vacuumed tables perform better(Tom)
|
||
Improve error messages when a connection is rejected(Tom)
|
||
Support for arrays of char() and varchar() fields(Massimo)
|
||
Overhaul of hash code to increase reliability and performance(Tom)
|
||
Update to PyGreSQL 2.4(D'Arcy)
|
||
Changed debug options so -d4 and -d5 produce different node displays(Jan)
|
||
New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
|
||
Better optimization statistics for system table access(Tom)
|
||
Better handling of non-default block sizes(Massimo)
|
||
Improve GEQO optimizer memory consumption(Tom)
|
||
UNION now supports ORDER BY of columns not in target list(Jan)
|
||
Major libpq++ improvements(Vince Vielhaber)
|
||
pg_dump now uses -z(ACL's) as default(Bruce)
|
||
backend cache, memory speedups(Tom)
|
||
have pg_dump do everything in one snapshot transaction(Vadim)
|
||
fix for large object memory leakage, fix for pg_dumping(Tom)
|
||
INET type now respects netmask for comparisons
|
||
Make VACUUM ANALYZE only use a readlock(Vadim)
|
||
Allow VIEWs on UNIONS(Jan)
|
||
pg_dump now can generate consistent snapshots on active databases(Vadim)
|
||
|
||
Source Tree Changes
|
||
-------------------
|
||
Improve port matching(Tom)
|
||
Portability fixes for SunOS
|
||
Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
|
||
New port to Cobalt Qube(Mips) running Linux(Tatsuo)
|
||
Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
|
||
Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
|
||
Port to NetBSD/macppc(Toshimi Aoki)
|
||
Fix for tcl/tk configuration(Vince)
|
||
Removed CURRENT key word for rule queries(Jan)
|
||
NT dynamic loading now works(Daniel Horak)
|
||
Add ARM32 support(Andrew McMurry)
|
||
Better support for HP-UX 11 and UnixWare
|
||
Improve file handling to be more uniform, prevent file descriptor leak(Tom)
|
||
New install commands for plpgsql(Jan)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="release-6-4-2">
|
||
<title>Release 6.4.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-12-20</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
The 6.4.1 release was improperly packaged. This also has one additional
|
||
bug fix.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.4.2</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
6.4.*.
|
||
</para>
|
||
</sect2>
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Fix for datetime constant problem on some platforms(Thomas)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
|
||
<sect1 id="release-6-4-1">
|
||
<title>Release 6.4.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-12-18</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is basically a cleanup release for 6.4. We have fixed a variety of
|
||
problems reported by 6.4 users.
|
||
</para>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.4.1</title>
|
||
|
||
<para>
|
||
A dump/restore is <emphasis>not</emphasis> required for those running
|
||
6.4.
|
||
</para>
|
||
</sect2>
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Add pg_dump -N flag to force double quotes around identifiers. This is
|
||
the default(Thomas)
|
||
Fix for NOT in where clause causing crash(Bruce)
|
||
EXPLAIN VERBOSE coredump fix(Vadim)
|
||
Fix shared-library problems on Linux
|
||
Fix test for table existence to allow mixed-case and whitespace in
|
||
the table name(Thomas)
|
||
Fix a couple of pg_dump bugs
|
||
Configure matches template/.similar entries better(Tom)
|
||
Change builtin function names from SPI_* to spi_*
|
||
OR WHERE clause fix(Vadim)
|
||
Fixes for mixed-case table names(Billy)
|
||
contrib/linux/postgres.init.csh/sh fix(Thomas)
|
||
libpq memory overrun fix
|
||
SunOS fixes(Tom)
|
||
Change exp() behavior to generate error on underflow(Thomas)
|
||
pg_dump fixes for memory leak, inheritance constraints, layout change
|
||
update pgaccess to 0.93
|
||
Fix prototype for 64-bit platforms
|
||
Multibyte fixes(Tatsuo)
|
||
New ecpg man page
|
||
Fix memory overruns(Tatsuo)
|
||
Fix for lo_import() crash(Bruce)
|
||
Better search for install program(Tom)
|
||
Timezone fixes(Tom)
|
||
HP-UX fixes(Tom)
|
||
Use implicit type coercion for matching DEFAULT values(Thomas)
|
||
Add routines to help with single-byte (internal) character type(Thomas)
|
||
Compilation of libpq for Windows fixes(Magnus)
|
||
Upgrade to PyGreSQL 2.2(D'Arcy)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
|
||
<sect1 id="release-6-4">
|
||
<title>Release 6.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-10-30</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
There are <emphasis>many</emphasis> new features and improvements in this release.
|
||
Thanks to our developers and maintainers, nearly every aspect of the system
|
||
has received some attention since the previous release.
|
||
Here is a brief, incomplete summary:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Views and rules are now functional thanks to extensive new code in the
|
||
rewrite rules system from Jan Wieck. He also wrote a chapter on it
|
||
for the <citetitle>Programmer's Guide</citetitle>.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
|
||
original <application>PL/pgTCL</application> procedural language he contributed last release.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
We have optional multiple-byte character set support from Tatsuo Ishii
|
||
to complement our existing locale support.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Client/server communications has been cleaned up, with better support for
|
||
asynchronous messages and interrupts thanks to Tom Lane.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The parser will now perform automatic type coercion to match arguments
|
||
to available operators and functions, and to match columns and expressions
|
||
with target columns. This uses a generic mechanism which supports
|
||
the type extensibility features of <productname>PostgreSQL</productname>.
|
||
There is a new chapter in the <citetitle>User's Guide</citetitle>
|
||
which covers this topic.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Three new data types have been added.
|
||
Two types, <type>inet</type> and <type>cidr</type>, support various forms
|
||
of IP network, subnet, and machine addressing. There is now an 8-byte integer
|
||
type available on some platforms. See the chapter on data types
|
||
in the <citetitle>User's Guide</citetitle> for details.
|
||
A fourth type, <type>serial</type>, is now supported by the parser as an
|
||
amalgam of the <type>int4</type> type, a sequence, and a unique index.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Several more <acronym>SQL92</acronym>-compatible syntax features have been
|
||
added, including <command>INSERT DEFAULT VALUES</command>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
The automatic configuration and installation system has received some
|
||
attention, and should be more robust for more platforms than it has ever
|
||
been.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.4</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application>
|
||
or <application>pg_dumpall</application>
|
||
is required for those wishing to migrate data from any
|
||
previous release of <productname>PostgreSQL</productname>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
|
||
Remove char2-16 data types, use char/varchar(Darren)
|
||
Pqfn not handles a NOTICE message(Anders)
|
||
Reduced busywaiting overhead for spinlocks with many backends (dg)
|
||
Stuck spinlock detection (dg)
|
||
Fix up "ISO-style" timespan decoding and encoding(Thomas)
|
||
Fix problem with table drop after rollback of transaction(Vadim)
|
||
Change error message and remove non-functional update message(Vadim)
|
||
Fix for COPY array checking
|
||
Fix for SELECT 1 UNION SELECT NULL
|
||
Fix for buffer leaks in large object calls(Pascal)
|
||
Change owner from oid to int4 type(Bruce)
|
||
Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
|
||
Fix for shared invalidation cache overflow(Massimo)
|
||
Prevent file descriptor leaks in failed COPY's(Bruce)
|
||
Fix memory leak in libpgtcl's pg_select(Constantin)
|
||
Fix problems with username/passwords over 8 characters(Tom)
|
||
Fix problems with handling of asynchronous NOTIFY in backend(Tom)
|
||
Fix of many bad system table entries(Tom)
|
||
|
||
Enhancements
|
||
------------
|
||
Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
|
||
Show the index used in an EXPLAIN(Zeugswetter)
|
||
EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
|
||
Multibyte awareness of many data types and functions, via configure(Tatsuo)
|
||
New configure --with-mb option(Tatsuo)
|
||
New initdb --pgencoding option(Tatsuo)
|
||
New createdb -E multibyte option(Tatsuo)
|
||
Select version(); now returns PostgreSQL version(Jeroen)
|
||
libpq now allows asynchronous clients(Tom)
|
||
Allow cancel from client of backend query(Tom)
|
||
psql now cancels query with Control-C(Tom)
|
||
libpq users need not issue dummy queries to get NOTIFY messages(Tom)
|
||
NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
|
||
PGresult struct now includes associated error message, if any(Tom)
|
||
Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
|
||
Add routines to convert between varchar and bpchar(Thomas)
|
||
Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
|
||
Add bit flags to support timezonehour and minute in data retrieval(Thomas)
|
||
Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
|
||
Fixes for unary minus parsing with leading spaces(Thomas)
|
||
Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
|
||
Check for and properly ignore FOREIGN KEY column constraints(Thomas)
|
||
Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
|
||
Enable HAVING clause but no fixes elsewhere yet.
|
||
Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
|
||
Save string type if specified for DEFAULT clause handling(Thomas)
|
||
Coerce operations involving different data types(Thomas)
|
||
Allow some index use for columns of different types(Thomas)
|
||
Add capabilities for automatic type conversion(Thomas)
|
||
Cleanups for large objects, so file is truncated on open(Peter)
|
||
Readline cleanups(Tom)
|
||
Allow psql \f \ to make spaces as delimiter(Bruce)
|
||
Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
|
||
Msql compatibility library in /contrib(Aldrin)
|
||
Remove the requirement that ORDER/GROUP BY clause identifiers be
|
||
included in the target list(David)
|
||
Convert columns to match columns in UNION clauses(Thomas)
|
||
Remove fork()/exec() and only do fork()(Bruce)
|
||
Jdbc cleanups(Peter)
|
||
Show backend status on ps command line(only works on some platforms)(Bruce)
|
||
Pg_hba.conf now has a sameuser option in the database field
|
||
Make lo_unlink take oid param, not int4
|
||
New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
|
||
Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
|
||
libpgtcl cleanups(Tom)
|
||
Add -error option to libpgtcl's pg_result command(Tom)
|
||
New locale patch, see docs/README/locale(Oleg)
|
||
Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
|
||
New contrib/lo code for large object orphan removal(Peter)
|
||
New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
|
||
feature, see /doc/README.mb(Tatsuo)
|
||
contrib/noupdate code to revoke update permission on a column
|
||
libpq can now be compiled on Windows(Magnus)
|
||
Add PQsetdbLogin() in libpq
|
||
New 8-byte integer type, checked by configure for OS support(Thomas)
|
||
Better support for quoted table/column names(Thomas)
|
||
Surround table and column names with double-quotes in pg_dump(Thomas)
|
||
PQreset() now works with passwords(Tom)
|
||
Handle case of GROUP BY target list column number out of range(David)
|
||
Allow UNION in subselects
|
||
Add auto-size to screen to \d? commands(Bruce)
|
||
Use UNION to show all \d? results in one query(Bruce)
|
||
Add \d? field search feature(Bruce)
|
||
Pg_dump issues fewer \connect requests(Tom)
|
||
Make pg_dump -z flag work better, document it in manual page(Tom)
|
||
Add HAVING clause with full support for subselects and unions(Stephan)
|
||
Full text indexing routines in contrib/fulltextindex(Maarten)
|
||
Transaction ids now stored in shared memory(Vadim)
|
||
New PGCLIENTENCODING when issuing COPY command(Tatsuo)
|
||
Support for SQL92 syntax "SET NAMES"(Tatsuo)
|
||
Support for LATIN2-5(Tatsuo)
|
||
Add UNICODE regression test case(Tatsuo)
|
||
Lock manager cleanup, new locking modes for LLL(Vadim)
|
||
Allow index use with OR clauses(Bruce)
|
||
Allows "SELECT NULL ORDER BY 1;"
|
||
Explain VERBOSE prints the plan, and now pretty-prints the plan to
|
||
the postmaster log file(Bruce)
|
||
Add indexes display to \d command(Bruce)
|
||
Allow GROUP BY on functions(David)
|
||
New pg_class.relkind for large objects(Bruce)
|
||
New way to send libpq NOTICE messages to a different location(Tom)
|
||
New \w write command to psql(Bruce)
|
||
New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
|
||
Allow binary-compatible indexes to be considered when checking for valid
|
||
Indexes for restriction clauses containing a constant(Thomas)
|
||
New ISBN/ISSN code in /contrib/isbn_issn
|
||
Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
|
||
New rewrite system fixes many problems with rules and views(Jan)
|
||
* Rules on relations work
|
||
* Event qualifications on insert/update/delete work
|
||
* New OLD variable to reference CURRENT, CURRENT will be remove in future
|
||
* Update rules can reference NEW and OLD in rule qualifications/actions
|
||
* Insert/update/delete rules on views work
|
||
* Multiple rule actions are now supported, surrounded by parentheses
|
||
* Regular users can create views/rules on tables they have RULE permits
|
||
* Rules and views inherit the privileges of the creator
|
||
* No rules at the column level
|
||
* No UPDATE NEW/OLD rules
|
||
* New pg_tables, pg_indexes, pg_rules and pg_views system views
|
||
* Only a single action on SELECT rules
|
||
* Total rewrite overhaul, perhaps for 6.5
|
||
* handle subselects
|
||
* handle aggregates on views
|
||
* handle insert into select from view works
|
||
System indexes are now multikey(Bruce)
|
||
Oidint2, oidint4, and oidname types are removed(Bruce)
|
||
Use system cache for more system table lookups(Bruce)
|
||
New backend programming language PL/pgSQL in backend/pl(Jan)
|
||
New SERIAL data type, auto-creates sequence/index(Thomas)
|
||
Enable assert checking without a recompile(Massimo)
|
||
User lock enhancements(Massimo)
|
||
New setval() command to set sequence value(Massimo)
|
||
Auto-remove unix socket file on start-up if no postmaster running(Massimo)
|
||
Conditional trace package(Massimo)
|
||
New UNLISTEN command(Massimo)
|
||
psql and libpq now compile under Windows using win32.mak(Magnus)
|
||
Lo_read no longer stores trailing NULL(Bruce)
|
||
Identifiers are now truncated to 31 characters internally(Bruce)
|
||
Createuser options now available on the command line
|
||
Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
|
||
Prevent file descriptor leaf from failed COPY(Bruce)
|
||
New pg_upgrade command(Bruce)
|
||
Updated /contrib directories(Massimo)
|
||
New CREATE TABLE DEFAULT VALUES statement available(Thomas)
|
||
New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
|
||
New DECLARE and FETCH feature(Thomas)
|
||
libpq's internal structures now not exported(Tom)
|
||
Allow up to 8 key indexes(Bruce)
|
||
Remove ARCHIVE key word, that is no longer used(Thomas)
|
||
pg_dump -n flag to suppress quotes around indentifiers
|
||
disable system columns for views(Jan)
|
||
new INET and CIDR types for network addresses(TomH, Paul)
|
||
no more double quotes in psql output
|
||
pg_dump now dumps views(Terry)
|
||
new SET QUERY_LIMIT(Tatsuo,Jan)
|
||
|
||
Source Tree Changes
|
||
-------------------
|
||
/contrib cleanup(Jun)
|
||
Inline some small functions called for every row(Bruce)
|
||
Alpha/linux fixes
|
||
HP-UX cleanups(Tom)
|
||
Multibyte regression tests(Soonmyung.)
|
||
Remove --disabled options from configure
|
||
Define PGDOC to use POSTGRESDIR by default
|
||
Make regression optional
|
||
Remove extra braces code to pgindent(Bruce)
|
||
Add bsdi shared library support(Bruce)
|
||
New --without-CXX support configure option(Brook)
|
||
New FAQ_CVS
|
||
Update backend flowchart in tools/backend(Bruce)
|
||
Change atttypmod from int16 to int32(Bruce, Tom)
|
||
Getrusage() fix for platforms that do not have it(Tom)
|
||
Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
|
||
NS32K platform fixes(Phil Nelson, John Buller)
|
||
SCO 7/UnixWare 2.x fixes(Billy,others)
|
||
Sparc/Solaris 2.5 fixes(Ryan)
|
||
Pgbuiltin.3 is obsolete, move to doc files(Thomas)
|
||
Even more documentation(Thomas)
|
||
Nextstep support(Jacek)
|
||
Aix support(David)
|
||
pginterface manual page(Bruce)
|
||
shared libraries all have version numbers
|
||
merged all OS-specific shared library defines into one file
|
||
smarter TCL/TK configuration checking(Billy)
|
||
smarter perl configuration(Brook)
|
||
configure uses supplied install-sh if no install script found(Tom)
|
||
new Makefile.shlib for shared library configuration(Tom)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-3-2">
|
||
<title>Release 6.3.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-04-07</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This is a bug-fix release for 6.3.x.
|
||
Refer to the release notes for version 6.3 for a more complete summary of new features.
|
||
</para>
|
||
<para>
|
||
Summary:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Repairs automatic configuration support for some platforms, including Linux,
|
||
from breakage inadvertently introduced in version 6.3.1.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
A dump/restore is NOT required for those running 6.3 or 6.3.1. A
|
||
<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
|
||
This last step should be performed while the postmaster is not running.
|
||
You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
|
||
</para>
|
||
<para>
|
||
For upgrades from pre-6.3 installations,
|
||
refer to the installation and migration instructions for version 6.3.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
|
||
Manual page improvements(Bruce)
|
||
BETWEEN and LIKE fix(Thomas)
|
||
fix for psql \connect used by pg_dump(Oliver Elphick)
|
||
New odbc driver
|
||
pgaccess, version 0.86
|
||
qsort removed, now uses libc version, cleanups(Jeroen)
|
||
fix for buffer over-runs detected(Maurice Gittens)
|
||
fix for buffer overrun in libpgtcl(Randy Kunkee)
|
||
fix for UNION with DISTINCT or ORDER BY(Bruce)
|
||
gettimeofday configure check(Doug Winterburn)
|
||
Fix "indexes not used" bug(Vadim)
|
||
docs additions(Thomas)
|
||
Fix for backend memory leak(Bruce)
|
||
libreadline cleanup(Erwan MAS)
|
||
Remove DISTDIR(Bruce)
|
||
Makefile dependency cleanup(Jeroen van Vianen)
|
||
ASSERT fixes(Bruce)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-3-1">
|
||
<title>Release 6.3.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-03-23</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
Summary:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Additional support for multibyte character sets.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Repair byte ordering for mixed-endian clients and servers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Minor updates to allowed SQL syntax.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improvements to the configuration autodetection for installation.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
A dump/restore is NOT required for those running 6.3. A
|
||
<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
|
||
This last step should be performed while the postmaster is not running.
|
||
You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
|
||
</para>
|
||
<para>
|
||
For upgrades from pre-6.3 installations,
|
||
refer to the installation and migration instructions for version 6.3.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
ecpg cleanup/fixes, now version 1.1(Michael Meskes)
|
||
pg_user cleanup(Bruce)
|
||
large object fix for pg_dump and tclsh (alvin)
|
||
LIKE fix for multiple adjacent underscores
|
||
fix for redefining builtin functions(Thomas)
|
||
ultrix4 cleanup
|
||
upgrade to pg_access 0.83
|
||
updated CLUSTER manual page
|
||
multibyte character set support, see doc/README.mb(Tatsuo)
|
||
configure --with-pgport fix
|
||
pg_ident fix
|
||
big-endian fix for backend communications(Kataoka)
|
||
SUBSTR() and substring() fix(Jan)
|
||
several jdbc fixes(Peter)
|
||
libpgtcl improvements, see libptcl/README(Randy Kunkee)
|
||
Fix for "Datasize = 0" error(Vadim)
|
||
Prevent \do from wrapping(Bruce)
|
||
Remove duplicate Russian character set entries
|
||
Sunos4 cleanup
|
||
Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
|
||
CREATE SEQUENCE options to allow a negative integer(Thomas)
|
||
Add "PASSWORD" as an allowed column identifier(Thomas)
|
||
Add checks for UNION target fields(Bruce)
|
||
Fix Alpha port(Dwayne Bailey)
|
||
Fix for text arrays containing quotes(Doug Gibson)
|
||
Solaris compile fix(Albert Chin-A-Young)
|
||
Better identify tcl and tk libs and includes(Bruce)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-3">
|
||
<title>Release 6.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1998-03-01</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
There are <emphasis>many</emphasis> new features and improvements in this release.
|
||
Here is a brief, incomplete summary:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Many new SQL features, including
|
||
full <acronym>SQL92</acronym> subselect capability
|
||
(everything is here but target-list subselects).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support for client-side environment variables to specify time zone and date style.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Socket interface for client/server connection. This is the default now
|
||
so you might need to start <application>postmaster</application> with the
|
||
<option>-i</option> flag.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Better password authorization mechanisms. Default table privileges have changed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Old-style <firstterm>time travel</firstterm>
|
||
has been removed. Performance has been improved.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<note>
|
||
<para>
|
||
Bruce Momjian wrote the following notes to introduce the new release.
|
||
</para>
|
||
</note>
|
||
|
||
<para>
|
||
There are some general 6.3 issues that I want to mention. These are
|
||
only the big items that cannot be described in one sentence. A review
|
||
of the detailed changes list is still needed.
|
||
</para>
|
||
<para>
|
||
First, we now have subselects. Now that we have them, I would like to
|
||
mention that without subselects, SQL is a very limited language.
|
||
Subselects are a major feature, and you should review your code for
|
||
places where subselects provide a better solution for your queries. I
|
||
think you will find that there are more uses for subselects than you might
|
||
think. Vadim has put us on the big SQL map with subselects, and fully
|
||
functional ones too. The only thing you cannot do with subselects is to
|
||
use them in the target list.
|
||
</para>
|
||
<para>
|
||
Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
|
||
enable connections from other machines, you have to use the new
|
||
postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
|
||
reason, the format of <filename>pg_hba.conf</filename> has changed.
|
||
</para>
|
||
<para>
|
||
Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
|
||
<type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
|
||
any columns after the first column of this type. <type>char()</type> used to also
|
||
have this access penalty, but it no longer does. This might suggest that
|
||
you redesign some of your tables, especially if you have short character
|
||
columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
|
||
changes make 6.3 even faster than earlier releases.
|
||
</para>
|
||
<para>
|
||
We now have passwords definable independent of any Unix file. There are
|
||
new SQL USER commands.
|
||
See the <citetitle>Administrator's Guide</citetitle> for more
|
||
information. There is a new table, pg_shadow, which is used to store
|
||
user information and user passwords, and it by default only SELECT-able
|
||
by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
|
||
SELECT-able by PUBLIC. You should keep using pg_user in your
|
||
application without changes.
|
||
</para>
|
||
<para>
|
||
User-created tables now no longer have SELECT privilege to PUBLIC by
|
||
default. This was done because the ANSI standard requires it. You can
|
||
of course GRANT any privileges you want after the table is created.
|
||
System tables continue to be SELECT-able by PUBLIC.
|
||
</para>
|
||
<para>
|
||
We also have real deadlock detection code. No more sixty-second
|
||
timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
|
||
should be less resource starvation during heavy use.
|
||
</para>
|
||
<para>
|
||
Many complaints have been made about inadequate documentation in previous
|
||
releases. Thomas has put much effort into many new manuals for this
|
||
release. Check out the doc/ directory.
|
||
</para>
|
||
<para>
|
||
For performance reasons, time travel is gone, but can be implemented
|
||
using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
|
||
\d command for types, operators, etc. Also, views have their own
|
||
privileges now, not based on the underlying tables, so privileges on
|
||
them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
|
||
ways to talk to <productname>PostgreSQL</productname>.
|
||
</para>
|
||
<para>
|
||
This is the first release that really required an explanation for
|
||
existing users. In many ways, this was necessary because the new
|
||
release removes many limitations, and the work-arounds people were using
|
||
are no longer needed.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.3</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application>
|
||
or <application>pg_dumpall</application>
|
||
is required for those wishing to migrate data from any
|
||
previous release of <productname>PostgreSQL</productname>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Fix binary cursors broken by MOVE implementation(Vadim)
|
||
Fix for tcl library crash(Jan)
|
||
Fix for array handling, from Gerhard Hintermayer
|
||
Fix acl error, and remove duplicate pqtrace(Bruce)
|
||
Fix psql \e for empty file(Bruce)
|
||
Fix for textcat on varchar() fields(Bruce)
|
||
Fix for DBT Sendproc (Zeugswetter Andres)
|
||
Fix vacuum analyze syntax problem(Bruce)
|
||
Fix for international identifiers(Tatsuo)
|
||
Fix aggregates on inherited tables(Bruce)
|
||
Fix substr() for out-of-bounds data
|
||
Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
|
||
Fix notty output to show status result. -q option still turns it off(Bruce)
|
||
Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
|
||
Fix cluster(Bruce)
|
||
Fix for PQtrace start/stop several times(Bruce)
|
||
Fix a variety of locking problems like newer lock waiters getting
|
||
lock before older waiters, and having readlock people not share
|
||
locks if a writer is waiting for a lock, and waiting writers not
|
||
getting priority over waiting readers(Bruce)
|
||
Fix crashes in psql when executing queries from external files(James)
|
||
Fix problem with multiple order by columns, with the first one having
|
||
NULL values(Jeroen)
|
||
Use correct hash table support functions for float8 and int4(Thomas)
|
||
Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
|
||
Change precedence for boolean operators to match expected behavior(Thomas)
|
||
Generate elog(ERROR) on over-large integer(Bruce)
|
||
Allow multiple-argument functions in constraint clauses(Thomas)
|
||
Check boolean input literals for 'true','false','yes','no','1','0'
|
||
and throw elog(ERROR) if unrecognized(Thomas)
|
||
Major large objects fix
|
||
Fix for GROUP BY showing duplicates(Vadim)
|
||
Fix for index scans in MergeJoin(Vadim)
|
||
|
||
Enhancements
|
||
------------
|
||
Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
|
||
New User Manual(Thomas, others)
|
||
Speedup by inlining some frequently-called functions
|
||
Real deadlock detection, no more timeouts(Bruce)
|
||
Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
|
||
CURRENT_USER(Thomas)
|
||
Modify constraint syntax to be SQL92-compliant(Thomas)
|
||
Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
|
||
Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
|
||
Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
|
||
Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
|
||
Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
|
||
Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
|
||
Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
|
||
Allow SQL92 delimited identifiers(Thomas)
|
||
Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
|
||
Support SQL92 syntax for type coercion of literal strings
|
||
(e.g. "DATETIME 'now'")(Thomas)
|
||
Add conversions for int2, int4, and OID types to and from text(Thomas)
|
||
Use shared lock when building indexes(Vadim)
|
||
Free memory allocated for an user query inside transaction block after
|
||
this query is done, was turned off in <= 6.2.1(Vadim)
|
||
New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
|
||
New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
|
||
Rename pg_dump -H option to -h(Bruce)
|
||
Add Java support for passwords, European dates(Peter)
|
||
Use indexes for LIKE and ~, !~ operations(Bruce)
|
||
Add hash functions for datetime and timespan(Thomas)
|
||
Time Travel removed(Vadim, Bruce)
|
||
Add paging for \d and \z, and fix \i(Bruce)
|
||
Add Unix domain socket support to backend and to frontend library(Goran)
|
||
Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
|
||
Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
|
||
Augment support for SQL92 SET TIME ZONE...(Thomas)
|
||
SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
|
||
Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
|
||
Enable SET TIME ZONE using TZ environment variable(Thomas)
|
||
Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
|
||
Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
|
||
frontend library initialization environment variables(Thomas)
|
||
Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
|
||
Add pg_description table for info on tables, columns, operators, types, and
|
||
aggregates(Bruce)
|
||
Increase 16 char limit on system table/index names to 32 characters(Bruce)
|
||
Rename system indexes(Bruce)
|
||
Add 'GERMAN' option to SET DATESTYLE(Thomas)
|
||
Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
|
||
Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
|
||
Validate numeric input more carefully for delta times(Thomas)
|
||
Implement day of year as possible input to date_part()(Thomas)
|
||
Define timespan_finite() and text_timespan() functions(Thomas)
|
||
Remove archive stuff(Bruce)
|
||
Allow for a pg_password authentication database that is separate from
|
||
the system password file(Todd)
|
||
Dump ACLs, GRANT, REVOKE privileges(Matt)
|
||
Define text, varchar, and bpchar string length functions(Thomas)
|
||
Fix Query handling for inheritance, and cost computations(Bruce)
|
||
Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
|
||
Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
|
||
Implement UNIONs for SELECT(Bruce)
|
||
Add UNION, GROUP, DISTINCT to INSERT(Bruce)
|
||
varchar() stores only necessary bytes on disk(Bruce)
|
||
Fix for BLOBs(Peter)
|
||
Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
|
||
Remove unused "option" from PQconnectdb()
|
||
New LOCK command and lock manual page describing deadlocks(Bruce)
|
||
Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
|
||
Enhance psql \z to show sequences(Bruce)
|
||
Show NOT NULL and DEFAULT in psql \d table(Bruce)
|
||
New psql .psqlrc file start-up(Andrew)
|
||
Modify sample start-up script in contrib/linux to show syslog(Thomas)
|
||
New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
|
||
Unix system time conversions with date/time types in contrib/unixdate(Thomas)
|
||
Update of contrib stuff(Massimo)
|
||
Add Unix socket support to DBD::Pg(Goran)
|
||
New python interface (PyGreSQL 2.0)(D'Arcy)
|
||
New frontend/backend protocol has a version number, network byte order(Phil)
|
||
Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
|
||
CHAR() now faster access than VARCHAR() or TEXT
|
||
ecpg embedded SQL preprocessor
|
||
Reduce system column overhead(Vadmin)
|
||
Remove pg_time table(Vadim)
|
||
Add pg_type attribute to identify types that need length (bpchar, varchar)
|
||
Add report of offending line when COPY command fails
|
||
Allow VIEW privileges to be set separately from the underlying tables.
|
||
For security, use GRANT/REVOKE on views as appropriate(Jan)
|
||
Tables now have no default GRANT SELECT TO PUBLIC. You must
|
||
explicitly grant such privileges.
|
||
Clean up tutorial examples(Darren)
|
||
|
||
Source Tree Changes
|
||
-------------------
|
||
Add new html development tools, and flow chart in /tools/backend
|
||
Fix for SCO compiles
|
||
Stratus computer port Robert Gillies
|
||
Added support for shlib for BSD44_derived & i386_solaris
|
||
Make configure more automated(Brook)
|
||
Add script to check regression test results
|
||
Break parser functions into smaller files, group together(Bruce)
|
||
Rename heap_create to heap_create_and_catalog, rename heap_creatr
|
||
to heap_create()(Bruce)
|
||
Sparc/Linux patch for locking(TomS)
|
||
Remove PORTNAME and reorganize port-specific stuff(Marc)
|
||
Add optimizer README file(Bruce)
|
||
Remove some recursion in optimizer and clean up some code there(Bruce)
|
||
Fix for NetBSD locking(Henry)
|
||
Fix for libptcl make(Tatsuo)
|
||
AIX patch(Darren)
|
||
Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
|
||
function calls to istrue() or isfalse() to allow optimization(Thomas)
|
||
Various fixes NetBSD/Sparc related(TomH)
|
||
Alpha linux locking(Travis,Ryan)
|
||
Change elog(WARN) to elog(ERROR)(Bruce)
|
||
FAQ for FreeBSD(Marc)
|
||
Bring in the PostODBC source tree as part of our standard distribution(Marc)
|
||
A minor patch for HP/UX 10 vs 9(Stan)
|
||
New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
|
||
UnixWare patches(Billy)
|
||
New i386 'lock' for spinlock asm(Billy)
|
||
Support for multiplexed backends is removed
|
||
Start an OpenBSD port
|
||
Start an AUX port
|
||
Start a Cygnus port
|
||
Add string functions to regression suite(Thomas)
|
||
Expand a few function names formerly truncated to 16 characters(Thomas)
|
||
Remove un-needed malloc() calls and replace with palloc()(Bruce)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-2-1">
|
||
<title>Release 6.2.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1997-10-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
6.2.1 is a bug-fix and usability release on 6.2.
|
||
</para>
|
||
<para>
|
||
Summary:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Allow strings to span lines, per <acronym>SQL92</acronym>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Include example trigger function for inserting user names on table updates.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
This is a minor bug-fix release on 6.2.
|
||
For upgrades from pre-6.2 systems, a full dump/reload is required.
|
||
Refer to the 6.2 release notes for instructions.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration from version 6.2 to version 6.2.1</title>
|
||
|
||
<para>
|
||
This is a minor bug-fix release. A dump/reload is not required from version 6.2,
|
||
but is required from any release prior to 6.2.
|
||
</para>
|
||
<para>
|
||
In upgrading from version 6.2, if you choose to dump/reload you will find that
|
||
avg(money) is now calculated correctly. All other bug fixes take effect
|
||
upon updating the executables.
|
||
</para>
|
||
<para>
|
||
Another way to avoid dump/reload is to use the following SQL command
|
||
from <command>psql</command> to update the existing system table:
|
||
|
||
<programlisting>
|
||
update pg_aggregate set aggfinalfn = 'cash_div_flt8'
|
||
where aggname = 'avg' and aggbasetype = 790;
|
||
</programlisting>
|
||
</para>
|
||
<para>
|
||
This will need to be done to every existing database, including template1.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Allow TIME and TYPE column names(Thomas)
|
||
Allow larger range of true/false as boolean values(Thomas)
|
||
Support output of "now" and "current"(Thomas)
|
||
Handle DEFAULT with INSERT of NULL properly(Vadim)
|
||
Fix for relation reference counts problem in buffer manager(Vadim)
|
||
Allow strings to span lines, like ANSI(Thomas)
|
||
Fix for backward cursor with ORDER BY(Vadim)
|
||
Fix avg(cash) computation(Thomas)
|
||
Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
|
||
Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
|
||
Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-2">
|
||
<title>Release 6.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1997-10-02</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
A dump/restore is required for those wishing to migrate data from
|
||
previous releases of <productname>PostgreSQL</productname>.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration from version 6.1 to version 6.2</title>
|
||
|
||
<para>
|
||
This migration requires a complete dump of the 6.1 database and a
|
||
restore of the database in 6.2.
|
||
</para>
|
||
<para>
|
||
Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
|
||
to dump the 6.1 database.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration from version 1.<replaceable>x</> to version 6.2</title>
|
||
|
||
<para>
|
||
Those migrating from earlier 1.* releases should first upgrade to 1.09
|
||
because the COPY output format was improved from the 1.02 release.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
|
||
Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
|
||
from Solaris(Diab Jerius)
|
||
Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
|
||
Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
|
||
Catch non-functional delete attempts(Vadim)
|
||
Change time function names to be more consistent(Michael Reifenberg)
|
||
Check for zero divides(Michael Reifenberg)
|
||
Fix very old bug which made rows changed/inserted by a command
|
||
visible to the command itself (so we had multiple update of
|
||
updated rows, etc.)(Vadim)
|
||
Fix for SELECT null, 'fail' FROM pg_am (Patrick)
|
||
SELECT NULL as EMPTY_FIELD now allowed(Patrick)
|
||
Remove un-needed signal stuff from contrib/pginterface
|
||
Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
|
||
Fix time_cmp function (Vadim)
|
||
Fix handling of functions with non-attribute first argument in
|
||
WHERE clauses (Vadim)
|
||
Fix GROUP BY when order of entries is different from order
|
||
in target list (Vadim)
|
||
Fix pg_dump for aggregates without sfunc1 (Vadim)
|
||
|
||
Enhancements
|
||
------------
|
||
Default genetic optimizer GEQO parameter is now 8(Bruce)
|
||
Allow use parameters in target list having aggregates in functions(Vadim)
|
||
Added JDBC driver as an interface(Adrian & Peter)
|
||
pg_password utility
|
||
Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
|
||
Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
|
||
SPI (Server Programming Interface) allows execution of queries inside
|
||
C-functions (Vadim)
|
||
NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
|
||
Include reserved words for string handling, outer joins, and unions(Thomas)
|
||
Implement extended comments ("/* ... */") using exclusive states(Thomas)
|
||
Add "//" single-line comments(Bruce)
|
||
Remove some restrictions on characters in operator names(Thomas)
|
||
DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
|
||
Add text concatenation operator and function (SQL92)(Thomas)
|
||
Support WITH TIME ZONE syntax (SQL92)(Thomas)
|
||
Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
|
||
Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
|
||
and CHARACTER VARYING (SQL92)(Thomas)
|
||
Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
|
||
Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
|
||
Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
|
||
Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
|
||
Add more reserved words, mostly for SQL92 compliance(Thomas)
|
||
Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
|
||
Add center() routines for lseg, path, polygon(Thomas)
|
||
Add distance() routines for circle-polygon, polygon-polygon(Thomas)
|
||
Check explicitly for points and polygons contained within polygons
|
||
using an axis-crossing algorithm(Thomas)
|
||
Add routine to convert circle-box(Thomas)
|
||
Merge conflicting operators for different geometric data types(Thomas)
|
||
Replace distance operator "<===>" with "<->"(Thomas)
|
||
Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
|
||
Add routines for text trimming on both ends, substring, and string position(Thomas)
|
||
Added conversion routines circle(box) and poly(circle)(Thomas)
|
||
Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
|
||
Allow functions and operators on internally-identical types to succeed(Bruce)
|
||
Speed up backend start-up after profiling analysis(Bruce)
|
||
Inline frequently called functions for performance(Bruce)
|
||
Reduce open() calls(Bruce)
|
||
psql: Add PAGER for \h and \?,\C fix
|
||
Fix for psql pager when no tty(Bruce)
|
||
New entab utility(Bruce)
|
||
General trigger functions for referential integrity (Vadim)
|
||
General trigger functions for time travel (Vadim)
|
||
General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
|
||
MOVE implementation (Vadim)
|
||
|
||
Source Tree Changes
|
||
-------------------
|
||
HP-UX 10 patches (Vladimir Turin)
|
||
Added SCO support, (Daniel Harris)
|
||
MkLinux patches (Tatsuo Ishii)
|
||
Change geometric box terminology from "length" to "width"(Thomas)
|
||
Deprecate temporary unstored slope fields in geometric code(Thomas)
|
||
Remove restart instructions from INSTALL(Bruce)
|
||
Look in /usr/ucb first for install(Bruce)
|
||
Fix c++ copy example code(Thomas)
|
||
Add -o to psql manual page(Bruce)
|
||
Prevent relname unallocated string length from being copied into database(Bruce)
|
||
Cleanup for NAMEDATALEN use(Bruce)
|
||
Fix pg_proc names over 15 chars in output(Bruce)
|
||
Add strNcpy() function(Bruce)
|
||
remove some (void) casts that are unnecessary(Bruce)
|
||
new interfaces directory(Marc)
|
||
Replace fopen() calls with calls to fd.c functions(Bruce)
|
||
Make functions static where possible(Bruce)
|
||
enclose unused functions in #ifdef NOT_USED(Bruce)
|
||
Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
|
||
Changes for Digital Unix
|
||
Portability fix for pg_dumpall(Bruce)
|
||
Rename pg_attribute.attnvals to attdispersion(Bruce)
|
||
"intro/unix" manual page now "pgintro"(Bruce)
|
||
"built-in" manual page now "pgbuiltin"(Bruce)
|
||
"drop" manual page now "drop_table"(Bruce)
|
||
Add "create_trigger", "drop_trigger" manual pages(Thomas)
|
||
Add constraints regression test(Vadim & Thomas)
|
||
Add comments syntax regression test(Thomas)
|
||
Add PGINDENT and support program(Bruce)
|
||
Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
|
||
Files moved to /src/tools directory(Bruce)
|
||
SPI and Trigger programming guides (Vadim & D'Arcy)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-1-1">
|
||
<title>Release 6.1.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1997-07-22</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Migration from version 6.1 to version 6.1.1</title>
|
||
|
||
<para>
|
||
This is a minor bug-fix release. A dump/reload is not required from version 6.1,
|
||
but is required from any release prior to 6.1.
|
||
Refer to the release notes for 6.1 for more details.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
fix for SET with options (Thomas)
|
||
allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
|
||
new psql \connect option allows changing usernames without changing databases
|
||
fix for initdb --debug option(Yoshihiko Ichikawa))
|
||
lextest cleanup(Bruce)
|
||
hash fixes(Vadim)
|
||
fix date/time month boundary arithmetic(Thomas)
|
||
fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
|
||
timestamp overhauled to use standard functions(Thomas)
|
||
other code cleanup in date/time routines(Thomas)
|
||
psql's \d now case-insensitive(Bruce)
|
||
psql's backslash commands can now have trailing semicolon(Bruce)
|
||
fix memory leak in psql when using \g(Bruce)
|
||
major fix for endian handling of communication to server(Thomas, Tatsuo)
|
||
Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
|
||
allow underscores in usernames(Bruce)
|
||
pg_dumpall now returns proper status, portability fix(Bruce)
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-1">
|
||
<title>Release 6.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1997-06-08</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
The regression tests have been adapted and extensively modified for the
|
||
6.1 release of <productname>PostgreSQL</productname>.
|
||
</para>
|
||
|
||
<para>
|
||
Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
|
||
the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
|
||
have had their output formats made consistent across the data types.
|
||
The polygon output in misc.out has only been spot-checked for correctness
|
||
relative to the original regression output.
|
||
</para>
|
||
|
||
<para>
|
||
<productname>PostgreSQL</productname> 6.1 introduces a new, alternate
|
||
optimizer which uses <firstterm>genetic</firstterm>
|
||
algorithms. These algorithms introduce a random behavior in the ordering
|
||
of query results when the query contains multiple qualifiers or multiple
|
||
tables (giving the optimizer a choice on order of evaluation). Several
|
||
regression tests have been modified to explicitly order the results, and
|
||
hence are insensitive to optimizer choices. A few regression tests are
|
||
for data types which are inherently unordered (e.g. points and time
|
||
intervals) and tests involving those types are explicitly bracketed with
|
||
<command>set geqo to 'off'</command> and <command>reset geqo</command>.
|
||
</para>
|
||
|
||
<para>
|
||
The interpretation of array specifiers (the curly braces around atomic
|
||
values) appears to have changed sometime after the original regression
|
||
tests were generated. The current <filename>./expected/*.out</filename> files reflect this
|
||
new interpretation, which might not be correct!
|
||
</para>
|
||
|
||
<para>
|
||
The float8 regression test fails on at least some platforms. This is due
|
||
to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
|
||
mechanisms used for overflow and underflow conditions.
|
||
</para>
|
||
|
||
<para>
|
||
The <quote>random</> results in the random test should cause the
|
||
<quote>random</quote> test to be <quote>failed</quote>, since the
|
||
regression tests are evaluated using a simple diff. However,
|
||
<quote>random</> does not seem to produce random results on my test
|
||
machine (Linux/<application>gcc</>/i686).
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 6.1</title>
|
||
|
||
<para>
|
||
This migration requires a complete dump of the 6.0 database and a
|
||
restore of the database in 6.1.
|
||
</para>
|
||
<para>
|
||
Those migrating from earlier 1.* releases should first upgrade to 1.09
|
||
because the COPY output format was improved from the 1.02 release.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
packet length checking in library routines
|
||
lock manager priority patch
|
||
check for under/over flow of float8(Bruce)
|
||
multitable join fix(Vadim)
|
||
SIGPIPE crash fix(Darren)
|
||
large object fixes(Sven)
|
||
allow btree indexes to handle NULLs(Vadim)
|
||
timezone fixes(D'Arcy)
|
||
select SUM(x) can return NULL on no rows(Thomas)
|
||
internal optimizer, executor bug fixes(Vadim)
|
||
fix problem where inner loop in < or <= has no rows(Vadim)
|
||
prevent re-commuting join index clauses(Vadim)
|
||
fix join clauses for multiple tables(Vadim)
|
||
fix hash, hashjoin for arrays(Vadim)
|
||
fix btree for abstime type(Vadim)
|
||
large object fixes(Raymond)
|
||
fix buffer leak in hash indexes (Vadim)
|
||
fix rtree for use in inner scan (Vadim)
|
||
fix gist for use in inner scan, cleanups (Vadim, Andrea)
|
||
avoid unnecessary local buffers allocation (Vadim, Massimo)
|
||
fix local buffers leak in transaction aborts (Vadim)
|
||
fix file manager memmory leaks, cleanups (Vadim, Massimo)
|
||
fix storage manager memmory leaks (Vadim)
|
||
fix btree duplicates handling (Vadim)
|
||
fix deleted rows reincarnation caused by vacuum (Vadim)
|
||
fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
|
||
many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
|
||
|
||
Enhancements
|
||
------------
|
||
attribute optimization statistics(Bruce)
|
||
much faster new btree bulk load code(Paul)
|
||
BTREE UNIQUE added to bulk load code(Vadim)
|
||
new lock debug code(Massimo)
|
||
massive changes to libpg++(Leo)
|
||
new GEQO optimizer speeds table multitable optimization(Martin)
|
||
new WARN message for non-unique insert into unique key(Marc)
|
||
update x=-3, no spaces, now valid(Bruce)
|
||
remove case-sensitive identifier handling(Bruce,Thomas,Dan)
|
||
debug backend now pretty-prints tree(Darren)
|
||
new Oracle character functions(Edmund)
|
||
new plaintext password functions(Dan)
|
||
no such class or insufficient privilege changed to distinct messages(Dan)
|
||
new ANSI timestamp function(Dan)
|
||
new ANSI Time and Date types (Thomas)
|
||
move large chunks of data in backend(Martin)
|
||
multicolumn btree indexes(Vadim)
|
||
new SET var TO value command(Martin)
|
||
update transaction status on reads(Dan)
|
||
new locale settings for character types(Oleg)
|
||
new SEQUENCE serial number generator(Vadim)
|
||
GROUP BY function now possible(Vadim)
|
||
re-organize regression test(Thomas,Marc)
|
||
new optimizer operation weights(Vadim)
|
||
new psql \z grant/permit option(Marc)
|
||
new MONEY data type(D'Arcy,Thomas)
|
||
tcp socket communication speed improved(Vadim)
|
||
new VACUUM option for attribute statistics, and for certain columns (Vadim)
|
||
many geometric type improvements(Thomas,Keith)
|
||
additional regression tests(Thomas)
|
||
new datestyle variable(Thomas,Vadim,Martin)
|
||
more comparison operators for sorting types(Thomas)
|
||
new conversion functions(Thomas)
|
||
new more compact btree format(Vadim)
|
||
allow pg_dumpall to preserve database ownership(Bruce)
|
||
new SET GEQO=# and R_PLANS variable(Vadim)
|
||
old (!GEQO) optimizer can use right-sided plans (Vadim)
|
||
typechecking improvement in SQL parser(Bruce)
|
||
new SET, SHOW, RESET commands(Thomas,Vadim)
|
||
new \connect database USER option
|
||
new destroydb -i option (Igor)
|
||
new \dt and \di psql commands (Darren)
|
||
SELECT "\n" now escapes newline (A. Duursma)
|
||
new geometry conversion functions from old format (Thomas)
|
||
|
||
Source tree changes
|
||
-------------------
|
||
new configuration script(Marc)
|
||
readline configuration option added(Marc)
|
||
OS-specific configuration options removed(Marc)
|
||
new OS-specific template files(Marc)
|
||
no more need to edit Makefile.global(Marc)
|
||
re-arrange include files(Marc)
|
||
nextstep patches (Gregor Hoffleit)
|
||
removed Windows-specific code(Bruce)
|
||
removed postmaster -e option, now only postgres -e option (Bruce)
|
||
merge duplicate library code in front/backends(Martin)
|
||
now works with eBones, international Kerberos(Jun)
|
||
more shared library support
|
||
c++ include file cleanup(Bruce)
|
||
warn about buggy flex(Bruce)
|
||
DG/UX, Ultrix, IRIX, AIX portability fixes
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-6-0">
|
||
<title>Release 6.0</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1997-01-29</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
A dump/restore is required for those wishing to migrate data from
|
||
previous releases of <productname>PostgreSQL</productname>.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration from version 1.09 to version 6.0</title>
|
||
|
||
<para>
|
||
This migration requires a complete dump of the 1.09 database and a
|
||
restore of the database in 6.0.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration from pre-1.09 to version 6.0</title>
|
||
|
||
<para>
|
||
Those migrating from earlier 1.* releases should first upgrade to 1.09
|
||
because the COPY output format was improved from the 1.02 release.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Bug Fixes
|
||
---------
|
||
ALTER TABLE bug - running postgres process needs to re-read table definition
|
||
Allow vacuum to be run on one table or entire database(Bruce)
|
||
Array fixes
|
||
Fix array over-runs of memory writes(Kurt)
|
||
Fix elusive btree range/non-range bug(Dan)
|
||
Fix for hash indexes on some types like time and date
|
||
Fix for pg_log size explosion
|
||
Fix permissions on lo_export()(Bruce)
|
||
Fix uninitialized reads of memory(Kurt)
|
||
Fixed ALTER TABLE ... char(3) bug(Bruce)
|
||
Fixed a few small memory leaks
|
||
Fixed EXPLAIN handling of options and changed full_path option name
|
||
Fixed output of group acl privileges
|
||
Memory leaks (hunt and destroy with tools like Purify(Kurt)
|
||
Minor improvements to rules system
|
||
NOTIFY fixes
|
||
New asserts for run-checking
|
||
Overhauled parser/analyze code to properly report errors and increase speed
|
||
Pg_dump -d now handles NULL's properly(Bruce)
|
||
Prevent SELECT NULL from crashing server (Bruce)
|
||
Properly report errors when INSERT ... SELECT columns did not match
|
||
Properly report errors when insert column names were not correct
|
||
psql \g filename now works(Bruce)
|
||
psql fixed problem with multiple statements on one line with multiple outputs
|
||
Removed duplicate system OIDs
|
||
SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
|
||
Several fixes for queries that crashed the backend
|
||
Starting quote in insert string errors(Bruce)
|
||
Submitting an empty query now returns empty status, not just " " query(Bruce)
|
||
|
||
Enhancements
|
||
------------
|
||
Add EXPLAIN manual page(Bruce)
|
||
Add UNIQUE index capability(Dan)
|
||
Add hostname/user level access control rather than just hostname and user
|
||
Add synonym of != for <>(Bruce)
|
||
Allow "select oid,* from table"
|
||
Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
|
||
Allow COPY from the frontend(Bryan)
|
||
Allow GROUP BY to use alias column name(Bruce)
|
||
Allow actual compression, not just reuse on the same page(Vadim)
|
||
Allow installation-configuration option to auto-add all local users(Bryan)
|
||
Allow libpq to distinguish between text value '' and null(Bruce)
|
||
Allow non-postgres users with createdb privs to destroydb's
|
||
Allow restriction on who can create C functions(Bryan)
|
||
Allow restriction on who can do backend COPY(Bryan)
|
||
Can shrink tables, pg_time and pg_log(Vadim & Erich)
|
||
Change debug level 2 to print queries only, changed debug heading layout(Bruce)
|
||
Change default decimal constant representation from float4 to float8(Bruce)
|
||
European date format now set when postmaster is started
|
||
Execute lowercase function names if not found with exact case
|
||
Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
|
||
Gist now included in the distribution(Marc)
|
||
Idend authentication of local users(Bryan)
|
||
Implement BETWEEN qualifier(Bruce)
|
||
Implement IN qualifier(Bruce)
|
||
libpq has PQgetisnull()(Bruce)
|
||
libpq++ improvements
|
||
New options to initdb(Bryan)
|
||
Pg_dump allow dump of OIDs(Bruce)
|
||
Pg_dump create indexes after tables are loaded for speed(Bruce)
|
||
Pg_dumpall dumps all databases, and the user table
|
||
Pginterface additions for NULL values(Bruce)
|
||
Prevent postmaster from being run as root
|
||
psql \h and \? is now readable(Bruce)
|
||
psql allow backslashed, semicolons anywhere on the line(Bruce)
|
||
psql changed command prompt for lines in query or in quotes(Bruce)
|
||
psql char(3) now displays as (bp)char in \d output(Bruce)
|
||
psql return code now more accurate(Bryan?)
|
||
psql updated help syntax(Bruce)
|
||
Re-visit and fix vacuum(Vadim)
|
||
Reduce size of regression diffs, remove timezone name difference(Bruce)
|
||
Remove compile-time parameters to enable binary distributions(Bryan)
|
||
Reverse meaning of HBA masks(Bryan)
|
||
Secure Authentication of local users(Bryan)
|
||
Speed up vacuum(Vadim)
|
||
Vacuum now had VERBOSE option(Bruce)
|
||
|
||
Source tree changes
|
||
-------------------
|
||
All functions now have prototypes that are compared against the calls
|
||
Allow asserts to be disabled easily from Makefile.global(Bruce)
|
||
Change oid constants used in code to #define names
|
||
Decoupled sparc and solaris defines(Kurt)
|
||
Gcc -Wall compiles cleanly with warnings only from unfixable constructs
|
||
Major include file reorganization/reduction(Marc)
|
||
Make now stops on compile failure(Bryan)
|
||
Makefile restructuring(Bryan, Marc)
|
||
Merge bsdi_2_1 to bsdi(Bruce)
|
||
Monitor program removed
|
||
Name change from Postgres95 to PostgreSQL
|
||
New config.h file(Marc, Bryan)
|
||
PG_VERSION now set to 6.0 and used by postmaster
|
||
Portability additions, including Ultrix, DG/UX, AIX, and Solaris
|
||
Reduced the number of #define's, centralized #define's
|
||
Remove duplicate OIDS in system tables(Dan)
|
||
Remove duplicate system catalog info or report mismatches(Dan)
|
||
Removed many os-specific #define's
|
||
Restructured object file generation/location(Bryan, Marc)
|
||
Restructured port-specific file locations(Bryan, Marc)
|
||
Unused/uninitialized variables corrected
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-1-09">
|
||
<title>Release 1.09</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1996-11-04</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
|
||
the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
|
||
releases.
|
||
</para>
|
||
</sect1>
|
||
|
||
<sect1 id="release-1-02">
|
||
<title>Release 1.02</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1996-08-01</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Migration from version 1.02 to version 1.02.1</title>
|
||
|
||
<para>
|
||
Here is a new migration file for 1.02.1. It includes the 'copy' change
|
||
and a script to convert old <acronym>ASCII</acronym> files.
|
||
</para>
|
||
<note>
|
||
<para>
|
||
The following notes are for the benefit of users who want to migrate
|
||
databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
|
||
</para>
|
||
<para>
|
||
If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
|
||
to migrate old databases, you do not need to read any further.
|
||
</para>
|
||
</note>
|
||
|
||
<para>
|
||
In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
|
||
version 1.02.1, the following steps are required:
|
||
</para>
|
||
<procedure>
|
||
<step>
|
||
<para>
|
||
Start up a new 1.02.1 postmaster
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
|
||
databases. This is done by running the new 1.02.1 server against
|
||
your own 1.01 or 1.02 database and applying the queries attached at
|
||
the end of the file. This can be done easily through <command>psql</>. If your
|
||
1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
|
||
from the end of this file and saved them in <filename>addfunc.sql</filename>:
|
||
<programlisting>
|
||
% psql testdb -f addfunc.sql
|
||
</programlisting>
|
||
|
||
Those upgrading 1.02 databases will get a warning when executing the
|
||
last two statements in the file because they are already present in 1.02. This is
|
||
not a cause for concern.
|
||
</para>
|
||
</step>
|
||
</procedure>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Dump/Reload Procedure</title>
|
||
|
||
<para>
|
||
If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
|
||
stdout</literal> generated with a previous version, you will need to run the
|
||
attached <command>sed</command> script on the ASCII file before loading it into the
|
||
database. The old format used '.' as end-of-data, while '\.' is now the
|
||
end-of-data marker. Also, empty strings are now loaded in as '' rather
|
||
than NULL. See the copy manual page for full details.
|
||
|
||
<programlisting>
|
||
sed 's/^\.$/\\./g' <in_file >out_file
|
||
</programlisting>
|
||
</para>
|
||
<para>
|
||
If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
|
||
end-of-data character, and hence no conversion necessary.
|
||
|
||
<programlisting>
|
||
-- following lines added by agc to reflect the case-insensitive
|
||
-- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
|
||
create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
|
||
create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
|
||
create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
|
||
create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Source code maintenance and development
|
||
* worldwide team of volunteers
|
||
* the source tree now in CVS at ftp.ki.net
|
||
|
||
Enhancements
|
||
* psql (and underlying libpq library) now has many more options for
|
||
formatting output, including HTML
|
||
* pg_dump now output the schema and/or the data, with many fixes to
|
||
enhance completeness.
|
||
* psql used in place of monitor in administration shell scripts.
|
||
monitor to be deprecated in next release.
|
||
* date/time functions enhanced
|
||
* NULL insert/update/comparison fixed/enhanced
|
||
* TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
|
||
|
||
Bug Fixes (almost too numerous to mention)
|
||
* indexes
|
||
* storage management
|
||
* check for NULL pointer before dereferencing
|
||
* Makefile fixes
|
||
|
||
New Ports
|
||
* added SolarisX86 port
|
||
* added BSD/OS 2.1 port
|
||
* added DG/UX port
|
||
</programlisting>
|
||
</para>
|
||
<!--
|
||
Contributors (apologies to any missed)
|
||
* Kurt J. Lidl <lidl@va.pubnix.com>
|
||
(missed in first run, but no less important)
|
||
* Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
|
||
* Jason Wright <jason@shiloh.vnet.net>
|
||
* Cees de Groot <C.deGroot@inter.NL.net>
|
||
* ernst.molitor@uni-bonn.de
|
||
* michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
|
||
* Brian E. Gallew <geek+@cmu.edu>
|
||
* Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
|
||
* Adam Sussman <myddryn@vidya.com>
|
||
* Chris Dunlop <chris@onthe.net.au>
|
||
* Marc G. Fournier <scrappy@ki.net>
|
||
* Dan McGuirk <mcguirk@indirect.com>
|
||
* Dr_George_D_Detlefsen <drgeorge@ilt.com>
|
||
* Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
|
||
* Massimo Dal Zotto <dz@cs.unitn.it>
|
||
* Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
|
||
* Rick Weldon <rick@wisetech.com>
|
||
* Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
|
||
* david bennett <dave@bensoft.com>
|
||
* ernst.molitor@uni-bonn.de
|
||
* Julian Assange <proff@suburbia.net>
|
||
* Bruce Momjian <pgman@candle.pha.pa.us>
|
||
* Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
|
||
* "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
|
||
-->
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-1-01">
|
||
<title>Release 1.01</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1996-02-23</simpara>
|
||
</note>
|
||
|
||
|
||
<sect2>
|
||
<title>Migration from version 1.0 to version 1.01</title>
|
||
|
||
<para>
|
||
The following notes are for the benefit of users who want to migrate
|
||
databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
|
||
</para>
|
||
<para>
|
||
If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
|
||
to migrate old databases, you do not need to read any further.
|
||
</para>
|
||
<para>
|
||
In order to <productname>Postgres95</> version 1.01 with databases created with
|
||
<productname>Postgres95</> version 1.0, the following steps are required:
|
||
</para>
|
||
<procedure>
|
||
<step>
|
||
<para>
|
||
Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
|
||
and <symbol>OIDNAMELEN</symbol> to 20.
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Decide whether you want to use Host based authentication.
|
||
</para>
|
||
<substeps>
|
||
<step>
|
||
<para>
|
||
If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
|
||
directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
|
||
shows an example syntax.
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
If you do not want host-based authentication, you can comment out
|
||
the line:
|
||
<programlisting>
|
||
HBA = 1
|
||
</programlisting>
|
||
in <filename>src/Makefile.global</filename>
|
||
</para>
|
||
<para>
|
||
Note that host-based authentication is turned on by default, and if
|
||
you do not take steps A or B above, the out-of-the-box 1.01 will
|
||
not allow you to connect to 1.0 databases.
|
||
</para>
|
||
</step>
|
||
</substeps>
|
||
</step>
|
||
|
||
<step>
|
||
<para>
|
||
Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Before doing anything else, terminate your 1.0 postmaster, and
|
||
backup your existing <envar>$PGDATA</envar> directory.
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
|
||
path up so that 1.01 binaries are being used.
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Start up a new 1.01 postmaster
|
||
</para>
|
||
</step>
|
||
<step>
|
||
<para>
|
||
Add the new built-in functions and operators of 1.01 to 1.0
|
||
databases. This is done by running the new 1.01 server against
|
||
your own 1.0 database and applying the queries attached and saving
|
||
in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
|
||
If your 1.0 database is name <literal>testdb</literal>:
|
||
|
||
<programlisting>
|
||
% psql testdb -f 1.0_to_1.01.sql
|
||
</programlisting>
|
||
|
||
and then execute the following commands (cut and paste from here):
|
||
|
||
<programlisting>
|
||
-- add builtin functions that are new to 1.01
|
||
|
||
create function int4eqoid (int4, oid) returns bool as 'foo'
|
||
language 'internal';
|
||
create function oideqint4 (oid, int4) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char2icregexeq (char2, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char2icregexne (char2, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char4icregexeq (char4, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char4icregexne (char4, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char8icregexeq (char8, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char8icregexne (char8, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char16icregexeq (char16, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function char16icregexne (char16, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function texticregexeq (text, text) returns bool as 'foo'
|
||
language 'internal';
|
||
create function texticregexne (text, text) returns bool as 'foo'
|
||
language 'internal';
|
||
|
||
-- add builtin functions that are new to 1.01
|
||
|
||
create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
|
||
create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
|
||
create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
|
||
create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
|
||
create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
|
||
create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
|
||
create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
|
||
create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
|
||
create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
|
||
create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
|
||
create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
|
||
create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
|
||
</programlisting>
|
||
</para>
|
||
</step>
|
||
</procedure>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Incompatibilities:
|
||
* 1.01 is backwards compatible with 1.0 database provided the user
|
||
follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
|
||
If those steps are not taken, 1.01 is not compatible with 1.0 database.
|
||
|
||
Enhancements:
|
||
* added PQdisplayTuples() to libpq and changed monitor and psql to use it
|
||
* added NeXT port (requires SysVIPC implementation)
|
||
* added CAST .. AS ... syntax
|
||
* added ASC and DESC key words
|
||
* added 'internal' as a possible language for CREATE FUNCTION
|
||
internal functions are C functions which have been statically linked
|
||
into the postgres backend.
|
||
* a new type "name" has been added for system identifiers (table names,
|
||
attribute names, etc.) This replaces the old char16 type. The
|
||
of name is set by the NAMEDATALEN #define in src/Makefile.global
|
||
* a readable reference manual that describes the query language.
|
||
* added host-based access control. A configuration file ($PGDATA/pg_hba)
|
||
is used to hold the configuration data. If host-based access control
|
||
is not desired, comment out HBA=1 in src/Makefile.global.
|
||
* changed regex handling to be uniform use of Henry Spencer's regex code
|
||
regardless of platform. The regex code is included in the distribution
|
||
* added functions and operators for case-insensitive regular expressions.
|
||
The operators are ~* and !~*.
|
||
* pg_dump uses COPY instead of SELECT loop for better performance
|
||
|
||
Bug fixes:
|
||
* fixed an optimizer bug that was causing core dumps when
|
||
functions calls were used in comparisons in the WHERE clause
|
||
* changed all uses of getuid to geteuid so that effective uids are used
|
||
* psql now returns non-zero status on errors when using -c
|
||
* applied public patches 1-14
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-1-0">
|
||
<title>Release 1.0</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1995-09-05</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Copyright change:
|
||
* The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
|
||
and modifiable for any purpose. Please read the COPYRIGHT file.
|
||
Thanks to Professor Michael Stonebraker for making this possible.
|
||
|
||
Incompatibilities:
|
||
* date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
|
||
EUROPEAN STYLE). This follows SQL-92 specs.
|
||
* "delimiters" is now a key word
|
||
|
||
Enhancements:
|
||
* sql LIKE syntax has been added
|
||
* copy command now takes an optional USING DELIMITER specification.
|
||
delimiters can be any single-character string.
|
||
* IRIX 5.3 port has been added.
|
||
Thanks to Paul Walmsley and others.
|
||
* updated pg_dump to work with new libpq
|
||
* \d has been added psql
|
||
Thanks to Keith Parks
|
||
* regexp performance for architectures that use POSIX regex has been
|
||
improved due to caching of precompiled patterns.
|
||
Thanks to Alistair Crooks
|
||
* a new version of libpq++
|
||
Thanks to William Wanders
|
||
|
||
Bug fixes:
|
||
* arbitrary userids can be specified in the createuser script
|
||
* \c to connect to other databases in psql now works.
|
||
* bad pg_proc entry for float4inc() is fixed
|
||
* users with usecreatedb field set can now create databases without
|
||
having to be usesuper
|
||
* remove access control entries when the entry no longer has any
|
||
privileges
|
||
* fixed non-portable datetimes implementation
|
||
* added kerberos flags to the src/backend/Makefile
|
||
* libpq now works with kerberos
|
||
* typographic errors in the user manual have been corrected.
|
||
* btrees with multiple index never worked, now we tell you they don't
|
||
work when you try to use them
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-0-03">
|
||
<title><productname>Postgres95</productname> Release 0.03</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1995-07-21</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
<para>
|
||
<programlisting>
|
||
Incompatible changes:
|
||
* BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
|
||
(due to system catalog changes and indexing structure changes).
|
||
* double-quote (") is deprecated as a quoting character for string literals;
|
||
you need to convert them to single quotes ('). <!-- " -->
|
||
* name of aggregates (eg. int4sum) are renamed in accordance with the
|
||
SQL standard (eg. sum).
|
||
* CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
|
||
* float literals (eg. 3.14) are now of type float4 (instead of float8 in
|
||
previous releases); you might have to do typecasting if you depend on it
|
||
being of type float8. If you neglect to do the typecasting and you assign
|
||
a float literal to a field of type float8, you might get incorrect values
|
||
stored!
|
||
* LIBPQ has been totally revamped so that frontend applications
|
||
can connect to multiple backends
|
||
* the usesysid field in pg_user has been changed from int2 to int4 to
|
||
allow wider range of Unix user ids.
|
||
* the netbsd/freebsd/bsd o/s ports have been consolidated into a
|
||
single BSD44_derived port. (thanks to Alistair Crooks)
|
||
|
||
SQL standard-compliance (the following details changes that makes postgres95
|
||
more compliant to the SQL-92 standard):
|
||
* the following SQL types are now built-in: smallint, int(eger), float, real,
|
||
char(N), varchar(N), date and time.
|
||
|
||
The following are aliases to existing postgres types:
|
||
smallint -> int2
|
||
integer, int -> int4
|
||
float, real -> float4
|
||
char(N) and varchar(N) are implemented as truncated text types. In
|
||
addition, char(N) does blank-padding.
|
||
* single-quote (') is used for quoting string literals; '' (in addition to
|
||
\') is supported as means of inserting a single quote in a string
|
||
* SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
|
||
(Also, aggregates can now be overloaded, i.e. you can define your
|
||
own MAX aggregate to take in a user-defined type.)
|
||
* CHANGE ACL removed. GRANT/REVOKE syntax added.
|
||
- Privileges can be given to a group using the "GROUP" key word.
|
||
For example:
|
||
GRANT SELECT ON foobar TO GROUP my_group;
|
||
The key word 'PUBLIC' is also supported to mean all users.
|
||
|
||
Privileges can only be granted or revoked to one user or group
|
||
at a time.
|
||
|
||
"WITH GRANT OPTION" is not supported. Only class owners can change
|
||
access control
|
||
- The default access control is to grant users readonly access.
|
||
You must explicitly grant insert/update access to users. To change
|
||
this, modify the line in
|
||
src/backend/utils/acl.h
|
||
that defines ACL_WORLD_DEFAULT
|
||
|
||
Bug fixes:
|
||
* the bug where aggregates of empty tables were not run has been fixed. Now,
|
||
aggregates run on empty tables will return the initial conditions of the
|
||
aggregates. Thus, COUNT of an empty table will now properly return 0.
|
||
MAX/MIN of an empty table will return a row of value NULL.
|
||
* allow the use of \; inside the monitor
|
||
* the LISTEN/NOTIFY asynchronous notification mechanism now work
|
||
* NOTIFY in rule action bodies now work
|
||
* hash indexes work, and access methods in general should perform better.
|
||
creation of large btree indexes should be much faster. (thanks to Paul
|
||
Aoki)
|
||
|
||
Other changes and enhancements:
|
||
* addition of an EXPLAIN statement used for explaining the query execution
|
||
plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
|
||
the query).
|
||
* WARN and NOTICE messages no longer have timestamps on them. To turn on
|
||
timestamps of error messages, uncomment the line in
|
||
src/backend/utils/elog.h:
|
||
/* define ELOG_TIMESTAMPS */
|
||
* On an access control violation, the message
|
||
"Either no such class or insufficient privilege"
|
||
will be given. This is the same message that is returned when
|
||
a class is not found. This dissuades non-privileged users from
|
||
guessing the existence of privileged classes.
|
||
* some additional system catalog changes have been made that are not
|
||
visible to the user.
|
||
|
||
libpgtcl changes:
|
||
* The -oid option has been added to the "pg_result" tcl command.
|
||
pg_result -oid returns oid of the last row inserted. If the
|
||
last command was not an INSERT, then pg_result -oid returns "".
|
||
* the large object interface is available as pg_lo* tcl commands:
|
||
pg_lo_open, pg_lo_close, pg_lo_creat, etc.
|
||
|
||
Portability enhancements and New Ports:
|
||
* flex/lex problems have been cleared up. Now, you should be able to use
|
||
flex instead of lex on any platforms. We no longer make assumptions of
|
||
what lexer you use based on the platform you use.
|
||
* The Linux-ELF port is now supported. Various configuration have been
|
||
tested: The following configuration is known to work:
|
||
kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
|
||
with everything in ELF format,
|
||
|
||
New utilities:
|
||
* ipcclean added to the distribution
|
||
ipcclean usually does not need to be run, but if your backend crashes
|
||
and leaves shared memory segments hanging around, ipcclean will
|
||
clean them up for you.
|
||
|
||
New documentation:
|
||
* the user manual has been revised and libpq documentation added.
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-0-02">
|
||
<title><productname>Postgres95</productname> Release 0.02</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1995-05-25</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Incompatible changes:
|
||
* The SQL statement for creating a database is 'CREATE DATABASE' instead
|
||
of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
|
||
of 'DESTROYDB'. However, the names of the executables 'createdb' and
|
||
'destroydb' remain the same.
|
||
|
||
New tools:
|
||
* pgperl - a Perl (4.036) interface to Postgres95
|
||
* pg_dump - a utility for dumping out a postgres database into a
|
||
script file containing query commands. The script files are in a ASCII
|
||
format and can be used to reconstruct the database, even on other
|
||
machines and other architectures. (Also good for converting
|
||
a Postgres 4.2 database to Postgres95 database.)
|
||
|
||
The following ports have been incorporated into postgres95-beta-0.02:
|
||
* the NetBSD port by Alistair Crooks
|
||
* the AIX port by Mike Tung
|
||
* the Windows NT port by Jon Forrest (more stuff but not done yet)
|
||
* the Linux ELF port by Brian Gallew
|
||
|
||
The following bugs have been fixed in postgres95-beta-0.02:
|
||
* new lines not escaped in COPY OUT and problem with COPY OUT when first
|
||
attribute is a '.'
|
||
* cannot type return to use the default user id in createuser
|
||
* SELECT DISTINCT on big tables crashes
|
||
* Linux installation problems
|
||
* monitor doesn't allow use of 'localhost' as PGHOST
|
||
* psql core dumps when doing \c or \l
|
||
* the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
|
||
* libpgtcl has a hard-wired default port number
|
||
* SELECT DISTINCT INTO TABLE hangs
|
||
* CREATE TYPE doesn't accept 'variable' as the internallength
|
||
* wrong result using more than 1 aggregate in a SELECT
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-0-01">
|
||
<title><productname>Postgres95</productname> Release 0.01</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>1995-05-01</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
Initial release.
|
||
</para>
|
||
</sect1>
|
||
|
||
<![IGNORE[
|
||
<sect1 id="timing-results">
|
||
<title>Timing Results</title>
|
||
|
||
<para>
|
||
These timing results are from running the regression test with the commands
|
||
|
||
<programlisting>
|
||
% cd src/test/regress
|
||
% make all
|
||
% time make runtest
|
||
</programlisting>
|
||
</para>
|
||
<para>
|
||
Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
|
||
to run, presumably due to the scheduling vagaries of multitasking systems.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Version 6.5</title>
|
||
|
||
<para>
|
||
As has been the case for previous releases, timing between
|
||
releases is not directly comparable since new regression tests
|
||
have been added. In general, 6.5 is faster than previous
|
||
releases.
|
||
</para>
|
||
|
||
<para>
|
||
Timing with <function>fsync()</function> disabled:
|
||
|
||
<programlisting>
|
||
Time System
|
||
02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
|
||
04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Timing with <function>fsync()</function> enabled:
|
||
|
||
<programlisting>
|
||
Time System
|
||
04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
|
||
</programlisting>
|
||
|
||
For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
|
||
disks leads to a 50% improvement in speed on the regression test.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Version 6.4beta</title>
|
||
|
||
<para>
|
||
The times for this release are not directly comparable to those for previous releases
|
||
since some additional regression tests have been included.
|
||
In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
|
||
</para>
|
||
<para>
|
||
<programlisting>
|
||
Time System
|
||
02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Version 6.3</title>
|
||
|
||
<para>
|
||
The times for this release are not directly comparable to those for previous releases
|
||
since some additional regression tests have been included and some obsolete tests involving
|
||
time travel have been removed.
|
||
In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
|
||
</para>
|
||
<para>
|
||
<programlisting>
|
||
Time System
|
||
02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
|
||
04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Version 6.1</title>
|
||
|
||
<para>
|
||
<programlisting>
|
||
Time System
|
||
06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
|
||
12:06 P-100, 48MB, Linux 2.0.29, gcc
|
||
39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
|
||
</programlisting>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
]]>
|
||
</appendix>
|