mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
First cut at 9.1alpha4 release notes.
This commit is contained in:
parent
a4406da967
commit
5c44f38d3b
@ -1,9 +1,9 @@
|
||||
<!-- doc/src/sgml/release-9.1.sgml -->
|
||||
|
||||
<!-- This is up-to-date with commits through 2010-12-28 -->
|
||||
<!-- This is (hopefully) up-to-date with commits through 2011-03-05 -->
|
||||
|
||||
<sect1 id="release-9-1-alpha">
|
||||
<title>Release 9.1alpha3</title>
|
||||
<title>Release 9.1alpha4</title>
|
||||
<sect2>
|
||||
<title>Overview</title>
|
||||
<para>
|
||||
@ -131,11 +131,12 @@
|
||||
Allow WITH clauses to be attached to INSERT, UPDATE, DELETE
|
||||
statements
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
This is not the hoped-for facility of using
|
||||
INSERT/UPDATE/DELETE inside a WITH, but rather the other way
|
||||
around.
|
||||
<emphasis>Allow INSERT/UPDATE/DELETE to be used inside a WITH
|
||||
clause</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@ -163,6 +164,98 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow a table's row type to be cast to the table's supertype
|
||||
if it's a type table.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This is analagous to the existing facility that allows casting a row
|
||||
type to a supertable's row type.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Make foreign data wrappers functional, and support FOREIGN
|
||||
TABLEs.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Foreign tables are component of SQL/MED, and provide a framework to
|
||||
allow data stored outside the database to be accessed via SQL.
|
||||
contrib/file_fdw is provided as a sample foreign data wrapper.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow a unique or primary key constraint to be created
|
||||
using an existing index.</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Implement a truly serializable isolation level</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow foreign key constraints to be added as initially
|
||||
NOT VALID, and validated later</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow multiple collations to be used within a single
|
||||
database</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Support extensions, which provide a cleaner method for
|
||||
installing and upgrading add-on modules, such as those in contrib
|
||||
</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Teach ALTER TABLE .. SET DATA TYPE to avoid a table write
|
||||
in some cases where it isn't necessary
|
||||
</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add ENCODING option to COPY TO/FROM</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow binary I/O of type "void"</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Rearrange snapshot handlling to make rule expansion more
|
||||
consistent</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Portals, SQL functions, and SPI all now agree that a completely new
|
||||
MVCC snapshot should be obtained only after fully executing each
|
||||
original query. This is equivalent to the prior behavior of EXPLAIN
|
||||
ANALYZE. It eliminates one source of concurrency hazards for
|
||||
rules, and should also be marginally faster.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -184,6 +277,7 @@
|
||||
This can be used to optimize nearest-neighbor searches.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Improve process shutdown speed
|
||||
@ -210,6 +304,31 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Support unlogged tables.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
The contents of an unlogged table are not WAL-logged; thus, they
|
||||
are replicated and are truncated whenever the database system enters
|
||||
recovery. Indexes on unlogged tables are also unlogged, but GIST
|
||||
indexes on unlogged tables are not currently supported.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Hash joins now support right and full outer joins.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Previously, full joins could be implemented only as a merge join,
|
||||
and left and right outer joins could only hash the table on the
|
||||
nullable side of the join. This optimization is particularly
|
||||
advantageous when the non-nullable side of a left or right outer
|
||||
join is much smaller than the nullable side.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Reduce the memory requirement for large ispell dictionaries
|
||||
@ -229,6 +348,20 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Fix GIN to support null keys, empty and null items, and
|
||||
full index scans</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Teach GIN to combine duplicate keys even across different
|
||||
quals</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Performance improvements in pg_upgrade for uses with many tables
|
||||
@ -256,6 +389,20 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Avoid unnecessary detoast when comparing unequal-length text
|
||||
or bytea values for equality or inequality</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Try to compact the background writer's fsync queue when
|
||||
it overflows, instead of doing an fsync per block written</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -298,6 +445,55 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Teach replication connections to respect the value of
|
||||
log_connections</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Previously, they were always logged.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Log restartpoints in the same fashion as
|
||||
checkpoints</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Previously, less information was logged for restartpoints.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>By default, set wal_buffers to a reasonable value, based
|
||||
on the setting for shared_buffers</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add new recovery.conf parameter, pause_at_recovery_target,
|
||||
which defaults to on.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This is a behavior change from previous releases, which entered normal
|
||||
running upon reaching the recovery target.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add new recovery.conf parameter, recovery_target_name,
|
||||
allowing recovery to proceed to a named restore point</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Named restore points can be created using a new server function,
|
||||
pg_create_restore_point.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -375,6 +571,77 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Implement remaining fields of
|
||||
information_schema.sequences view</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add a "conflicts" column to pg_stat_database</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>New system view pg_stat_database_conflicts</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>New system view pg_stat_replication</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This view shows which replication slaves are connected to the master,
|
||||
and reports their status and replication progress.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>When an autovacuum worker (other than one performing an
|
||||
anti-wraparound vacuum) is unable to obtain a lock on the target
|
||||
relation without blocking, skip the relation.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This avoids pinning down an autovacuum worker. The next autovacuum
|
||||
cycle will try again.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>When an autovacuum worker (other than one performing an
|
||||
anti-wraparound vacuum) is unable to obtain a lock on the target
|
||||
relation without blocking, skip the relation.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This avoids pinning down an autovacuum worker. The next autovacuum
|
||||
cycle will try again.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Track time of last statistics reset on databases and
|
||||
bgwriter</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow standby servers to send information on running
|
||||
transactions back to the master</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
When enabled, this prevents most recovery conflicts on the slave,
|
||||
but may cause MVCC bloat on the master.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -404,6 +671,16 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add REPLICATION privilege for ROLEs.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
This makes it possible for replication to be performed by a
|
||||
non-superuser account.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -480,6 +757,20 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add pg_is_xlog_replay_paused, pg_xlog_replay_pause, and
|
||||
pg_xlog_replay_resume functions.</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Change pg_last_xlog_receive_location not to move
|
||||
backwards.</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -519,6 +810,22 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Support streaming base backups.</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
A new client, pg_basebackup, can be used to perform a streaming base
|
||||
backup.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add a directory output format to pg_dump</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -553,7 +860,6 @@
|
||||
with (at present) no default value.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Add a \sf (show function) command to psql, for those
|
||||
@ -569,6 +875,20 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add a \dL command to psql, to list procedural
|
||||
languages</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow psql to automatically deduce the client encoding from
|
||||
the locale</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -607,6 +927,17 @@
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>ecpg</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow ecpg to accept dynamic cursor names even in WHERE
|
||||
CURRENT OF clauses</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Procedural Languages</title>
|
||||
<sect4>
|
||||
@ -653,9 +984,138 @@
|
||||
Allow generic record arguments to PL/Perl functions
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Convert PostgreSQL arrays passed to PL/perl functions to
|
||||
Perl arrays</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect4>
|
||||
|
||||
<sect4>
|
||||
<title>PL/Python</title>
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Fix an error when a set-returning function fails halfway
|
||||
through</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Skip dropped attributes when converting Python objects to
|
||||
tuples</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Improve messages for errors in compiling anonymous
|
||||
PL/Python blocks</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Improve the handling of exceptions</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Fix the way that exceptions are handled by the plpy module for Python
|
||||
3. Get rid of the global variable holding the error state, and
|
||||
instead arrange to report PostgreSQL errors to Python immediately.
|
||||
Call PLy_spi_execute_fetch_result inside the try/catch block, so that
|
||||
errors from fetching tuples are correct reported as errors in the
|
||||
SPI call. Use the built-in TypeError, not SPIError, for errors
|
||||
having to do with argument counts or types. Use SPIError, not simply
|
||||
plpy.Error, for errors in PLy_spi_execute_plan. Do not set
|
||||
a Python exception if PyArg_ParseTuple failed, as it already sets
|
||||
the correct exception.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Do not prefix error messages with the string
|
||||
"PL/Python: "</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
It is redundant, given the error context.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Check PL/Python functions for syntax errors at creation
|
||||
time</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Previously, even gross syntax errors would not be detected until
|
||||
the function was executed.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow Python try/catch blocks to catch exceptions arising
|
||||
from SPI calls</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Invalidate PL/python functions with composite type
|
||||
arguments when the type changes</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add quoting functions plpy.quote_ident, plpy.quote_literal,
|
||||
and plpy.quote_nullable</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Support table functions</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add a plpy.subtransaction() context manager</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Provide a separate exception class for each error code
|
||||
the backend defines, and make it possible to get the SQLSTATE from
|
||||
the exception object</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Assorted code cleanup</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
We now use HTABs instead of Python dictionary objects to cache
|
||||
procedures. palloc is used in TopMemoryContext instead of malloc.
|
||||
Avoid use of undocumented API PyObject_NEW. Free plan values in
|
||||
the PlyPlanObject dealloc function. Add braces around an if block,
|
||||
for readability. Refactor PLy_spi_prepare to save two levels of
|
||||
indentation. Avoid palloc(0).
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect4>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Additional Supplied Modules</title>
|
||||
<itemizedlist>
|
||||
@ -666,6 +1126,13 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>New module contrib/sepgsql, an SE-Linux integration for
|
||||
PostgreSQL</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Updates to contrib/isn ISBN tables
|
||||
@ -708,6 +1175,54 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>New module contrib/pg_test_fsync, replacing
|
||||
src/tools/test_fsync</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>In contrib/pageinspect, fix the heap_page_item to return
|
||||
infomasks as 32 bit values</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>In contrib/btree_gist, support KNN GiST searches</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>In contrib/pg_trgm, support LIKE, ILIKE, and KNN GiST
|
||||
searches</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Several improvements to contrib/intarray</emphasis>
|
||||
</para>
|
||||
<para>
|
||||
Correct the behavior of array containment operators, so that an empty
|
||||
array is contained in any other array. Fix bogus failures where
|
||||
operators would claim that nulls were present when they really
|
||||
weren't. Remove arbitrary restriction to 1-D arrays.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Fix pg_upgrade not to insist on pg_dumpall and psql in the
|
||||
old cluster, since we don't need them, but do check for pg_resetxlog
|
||||
in the old and new clusters, since we do. Avoid a useless attempt
|
||||
to call pg_config in the old cluster.</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
@ -808,6 +1323,24 @@
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Allow make check in PL directories</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>Add a make check-world target</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<emphasis>PGXS support for contrib/hstore</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
Loading…
Reference in New Issue
Block a user