This release contains improvements in many areas,
demonstrating the continued growth of PostgreSQL. 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.

Major changes in this release:

Foreign Keys

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.

Optimizer Overhaul

Continuing on work started a year ago, the optimizer has
been improved, allowing better query plan selection and
faster performance with less memory usage.

Updated psql

psql, our interactive
terminal monitor, has been updated with a variety of new
features. See the psql
manual page for details.

Join Syntax

SQL92 join syntax is now supported, though only as
INNER JOIN for this release.
JOIN, NATURAL
JOIN, JOIN/USING, and JOIN/ON are
available, as are column correlation names.

A dump/restore using pg_dump is required for those wishing to
migrate data from any previous release of PostgreSQL. For those upgrading from
6.5.*, you can instead use pg_upgrade to upgrade to this release;
however, a full dump/reload installation is always the most
robust method for upgrades.

Interface and compatibility issues to consider for the new
release include:

The date/time types datetime and
timespan have been superseded by the
SQL92-defined types timestamp and
interval. Although there has been
some effort to ease the transition by allowing PostgreSQL to recognize the deprecated
type names and translate them to the new type names, this
mechanism cannot be completely transparent to your existing
application.

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.

The JDBC and
ODBC interfaces have
been upgraded and extended.

The string function CHAR_LENGTH is now a native function.
Previous versions translated this into a call to
LENGTH, which could result in
ambiguity with other types implementing LENGTH such as the geometric types.