mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-20 22:23:24 +02:00
618 lines
17 KiB
Plaintext
618 lines
17 KiB
Plaintext
<!-- doc/src/sgml/release-9.1.sgml -->
|
|
|
|
<!-- This is up-to-date with commits through 2010-10-29 -->
|
|
|
|
<sect1 id="release-9-1-alpha">
|
|
<title>Release 9.1alpha1</title>
|
|
<sect2>
|
|
<title>Overview</title>
|
|
<para>
|
|
PostgreSQL alpha releases are snapshots of development code. They
|
|
are intended to preview and test upcoming features and to provide
|
|
the possibility for early feedback. They should not be used in
|
|
production installations or active development projects. While the
|
|
PostgreSQL code is continuously subject to a number of automated
|
|
and manual tests, alpha releases might have serious bugs. Also
|
|
features may be changed incompatibly or removed at any time during
|
|
the development cycle.
|
|
</para>
|
|
<para>
|
|
The development cycle of a PostgreSQL major release alternates
|
|
between periods of development and periods of integration work,
|
|
called commit fests, normally one month each. Alpha releases are
|
|
planned to be produced at the end of every commit fest, thus every
|
|
two months. Since the first commit fest starts within a month from
|
|
the beginning of development altogether, early alpha releases are
|
|
not indicative of the likely feature set of the final release.
|
|
</para>
|
|
<para>
|
|
The release notes below highlight user visible changes and new
|
|
features. There are normally numerous bug fixes and performance
|
|
improvements in every new snapshot of PostgreSQL, and it would be
|
|
too bulky to attempt to list them all. Note that many bug fixes are
|
|
also backported to stable releases of PostgreSQL, and you should be
|
|
using those if you are looking for bug-fix-only upgrades for your
|
|
current installations.
|
|
</para>
|
|
<para>
|
|
These notes are cumulative over all alpha releases of the current
|
|
development cycle. Items that are new in the latest alpha release are
|
|
<emphasis>emphasized</emphasis>.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Migration</title>
|
|
<para>
|
|
To upgrade from any release to an alpha release or from an alpha
|
|
release to any other release will most likely require a
|
|
dump/restore upgrade procedure. It may happen that this is not
|
|
necessary in particular cases, but that is not verified beforehand.
|
|
(The server will warn you in any case when a dump/restore is
|
|
necessary if you attempt to use it with an old data directory.)
|
|
Note, however, that the dump/restore upgrade procedure is expected
|
|
to work for alpha releases, and problems in this area should be
|
|
reported.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Testing</title>
|
|
<para>
|
|
The primary reason we release alphas is to get users to test new
|
|
features as early as possible. If you are interested in helping
|
|
with organized testing, please see
|
|
<ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
|
|
testing information page</ulink>.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Changes</title>
|
|
<sect3>
|
|
<title>SQL Features</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Support triggers on views</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
This adds the SQL-standard concept of an INSTEAD OF trigger,
|
|
which is fired instead of performing a physical
|
|
insert/update/delete. The trigger function is passed the
|
|
entire old and/or new rows of the view, and must figure out
|
|
what to do to the underlying tables to implement the update.
|
|
So this feature can be used to implement updatable views
|
|
using trigger programming style rather than rule hacking.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow WITH clauses to be attached to INSERT, UPDATE, DELETE
|
|
statements</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
This is not the hoped-for facility of using
|
|
INSERT/UPDATE/DELETE inside a WITH, but rather the other way
|
|
around.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow new values to be added to an existing enum type</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Recognize functional dependency on primary
|
|
keys
|
|
</para>
|
|
<para>
|
|
This allows a table's other columns to be referenced without listing
|
|
them in GROUP BY, so long as the primary key column(s) are listed in
|
|
GROUP BY.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add CREATE TABLE IF NOT EXISTS
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Performance</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Support MergeAppend plans, to allow sorted output
|
|
from append relations</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
This eliminates the former need to sort the output of an
|
|
Append scan when an ordered scan of an inheritance tree is
|
|
wanted. This should be particularly useful for fast-start
|
|
cases such as queries with LIMIT.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Reduce the memory requirement for large ispell dictionaries</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Teach CLUSTER to use seqscan-and-sort when it's faster than
|
|
indexscan</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Improve GIN indexscan cost estimation</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Performance improvements in pg_upgrade for uses with many tables</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce lock levels of CREATE TRIGGER and some ALTER
|
|
TABLE, CREATE RULE actions
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add some knowledge about prefix matches to
|
|
tsmatchsel()
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Replace the naive HYPOT() macro with a
|
|
standards-conformant hypotenuse function
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Server Settings</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change the default value of
|
|
<literal>standard_conforming_strings</> to
|
|
<literal>on</>
|
|
</para>
|
|
<warning>
|
|
<para>
|
|
This is a significant incompatibility with previous releases,
|
|
because it may break unwary applications in security-critical ways.
|
|
</para>
|
|
</warning>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>log_file_mode</> parameter
|
|
</para>
|
|
<para>
|
|
This allows control of the file permissions set on log files created
|
|
by the syslogger process.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>restart_after_crash</> parameter
|
|
</para>
|
|
<para>
|
|
Normally, we automatically restart after a backend crash, but in
|
|
some cases when PostgreSQL is invoked by clusterware it may be
|
|
desirable to suppress this behavior, so we now provide an option which
|
|
does that.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Administration and Monitoring</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow pg_ctl to register the service in either AUTO or DEMAND start
|
|
type</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Support host names and host key
|
|
word <literal>all</literal>
|
|
in <filename>pg_hba.conf</filename></emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make EXPLAIN show the function call expression of a
|
|
FunctionScan plan node, but only in VERBOSE mode
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make EXPLAIN print PARAM_EXEC Params as
|
|
the referenced expressions, rather than just $N
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add vacuum and analyze counters to pg_stat_*_tables
|
|
views
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add stats functions and views to provide access to a
|
|
transaction's own statistics counts
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Security</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add SECURITY LABEL command</emphasis>
|
|
</para>
|
|
<para>
|
|
This is intended as infrastructure to support integration
|
|
with label-based mandatory access control systems such as
|
|
SE-Linux.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server authentication over Unix-domain
|
|
sockets
|
|
</para>
|
|
<para>
|
|
This adds a libpq connection parameter <literal>requirepeer</> that
|
|
specifies the user name that the server process is expected to run
|
|
under.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Built-In Functions</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Accept <literal>public</literal> as a pseudo-role
|
|
name in <literal>has_table_privilege()</literal> and friends
|
|
to see if a particular privilege has been granted to
|
|
<literal>PUBLIC</literal></emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add string functions: concat(), concat_ws(), left(),
|
|
right(), and reverse()
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add three-parameter forms of array_to_string and
|
|
string_to_array
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add XMLEXISTS function
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add xpath_exists() function
|
|
</para>
|
|
<para>
|
|
This is equivalent to XMLEXISTS except that it offers support for
|
|
namespace mapping.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add xml_is_well_formed, xml_is_well_formed_document,
|
|
xml_is_well_formed_content functions to the core XML
|
|
code
|
|
</para>
|
|
<para>
|
|
These supersede a version previously offered by contrib/xml2.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow numeric to use a more compact, 2-byte header in
|
|
many cases
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for dividing money by money (yielding a
|
|
float8 result) and for casting between money and numeric
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Server Tools</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add options to force quoting of all
|
|
identifiers
|
|
</para>
|
|
<para>
|
|
This includes a quote_all_identifiers parameter which affects the
|
|
behavior of the backend, and a --quote-all-identifiers argument to
|
|
pg_dump and pg_dumpall which sets the parameter and also affects the
|
|
quoting done internally by those applications.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>psql</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add \conninfo command to psql, to show current connection
|
|
info
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Extend psql's \e and \ef commands so that a line number
|
|
can be specified, and the editor's cursor will be initially placed
|
|
on that line
|
|
</para>
|
|
<para>
|
|
To avoid assumptions about what switch the user's editor takes for
|
|
this purpose, there is a new psql variable EDITOR_LINENUMBER_SWITCH
|
|
with (at present) no default value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a \sf (show function) command to psql, for those
|
|
times when you need to look at a function but don't wish to fire up
|
|
an editor
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make psql distinguish between unique indices and unique
|
|
constraints in \d printout
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Procedural Languages</title>
|
|
<sect4>
|
|
<title>PL/pgSQL</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Modify the handling of RAISE without parameters so that
|
|
the error it throws can be caught in the same places that could
|
|
catch an ordinary RAISE ERROR in the same location
|
|
</para>
|
|
<para>
|
|
The previous coding insisted on throwing the error from the block
|
|
containing the active exception handler; which is arguably more
|
|
surprising, and definitely unlike Oracle's behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove ancient PL/pgSQL line numbering hack
|
|
</para>
|
|
<para>
|
|
PL/pgSQL used to count the second line of the function body as
|
|
<quote>line 1</>, if the first line was zero-length.
|
|
While this hack arguably has some benefit in terms of making
|
|
PL/pgsql's line numbering match the programmer's expectations, it
|
|
also makes PL/pgsql inconsistent with the remaining PLs, making it
|
|
difficult for clients to reliably determine where the error
|
|
actually is. On balance, it seems better to be consistent.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>PL/Perl</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow generic record arguments to PL/Perl functions</emphasis>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Additional Supplied Modules</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Updates to contrib/isn ISBN tables</emphasis>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to compute per-statement latencies (ie,
|
|
average execution times) to pgbench
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Teach levenshtein() about multi-byte
|
|
characters
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add btree_gist support for searching on <quote>not
|
|
equals</quote>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add ssl_cipher() and ssl_version() functions to
|
|
contrib/sslinfo
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the arbitrary (and undocumented) limit on the
|
|
number of parameter=value pairs that can be handled by
|
|
xslt_process()
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Source Code, Build Options</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Include the backend ID in the relpath of temporary
|
|
relations
|
|
</para>
|
|
<para>
|
|
This allows us to reliably remove all leftover temporary relation
|
|
files on cluster startup without reference to system catalogs or
|
|
WAL; therefore, we no longer include temporary relations in
|
|
XLOG_XACT_COMMIT and XLOG_XACT_ABORT WAL records.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rewrite COMMENT ON <replaceable>object</> code for better
|
|
modularity, and add necessary locking
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a hook in ExecCheckRTPerms() for eventual use by
|
|
external security-checking modules
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Standardize names and calling conventions of
|
|
get_whatever_oid functions
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make NestLoop plan nodes pass outer-relation variables
|
|
into their inner relation using the general PARAM_EXEC executor
|
|
parameter mechanism, rather than the ad-hoc kluge of passing the
|
|
outer tuple down through ExecReScan
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make details of the Numeric representation private to
|
|
numeric.c
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress some compiler warnings from
|
|
<literal>clang</>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|