From: Robert Haas <rhaas@postgresql.org> Date: Fri, 25 Mar 2011 15:52:11 +0000 (-0400) Subject: Remove alpha release notes. X-Git-Tag: REL9_1_ALPHA5~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6f0916dbdf9f2dc6bcdc550d8b3843739cdc304;p=postgresql Remove alpha release notes. Temporarily move some of the alpha release note disclaimers into the regular release notes, for the sake of alpha5. --- 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 @@ <!-- doc/src/sgml/release-9.1.sgml --> <sect1 id="release-9-1"> - <title>Release 9.1</title> + <title>Release 9.1alpha5</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> + </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> + +<!-- <note> <title>Release Date</title> <simpara>2011-??-??</simpara> @@ -14,15 +48,16 @@ <para> This release of <productname>PostgreSQL</> adds ... Major enhancements include: + (This list duplicates items below, but without authors or details) </para> - <!-- This list duplicates items below, but without authors or details--> <para> The above items are explained in more detail in the sections below. </para> </sect2> +--> <sect2> @@ -2553,1372 +2588,3 @@ </sect2> </sect1> - - - -<!-- This is (hopefully) up-to-date with commits through 2011-03-08 --> - - - <sect1 id="release-9-1-alpha"> - <title>Release 9.1alpha4</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>Replication and Recovery</title> - <itemizedlist> - - <listitem> - <para> - <emphasis>Support named restore points</emphasis> - </para> - <para> - 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. - </para> - </listitem> - - <listitem> - <para> - <emphasis>Add new <filename>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 pg_is_xlog_replay_paused, pg_xlog_replay_pause, and - pg_xlog_replay_resume functions</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> - - <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>Synchronous replication</emphasis> - </para> - <para> - When enabled, transaction commit will wait for WAL records to be - replicated before informing the client that a transaction has - successfully committed. - </para> - </listitem> - - <listitem> - <para> - <emphasis>When recovery_target_timeline='latest', periodically - rescan the archive for new timelines</emphasis> - </para> - </listitem> - - </itemizedlist> - </sect3> - - <sect3> - <title>SQL Features</title> - <itemizedlist> - - <listitem> - <para> - 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 - </para> - </listitem> - - <listitem> - <para> - Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally - </para> - - <para> - 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. - </para> - </listitem> - - <listitem> - <para> - Prevent invoking I/O conversion casts via - functional/attribute notation - </para> - <para> - This was found to be confusing in some cases. The - functionality is still available via cast syntax. - </para> - </listitem> - - <listitem> - <para> - Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE - </para> - </listitem> - - <listitem> - <para> - Support triggers on views - </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> - Allow WITH clauses to be attached to INSERT, UPDATE, DELETE - statements - </para> - </listitem> - - <listitem> - <para> - <emphasis>Allow INSERT/UPDATE/DELETE to be used inside a WITH - clause</emphasis> - </para> - </listitem> - - <listitem> - <para> - Allow new values to be added to an existing enum type - </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> - - <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 Serializable Snapshot Isolation, in order to - provide a more robust serializable transaction mode</emphasis> - </para> - <para> - 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. - </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> - <title>Performance</title> - <itemizedlist> - - <listitem> - <para> - Optimize the commit_siblings configuration parameter - </para> - </listitem> - - <listitem> - <para> - KNN GiST, otherwise known as order-by-operator support for GiST - </para> - - <para> - This can be used to optimize nearest-neighbor searches. - </para> - </listitem> - - <listitem> - <para> - Improve process shutdown speed - </para> - </listitem> - - <listitem> - <para> - Speed up conversion of signed integers to C strings - </para> - </listitem> - - <listitem> - <para> - Support MergeAppend plans, to allow sorted output - from append relations - </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>Support unlogged tables</emphasis> - </para> - <para> - 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. - </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 - </para> - </listitem> - - <listitem> - <para> - Teach CLUSTER to use seqscan-and-sort when it's faster than - indexscan - </para> - </listitem> - - <listitem> - <para> - Improve GIN indexscan cost estimation - </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 - </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> - - <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> - <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> - - <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> - - </itemizedlist> - </sect3> - <sect3> - <title>Administration and Monitoring</title> - <itemizedlist> - - <listitem> - <para> - Instrument checkpoint sync calls - </para> - </listitem> - - <listitem> - <para> - Use the same lexer for recovery.conf that has been used for - <filename>postgresql.conf</> (Dimitri Fontaine) - </para> - - <para> - Among other things, this allows values in recovery.conf to be unquoted. - </para> - </listitem> - - <listitem> - <para> - Add column buffers_backend_fsync to pg_stat_bgwriter - </para> - </listitem> - - <listitem> - <para> - Add monitoring function pg_last_xact_replay_timestamp() - </para> - </listitem> - - <listitem> - <para> - Allow pg_ctl to register the service in either AUTO or DEMAND start - type - </para> - </listitem> - - <listitem> - <para> - Support host names and host key word <literal>all</literal> - in <filename>pg_hba.conf</filename> - </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> - - <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>Track time of last statistics reset on databases and - bgwriter</emphasis> - </para> - </listitem> - - </itemizedlist> - </sect3> - <sect3> - <title>Security</title> - <itemizedlist> - - <listitem> - <para> - Add SECURITY LABEL command - </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> - - <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> - <title>Built-in Functions</title> - <itemizedlist> - - <listitem> - <para> - Add pg_read_binary_file() and whole-file-at-once - versions of pg_read_file() - </para> - </listitem> - - <listitem> - <para> - Add new function format(), for sprintf-like string formatting - </para> - </listitem> - - <listitem> - <para> - Add pg_describe_object() function to obtain textual - descriptions of objects as stored in pg_depend - </para> - </listitem> - - <listitem> - <para> - 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> - </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> - - <listitem> - <para> - <emphasis>Change pg_last_xlog_receive_location not to move - backwards</emphasis> - </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> - - <listitem> - <para> - <emphasis>Add a directory output format to pg_dump</emphasis> - </para> - </listitem> - - </itemizedlist> - </sect3> - <sect3> - <title><application>psql</></title> - <itemizedlist> - - <listitem> - <para> - Add <quote>S</quote> option to \dn command in <application>psql</> - </para> - <para> - System schemas are now hidden by default by \dn. - </para> - </listitem> - - <listitem> - <para> - Add \conninfo command to <application>psql</>, to show current connection - info - </para> - </listitem> - - <listitem> - <para> - Extend <application>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 <application>psql</> variable EDITOR_LINENUMBER_SWITCH - with (at present) no default value. - </para> - </listitem> - <listitem> - <para> - Add a \sf (show function) command to <application>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 <application>psql</> distinguish between unique indices and unique - constraints in \d printout - </para> - </listitem> - - <listitem> - <para> - <emphasis>Add a \dL command to <application>psql</>, to list procedural - languages</emphasis> - </para> - </listitem> - - <listitem> - <para> - <emphasis>Allow <application>psql</> to automatically deduce the client encoding from - the locale</emphasis> - </para> - </listitem> - - </itemizedlist> - </sect3> - <sect3> - <title>libpq</title> - <itemizedlist> - - <listitem> - <para> - Add PQlibVersion() function - </para> - </listitem> - - <listitem> - <para> - When reporting the server as not responding, if the - hostname was supplied, also print the IP address - </para> - <para> - This allows IPv4 and IPv6 failures to be distinguished. Also - useful when a hostname resolves to multiple IP addresses. - </para> - </listitem> - - <listitem> - <para> - 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 - </para> - <para> - 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. - </para> - </listitem> - - </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> - <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> - 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>Make plpy.Fatal() raise FATAL, rather than ERROR</emphasis> - </para> - </listitem> - - <listitem> - <para> - <emphasis>Skip dropped attributes when converting Python objects to - tuples</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>Improve error reporting</emphasis> - </para> - <para>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. - </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>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> - - <listitem> - <para> - New module contrib/auth_delay - </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 - </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> - - <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> - <title>Source Code, Build Options</title> - <itemizedlist> - - <listitem> - <para> - Rewrite the GiST insertion logic so that the - post-recovery cleanup stage to finish incomplete inserts or - splits is not needed anymore - </para> - </listitem> - - <listitem> - <para> - Add support for collecting <quote>minidump</quote>-style crash dumps - on Windows - </para> - </listitem> - - <listitem> - <para> - Replace pg_class.relistemp column with relpersistence - </para> - - <para> - This is for upcoming work on unlogged and global temporary tables. - </para> - </listitem> - - <listitem> - <para> - GNU make 3.80 or newer is now required - </para> - </listitem> - - <listitem> - <para> - Improved support for parallel make, make -k, and make -q - </para> - </listitem> - - <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> - - <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> - </sect1> -