diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml index 1a1bac1e10..272304972d 100644 --- a/doc/src/sgml/release-9.1.sgml +++ b/doc/src/sgml/release-9.1.sgml @@ -1,8 +1,42 @@ - Release 9.1 + Release 9.1alpha5 + + Overview + + 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. + + + 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. + + + + Testing + + 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 + the + testing information page. + + + + The above items are explained in more detail in the sections below. +--> @@ -2553,1372 +2588,3 @@ - - - - - - - - Release 9.1alpha4 - - Overview - - 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. - - - 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. - - - 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. - - - These notes are cumulative over all alpha releases of the current - development cycle. Items that are new in the latest alpha release are - emphasized. - - - - Migration - - 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. - - - - Testing - - 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 - the - testing information page. - - - - Changes - - - Replication and Recovery - - - - - Support named restore points - - - Named restore points can be created using a new server function, - pg_create_restore_point. A new recovery.conf parameter, - recovery_target_name, allows recovery to stop at a named restore - point. - - - - - - Add new recovery.conf parameter, pause_at_recovery_target, - which defaults to on - - - This is a behavior change from previous releases, which entered normal - running upon reaching the recovery target. - - - - - - Add pg_is_xlog_replay_paused, pg_xlog_replay_pause, and - pg_xlog_replay_resume functions - - - - - - Allow standby servers to send information on running - transactions back to the master - - - When enabled, this prevents most recovery conflicts on the slave, - but may cause MVCC bloat on the master. - - - - - - Support streaming base backups - - - A new client, pg_basebackup, can be used to perform a streaming base - backup. - - - - - - Synchronous replication - - - When enabled, transaction commit will wait for WAL records to be - replicated before informing the client that a transaction has - successfully committed. - - - - - - When recovery_target_timeline='latest', periodically - rescan the archive for new timelines - - - - - - - - SQL Features - - - - - Add ALTER ... SET SCHEMA support for conversions, - operators, operator classes, operator families, text search - configurations, text search dictionaries, text search - parsers, and text search templates - - - - - - Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally - - - - Previously, the sequence restart did not roll back on error. - This meant that an error between truncating and committing - left the sequences out of sync with the table contents, with - potentially bad consequences as were noted in a Warning on - the TRUNCATE man page. - - - - - - Prevent invoking I/O conversion casts via - functional/attribute notation - - - This was found to be confusing in some cases. The - functionality is still available via cast syntax. - - - - - - Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE - - - - - - Support triggers on views - - - - 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. - - - - - - Allow WITH clauses to be attached to INSERT, UPDATE, DELETE - statements - - - - - - Allow INSERT/UPDATE/DELETE to be used inside a WITH - clause - - - - - - Allow new values to be added to an existing enum type - - - - - - Recognize functional dependency on primary - keys - - - 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. - - - - - - Add CREATE TABLE IF NOT EXISTS - - - - - - Allow a table's row type to be cast to the table's supertype - if it's a type table - - - This is analagous to the existing facility that allows casting a row - type to a supertable's row type. - - - - - - Make foreign data wrappers functional, and support FOREIGN - TABLEs - - - 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. - - - - - - Allow a unique or primary key constraint to be created - using an existing index - - - - - - Implement Serializable Snapshot Isolation, in order to - provide a more robust serializable transaction mode - - - In previous releases, the REPEATABLE READ and SERIALIZABLE isolation - levels were identical. The historical behavior of REPEATABLE READ is - unchanged in this release, but SERIALIZABLE now provides stronger - guarantees. - - - - - - Allow foreign key constraints to be added as initially - NOT VALID, and validated later - - - - - - Allow multiple collations to be used within a single - database - - - - - - Support extensions, which provide a cleaner method for - installing and upgrading add-on modules, such as those in contrib - - - - - - - Teach ALTER TABLE ... SET DATA TYPE to avoid a table write - in some cases where it isn't necessary - - - - - - - Add ENCODING option to COPY TO/FROM - - - - - - Allow binary I/O of type "void" - - - - - - Rearrange snapshot handlling to make rule expansion more - consistent - - - 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. - - - - - - - Performance - - - - - Optimize the commit_siblings configuration parameter - - - - - - KNN GiST, otherwise known as order-by-operator support for GiST - - - - This can be used to optimize nearest-neighbor searches. - - - - - - Improve process shutdown speed - - - - - - Speed up conversion of signed integers to C strings - - - - - - Support MergeAppend plans, to allow sorted output - from append relations - - - - 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. - - - - - - Support unlogged tables - - - The contents of an unlogged table are not WAL-logged; thus, they - are not 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. - - - - - - Hash joins now support right and full outer joins - - - 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. - - - - - - Reduce the memory requirement for large ispell dictionaries - - - - - - Teach CLUSTER to use seqscan-and-sort when it's faster than - indexscan - - - - - - Improve GIN indexscan cost estimation - - - - - - Fix GIN to support null keys, empty and null items, and - full index scans - - - - - - Teach GIN to combine duplicate keys even across different - quals - - - - - - Performance improvements in pg_upgrade for uses with many tables - - - - - - Reduce lock levels of CREATE TRIGGER and some ALTER - TABLE, CREATE RULE actions - - - - - - Add some knowledge about prefix matches to - tsmatchsel() - - - - - - Replace the naive HYPOT() macro with a - standards-conformant hypotenuse function - - - - - - Avoid unnecessary detoast when comparing unequal-length text - or bytea values for equality or inequality - - - - - - Try to compact the background writer's fsync queue when - it overflows, instead of doing an fsync per block written - - - - - - - Server Settings - - - - - Change the default value of - standard_conforming_strings to - on - - - - This is a significant incompatibility with previous releases, - because it may break unwary applications in security-critical ways. - - - - - - - Add log_file_mode parameter - - - This allows control of the file permissions set on log files created - by the syslogger process. - - - - - - Add restart_after_crash parameter - - - 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. - - - - - - Teach replication connections to respect the value of - log_connections - - - Previously, they were always logged. - - - - - - Log restartpoints in the same fashion as - checkpoints - - - Previously, less information was logged for restartpoints. - - - - - - By default, set wal_buffers to a reasonable value, based - on the setting for shared_buffers - - - - - - - Administration and Monitoring - - - - - Instrument checkpoint sync calls - - - - - - Use the same lexer for recovery.conf that has been used for - postgresql.conf (Dimitri Fontaine) - - - - Among other things, this allows values in recovery.conf to be unquoted. - - - - - - Add column buffers_backend_fsync to pg_stat_bgwriter - - - - - - Add monitoring function pg_last_xact_replay_timestamp() - - - - - - Allow pg_ctl to register the service in either AUTO or DEMAND start - type - - - - - - Support host names and host key word all - in pg_hba.conf - - - - - - Make EXPLAIN show the function call expression of a - FunctionScan plan node, but only in VERBOSE mode - - - - - - Make EXPLAIN print PARAM_EXEC Params as - the referenced expressions, rather than just $N - - - - - - Add vacuum and analyze counters to pg_stat_*_tables - views - - - - - - Add stats functions and views to provide access to a - transaction's own statistics counts - - - - - - Implement remaining fields of - information_schema.sequences view - - - - - - Add a "conflicts" column to pg_stat_database - - - - - - New system view pg_stat_database_conflicts - - - - - - New system view pg_stat_replication - - - This view shows which replication slaves are connected to the master, - and reports their status and replication progress. - - - - - - 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 - - - This avoids pinning down an autovacuum worker. The next autovacuum - cycle will try again. - - - - - - Track time of last statistics reset on databases and - bgwriter - - - - - - - Security - - - - - Add SECURITY LABEL command - - - This is intended as infrastructure to support integration - with label-based mandatory access control systems such as - SE-Linux. - - - - - - Add server authentication over Unix-domain - sockets - - - This adds a libpq connection parameter requirepeer that - specifies the user name that the server process is expected to run - under. - - - - - - Add REPLICATION privilege for ROLEs - - - This makes it possible for replication to be performed by a - non-superuser account. - - - - - - - Built-in Functions - - - - - Add pg_read_binary_file() and whole-file-at-once - versions of pg_read_file() - - - - - - Add new function format(), for sprintf-like string formatting - - - - - - Add pg_describe_object() function to obtain textual - descriptions of objects as stored in pg_depend - - - - - - Accept public as a pseudo-role - name in has_table_privilege() and friends - to see if a particular privilege has been granted to - PUBLIC - - - - - - Add string functions: concat(), concat_ws(), left(), - right(), and reverse() - - - - - - Add three-parameter forms of array_to_string and - string_to_array - - - - - - Add XMLEXISTS function - - - - - - Add xpath_exists() function - - - This is equivalent to XMLEXISTS except that it offers support for - namespace mapping. - - - - - - Add xml_is_well_formed, xml_is_well_formed_document, - xml_is_well_formed_content functions to the core XML - code - - - These supersede a version previously offered by contrib/xml2. - - - - - - Change pg_last_xlog_receive_location not to move - backwards - - - - - - - Data Types - - - - - Allow numeric to use a more compact, 2-byte header in - many cases - - - - - - Add support for dividing money by money (yielding a - float8 result) and for casting between money and numeric - - - - - - - Server Tools - - - - - Add options to force quoting of all - identifiers - - - 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. - - - - - - Add a directory output format to pg_dump - - - - - - - <application>psql</> - - - - - Add S option to \dn command in psql - - - System schemas are now hidden by default by \dn. - - - - - - Add \conninfo command to psql, to show current connection - info - - - - - - 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 - - - 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. - - - - - 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 - - - - - - Make psql distinguish between unique indices and unique - constraints in \d printout - - - - - - Add a \dL command to psql, to list procedural - languages - - - - - - Allow psql to automatically deduce the client encoding from - the locale - - - - - - - libpq - - - - - Add PQlibVersion() function - - - - - - When reporting the server as not responding, if the - hostname was supplied, also print the IP address - - - This allows IPv4 and IPv6 failures to be distinguished. Also - useful when a hostname resolves to multiple IP addresses. - - - - - - Add functions PQping and PQpingParams to allow - detection of the server's status, including a status where - the server is running but refuses ordinary connections - - - pg_ctl uses the new function. This fixes the case where - pg_ctl reports that the server is not running (cannot - connect) but in fact it is running. - - - - - - - ecpg - - - - Allow ecpg to accept dynamic cursor names even in WHERE - CURRENT OF clauses - - - - - - Procedural Languages - - PL/pgSQL - - - - - 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 - - - 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. - - - - - - Remove ancient PL/pgSQL line numbering hack - - - PL/pgSQL used to count the second line of the function body as - 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. - - - - - - - - PL/Perl - - - - - Allow generic record arguments to PL/Perl functions - - - - - - Convert PostgreSQL arrays passed to PL/perl functions to - Perl arrays - - - - - - - PL/Python - - - - - Fix an error when a set-returning function fails halfway - through - - - - - - Make plpy.Fatal() raise FATAL, rather than ERROR - - - - - - Skip dropped attributes when converting Python objects to - tuples - - - - - - Improve the handling of exceptions - - - 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. - - - - - - Improve error reporting - - Better error messages for errors in compiling anonymous - PL/Python blocks. Avoid prefixing error messages with the string - "PL/Python: ", which is redundant, given the error - context. Provide a separate exception class for each error code - the backend defines, and make it possible to get the SQLSTATE from - the exception object. Report Python errors from iterators - using PLy_elog, so that the Python exception is included in the - exception, and to avoid setting the errcode to - ERRCODE_DATA_EXCEPTION. - - - - - - Check PL/Python functions for syntax errors at creation - time - - - Previously, even gross syntax errors would not be detected until - the function was executed. - - - - - - Allow Python try/catch blocks to catch exceptions arising - from SPI calls - - - - - - Invalidate PL/python functions with composite type - arguments when the type changes - - - - - - Add quoting functions plpy.quote_ident, plpy.quote_literal, - and plpy.quote_nullable - - - - - - Support table functions - - - - - - Add a plpy.subtransaction() context manager - - - - - - Assorted code cleanup - - - 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). - - - - - - - - Additional Supplied Modules - - - - - New module contrib/auth_delay - - - - - - New module contrib/sepgsql, an SE-Linux integration for - PostgreSQL - - - - - - Updates to contrib/isn ISBN tables - - - - - - Add the ability to compute per-statement latencies (ie, - average execution times) to pgbench - - - - - - Teach levenshtein() about multi-byte - characters - - - - - - Add btree_gist support for searching on not - equals - - - - - - Add ssl_cipher() and ssl_version() functions to - contrib/sslinfo - - - - - - Remove the arbitrary (and undocumented) limit on the - number of parameter=value pairs that can be handled by - xslt_process() - - - - - - New module contrib/pg_test_fsync, replacing - src/tools/test_fsync - - - - - - In contrib/pageinspect, fix the heap_page_item to return - infomasks as 32 bit values - - - - - - In contrib/btree_gist, support KNN GiST searches - - - - - - In contrib/pg_trgm, support LIKE, ILIKE, and KNN GiST - searches - - - - - - Several improvements to contrib/intarray - - - 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. - - - - - - 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. - - - - - - - Source Code, Build Options - - - - - Rewrite the GiST insertion logic so that the - post-recovery cleanup stage to finish incomplete inserts or - splits is not needed anymore - - - - - - Add support for collecting minidump-style crash dumps - on Windows - - - - - - Replace pg_class.relistemp column with relpersistence - - - - This is for upcoming work on unlogged and global temporary tables. - - - - - - GNU make 3.80 or newer is now required - - - - - - Improved support for parallel make, make -k, and make -q - - - - - - Include the backend ID in the relpath of temporary - relations - - - 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. - - - - - - Rewrite COMMENT ON object code for better - modularity, and add necessary locking - - - - - - Add a hook in ExecCheckRTPerms() for eventual use by - external security-checking modules - - - - - - Standardize names and calling conventions of - get_whatever_oid functions - - - - - - 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 - - - - - - Make details of the Numeric representation private to - numeric.c - - - - - - Suppress some compiler warnings from - clang - - - - - - Allow make check in PL directories - - - - - - Add a make check-world target - - - - - - PGXS support for contrib/hstore - - - - - - - -