diff options
-rw-r--r-- | doc/src/sgml/release.sgml | 1559 |
1 files changed, 510 insertions, 1049 deletions
diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 395f96bbe2c..a0278759a66 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.520 2007/10/11 20:35:56 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.521 2007/10/18 05:15:48 momjian Exp $ --> <!-- Typical markup: @@ -48,15 +48,11 @@ do it for earlier branch release files. <title>Overview</title> <para> - This release represents a major leap forward by adding significant - new functionality and performance enhancements to - <productname>PostgreSQL</>. Many complex ideas that normally take - years to implement were added rapidly to this release by our - development team. This release starts <productname>PostgreSQL</> on - a trajectory moving beyond feature-parity with other database - systems to a time when <productname>PostgreSQL</> will be a - technology leader in the database field. Major new capabilities - in this release include: + This release represents a major leap forward for + <productname>PostgreSQL</> by adding significant new functionality + and performance enhancements. This was made possible by a growing + community that has dramatically accelerated the pace of + development. This release adds the follow major capabilities: <itemizedlist> @@ -69,8 +65,8 @@ do it for earlier branch release files. <listitem> <para> - Support for the SQL/XML standard, including a new <type>XML</type> builtin - data type + Support for the SQL/XML standard, including a operators and a + new <type>XML</type> builtin </para> </listitem> @@ -78,18 +74,12 @@ do it for earlier branch release files. <para> Enumerated (<type>ENUM</>) data type support </para> - - <para> - This is accomplished by creating a new data type with an - <literal>ENUM</> clause, e.g. - <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>. - </para> </listitem> <listitem> <para> - Universally Unique Identifier (UUID) data type, similar to that - defined by RFC 4122 + Universally Unique Identifier (<type>UUID</>) data type, similar + to that defined by RFC 4122 </para> </listitem> @@ -101,7 +91,7 @@ do it for earlier branch release files. <listitem> <para> - Control of whether <literal>NULL</>s sort first or last, using + Control over whether <literal>NULL</>s sort first or last, using <literal>ORDER BY ... NULLS FIRST/LAST</> </para> </listitem> @@ -110,11 +100,6 @@ do it for earlier branch release files. <para> Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT OF</> </para> - - <para> - This eliminates the need to reference a primary key to update or - delete rows returned by a cursor. - </para> </listitem> <listitem> @@ -134,26 +119,12 @@ do it for earlier branch release files. <para> User-defined types can now have type modifiers </para> - - <para> - This allows a user type to take a modifier when - being referenced, e.g. <type>SSNUM(7)</>. Previously only - predefined system data types would allow this, e.g. - <type>CHAR(4)</>. - </para> </listitem> <listitem> <para> Automatically invalidate cached function code when table - definitions change - </para> - - <para> - Previously PL/PgSQL functions that referenced temporary tables - would fail if the temporary table was dropped and recreated - between function invocations, unless <literal>EXECUTE</> was - used. + definitions change or statistics are updated </para> </listitem> @@ -168,12 +139,8 @@ do it for earlier branch release files. <listitem> <para> - SSPI/GSSAPI authentication support - </para> - - <para> - This adds native Security Service Provider Interface (SSPI) for - Windows. + Support Security Service Provider Interface (SSPI) on + authentication for Windows and GSSAPI </para> </listitem> @@ -181,13 +148,6 @@ do it for earlier branch release files. <para> Multiple autovacuum worker processes, and other autovacuum improvements </para> - - <para> - This allows multiple vacuums to run concurrently, meaning - vacuuming of a large table will not prevent smaller tables from - being vacuumed at the same time. Autovacuum is now considered - mature and thus enabled by default. - </para> </listitem> <listitem> @@ -217,18 +177,6 @@ do it for earlier branch release files. Asynchronous commit option allows transactions to be committed but on-disk changes to be delayed </para> - - <para> - This feature dramatically increases performance for data - modification queries. The disadvantage is that because on-disk - changes are delayed, if the operating system crashes before data - is written to the disk, committed data will be lost. This is - useful only for applications that can accept some data loss. - Unlike <varname>fsync</varname>, asynchronous commit does not - risk database corruption; the worst case is that after an - operating system crash the last few reportedly-committed - transactions will be missing. - </para> </listitem> <listitem> @@ -236,13 +184,6 @@ do it for earlier branch release files. <quote>Distributed</> checkpoints prevent I/O spikes during checkpoints </para> - - <para> - Previously all modified buffers were forced to disk at - checkpoint time, causing an I/O spike and decreasing server - performance. This new capability spreads checkpoint activity out - between checkpoints, reducing peak I/O usage. - </para> </listitem> <listitem> @@ -250,15 +191,6 @@ do it for earlier branch release files. Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</> space usage </para> - - <para> - To allow high concurrency <productname>PostgreSQL</> retains old - versions of updated rows. Previously only <command>VACUUM</> - could reuse space taken by dead rows. With <acronym>HOT</> dead - row space can be reused at the time of <command>UPDATE</> or - <command>INSERT</>. This allows for more consistent performance. - <acronym>HOT</> also improved deleted row space reuse. - </para> </listitem> <listitem> @@ -266,24 +198,12 @@ do it for earlier branch release files. Just-in-time background writer strategy to improve disk write efficiency </para> - - <para> - This basically makes the background writer self-tuning. - </para> - </listitem> <listitem> <para> Reduction of both per-field and per-row storage requirements </para> - - <para> - Variable-length data types with data values less then 128 bytes - will see a decrease of 3-6 bytes. For example, two - <type>CHAR(1)</type> fields now take 4 bytes instead of 16. Rows - are also 4 bytes shorter. - </para> </listitem> <listitem> @@ -298,35 +218,18 @@ do it for earlier branch release files. Allow large sequential scans to use cached pages from other concurrent sequential scans </para> - - <para> - This is accomplished by starting the new sequential scan in the - middle of the table (where the other sequential scan is already - in-progress) and wrapping around to the beginning to finish. - </para> </listitem> <listitem> <para> Allow <literal>ORDER BY ... LIMIT</> to be done without sorting </para> - - <para> - This is done by scanning the table and using a filter to find - the few requested rows, rather than sorting the entire table. - </para> </listitem> <listitem> <para> Use pseudo-transaction ids in read-only transactions </para> - - <para> - This reduces transaction overhead for read-only transactions, - and reduces the need for vacuuming for transaction id - wrap-around. - </para> </listitem> </itemizedlist> @@ -366,15 +269,6 @@ do it for earlier branch release files. Queries that previously automatically cast values to <type>TEXT</type> might now need explicit casts </para> - - <para> - Data types other than <type>CHAR</> and <type>VARCHAR</> no - longer automatically cast to <type>TEXT</>, except in the - limited case of concatenation (<literal>||</>) where the other - input is textual. While this change will require additional - casts for some queries it also eliminates some unusual - behavior. - </para> </listitem> <listitem> @@ -394,10 +288,8 @@ do it for earlier branch release files. <varname>track_activities</>. <varname>stats_block_level</> and <varname>stats_row_level</> are merged into <varname>track_counts</>. - Previously <varname>archive_command</> controlled whether - archiving was performed. Now a new boolean configuration - parameter, <varname>archive_mode</>, controls this. Autovacuum's - default settings have changed. + A new boolean configuration parameter, <varname>archive_mode</>, + controls archiving. Autovacuum's default settings have changed. </para> </listitem> @@ -406,11 +298,6 @@ do it for earlier branch release files. Commenting out a parameter in <filename>postgresql.conf</> now causes it to revert to its default value </para> - - <para> - Previously commenting out a value kept the value unchanged until - the next server restart. - </para> </listitem> <listitem> @@ -437,11 +324,6 @@ do it for earlier branch release files. The array name for a base data type is no longer required to be the data type name with an underscore prefix </para> - - <para> - The old naming convention is still honored when possible, but - client code should no longer depending on it. - </para> </listitem> <listitem> @@ -449,12 +331,6 @@ do it for earlier branch release files. Non-superuser database owners now have privileges to add trusted procedural languages in their databases by default </para> - - <para> - While this is reasonably safe, some administrators may wish to - revoke the privilege. It is controlled by - <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>. - </para> </listitem> <listitem> @@ -463,10 +339,6 @@ do it for earlier branch release files. the end of the top-most transaction, unless rolled back </para> - <para> - Previously <command>SET LOCAL</command>'s effects reverted - during subtransaction commit and <command>RELEASE</>. - </para> </listitem> <listitem> @@ -474,11 +346,6 @@ do it for earlier branch release files. Commands that are disallowed in transaction blocks are now also disallowed in multiple-statement query strings </para> - - <para> - For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be - rejected even if submitted as a single query message. - </para> </listitem> <listitem> @@ -508,25 +375,12 @@ do it for earlier branch release files. Restrict object size functions to users who have reasonable permissions to view such information </para> - - <para> - For example, database size now requires <literal>CONNECT</> - permission, and tablespaces size requires <literal>CREATE</> - permission. - </para> </listitem> <listitem> <para> New C macros for handling variable-length data values </para> - - <para> - The new <function>SET_VARSIZE()</> macro <emphasis>must</> be - used to set the length of generated values. Also, it might be - necessary to expand (<quote>de-TOAST</quote>) input values in - additional places. - </para> </listitem> </itemizedlist> @@ -547,275 +401,158 @@ do it for earlier branch release files. <listitem> <para> - Implement an optional asynchronous commit mode (Simon) - </para> - - <para> - When <varname>synchronous_commit</varname> is off, we don't flush - WAL before reporting a transaction committed. Data consistency is - still guaranteed (unlike turning <varname>fsync</varname> off), but - a crash may lose the effects of the last few transactions. In many - applications this is an acceptable tradeoff for improved - performance. - </para> - </listitem> - - <listitem> - <para> - Implement <quote>distributed</> checkpoints (Itagaki Takahiro and - Heikki Linnakangas) - </para> - - <para> - The I/O needed for a checkpoint is now spread over a fairly long - period of time, rather than being spat out in a burst. (This happens - only for background checkpoints carried out by the bgwriter; other - cases, such as a shutdown checkpoint, are still done at full speed.) - This reduces the impact of checkpoints on query processing. - </para> - </listitem> - - <listitem> - <para> - Heap-Only Tuples (Pavan Deolasee, with ideas from many others) + Asynchronous commit option allows transactions to be committed + but on-disk changes to be delayed (Simon) </para> <para> - When we update a tuple without changing any of its indexed columns, - and the new version can be stored on the same heap page, we no longer - generate extra index entries for the new version. Instead, index - searches follow the HOT-chain links to ensure they find the correct - tuple version. In addition, this patch introduces the ability to - <quote>prune</quote> dead tuples on a per-page basis, without having - to do a complete <command>VACUUM</command> pass to recover space. - <command>VACUUM</command> is still needed to clean up dead index - entries, however. + This feature dramatically increases performance for data + modification queries. The disadvantage is that because on-disk + changes are delayed, if the operating system crashes before data + is written to the disk, committed data will be lost. This is + useful only for applications that can accept some data loss. + Unlike <varname>fsync</varname>, asynchronous commit does not + risk database corruption; the worst case is that after an + operating system crash the last few reportedly-committed + transactions will be missing. </para> </listitem> <listitem> <para> - Just-in-time background writing strategy (Greg Smith, Itagaki - Takahiro) + <quote>Distributed</> checkpoints prevent I/O spikes during + checkpoints (Itagaki Takahiro and Heikki Linnakangas) </para> <para> - This patch avoids re-scanning buffers that cannot possibly need to - be cleaned, and estimates how many buffers it should try to clean - based on moving averages of recent allocation requests and density - of reusable buffers. + Previously all modified buffers were forced to disk at + checkpoint time, causing an I/O spike and decreasing server + performance. This new capability spreads checkpoint activity out + between checkpoints, reducing peak I/O usage. (User-requested + and shutdown checkpoints are still immediately written to disk.) </para> </listitem> <listitem> <para> - Support varlena fields with single-byte headers and unaligned - storage (Greg Stark) + Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</> + space usage (Pavan Deolasee, with ideas from many others) </para> <para> - This significantly reduces the on-disk size of short - character-string fields. + To allow high concurrency <productname>PostgreSQL</> retains old + versions of updated rows. Previously only <command>VACUUM</> + could reuse space taken by dead rows. With <acronym>HOT</> dead + row space can be reused at the time of <command>UPDATE</> or + <command>INSERT</>. This allows for more consistent performance. + <acronym>HOT</> even allows deleted row space reuse. + <command>UPDATE</> space reuse is only possible if no modified + columns are indexed. </para> </listitem> <listitem> <para> - Combine cmin and cmax fields of HeapTupleHeaders into a single field - (Heikki) + Just-in-time background writer strategy to improve disk write + efficiency (Greg Smith, Itagaki Takahiro) </para> <para> - We do this by keeping private state in each backend that has - inserted and deleted the same tuple during its current top-level - transaction. This is sufficient since there is no need to be able - to determine the cmin/cmax from any other transaction. This gets us - back down to 23-byte tuple headers, removing a space penalty paid in - 8.0 to support subtransactions. + This basically makes the background writer self-tuning. </para> </listitem> <listitem> <para> - Lazy XID allocation (Florian Pflug) - </para> - - <para> - Formerly, every transaction obtained a transaction ID (XID). Now, - transactions that do not modify any database rows will typically - never obtain an XID at all. We already did things this way for - subtransactions, but this patch extends the concept to top-level - transactions. In applications where there are lots of short - read-only transactions, this should improve performance noticeably; - not so much from removal of the actual XID-assignments, as from - reduction of overhead that's driven by the rate of XID consumption. - We add a concept of a <quote>virtual transaction ID</> so that active - transactions can be uniquely identified even if they don't have a - regular XID. This is a much lighter-weight concept: uniqueness of - VXIDs is only guaranteed over the short term, and no on-disk record - is made about them. + Reduction of both per-field and per-row storage requirements + (Greg Stark) </para> - </listitem> - <listitem> <para> - Reduce contention for the ProcArrayLock (Florian Pflug, Heikki) + Variable-length data types with data values less then 128 bytes + will see a decrease of 3-6 bytes. For example, two + <type>CHAR(1)</type> fields now take 4 bytes instead of 16. Rows + are also 4 bytes shorter. </para> </listitem> <listitem> <para> - Improve interlocking between checkpoint start and transaction commit - (Heikki) + Use pseudo-transaction ids in read-only transactions (Florian Pflug) </para> <para> - The new method both speeds up commit (less for it to do) and - prevents the problem of checkpoint being delayed indefinitely when - there's a constant flow of commits. + This reduces transaction overhead for read-only transactions, + and reduces the necessity of vacuuming for transaction id + wrap-around. Other transaction performance improvements were + also made that should improve concurrency. </para> </listitem> <listitem> <para> - Create a dedicated <quote>wal writer</quote> process to offload + Create a dedicated <acronym>WAL</> writer process to off-load WAL-writing work from backends (Simon) </para> - - <para> - This process is also responsible for guaranteeing a maximum delay - before asynchronously-committed transactions will be flushed to - disk. - </para> - </listitem> - - <listitem> - <para> - Skip writing WAL in <command>CLUSTER</command> and - <command>COPY</command> in cases where it's not needed (Simon) - </para> - - <para> - If WAL archiving is not enabled, it's possible to ensure - transactional safety by fsync'ing the destination table before - commit, rather than emitting WAL records for all inserted tuples. - </para> </listitem> <listitem> <para> - Avoid rewriting <filename>pg_control</filename> at every WAL segment - switch (Simon) + Skip unnecessary WAL writes for <command>CLUSTER</command> and + <command>COPY</command> (Simon) </para> - </listitem> - <listitem> <para> - Reduce WAL output size for page splits in btree indexes (Heikki) + Unless WAL archiving is enabled, it is possible to just + <function>fsync()</> the table at the end of the command, + increasing performance. Additional WAL efficiencies were also + added. </para> </listitem> <listitem> <para> - Avoid unnecessary disk reads during WAL recovery (Heikki) - </para> - - <para> - Aside from speeding up recovery, this change eliminates a potential - data loss risk when restoring a WAL log that was written with - full_page_writes off. - </para> - </listitem> - - <listitem> - <para> - Make large sequential scans and <command>VACUUM</command>s work in a - limited-size <quote>ring</quote> of buffers (Simon, Heikki, Tom) - </para> - - <para> - Aside from avoiding cache spoliation, this fixes the problem that - <command>VACUUM</command> formerly tended to cause a WAL flush for - every page it modified, because we had it hacked to use only a - single buffer. Those flushes will now occur only once per ring-ful. - </para> - </listitem> - - <listitem> - <para> - Synchronize sequential scans (Jeff Davis) - </para> - - <para> - Large sequential scans now synchronize with each other, so that when - multiple backends are scanning the same relation concurrently, each - page is (ideally) read only once. Note that a backend joining such - a scan starts in the middle of the relation and <quote>wraps - around</quote> to cover all blocks; this may affect the order in which - rows are returned. - </para> - </listitem> - - <listitem> - <para> - Suppress useless searches for unused line pointers in PageAddItem - (Heikki, improving on an idea from Hiroki Kataoka) - </para> - </listitem> - - <listitem> - <para> - Put a rate limit on messages sent by backends to the stats collector - (Tom) - </para> - - <para> - This reduces the overhead for short transactions by combining - reports for successive short transactions. + Prevent large sequential scans from forcing out more frequently + used cached pages (Simon, Heikki, Tom) </para> </listitem> <listitem> <para> - Implement <quote>top N</quote> sorting in <literal>ORDER BY - ... LIMIT</literal> queries (Greg Stark) + Allow large sequential scans to use cached pages from other + concurrent sequential scans (Jeff Davis) </para> <para> - We keep a heap of the current best N tuples and sift-up new tuples - into it as we scan the input. For M input tuples this means only - about M*log(N) comparisons instead of M*log(M), not to mention a lot - less workspace when N is small — avoiding spill-to-disk for large - M is actually the most attractive thing about it. + This is accomplished by starting the new sequential scan in the + middle of the table (where the other sequential scan is already + in-progress) and wrapping around to the beginning to finish. + This may affect the order in which rows are returned in a + non-<literal>ORDER BY</> query. </para> </listitem> <listitem> <para> - Improve hash join performance for cases with many input NULLs (Tom) + Reduce overhead of populating the statistics tables. (Tom) </para> </listitem> <listitem> <para> - Improve performance of mergejoin with a large sort operation as - inner input (Greg Stark) + Allow <literal>ORDER BY ... LIMIT</> to be done without sorting + (Greg Stark) </para> <para> - This change uses a Materialize node between the mergejoin and the - sort to prevent the sort from having to <quote>back up</>, which - allows a more efficient sort. The Materialize node keeps a circular - buffer of only the prior tuples that the mergejoin may actually - need again, so it usually won't need to spill to disk, resulting - in net I/O savings. + This is done by scanning the table and using a filter to save + the few requested rows, rather than sorting the entire table. </para> </listitem> <listitem> <para> - Avoid computing X^2 at each row in <function>avg(bigint)</function> - and <function>avg(numeric)</function> (Mark Kirkwood) + Improve hash join performance for cases with many NULLs (Tom) </para> </listitem> @@ -829,74 +566,67 @@ do it for earlier branch release files. <listitem> <para> - Autovacuum is now enabled by default (Alvaro) - </para> - - <para> - Considerable work was done to make autovacuum less intrusive, - allowing this to become a reasonable default. + Support multiple concurrent autovacuum processes (Alvaro, Itagaki + Takahiro) </para> - </listitem> - <listitem> <para> - Support multiple concurrent autovacuum processes (Alvaro, Itagaki - Takahiro) + This allows multiple vacuums to run concurrently, meaning + vacuuming of a large table will not prevent smaller tables from + being vacuumed at the same time. Autovacuum is now considered + mature and thus enabled by default. Several autovacuum + default parameter values were also updated. </para> </listitem> <listitem> <para> - Set the default autovacuum <varname>vacuum_cost_delay</varname> - value to 20ms, and reduce the default autovacuum vacuum and analyze - threshold values to 50 tuples (Alvaro) + Autovacuum is now enabled by default (Alvaro) </para> - </listitem> - <listitem> <para> - Make autovacuum report the start time of its current activity in + Also, autovacuum now reports its activity start time in <literal>pg_stat_activity</literal> (Tom) </para> </listitem> <listitem> <para> - Make configuration parameters fall back to their default values when - they are removed from the configuration file (Joachim Wieland) + Commenting out a parameter in <filename>postgresql.conf</> now + causes it to revert to its default value (Joachim Wieland) </para> + <para> - This fixes an ancient gotcha that returning a configuration file - line to its original commented-out state did not undo the change. + Previously commenting out a value kept the value unchanged until + the next server restart. </para> </listitem> <listitem> <para> - Invalidate and rebuild cached plans whenever there is a schema - change or statistics update to referenced relations (Tom) + Automatically invalidate cached function code when table + definitions change or statistics are updated (Tom) </para> <para> - Aside from improving performance (for example, by being able to make - use of newly-added indexes), this finally fixes the problem that you - couldn't drop and recreate a temp table that's used by a PL/PgSQL - function, unless you used <literal>EXECUTE</literal> for all - references to it. A statement that depends on a temp table will now - be replanned automatically if the temp table has been recreated. + Previously PL/PgSQL functions that referenced temporary tables + would fail if the temporary table was dropped and recreated + between function invocations, unless <literal>EXECUTE</> was + used. </para> </listitem> <listitem> <para> - Add support for GSSAPI authentication (Henry Hotz, Magnus) + Support Security Service Provider Interface (SSPI) + authentication on Windows (Magnus) </para> </listitem> <listitem> <para> - Support SSPI authentication on Windows (Magnus) + Add support for GSSAPI authentication (Henry Hotz, Magnus) </para> </listitem> @@ -908,7 +638,7 @@ do it for earlier branch release files. <listitem> <para> - Add <varname>ssl_ciphers</> parameter to control allowed ciphers + Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers (Victor Wagner) </para> </listitem> @@ -916,7 +646,7 @@ do it for earlier branch release files. <listitem> <para> Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004, along with new - conversions among EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo) + conversions between EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo) </para> </listitem> @@ -926,15 +656,14 @@ do it for earlier branch release files. </para> <para> - It was found that JOHAB does not meet the assumptions needed to be - used safely as a server-side encoding. + JOHAB cannot safely be used as a server-side encoding. </para> </listitem> <listitem> <para> - Provide for logfiles in machine readable CSV format (Arul Shaji, - Greg Smith, Andrew Dunstan) + Allow logfile creation in CSV format (Arul Shaji, Greg Smith, + Andrew Dunstan) </para> </listitem> @@ -968,8 +697,8 @@ do it for earlier branch release files. <listitem> <para> - <literal>%s</literal> and <literal>%c</literal> escapes in - <varname>log_line_prefix</varname> can now be used in all processes + <varname>log_line_prefix</varname> escapes <literal>%s</literal> + and <literal>%c</literal> can now be used in all processes (Andrew) </para> </listitem> @@ -981,84 +710,89 @@ do it for earlier branch release files. </para> <para> - This avoids Windows-specific problems with localized time zone names - that are in the wrong encoding. There is a new - <varname>log_timezone</> parameter that controls the timezone used - in log messages, separately from the client-visible + This avoids Windows-specific problems with localized time zone + names that are in the wrong encoding. There is a new + <varname>log_timezone</> parameter that controls the timezone + used in log messages, independent of the client-visible <varname>timezone</> parameter. </para> </listitem> <listitem> <para> - Change the timestamps recorded in transaction commit/abort xlog - records from time_t to TimestampTz representation (Tom) + Change the timestamps recorded in transaction WAL records from + time_t to TimestampTz representation (Tom) </para> <para> - This provides full gettimeofday() resolution for the timestamps, - which might be useful when attempting to do point-in-time recovery - — previously it was not possible to specify the stop point with - sub-second resolution. + This provides sub-second resolution in WAL, which can be useful for + point-in-time recovery. </para> </listitem> - <listitem> <para> - Split the <varname>archive_command</> parameter into separate - <varname>archive_mode</> and <varname>archive_command</> parameters - (Simon) + New boolean configuration parameter, <varname>archive_mode</>, + controls archiving (Simon) </para> <para> - This avoids some problems that occur if the user wishes to stop - archiving temporarily. + Previously setting <varname>archive_command</> to an empty + string turned off archiving. Now <varname>archive_mode</> turns + archiving on and off. This is useful for stopping archiving + temporarily. </para> </listitem> <listitem> <para> - Add a <literal>%r</> option in <filename>recovery.conf</filename> to - provide last restartpoint to <varname>restore_command</varname> + Improve ability to create warm standby servers using archiving (Simon) </para> + + <para> + Allow the warm standby server to pass the earliest needed WAL + file to the recovery script to allow automatic removal of + unneeded WAL files. This is done using + <varname>restore_command</varname> <literal>%r</> in + <filename>recovery.conf</filename>. + </para> </listitem> <listitem> <para> - Add <varname>log_restartpoints</varname> recovery option to emit a - log message at each restartpoint (Simon) + Add <varname>log_restartpoints</varname> archive recovery option + to emit a log message at each recovery restart point (Simon) </para> </listitem> <listitem> <para> Last transaction end time is now logged at end of recovery and at - each logged restartpoint (Simon) + each logged restart point (Simon) </para> </listitem> <listitem> <para> - Create a <varname>temp_tablespaces</varname> parameter to allow - selection of one or more tablespaces in which to store temp tables - and temporary files (Jaime Casanova, Albert Cervera, Bernd Helmle) + Add a <varname>temp_tablespaces</varname> parameter to control + the tablespaces for temporary tables and files (Jaime Casanova, + Albert Cervera, Bernd Helmle) </para> <para> - This is a list to allow spreading the load across multiple - tablespaces; a random list element is chosen each time a temp object - is to be created. Temp files are not stored in per-database - <filename>pgsql_tmp/</filename> directories anymore, but in - per-tablespace directories. + This parameters allows a list of tablespaces to be specified + which enables spreading the I/O load across multiple + tablespaces. A random tablespace is chosen each time a temporary + object is created. Temporary files are not stored in + per-database <filename>pgsql_tmp/</filename> directories anymore + but in per-tablespace directories. </para> </listitem> <listitem> <para> New system view <literal>pg_stat_bgwriter</literal> displays - statistics about the background writer process's performance - (Magnus) + statistics about the background writer activity (Magnus) </para> </listitem> @@ -1105,8 +839,8 @@ do it for earlier branch release files. </para> <para> - This seemed useless in view of the availability of - <function>pg_stat_reset()</function>. + This was removed because <function>pg_stat_reset()</function> + can be used for this purpose. </para> </listitem> @@ -1114,7 +848,7 @@ do it for earlier branch release files. <para> Merge <varname>stats_block_level</> and <varname>stats_row_level</> parameters into a single parameter <varname>track_counts</>, - which controls all reports sent to the collector process (Tom) + which controls all messages sent to the collector process (Tom) </para> </listitem> @@ -1149,12 +883,11 @@ do it for earlier branch release files. </para> <para> - This allows low-level code such as the relcache to recognize that - these tables are indeed temporary, which enables various - optimizations such as not WAL-logging changes and using local rather - than shared buffers for access. Aside from obvious performance - benefits, this provides a solution to bug #3483, in which other - backends unexpectedly held open file references to temporary tables. + This allows low-level code to recognize that these tables are + temporary, which enables various optimizations such as not + WAL-logging changes and using local rather than shared buffers + for access. This also fixes a bug where backends unexpectedly + held open file references to temporary tables. </para> </listitem> @@ -1168,7 +901,7 @@ do it for earlier branch release files. <listitem> <para> - Allow <command>CREATE INDEX CONCURRENTLY</command> to disregard + Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore transactions in other databases (Simon) </para> </listitem> @@ -1187,39 +920,43 @@ do it for earlier branch release files. </para> <para> - The features previously provided by <filename>contrib/tsearch2</> - have been improved and moved into the standard server. + This features was previously in <filename>contrib/tsearch2</>. + It has been improved, moved into the server, and is now installed + by default. </para> </listitem> <listitem> <para> - Support <literal>ORDER BY ... NULLS FIRST/LAST</literal> (Teodor, Tom) - </para> - - <para> - Users can now control whether nulls sort before or after - other values. + Control over whether <literal>NULL</>s sort first or last, using + <literal>ORDER BY ... NULLS FIRST/LAST</> (Teodor, Tom) </para> </listitem> <listitem> <para> - Add ASC/DESC and NULLS FIRST/NULLS LAST per-column options for btree - indexes (Teodor, Tom) + Allow ascending/descending (<literal>ASC</>/<literal>DESC</>) + control during index creation (Teodor, Tom) </para> <para> - This is primarily useful for customizing multicolumn indexes to match - the ordering needed by a specific query. + Previously a query using <literal>ORDER BY</> with mixed + <literal>ASC</>/<literal>DESC</> specifiers could not fully use + an index. Now an index can be fully used in such cases if the + index was created with matching + <literal>ASC</>/<literal>DESC</> specifictions. </para> </listitem> <listitem> <para> - Support <literal>UPDATE/DELETE WHERE CURRENT OF</> - <replaceable>cursor_name</> - (Arul Shaji, Tom) + Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT + OF</> (Arul Shaji, Tom) + </para> + + <para> + This eliminates the need to reference a primary key to update or + delete rows returned by a cursor. </para> </listitem> @@ -1231,31 +968,31 @@ do it for earlier branch release files. <listitem> <para> - Downgrade implicit casts to text to be assignment-only, except for - the ones from the other string-category types (Peter, Tom) + Queries that previously automatically cast values to + <type>TEXT</type> might now need explicit casts (Peter, Tom) </para> + <para> - This change eliminates a lot of surprising interpretations that the - parser could formerly make in cases when there was no directly - applicable operator. The <literal>||</> (concatenation) operator - has been generalized so that it will still accept non-textual - inputs, thus preserving the main useful case for implicit text - coercion. In other cases, if you want something to be treated - as text you'll need to say so. + Data types other than <type>CHAR</> and <type>VARCHAR</> no + longer automatically cast to <type>TEXT</>, except in the + limited case of concatenation (<literal>||</>) where the other + input is textual. While this change will require additional + casts for some queries it also eliminates some unusual + behavior. </para> </listitem> <listitem> <para> Create a general mechanism that supports casts to and from the - standard string types (<type>text</type>, <type>varchar</type>, - <type>bpchar</type>) for <emphasis>every</emphasis> datatype, by + standard string types (<type>TEXT</type>, <type>VARCHAR</type>, + <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by invoking the datatype's I/O functions (Tom) </para> <para> - These new casts are assignment-only in the to-string direction, + XXX? bjm These new casts are assignment-only in the to-string direction, explicit-only in the other, and therefore should create no surprising behavior. Remove a bunch of thereby-obsoleted datatype-specific casting functions. @@ -1264,70 +1001,49 @@ do it for earlier branch release files. <listitem> <para> - Make <literal>ARRAY(SELECT ...)</literal> return an empty array, - rather than a NULL, when the sub-select returns zero rows (Tom) + <literal>ARRAY(SELECT ...)</literal>, where <command>SELECT</> + returns no rows, now returns an empty array, rather than NULL + (Tom) </para> </listitem> <listitem> <para> - Make 'col IS NULL' clauses be btree-indexable conditions (Teodor) + Allow <literal>col IS NULL</> to use an index (Teodor) </para> </listitem> <listitem> <para> - Add support for cross-type hashing (Tom) + Allow limited hashing when using two different data types (Tom) </para> <para> This allows hash joins, hash indexes, hashed subplans, and hash aggregation to be used in situations involving cross-data-type - comparisons, if the data types have compatible hash functions. That - is currently the case for - <type>smallint</type>/<type>integer</type>/<type>bigint</type>, and - also for <type>float4</type>/<type>float8</type>. + comparisons, if the data types have compatible hash functions. + Current cross-data-type hashing support exists for + <type>SMALLINT</type>/<type>INTEGER</type>/<type>BIGINT</type>, + and for <type>FLOAT4</type>/<type>FLOAT8</type>. </para> </listitem> <listitem> <para> - Improve handling of <quote>equivalence classes</quote> of variables - that are constrained to be equal within a query's <literal>WHERE</> - clause (Tom) + Improve optimizer logic for detecting when variables are equal + in a <literal>WHERE</> clause (Tom) </para> <para> - Among other things, this change allows mergejoins to work with - descending sort orders, and improves recognition of redundant sort - columns. - </para> - </listitem> - - <listitem> - <para> - Improve performance for planning large inheritance trees that are - mostly excluded by constraints (Tom) + This allows mergejoins to work with descending sort orders, and + improves recognition of redundant sort columns. </para> </listitem> <listitem> <para> - Fix problems with selectivity estimation for partial indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix cost estimates for <literal>EXISTS</literal> subqueries that are - evaluated as initPlans (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some issues with user tables and views that are named similarly - to system catalogs (Tom) + Improve performance when planning large inheritance trees when + most tables are excluded by constraints (Tom) </para> </listitem> @@ -1337,8 +1053,8 @@ do it for earlier branch release files. </para> <para> - This operator was obsoleted long ago by <literal>IN (SELECT - ...)</literal> queries. + <literal>NOT IN (SELECT ...)</literal> is the proper way to + perform this operation. </para> </listitem> @@ -1351,118 +1067,94 @@ do it for earlier branch release files. <itemizedlist> <listitem> + <para> - Support arrays of composite types, including the rowtypes of regular - tables and views (but not system catalogs, nor sequences or toast - tables) (David Fetter, Andrew, Tom) + Support arrays of composite types (David Fetter, Andrew, Tom) </para> <para> - This change also removes the hardwired convention that a type's - array type is named exactly <quote>_type</quote>, instead using a - new column <literal>pg_type.typarray</literal> to provide the - linkage. (It still will be named <quote>_type</quote>, though, - except in odd corner cases such as maximum-length type names or - collisions with a pre-existing type named with a leading - underscore.) + Arrays of rowtypes of regular tables and views are now + supported, but not for system catalogs, sequences, or TOAST + tables. </para> + </listitem> <listitem> <para> - Support per-function GUC parameter settings (Tom) + The array name for a base data type is no longer required to + be the data type name with an underscore prefix </para> <para> - This provides a simple solution for functions that need local - settings for parameters; in particular, security definer functions - that must set <varname>search_path</varname> to avoid security - loopholes. + The old naming convention is still honored when possible, but + client code should no longer depending on it. Application code + should use the new <literal>pg_type.typarray</literal> column to + determine the array data type. </para> </listitem> <listitem> <para> - Add <literal>COST</literal> and <literal>ROWS</literal> options to - <command>CREATE/ALTER FUNCTION</command> (Tom) + Support per-function GUC parameter settings (Tom) </para> <para> - This change allows simple user adjustment of the estimated cost of a - function call, as well as control of the estimated number of rows - returned by a set-returning function. We might eventually wish to - extend this to allow function-specific estimation routines, but - there seems to be consensus that we should try a simple constant - estimate first. + This provides a simple way for functions to set local + parameters. In particular, security definer functions should set + <varname>search_path</varname> to avoid security loopholes. </para> </listitem> <listitem> <para> - Allow triggers and rules to be defined with different, per session - controllable, behaviors for replication purposes (Jan) + Add <literal>COST</literal> and <literal>ROWS</literal> options to + <command>CREATE/ALTER FUNCTION</command> (Tom) </para> <para> - This will allow replication systems to control the firing mechanism - of triggers and rewrite rules without modifying the system catalogs - directly. The behavior is controlled by a new superuser-only - parameter <varname>session_replication_role</varname>. - </para> - - <para> - <application>psql</application>'s <literal>\d</literal> command as - well as <application>pg_dump</application> are extended in a - backward compatible fashion. + This allows simple control of the estimated cost of a function + call and control over the estimated number of rows returned by a + set-returning function. </para> </listitem> <listitem> <para> - Support type modifiers for user-defined types (Teodor, Tom) + Allow triggers and rules to be deactivated in groups using a + session variable, for replication purposes (Jan) </para> <para> - User-defined types can now use parameters, similar to the maximum - length and precision parameters used by some built-in types. Any - simple constant (numeric or string) or identifier can be used as a - parameter value. A type-specific function must be provided to - validate this information and pack it into a 32-bit <quote>typmod</> - value for storage. + This allows replication systems to disable triggers and rewrite + rules as a group without modifying the system catalogs directly. + The behavior is controlled by <command>ALTER TABLE</> and a new + parameter <varname>session_replication_role</varname>. + </para> + + <para> + <application>psql</application>'s <literal>\d</literal> command + and <application>pg_dump</application> have been enhanced </para> </listitem> <listitem> <para> - Invent <quote>operator families</quote> to allow improved handling - of cross-data-type operators (Tom) + User-defined types can now have type modifiers (Teodor, Tom) </para> <para> - This change allows significantly better planning of queries - involving cross-data-type comparisons. + This allows a user type to take a modifier when + being created, e.g. <type>SSNUM(7)</>. Previously only + predefined system data types would allow this, e.g. + <type>CHAR(4)</>. </para> </listitem> <listitem> <para> - Clean up semantic assumptions for foreign keys (Tom) - </para> - - <para> - There is now a sound semantic basis for the equality checks applied - by foreign-key constraints; formerly the system tended to assume - that any operator named <literal>=</> was the right thing. The equality - operators will now be selected from the opfamily of the unique index - that the FK constraint depends on to enforce uniqueness of the - referenced columns; therefore they are certain to be consistent with - that index's notion of equality. Among other things this should fix - the problem noted awhile back that pg_dump may fail for foreign-key - constraints on user-defined types when the required operators aren't - in the search path. This also means that the former warning - condition about <quote>foreign key constraint will require costly - sequential scans</quote> is gone: if the comparison condition isn't - indexable then we'll reject the constraint entirely. + Foreign keys now must match indexable conditions for + cross-data-type references (Tom) </para> </listitem> @@ -1476,76 +1168,66 @@ do it for earlier branch release files. <listitem> <para> - Allow non-superuser database owners to create procedural languages - (Jeremy Drake) + Non-superuser database owners now have privileges to add trusted + procedural languages in their databases by default (Jeremy Drake) </para> + <para> - A database owner is now allowed to create a language in his database - if it's marked <structfield>tmpldbacreate</> in - <structname>pg_pltemplate</>. The factory default is that this is set - for all standard trusted languages, but of course a superuser may - adjust the settings. In service of this, add the long-foreseen owner - column to <structname>pg_language</>; renaming, dropping, and altering - owner of a PL now follow normal ownership rules instead of being - superuser-only. + While this is reasonably safe, some administrators may wish to + revoke the privilege. It is controlled by + <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>. </para> </listitem> <listitem> <para> - Arrange for <command>SET LOCAL</command>'s effects to persist until - the end of the current top transaction, unless rolled back or - overridden by a SET clause for the same variable attached to a - surrounding function call (Tom) + <command>SET LOCAL</command> changes now persist until + the end of the top-most transaction, unless rolled back (Tom) </para> <para> - This is an incompatible change: in 8.0 through 8.2, <command>SET - LOCAL</command>'s effects disappeared at subtransaction commit - (leading to behavior that made little sense at the SQL level). + Previously <command>SET LOCAL</command>'s effects reverted + during subtransaction commit and <command>RELEASE</>. </para> </listitem> <listitem> <para> - Support <literal>SET ... FROM CURRENT</literal> in - <command>CREATE/ALTER FUNCTION</command>, <command>ALTER DATABASE</command>, - <command>ALTER ROLE</command> (Tom) + Allow a session's current parameter setting to be used as the + default for future sessions (Tom) </para> <para> - This provides a convenient way of applying a session's current - parameter setting as the default for future sessions or function - calls. + This is done with <literal>SET ... FROM CURRENT</literal> in + <command>CREATE/ALTER FUNCTION</command>, <command>ALTER + DATABASE</command>, or <command>ALTER ROLE</command>. </para> </listitem> <listitem> <para> Implement new commands <command>DISCARD ALL</command>, - <command>DISCARD PLANS</command>, <command>DISCARD TEMP</command>, - <command>CLOSE ALL</command>, and <command>DEALLOCATE ALL</command> - (Marko Kreen, Neil) + <command>DISCARD PLANS</command>, <command>DISCARD + TEMPORARY</command>, <command>CLOSE ALL</command>, and + <command>DEALLOCATE ALL</command> (Marko Kreen, Neil) </para> <para> These commands simplify resetting a database session to its initial - state, and are particularly handy for connection-pooling software. + state, and are particularly useful for connection-pooling software. </para> </listitem> <listitem> <para> - Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER + Allow <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER SEQUENCE ... RENAME TO</command> (David Fetter, Neil) </para> <para> - While it has long been possible to perform these operations using - <command>ALTER TABLE</command>, users were often surprised that they - couldn't say <command>ALTER VIEW</command> or <command>ALTER - SEQUENCE</command> as appropriate. + Previously this could only be done via <command>ALTER TABLE ... + RENAME TO</command>. </para> </listitem> @@ -1562,16 +1244,15 @@ do it for earlier branch release files. </para> <para> - Formerly, a <command>CLUSTER</command> command would discard all - tuples that were committed dead, even if there were still - transactions that should be able to see them under the MVCC snapshot - rules. + Formerly, <command>CLUSTER</command> would discard all tuples + that were committed dead, even if there were still transactions + that should be able to see them under the visibility rules. </para> </listitem> <listitem> <para> - Support new syntax for <command>CLUSTER</command>: <literal>CLUSTER + Add new syntax for <command>CLUSTER</command>: <literal>CLUSTER <replaceable>table</> USING <replaceable>index</></literal> (Holger Schurig) </para> @@ -1584,79 +1265,43 @@ do it for earlier branch release files. <listitem> <para> - Make <command>CLUSTER</command> freeze tuples where possible - (Heikki, Alvaro) - </para> - - <para> - This is nearly free and may avoid the need for a subsequent - <command>VACUUM</command> of the table. - </para> - </listitem> - - <listitem> - <para> - Make <command>CLUSTER</command> and <command>TRUNCATE</command> - advance the table's <literal>relfrozenxid</literal> to - <literal>RecentXmin</literal> (Alvaro) - </para> - - <para> - This may avoid the need for a subsequent <command>VACUUM</command> - of the table. The table-rewriting variants of <command>ALTER - TABLE</command> do it too. + Fix <command>EXPLAIN</command> so it can show more complex plans (Tom) </para> </listitem> <listitem> <para> - Fix <command>EXPLAIN</command> so it can always print the correct - referent of an upper plan level expression (Tom) - </para> - - <para> - This fix banishes the old hack of showing - <literal>?column<replaceable>N</>?</literal> - when things got too complicated. + Commands that are disallowed in transaction blocks are now also + disallowed in multiple-statement query strings (Tom) </para> - </listitem> - <listitem> - <para> - Make PreventTransactionChain reject commands submitted as part of a - multi-statement simple-Query message (Tom) - </para> <para> For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be - rejected even if submitted as a single Query message. This is a - potential incompatibility since some clients expected such strings to - work; but it was always unsafe. + rejected even if submitted as a single query message. </para> </listitem> <listitem> <para> - Make CREATE/DROP/RENAME DATABASE wait a little bit to see if other - backends will exit before failing because of conflicting DB usage - (Tom) + Make CREATE/DROP/RENAME DATABASE wait briefly for other backends + to exit before failing (Tom) </para> <para> - This helps mask the fact that backend exit takes nonzero time. + This increases the likelihood that these commands will succeed. </para> </listitem> <listitem> <para> - Make - <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command> - only accept identifiers without a schema qualifier (Bruce) + Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command> + from accepting schema-qualified names (Bruce) </para> <para> - Formerly, these commands accepted <quote>schema.relation</> but then - ignored the schema part, leading to confusion. + Formerly, these commands accepted <quote>schema.relation</> but + ignored the schema part, which was confusing. </para> </listitem> @@ -1670,32 +1315,38 @@ do it for earlier branch release files. <listitem> <para> - SQL/XML support (Nikolay Samokhvalov, Peter) + Support for the SQL/XML standard, including a operators and a + new <type>XML</type> builtin (Nikolay Samokhvalov, Peter) + </para> + </listitem> + + <listitem> + <para> + Enumerated (<type>ENUM</>) data type support (Tom Dunstan) </para> <para> - There is now an <type>xml</> data type and standard operations - on it. + This is accomplished by creating a new data type with an + <literal>ENUM</> clause, e.g. + <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>. </para> </listitem> <listitem> <para> - Support enum data types - (Tom Dunstan) + Universally Unique Identifier (<type>UUID</>) data type, similar + to that defined by RFC 4122 (Gevik Babakhani, Neil) </para> </listitem> <listitem> <para> - Add a <type>uuid</type> data type similar to that defined in RFC - 4122 (Gevik Babakhani, Neil) + Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain) </para> - </listitem> - <listitem> <para> - Widen the <type>money</type> data type to 64 bits (D'Arcy Cain) + This greatly increases the range of supported <type>MONEY</> + values. </para> </listitem> @@ -1707,9 +1358,9 @@ do it for earlier branch release files. </para> <para> - These functions provide access to the capture groups resulting from - a POSIX regular expression match, and provide the ability to split a - string on a POSIX regular expression. + These functions provide access to the regex groups, + <literal>\(.*\)</> , and allows splitting a string on a POSIX + regular expression. </para> </listitem> @@ -1729,14 +1380,18 @@ do it for earlier branch release files. <listitem> <para> - Add a function <function>pg_stat_clear_snapshot()</function> that - discards any statistics snapshot already collected in the current - transaction (Tom) + Add <function>pg_stat_clear_snapshot()</function> to discard + statistics snapshots collected during the current transaction + (Tom) </para> <para> - This allows PL/PgSQL functions to watch for stats updates even - though they are confined to a single transaction. + The first request for statistics in a transaction takes a + statistics snapshot that doesn't change during the transaction. + This function allows the snapshot to be discarded and a new + snapshot loaded during the next statistics query. This is + particularly useful for PL/PgSQL functions which are confined to + a single transaction. </para> </listitem> @@ -1747,28 +1402,25 @@ do it for earlier branch release files. </para> <para> - This is day of the week, with Sunday = 7. - </para> - </listitem> - - <listitem> - <para> - Add ID (ISO day of week) and IDDD (ISO day of year) format types for - to_char(), to_date() and to_timestamp() (Brendan Jurd) + This is the day of the week, with Sunday as seven. + (<literal>dow</> returns Sunday as zero.) </para> </listitem> <listitem> <para> - Check for overflow when converting far-future date values to - timestamp (Tom) + Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO + day of year) format types for <function>to_char()</>, + <function>to_date()</> and <function>to_timestamp()</> (Brendan + Jurd) </para> </listitem> <listitem> <para> - Make <function>to_timestamp()</> and <function>to_date()</> assume - <quote>TM</quote> for potentially variable-width fields (Bruce) + Make <function>to_timestamp()</> and <function>to_date()</> + assume <quote>TM</quote> (trim) for potentially variable-width + fields (Bruce) </para> <para> @@ -1785,13 +1437,14 @@ do it for earlier branch release files. <listitem> <para> - Fix <type>float4</type>/<type>float8</type> to handle Infinity and - Nan consistently (Bruce) + Fix <type>float4</type>/<type>float8</type> to handle + <literal>Infinity</> and <literal>NAN</> (not a number) + consistently (Bruce) </para> <para> - The code formerly was not consistent about distinguishing Infinity - symbols from overflow conditions. + The code formerly was not consistent about distinguishing + <literal>Infinity</> from overflow conditions. </para> </listitem> @@ -1804,61 +1457,57 @@ do it for earlier branch release files. <listitem> <para> - Add a hash function for <type>numeric</type> (Neil) + Add a hash function for <type>NUMERIC</type> (Neil) </para> <para> This allows hash indexes and hash-based plans to be used with - the <type>numeric</type> datatype. + <type>NUMERIC</type>. </para> </listitem> <listitem> <para> Improve efficiency of - <literal>LIKE</literal>/<literal>ILIKE</literal> code, especially - for multi-byte charsets, and most especially for UTF8 (Andrew, - Itagaki Takahiro) + <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for + multi-byte character sets like UTF8 (Andrew, Itagaki Takahiro) </para> </listitem> <listitem> <para> - Allow leading and trailing whitespace in the input to the - <type>boolean</type> type (Neil) + Allow leading and trailing whitespace for <type>BOOLEAN</type> + values (Neil) </para> </listitem> <listitem> <para> - Add additional checks for invalidly-encoded data (Andrew) + More checks for invalidly-encoded data (Andrew) </para> <para> - This change plugs some holes that formerly existed in SQL literal - backslash escape processing and <command>COPY</command> escape - processing: the de-escaped string is rechecked if it might have - resulted in creating invalid multi-byte characters. + This change plugs some holes that existed in literal backslash + escape string processing and <command>COPY</command> escape + processing. Now the de-escaped string is rechecked to see if the + result created an invalid multi-byte character. </para> </listitem> <listitem> <para> Ensure that <function>chr()</function> cannot create invalidly - encoded text (Andrew) + encoded values (Andrew) </para> <para> - In UTF8-encoded databases the argument is treated as a Unicode code - point. In other multi-byte encodings the argument must designate a - 7-bit ASCII character, or an error is raised, as is also the case if - the argument is 0. - </para> + In UTF8-encoded databases the argument is processed as a Unicode + code point. In other multi-byte encodings the argument must + designate a 7-bit ASCII character, or an error is raised. Zero + also causes an error. <function>ascii()</function> has been + adjusted as well to match this behavior. - <para> - <function>ascii()</function> has been adjusted so that it remains - the inverse of <function>chr()</function>. - </para> + </para> </listitem> <listitem> @@ -1868,34 +1517,34 @@ do it for earlier branch release files. </para> <para> - The two argument form of <function>convert()</function> is gone, and - the three argument form now takes a <type>bytea</type> first - argument and returns a <type>bytea</type>. To cover this loss three - new functions are introduced: + The two argument form of <function>convert()</function> has been + removed. The three argument form now takes a <type>BYTEA</type> + first argument and returns a <type>BYTEA</type>. To cover this + loss three new functions are introduced: </para> <itemizedlist> <listitem> <para> - <function>convert_from(bytea, name)</function> returning - <type>text</> — converts the first argument from the named + <function>convert_from(bytea, name)</function> returns + <type>TEXT</> — converts the first argument from the named encoding to the database encoding. </para> </listitem> <listitem> <para> - <function>convert_to(text, name)</function> returning <type>bytea</> - — converts the first argument from the database encoding to - the named encoding. + <function>convert_to(text, name)</function> returns + <type>BYTEA</> — converts the first argument from the + database encoding to the named encoding. </para> </listitem> <listitem> <para> - <function>length(bytea, name)</function> returning <type>int</> - — gives the length of the first argument in characters in the - named encoding. + <function>length(bytea, name)</function> returns + <type>INTEGER</> — gives the length of the first + argument in characters in the named encoding. </para> </listitem> </itemizedlist> @@ -1903,32 +1552,28 @@ do it for earlier branch release files. <listitem> <para> - Remove <literal>CONVERT(argument USING conversion_name)</literal> + Remove <literal>convert(argument USING conversion_name)</literal> (Andrew) </para> <para> - Although this syntax is required by the SQL standard, it's not clear - what the standard expects it to do, except that it's most likely not - what we were doing. The former behavior was an encoding security - hole, too. + Its behavior did not match the SQL standard and could not be + implemented in this release. </para> </listitem> <listitem> <para> - Put some security restrictions on the dbsize functions (Tom) + Restrict object size functions to users who have reasonable + permissions to view such information (Tom) </para> <para> - Restrict <function>pg_database_size()</function> to users who can - connect to the target database (note that <literal>CONNECT</literal> - privilege is granted by default, so this does not change the default - behavior). Restrict <function>pg_tablespace_size()</function> to - users who have <literal>CREATE</literal> privilege on the tablespace - (which is <emphasis>not</emphasis> granted by default), except when - the tablespace is the default tablespace for the current database - (since we treat that as implicitly allowing use of the tablespace). + For example, <function>pg_database_size()</function> now + requires <literal>CONNECT</> permission, which is granted to + everyone by default. <function>pg_tablespace_size()</function> + requires <literal>CREATE</> permission in the tablespace, or the + tablespace is the default tablespace for the database. </para> </listitem> @@ -1949,14 +1594,14 @@ do it for earlier branch release files. <listitem> <para> - Support scrollable cursors (ie, add a direction clause in - <command>FETCH</command>) in PL/PgSQL (Pavel Stehule) + Add scrollable cursor support by adding directional control to + PL/PgSQL's <command>FETCH</command> (Pavel Stehule) </para> </listitem> <listitem> <para> - Add support for <literal>IN</literal> as alternative to + Add support for <literal>IN</literal> as an alternative to <literal>FROM</literal> in PL/PgSQL's <command>FETCH</command> statement, for consistency with the backend's <command>FETCH</command> command (Pavel Stehule) @@ -1965,42 +1610,53 @@ do it for earlier branch release files. <listitem> <para> - Support <command>MOVE</command> in PL/PgSQL (Magnus, Pavel Stehule, + Add <command>MOVE</command> to PL/PgSQL (Magnus, Pavel Stehule, Neil) </para> </listitem> <listitem> <para> - Implement <command>RETURN QUERY</command> for PL/PgSQL (Pavel Stehule, Neil) + Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil) </para> <para> - This provides some convenient syntax sugar for PL/PgSQL - set-returning functions that want to return the result of evaluating - a query; it should also be more efficient than repeated - <command>RETURN NEXT</command> statements. + This adds convenient syntax for PL/PgSQL set-returning functions + that want to return the result of a query, rather than using + <command>RETURN NEXT</command>. <command>RETURN QUERY</command> + is more efficient too. </para> </listitem> <listitem> <para> - Allow PL/PgSQL function parameter names to be qualified with the - function's name (Tom) + Allow function parameter names to be qualified with the + function's name(Tom) + </para> + + <para> + For example, <literal>myfunc.myvar</>. This is particularly + useful for specifying variables in a query where the variable + name might match a column name. </para> </listitem> <listitem> <para> - Reject zero or negative <literal>BY</literal> step in plpgsql - integer <literal>FOR</literal>-loops, and behave sanely if the loop - value overflows <type>int32</type> on the way to the end value (Tom) + Tighten requirements for <literal>FOR</literal> loop + <literal>STEP</> values (Tom) + </para> + + <para> + Prevent non-positive <literal>STEP</> values, and handle + loop overflows. </para> + </listitem> <listitem> <para> - Improve accuracy of error locations in PL/PgSQL syntax errors (Tom) + Improve accuracy when reporting syntax error locations (Tom) </para> </listitem> @@ -2015,7 +1671,7 @@ do it for earlier branch release files. <listitem> <para> Allow type-name arguments to <function>spi_prepare()</function> to - be standard type aliases as well as the names given in + be data type aliases in addition to names in <literal>pg_type</literal> (Andrew) </para> </listitem> @@ -2037,15 +1693,15 @@ do it for earlier branch release files. <listitem> <para> Allow type-name arguments to <function>plpy.prepare()</function> to - be standard type aliases as well as the names given in + be data type aliases in addition to names in <literal>pg_type</literal> (Andrew) </para> </listitem> <listitem> <para> - Support true boolean type in Python versions that have it, i.e., - version 2.3 and later (Marko Kreen) + Support a true boolean type in compatible Python versions + (Python 2.3 and later) (Marko Kreen) </para> </listitem> @@ -2059,16 +1715,17 @@ do it for earlier branch release files. <listitem> <para> - Allow type-name arguments to <function>spi_prepare</> to be standard - type aliases as well as the names given in <literal>pg_type</> - (Andrew) + Allow type-name arguments to <function>spi_prepare</> to + be data type aliases in addition to names in + <literal>pg_type</literal> (Andrew) </para> </listitem> <listitem> <para> - Fix problems with thread-enabled libtcl spawning multiple threads - within the backend (Steve Marshall, Paul Bayer, Doug Knight) + Fix problems with thread-enabled <filename>libtcl</> spawning + multiple threads within the backend (Steve Marshall, Paul Bayer, + Doug Knight) </para> <para> @@ -2093,13 +1750,6 @@ do it for earlier branch release files. <listitem> <para> - Identify schema of inherited table in <literal>\d</literal> output - (Bernd Helmle) - </para> - </listitem> - - <listitem> - <para> Show aggregate return types in <literal>\da</literal> output (Greg Sabino Mullane) </para> @@ -2115,60 +1765,46 @@ do it for earlier branch release files. <listitem> <para> In <literal>\d</literal> patterns, always match <literal>$</literal> - literally, whether quoted or not (Tom) - </para> - - <para> - Since we allow <literal>$</literal> as a character within - identifiers, this behavior is useful, whereas the previous behavior - of treating it as the regexp ending anchor was nearly useless given - that the pattern is automatically anchored anyway. + literally (Tom) </para> </listitem> <listitem> <para> - Add <literal>\prompt</literal> command (Chad Wagner) - </para> - - <para> - This lets a <application>psql</application> script prompt the user for input. + Add <literal>\prompt</literal> capability (Chad Wagner) </para> </listitem> <listitem> <para> - Allow <literal>\pset</literal>, <literal>\t</literal> and - <literal>\x</literal> to use boolean constants on/off, rather than - always toggling (Chad Wagner) + Allow <literal>\pset</literal>, <literal>\t</literal>, and + <literal>\x</literal> to use <literal>on</>/<literal>off</>, + rather than just toggling (Chad Wagner) </para> </listitem> <listitem> <para> - Add <literal>\sleep</> command to allow delays in - <application>psql</application> scripts (Jan) + Add <literal>\sleep</> capability (Jan) </para> </listitem> <listitem> <para> - Enable <literal>\timing</> output for <literal>\copy</> commands - (Andrew) + Enable <literal>\timing</> output for <literal>\copy</> (Andrew) </para> </listitem> <listitem> <para> - Allow <literal>\timing</literal> to have better resolution than - ~15ms on Windows (Itagaki Takahiro) + Improve <literal>\timing</literal> resolution on Windows + (Itagaki Takahiro) </para> </listitem> <listitem> <para> - Flush the <literal>\o</> file, if any, after each backslash command - (Tom) + Flush <literal>\o</> output after each backslash command (Tom) </para> </listitem> @@ -2182,53 +1818,41 @@ do it for earlier branch release files. <listitem> <para> - Add --tablespaces-only and --roles-only options to - <application>pg_dumpall</application> (Dave Page) + Add <literal>--tablespaces-only</> and <literal>--roles-only</> + options to <application>pg_dumpall</application> (Dave Page) </para> </listitem> <listitem> <para> - Add output-file option for <application>pg_dumpall</application> - (Dave Page) + Add an output file option to + <application>pg_dumpall</application> (Dave Page) </para> <para> This is primarily useful on Windows, where output redirection of - child <application>pg_dump</application> processes doesn't work. + child <application>pg_dump</application> processes does not work. </para> </listitem> <listitem> <para> - Allow pg_dumpall to accept an initial-connection database name - rather than the default <literal>template1</literal> (Dave Page) + Allow <application>pg_dumpall</> to accept an initial-connection + database name rather than the default + <literal>template1</literal> (Dave Page) </para> </listitem> <listitem> <para> - In -n and -t switches, always match <literal>$</literal> literally, - whether quoted or not (Tom) - </para> - - <para> - Since we allow <literal>$</literal> as a character within - identifiers, this behavior is useful, whereas the previous behavior - of treating it as the regexp ending anchor was nearly useless given - that the pattern is automatically anchored anyway. + In <literal>-n</> and <literal>-t</> switches, always match + <literal>$</literal> literally (Tom) </para> </listitem> <listitem> <para> - Replace linear searches with binary searches in pg_dump's code to - lookup objects by OID (Tom) - </para> - - <para> - This can improve speed materially in databases with thousands of - objects of the same kind (for instances, thousands of functions). + Improve performance when a database has many thousands of objects (Tom) </para> </listitem> @@ -2242,38 +1866,38 @@ do it for earlier branch release files. <listitem> <para> - Allow a nondefault <filename>pg_xlog</filename> directory location - to be specified to initdb (Euler Taveira de Oliveira) + In <application>initdb</>, allow the location of the + <filename>pg_xlog</filename> directory location to be specified + (Euler Taveira de Oliveira) </para> </listitem> <listitem> <para> - Call setrlimit if possible in pg_regress to allow core file - generation, and provide a switch for similar behavior in pg_ctl - (Andrew) + Enable core dump generation in <application>pg_regress</> and + <application>pg_ctl</>, if possible (Andrew) </para> </listitem> <listitem> <para> - Add cancel handlers so it's possible to Ctrl-C clusterdb, reindexdb - and vacuumdb (Itagaki Takahiro, Magnus) + Allow Control-C to cancel <application>clusterdb</>, + <application>reindexdb</>, and <application>vacuumdb</> (Itagaki + Takahiro, Magnus) </para> </listitem> <listitem> <para> - Remove gratuitous response messages from utility programs (Peter) + Suppress command tag output for <application>createdb</>, + <application>createuser</>, <application>dropdb</>, + <application>dropuser</> (Peter) </para> <para> - The --quiet option is now obsolete and without effect in createdb, - createuser, dropdb, dropuser; kept for compatibility but marked for - removal in 8.4. - + The <literal>--quiet</> option is ignored and will be removed in 8.4. Progress messages when acting on all databases now go to stdout - instead of stderr, since they are not in fact errors. + instead of stderr because they are not actually errors. </para> </listitem> @@ -2287,46 +1911,47 @@ do it for earlier branch release files. <listitem> <para> - Interpret the dbName parameter of PQsetdbLogin as a conninfo string - if it contains an = sign (Andrew) + Interpret the <literal>dbName</> parameter of + <function>PQsetdbLogin()</> as a <literal>conninfo</> string if + it contains an equals sign (Andrew) </para> <para> - This allows use of all the options of conninfo strings through - client programs that still use PQsetdbLogin. + This allows use of <literal>conninfo</> strings in client + programs that still use <literal>PQsetdbLogin()</>. </para> </listitem> <listitem> <para> - Support a global SSL configuration file (Victor Wagner) + Support a global <acronym>SSL</> configuration file (Victor + Wagner) </para> </listitem> <listitem> <para> - Add libpq environment variable PGSSLKEY to control SSL hardware keys - (Victor Wagner) + Add environment variable <varname>PGSSLKEY</> to control + <acronym>SSL</> hardware keys (Victor Wagner) </para> </listitem> <listitem> <para> - Add <function>lo_truncate()</function> function for large object + Add <function>lo_truncate()</function> for large object truncation (Kris Jurka) </para> </listitem> <listitem> <para> - Provide <function>PQconnectionUsedPassword()</function> function - that returns true if the server demanded a password during - authentication (Joe Conway) + Add <function>PQconnectionUsedPassword()</function> that returns + true if the server required a password (Joe Conway) </para> <para> - If this is true after a failed connection, and the user did not give - a password, clients may choose to prompt for a password and retry. + If this returns true and the connection failed a client + application should prompt the user for a password. </para> </listitem> @@ -2344,8 +1969,7 @@ do it for earlier branch release files. </para> <para> - Among other things, prepared statements can now be prepared on the - server side. + This adds server-side prepared statements. </para> </listitem> @@ -2363,8 +1987,8 @@ do it for earlier branch release files. <listitem> <para> - Prevent ecpg libraries from exporting any symbols other than - their intended API (Michael) + Have ecpg libraries exporting only API symbols (Michael) + Win32 only? XXX </para> </listitem> @@ -2381,23 +2005,16 @@ do it for earlier branch release files. Support building the entire Postgres system with Visual C++ (Magnus and others) </para> - </listitem> - <listitem> <para> - Remove old-style client-only Visual C++ build infrastructure for - everything except libpq (Magnus) + The client-only C++ build scripts have been removed. </para> </listitem> <listitem> <para> - Allow regression tests to be started by an admin user (Magnus) - </para> - - <para> - This uses the same privilege-dropping method that's used by pg_ctl - and initdb. + Allow regression tests to be started by an <literal>admin</> + user (Magnus) </para> </listitem> @@ -2405,11 +2022,6 @@ do it for earlier branch release files. <para> Native shared memory implementation for Windows (Magnus) </para> - - <para> - Same underlying tech as before, but removes the useless SysV - emulation layer. - </para> </listitem> </itemizedlist> @@ -2422,131 +2034,110 @@ do it for earlier branch release files. <listitem> <para> - Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x, - len) (Greg Stark, Tom) + New C macros for handling variable-length data values (Greg + Stark, Tom) </para> <para> - Third-party C code that manipulates varlena datums <emphasis>must</emphasis> convert to - this convention, since the varvarlena patch changes the - representation of length words on some architectures. Also, it - may be necessary to <quote>detoast</quote> input varlena datums in cases where - no toasting could have happened before. + The new <function>SET_VARSIZE()</> macro <emphasis>must</> be + used to set the length of generated values. Also, it might be + necessary to expand (<quote>de-TOAST</quote>) input values in + additional places. </para> </listitem> <listitem> <para> - Rename DLLIMPORT macro to PGDLLIMPORT to avoid conflict with third - party includes (like tcl) that define DLLIMPORT (Magnus) + Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to + avoid conflicting with third party includes (like TCL) that + define DLLIMPORT (Magnus) </para> </listitem> <listitem> <para> - Remove the prohibition on executing cursor commands through + Allow execution of cursor commands through <function>SPI_execute</function> (Tom) </para> <para> - The macro definition of SPI_ERROR_CURSOR still exists, so as not to - needlessly break any SPI callers that are checking for it, but that - code will never actually be returned anymore. + The macro <literal>SPI_ERROR_CURSOR</> still exists but will + never be returned. </para> </listitem> <listitem> <para> - Clean up SPI's API a little bit by declaring SPI plan pointers as - <literal>SPIPlanPtr</> instead of <literal>void *</> (Tom) + SPI plan pointers are now <literal>SPIPlanPtr</> instead of + <literal>void *</> (Tom) </para> <para> - This does not break any existing code, but switching is recommended - to help catch simple programming mistakes. + This does not break application code, but switching is + recommended to help catch simple programming mistakes. </para> </listitem> <listitem> <para> - Expose more cursor-related functionality in SPI (Pavel Stehule) - </para> - - <para> - Allow access to the planner's cursor-related planning options, and - provide new FETCH/MOVE routines that allow access to the full power - of those commands. + Add cursor-related functionality in SPI (Pavel Stehule) </para> - </listitem> - <listitem> <para> - Add configure --enable-profiling switch to enable code profiling - (works with gcc only, for now) (Korry Douglas and Nikhil S) + Allow access to the cursor-related planning options, and add + <command>FETCH</>/<command>MOVE</> routines. </para> </listitem> <listitem> <para> - Add configure option --with-system-tzdata to use operating system - time zone database (Peter) + Add <application>configure</> <literal>--enable-profiling</> + to enable code profiling (works only with <application>gcc</>) + (Korry Douglas and Nikhil S) </para> </listitem> <listitem> <para> - Support <literal>gmake draft</literal> in doc/src/sgml/Makefile (Bruce) + Add <application>configure</> <literal>--with-system-tzdata</> + to use the operating system time zone database (Peter) </para> </listitem> <listitem> <para> - Allow GIN's extractQuery method to signal that nothing can satisfy - the query (Teodor) - </para> - - <para> - This changes prototype of extractQuery method to use int32* instead - of uint32* for nentries argument. A -1 result means that no search - is needed. + Create <quote>operator families</quote> improve planning of + queries involving cross-data-type comparisons (Tom) </para> </listitem> <listitem> <para> - Move NAMEDATALEN definition from postgres_ext.h to - pg_config_manual.h (Peter) - </para> - - <para> - It used to be part of libpq's exported interface many releases ago, - but now it's no longer necessary to make it accessible to clients. - We may eventually make it configurable via a configure switch, but - we should first flush out any client-side code that thinks it needs - to know the value. + Support <command>gmake draft</command> when building the + <acronym>SGML</> documentation (Bruce) </para> </listitem> <listitem> <para> - Get rid of client-code dependencies on the exact text of the - no-password error message, by using - <function>PQconnectionUsedPassword()</function> instead (Tom) + Update GIN <function>extractQuery()</> API to allow signalling + that nothing can satisfy the query (Teodor) </para> </listitem> <listitem> <para> - Rename MaxTupleSize to MaxHeapTupleSize to clarify that it's not - meant to describe the maximum size of index tuples (Tom) + Move <literal>NAMEDATALEN</> definition from + <filename>postgres_ext.h</> to <filename>pg_config_manual.h</> + (Peter) </para> </listitem> <listitem> <para> - Remove the xlog-centric <quote>database system is ready</quote> - message and replace it with <quote>database system is ready to - accept connections</quote> + Change server startup log message from <quote>database system is + ready</quote> to <quote>database system is ready to accept + connections</quote> </para> </listitem> @@ -2561,113 +2152,15 @@ do it for earlier branch release files. <listitem> <para> - Improve smgr/md API (Tom) - </para> - - <para> - This improves error detection and reporting, both for external - problems and for coding errors inside the backend. Notably, - disallow <function>mdread()</function> beyond EOF, and enforce that - <function>mdwrite()</function> is to be used for rewriting existing - blocks while <function>mdextend()</function> is to be used for - extending the relation EOF. - </para> - </listitem> - - <listitem> - <para> - Restructure planner-to-executor API (Tom) - </para> - - <para> - Notably, the executor no longer sees the Query structure at all, but - gets a new node type called PlannedStmt that is more suitable as - executor input. This allows us to stop storing mostly-redundant - Query trees in prepared statements, portals, etc. Also, the - rangetable used by the executor is now a flat list with no - unnecessary substructure — this simplifies many things. - </para> - </listitem> - - <listitem> - <para> - Preserve typmod information in Const, Param, ArrayRef, ArrayExpr, - and EXPR and ARRAY SubLink nodes (Tom) - </para> - - <para> - This seems like a good idea in view of the expected increase in - typmod usage from Teodor's work to allow user-defined types to have - typmods. - </para> - </listitem> - - <listitem> - <para> - Remove advertising clause from Berkeley BSD-licensed files, per - instructions from Berkeley (Bruce) - </para> - </listitem> - - <listitem> - <para> - Replace 4-clause licensed blf.[ch] in contrib/pgcrypto with blowfish - implementation from PuTTY which is under minimal BSD/MIT license - (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Decouple the values of TOAST_TUPLE_THRESHOLD and - TOAST_MAX_CHUNK_SIZE, and adjust them to avoid wasting two bytes per - toast chunk (Tom) - </para> - - <para> - This forces initdb because the value of TOAST_MAX_CHUNK_SIZE - determines the content of toast tables. Add TOAST_MAX_CHUNK_SIZE to - the values checked in pg_control, since it can't be changed without - invalidating toast table content. - </para> - - <note> - <para> - While TOAST_TUPLE_THRESHOLD can now be changed without initdb, some - thought still needs to be given to needs_toast_table() in - toasting.c before unleashing random changes. - </para> - </note> - </listitem> - - <listitem> - <para> Fix pgstats counting of live and dead tuples to recognize that committed and aborted transactions have different effects (Tom) </para> - - <para> - This should result in noticeably more accurate tracking of - n_live_tuples and n_dead_tuples. - </para> - </listitem> - - <listitem> - <para> - Add a flag bit to WAL records that shows whether it is safe to - remove full-page images (Koichi Suzuki) - </para> - - <para> - This supports implementation of external WAL-compression filters - that remove such images. - </para> </listitem> <listitem> <para> Create hooks to let a loadable plugin monitor (or even replace) the - planner and/or create plans for hypothetical situations (Gurjeet + planner and create plans for hypothetical situations (Gurjeet Singh, Tom) </para> </listitem> @@ -2688,65 +2181,32 @@ do it for earlier branch release files. <listitem> <para> - Downgrade some boring startup messages to <literal>DEBUG1</literal> - (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix several hash functions that were taking chintzy shortcuts - instead of delivering a well-randomized hash value (Tom) - </para> - </listitem> - - <listitem> - <para> - Redefine IsTransactionState() to only return true for - TRANS_INPROGRESS state (Tom) - </para> - </listitem> - - <listitem> - <para> - Arrange for <function>quote_identifier()</function> and - <application>pg_dump</application> to not quote keywords that are + Have <function>quote_identifier()</function> and + <application>pg_dump</application> not quote keywords that are unreserved according to the grammar (Tom) </para> - - <para> - Should this be flagged as a potential incompatibility? - </para> - </listitem> - - <listitem> - <para> - Fix PGXS conventions so that extensions can be built against - Postgres installations whose pg_config program does not appear first - in the PATH (Tom) - </para> </listitem> <listitem> <para> - Adjust the output of <function>MemoryContextStats()</function> so - that the line for a child memory context is indented two spaces to - the right of its parent context (Neil) + Fix <acronym>PGXS</> so extensions can be built against Postgres + installations whose <application>pg_config</> program does not + appear first in the <varname>PATH</> (Tom) </para> </listitem> <listitem> <para> - Change the on-disk representation of the <type>numeric</type> - datatype so that the sign_dscale word comes before the weight - instead of after (Tom) + Change the on-disk representation of the <type>NUMERIC</type> + data type so that the <structfield>sign_dscale</> word comes + before the weight (Tom) </para> </listitem> <listitem> <para> - Use SYSV semaphores rather than POSIX on Darwin >= 6.0, i.e., OS X - 10.2 and up (Chris Marcellino) + Use <acronym>SYSV</> semaphores rather than POSIX on Darwin + >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino) </para> </listitem> @@ -2775,51 +2235,52 @@ do it for earlier branch release files. <listitem> <para> Add <filename>/contrib/uuid-ossp</filename> module for generating - UUID values using the OSSP UUID library (Peter) + <type>UUID</> values using the OSSP UUID library (Peter) </para> <para> - Use configure option <literal>--with-ossp-uuid</literal> to - activate. This takes advantage of the new <type>uuid</type> builtin - type. + Use <application>configure</> + <literal>--with-ossp-uuid</literal> to activate. This takes + advantage of the new <type>UUID</type> builtin type. </para> </listitem> <listitem> <para> - Add pgbench option to set fillfactor (Pavan Deolasee) + Allow <application>pgbench</> to set the fillfactor (Pavan Deolasee) </para> </listitem> <listitem> <para> - Enhance pgbench -l option to add timestamp (Greg Smith) + Add timestamps to <application>pgbench</> <literal>-l</> (Greg + Smith) </para> </listitem> <listitem> <para> - Add usage count statistics to the information available from + Add usage count statistics to <filename>contrib/pgbuffercache</filename> (Greg Smith) </para> </listitem> <listitem> <para> - Add GIN support for hstore (Teodor) + Add GIN support for <filename>hstore</> (Teodor) </para> </listitem> <listitem> <para> - Add GIN support for pg_trgm (Guillaume Smet, Teodor) + Add GIN support for <filename>pg_trgm</> (Guillaume Smet, Teodor) </para> </listitem> <listitem> <para> - Update <filename>/contrib/start-scripts</filename> OS/X startup - files, and move to a separate OS/X directory (Mark Cotner, David + Update OS/X startup scripts in + <filename>/contrib/start-scripts</filename> (Mark Cotner, David Fetter) </para> </listitem> |