diff options
-rw-r--r-- | doc/src/sgml/release.sgml | 2252 |
1 files changed, 2251 insertions, 1 deletions
diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index e287770a602..e0573ae4599 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.508 2007/09/24 03:12:23 tgl Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.509 2007/10/03 03:32:31 tgl Exp $ --> <!-- Typical markup: @@ -35,6 +35,2256 @@ do it for earlier branch release files. <appendix id="release"> <title>Release Notes</title> + <sect1 id="release-8-3"> + <title>Release 8.3</title> + + <note> + <title>Release date</title> + <simpara>2007-??-??</simpara> + </note> + + <sect2> + <title>Overview</title> + + <para> + This release adds many functionality and performance improvements that + were requested by users, including: + + <itemizedlist> + + <listitem> + <para> + ... to be filled in ... + </para> + </listitem> + + </itemizedlist> + + </para> + + </sect2> + + <sect2> + <title>Migration to version 8.3</title> + + <para> + A dump/restore using <application>pg_dump</application> is + required for those wishing to migrate data from any previous + release. + </para> + + <para> + Observe the following incompatibilities: + </para> + + <itemizedlist> + + <listitem> + <para> + ... to be filled in ... + </para> + </listitem> + + </itemizedlist> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + Below you will find a detailed account of the + changes between <productname>PostgreSQL</productname> 8.3 and + the previous major release. + </para> + + <sect3> + <title>Performance Improvements</title> + <itemizedlist> + + <listitem> + <para> + Implement an optional asynchronous commit mode (Simon) + </para> + + <para> + When synchronous_commit is off, we don't flush WAL before reporting + a transaction committed. Data consistency is still guaranteed + (unlike turning fsync 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 "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. + </para> + </listitem> + + <listitem> + <para> + Heap-Only Tuples (Pavan Deolasee, with ideas from many others) + </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 "prune" dead tuples on a per-page basis, without having + to do a complete VACUUM pass to recover space. VACUUM is still + needed to clean up dead index entries, however. + </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 "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. + </para> + </listitem> + + <listitem> + <para> + Reduce contention for the ProcArrayLock (Florian Pflug, Heikki) + </para> + </listitem> + + <listitem> + <para> + Just-in-time background writing strategy (Greg Smith, Itagaki + Takahiro) + </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. + </para> + </listitem> + + <listitem> + <para> + Support varlena fields with single-byte headers and unaligned + storage (Greg Stark) + </para> + + <para> + This change allows a significant percentage reduction in the on-disk + size of short character-string fields. + </para> + </listitem> + + <listitem> + <para> + Combine cmin and cmax fields of HeapTupleHeaders into a single field + (Heikki) + </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. + </para> + </listitem> + + <listitem> + <para> + Implement "top N" sorting in ORDER BY ... LIMIT queries (Greg Stark) + </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. + </para> + </listitem> + + <listitem> + <para> + Skip writing WAL in CLUSTER and COPY 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 pg_control at every WAL segment switch (Simon) + </para> + </listitem> + + <listitem> + <para> + Reduce WAL output size for page splits in btree indexes (Heikki) + </para> + </listitem> + + <listitem> + <para> + Improve hash join for cases with many input NULLs (Tom) + </para> + </listitem> + + <listitem> + <para> + Avoid computing X^2 at each row in avg(bigint) and avg(numeric) + (Mark Kirkwood) + </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> + Improve interlocking between checkpoint start and transaction commit + (Heikki) + </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. + </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. + </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> + Improve performance of mergejoin with a large sort operation as + inner input (Greg Stark) + </para> + + <para> + This change uses a Materialize node between the mergejoin and the + sort to prevent the sort from having to "back up", which allows a + more efficient sort. + </para> + </listitem> + + <listitem> + <para> + Make large sequential scans and VACUUMs work in a limited-size + "ring" of buffers (Simon, Heikki, Tom) + </para> + + <para> + Aside from avoiding cache spoliation, this fixes the problem that + VACUUM 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 "wraps around" to + cover all blocks; this may affect the order in which rows are + returned. + </para> + </listitem> + + <listitem> + <para> + Create a dedicated "wal writer" process to offload 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> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Server Changes</title> + <itemizedlist> + + <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. + </para> + </listitem> + + <listitem> + <para> + Support multiple concurrent autovacuum processes (Alvaro, Itagaki + Takahiro) + </para> + </listitem> + + <listitem> + <para> + Set the default autovacuum vacuum_cost_delay value to 20ms, and + reduce the default autovacuum vacuum and analyze threshold values to + 50 tuples (Alvaro) + </para> + </listitem> + + <listitem> + <para> + Make autovacuum report the start time of its current activity in + pg_stat_activity (Tom) + </para> + </listitem> + + <listitem> + <para> + Provide for logfiles in machine readable CSV format (Arul Shaji, + Greg Smith, Andrew Dunstan) + </para> + + <para> + In consequence, rename redirect_stderr to logging_collector. + </para> + </listitem> + + <listitem> + <para> + Add log_autovacuum_min_duration parameter to support configurable + logging of autovacuum actions (Simon, Alvaro) + </para> + </listitem> + + <listitem> + <para> + Add log_lock_waits parameter to log long wait times (Simon) + </para> + </listitem> + + <listitem> + <para> + Add log_temp_files parameter to log usage of temporary files (Bill + Moran) + </para> + </listitem> + + <listitem> + <para> + Add log_checkpoints parameter to improve logging of checkpoints + (Greg Smith, Heikki) + </para> + </listitem> + + <listitem> + <para> + Use our own timezone support for formatting timestamps displayed in + the server log (Tom) + </para> + + <para> + This avoids Windows-specific problems with localized time zone names + that are in the wrong encoding. There is a new log_timezone + parameter that controls the timezone used in log messages, + separately from the client-visible timezone parameter. + </para> + </listitem> + + <listitem> + <para> + %s and %c escapes in log_line_prefix can now be used in all + processes (Andrew) + </para> + </listitem> + + <listitem> + <para> + Support a global SSL configuration file (Victor Wagner) + </para> + + <para> + Add ssl_ciphers parameter to control allowed ciphers (Victor Wagner) + </para> + </listitem> + + <listitem> + <para> + Invalidate and rebuild cached plans whenever there is a schema + change or statistics update to referenced relations (Tom) + </para> + + <para> + Aside from improving performance (for example, by being able to make + use of newly-added indexes), this finally fixes the ancient gotcha + that you can't drop and recreate a temp table that's used by a + PL/PgSQL function, unless you use EXECUTE for all references to it. + </para> + </listitem> + + <listitem> + <para> + Split the archive_command parameter into separate archive_mode and + archive_command parameters (Simon) + </para> + + <para> + This avoids some problems that occur if the user wishes to stop + archiving temporarily. + </para> + </listitem> + + <listitem> + <para> + Add a %r option in recovery.conf to provide last restartpoint to + recovery_command (Simon) + </para> + </listitem> + + <listitem> + <para> + Add log_restartpoints recovery option to emit LOG message at each + restartpoint (Simon) + </para> + </listitem> + + <listitem> + <para> + Last transaction end time is now logged at end of recovery and at + each logged restartpoint (Simon) + </para> + </listitem> + + <listitem> + <para> + New system view pg_stat_bgwriter displays statistics about the + background writer process's performance (Magnus) + </para> + </listitem> + + <listitem> + <para> + Add new columns for database-wide tuple statistics to + pg_stat_database (Magnus) + </para> + </listitem> + + <listitem> + <para> + Add an xact_start column to pg_stat_activity (Neil) + </para> + + <para> + This makes it easier to identify long-running transactions. + </para> + </listitem> + + <listitem> + <para> + Add n_live_tuples and n_dead_tuples columns to pg_stat_all_tables + and related views (Glen Parker) + </para> + </listitem> + + <listitem> + <para> + Add new encoding EUC_JIS_2004 and SHIFT_JIS_2004, along with new + conversions among EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo) + </para> + </listitem> + + <listitem> + <para> + Make JOHAB encoding client-only (Tatsuo) + </para> + + <para> + It was found that JOHAB does not meet the assumptions needed to be + used safely as a server-side encoding. + </para> + </listitem> + + <listitem> + <para> + Make configuration parameters fall back to their default values when + they are removed from the configuration file (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. + </para> + </listitem> + + <listitem> + <para> + Change the timestamps recorded in transaction commit/abort xlog + 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. + </para> + </listitem> + + <listitem> + <para> + Limit the amount of information reported when a user is dropped + (Alvaro) + </para> + + <para> + Previously, dropping (or attempting to drop) a user who owned many + objects could result in extremely large NOTICE or ERROR messages + listing all these objects; this caused problems for some client + applications. The length of the list is now limited, although a + full list is still sent to the server log. + </para> + </listitem> + + <listitem> + <para> + Create a temp_tablespaces parameter to allow selection of the + tablespace(s) in which to store temp tables and temporary 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 + pgsql_tmp/ directories anymore, but per-tablespace directories. + </para> + </listitem> + + <listitem> + <para> + Arrange to put TOAST tables belonging to temporary tables into + special schemas named pg_toast_temp_nnn (Tom) + </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. + The scheme preserves the property that TOAST tables are not in any + schema that's normally in the search path, so they don't conflict + with user table names. + </para> + </listitem> + + <listitem> + <para> + Add support for GSSAPI authentication (Henry Hotz, Magnus) + </para> + </listitem> + + <listitem> + <para> + Support SSPI authentication on Windows (Magnus) + </para> + </listitem> + + <listitem> + <para> + Fix problem that a constant flow of new connection requests could + indefinitely delay the postmaster from completing a shutdown or + crash restart (Tom) + </para> + </listitem> + + <listitem> + <para> + Allow CREATE INDEX CONCURRENTLY to disregard transactions in other + databases (Simon) + </para> + </listitem> + + <listitem> + <para> + Remove stats_start_collector parameter (Tom) + </para> + + <para> + We now always start the collector process, unless prevented by a + problem with setting up the stats UDP socket. + </para> + </listitem> + + <listitem> + <para> + Remove stats_reset_on_server_start parameter (Tom) + </para> + + <para> + This seemed useless in view of the availability of pg_stat_reset(). + </para> + </listitem> + + <listitem> + <para> + Merge stats_block_level and stats_row_level parameters into a single + parameter track_counts, which controls all reports sent to the + collector process (Tom) + </para> + </listitem> + + <listitem> + <para> + Rename stats_command_string parameter to track_activities (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Query Changes</title> + <itemizedlist> + + <listitem> + <para> + Text search capability is now in core Postgres (Teodor, Oleg) + </para> + </listitem> + + <listitem> + <para> + Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS + FIRST/NULLS LAST per-column options for btree indexes (Tom, Teodor) + </para> + + <para> + Note incompatible change from prior behavior: ORDER BY ... USING + will now be rejected if the operator is not a less-than or + greater-than member of some btree opclass. This prevents + less-than-sane behavior if an operator that doesn't actually define + a proper sort ordering is selected. + </para> + </listitem> + + <listitem> + <para> + Support UPDATE/DELETE WHERE CURRENT OF cursor_name (Arul Shaji, Tom) + </para> + </listitem> + + <listitem> + <para> + Allow FOR UPDATE in cursors (Arul Shaji, Tom) + </para> + </listitem> + + <listitem> + <para> + Add support for cross-type hashing (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 smallint/integer/bigint, and also for + float4/float8. + </para> + </listitem> + + <listitem> + <para> + Make 'col IS NULL' clauses be btree-indexable conditions (Teodor) + </para> + </listitem> + + <listitem> + <para> + Downgrade implicit casts to text to be assignment-only, except for + the ones from the other string-category types (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. + </para> + </listitem> + + <listitem> + <para> + Create a general mechanism that supports casts to and from the + standard string types (text,varchar,bpchar) for *every* datatype, by + invoking the datatype's I/O functions (Tom) + </para> + + <para> + 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. + </para> + </listitem> + + <listitem> + <para> + Make ARRAY(SELECT ...) return an empty array, rather than a NULL, + when the sub-select returns zero rows (Tom) + </para> + </listitem> + + <listitem> + <para> + Fix some issues with user tables and views that are named similarly + to system catalogs (Tom) + </para> + </listitem> + + <listitem> + <para> + Remove the undocumented "not in" operator (!!=) (Tom) + </para> + + <para> + This operator was obsoleted long ago by IN (sub-SELECT) queries. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Planner Changes</title> + <itemizedlist> + + <listitem> + <para> + Improve handling of "equivalence classes" of variables that are + constrained to be equal within a query's 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> + Fix problems with selectivity estimation for partial indexes (Tom) + </para> + </listitem> + + <listitem> + <para> + Improve performance for planning large inheritance trees that are + mostly excluded by constraints (Tom) + </para> + </listitem> + + <listitem> + <para> + Fix cost estimates for EXISTS subqueries that are evaluated as + initPlans (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Object Manipulation Changes</title> + <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) + </para> + + <para> + This change also removes the hardwired convention that a type's + array type is named exactly "_type", instead using a new column + pg_type.typarray to provide the linkage. (It still will be named + "_type", though, except in odd corner cases such as maximum-length + type names or collisions with a pre-existing type named with a + leading underscore.) + </para> + </listitem> + + <listitem> + <para> + Support per-function GUC parameter settings (Tom) + </para> + + <para> + This provides a simple solution for functions that need local + settings for parameters; in particular, security definer functions + that must set search_path to avoid security loopholes. + </para> + </listitem> + + <listitem> + <para> + Add COST and ROWS options to CREATE/ALTER FUNCTION (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. + </para> + </listitem> + + <listitem> + <para> + Allow triggers and rules to be defined with different, per session + controllable, behaviors for replication purposes (Jan) + </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 session_replication_role. + + psql's \d command as well as pg_dump are extended in a backward + compatible fashion. + </para> + </listitem> + + <listitem> + <para> + Invent "operator families" to allow improved handling of + cross-data-type operators (Tom) + </para> + + <para> + This change allows significantly better planning of queries + involving cross-data-type comparisons. + </para> + </listitem> + + <listitem> + <para> + Support type modifiers for user-defined types (Teodor, Tom) + </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 "typmod" value + for storage. + </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 "=" 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 "foreign key constraint will require costly + sequential scans" is gone: if the comparison condition isn't + indexable then we'll reject the constraint entirely. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Utility Command Changes</title> + <itemizedlist> + + <listitem> + <para> + Support SET FROM CURRENT in CREATE/ALTER FUNCTION, ALTER DATABASE, + ALTER ROLE (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. + </para> + </listitem> + + <listitem> + <para> + Arrange for SET LOCAL'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) + </para> + + <para> + This is an INCOMPATIBLE CHANGE: in 8.0 through 8.2, SET LOCAL's + effects disappeared at subtransaction commit (leading to behavior + that made little sense at the SQL level). + </para> + </listitem> + + <listitem> + <para> + Add ALTER VIEW ... RENAME TO and ALTER SEQUENCE ... RENAME TO (David + Fetter, Neil) + </para> + + <para> + While it's (still) possible to perform these operations using ALTER + TABLE, users were often surprised that they couldn't say ALTER VIEW + or ALTER SEQUENCE as appropriate. + </para> + </listitem> + + <listitem> + <para> + Implement CREATE TABLE LIKE ... INCLUDING INDEXES (Trevor + Hardcastle, Nikhil S, Neil) + </para> + </listitem> + + <listitem> + <para> + Fix EXPLAIN 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 "?columnN?" when things + got too complicated. + </para> + </listitem> + + <listitem> + <para> + Make EXPLAIN ANALYZE show which sort method was used by a Sort node + (Tom) + </para> + </listitem> + + <listitem> + <para> + Make PreventTransactionChain reject commands submitted as part of a + multi-statement simple-Query message (Tom) + </para> + + <para> + For example, "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. + </para> + </listitem> + + <listitem> + <para> + Allow non-superuser database owners to create procedural languages + (Jeremy Drake) + </para> + + <para> + A database owner is now allowed to create a language in his database + if it's marked "tmpldbacreate" in 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 pg_language; renaming, + dropping, and altering owner of a PL now follow normal ownership + rules instead of being superuser-only. + </para> + </listitem> + + <listitem> + <para> + Make NOTIFY/LISTEN/UNLISTEN only accept simple relation names + (Bruce) + </para> + + <para> + Formerly, these commands accepted "schema.relation" but then ignored + the schema part, leading to confusion. + </para> + </listitem> + + <listitem> + <para> + Support syntax "CLUSTER table USING index", which is more logical + than the old CLUSTER syntax (Holger Schurig) + </para> + </listitem> + + <listitem> + <para> + Make CLUSTER MVCC-safe (Heikki Linnakangas) + </para> + + <para> + Formerly, a 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 MVCC snapshot rules. + </para> + </listitem> + + <listitem> + <para> + Implement new commands DISCARD ALL, DISCARD PLANS, DISCARD TEMP, + CLOSE ALL, and DEALLOCATE ALL (Marko Kreen, Neil) + </para> + + <para> + These commands simplify resetting a database session to initial + state, and are particularly handy for connection-pooling software. + </para> + </listitem> + + <listitem> + <para> + Make CLUSTER freeze tuples where possible (Heikki, Alvaro) + </para> + + <para> + This is nearly free and may avoid the need for a subsequent VACUUM + of the table. + </para> + </listitem> + + <listitem> + <para> + Make CLUSTER and TRUNCATE advance the table's relfrozenxid to + RecentXmin (Alvaro) + </para> + + <para> + This may avoid the need for a subsequent VACUUM of the table. The + table-rewriting variants of ALTER TABLE do it too. + </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) + </para> + + <para> + This helps mask the fact that backend exit takes nonzero time. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Data Type and Function Changes</title> + <itemizedlist> + + <listitem> + <para> + SQL/XML support (Nikolay Samokhvalov, Peter) + </para> + </listitem> + + <listitem> + <para> + Support enum data types (Tom Dunstan) + </para> + </listitem> + + <listitem> + <para> + Add a "uuid" data type similar to that defined in RFC 4122 (Gevik + Babakhani) + </para> + </listitem> + + <listitem> + <para> + Widen the money data type to 64 bits (D'Arcy Cain) + </para> + </listitem> + + <listitem> + <para> + Add "isodow" option to EXTRACT() and date_part() (Bruce) + </para> + + <para> + This is day of the week, with Sunday = 7. + </para> + </listitem> + + <listitem> + <para> + Check for overflow when converting far-future date values to + timestamp (Tom) + </para> + </listitem> + + <listitem> + <para> + Make to_timestamp() and to_date() assume "TM" for potentially + variable-width fields (Bruce) + </para> + + <para> + This matches Oracle behavior. + </para> + </listitem> + + <listitem> + <para> + Fix off-by-one conversion in to_date()/to_timestamp() 'D' fields + (Bruce) + </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) + </para> + </listitem> + + <listitem> + <para> + Add lo_truncate() function for large object truncation (Kris Jurka) + </para> + </listitem> + + <listitem> + <para> + Fix float4/float8 to handle Infinity and Nan consistently (Bruce) + </para> + + <para> + The code formerly was not consistent about distinguishing Infinity + symbols from overflow conditions. + </para> + </listitem> + + <listitem> + <para> + Implement width_bucket() for the float8 data type (Neil) + </para> + </listitem> + + <listitem> + <para> + Make setseed() return void, rather than a useless integer value + (Neil) + </para> + </listitem> + + <listitem> + <para> + Add a function pg_stat_clear_snapshot() that discards any statistics + snapshot already collected in the current transaction (Tom) + </para> + + <para> + This allows plpgsql functions to watch for stats updates even though + they are confined to a single transaction. + </para> + </listitem> + + <listitem> + <para> + Add new regexp functions regexp_matches(), regexp_split_to_array(), + and regexp_split_to_table() (Jeremy Drake, Neil) + </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. + </para> + </listitem> + + <listitem> + <para> + Add a hash function for "numeric" (Neil) + </para> + + <para> + This enables use of hash indexes and hash-based plans with + the numeric datatype. + </para> + </listitem> + + <listitem> + <para> + Improve efficiency of LIKE/ILIKE code, especially for multi-byte + charsets, and most especially for UTF8 (Andrew, Itagaki Takahiro) + </para> + </listitem> + + <listitem> + <para> + Allow leading and trailing + whitespace in the input to the boolean type (Neil) + </para> + </listitem> + + <listitem> + <para> + Add explicit casts between boolean and text/varchar (Neil) + </para> + </listitem> + + <listitem> + <para> + Add additional checks for invalidly-encoded data (Andrew) + </para> + + <para> + This change plugs some holes that formerly existed in SQL literal + backslash escape processing and COPY escape processing: the + de-escaped string is rechecked if it might have resulted in creating + invalid multi-byte characters. + </para> + </listitem> + + <listitem> + <para> + Ensure that chr() cannot create invalidly encoded text (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. + + ascii() is adjusted so that it remains the inverse of chr(). + </para> + </listitem> + + <listitem> + <para> + Adjust convert() behavior to ensure encoding validity (Andrew) + </para> + + <para> + The two argument form of convert() is gone, and the three argument + form now takes a bytea first argument and returns a bytea. To cover + this loss three new functions are introduced: . convert_from(bytea, + name) returns text - converts the first argument from the named + encoding to the database encoding . convert_to(text, name) returns + bytea - converts the first argument from the database encoding to + the named encoding . length(bytea, name) returns int - gives the + length of the first argument in characters in the named encoding. + </para> + </listitem> + + <listitem> + <para> + Remove CONVERT(argument USING conversion_name) (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. + </para> + </listitem> + + <listitem> + <para> + Put some security restrictions on the dbsize functions (Tom) + </para> + + <para> + Restrict pg_database_size() to users who can connect to the target + database (note that CONNECT privilege is granted by default, so this + does not change the default behavior). Restrict + pg_tablespace_size() to users who have CREATE privilege on the + tablespace (which is *not* 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). + </para> + </listitem> + + <listitem> + <para> + Make currtid() functions require SELECT privileges on the target + table (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>PL/PgSQL Server-Side Language Changes</title> + <itemizedlist> + + <listitem> + <para> + Support scrollable cursors (ie, add a "direction" clause in FETCH) + in plpgsql (Pavel Stehule) + </para> + </listitem> + + <listitem> + <para> + Add support for IN as alternative to FROM in PL/PgSQL's FETCH + statement, for consistency with the backend's FETCH command (Pavel + Stehule) + </para> + </listitem> + + <listitem> + <para> + Support MOVE in PL/PgSQL (Magnus, Pavel Stehule, Neil) + </para> + </listitem> + + <listitem> + <para> + Implement RETURN QUERY for PL/PgSQL (Pavel Stehule, Tom) + </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 RETURN NEXT + statements. + </para> + </listitem> + + <listitem> + <para> + Allow plpgsql function parameter names to be qualified with the + function's name (Tom) + </para> + </listitem> + + <listitem> + <para> + Reject zero or negative BY step in plpgsql integer FOR-loops, and + behave sanely if the loop value overflows int32 on the way to the + end value (Tom) + </para> + </listitem> + + <listitem> + <para> + Improve accuracy of error locations in PL/PgSQL syntax errors (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>PL/Perl Server-Side Language Changes</title> + <itemizedlist> + + <listitem> + <para> + Allow type-name arguments to spi_prepare() to be standard type + aliases as well as the names given in pg_type (Andrew) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>PL/Python Server-Side Language Changes</title> + <itemizedlist> + + <listitem> + <para> + Enable PL/PythonU to compile on Python 2.5 (Marko Kreen) + </para> + </listitem> + + <listitem> + <para> + Allow type-name arguments to plpy.prepare() to be standard type + aliases as well as the names given in pg_type (Andrew) + </para> + </listitem> + + <listitem> + <para> + Support true boolean type in Python versions that have it, i.e., + version 2.3 and later (Marko Kreen) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>PL/Tcl Server-Side Language Changes</title> + <itemizedlist> + + <listitem> + <para> + Allow type-name arguments to spi_prepare to be standard type aliases + as well as the names given in pg_type (Andrew) + </para> + </listitem> + + <listitem> + <para> + Fix problems with thread-enabled libtcl spawning multiple threads + within the backend (Steve Marshall, Paul Bayer, Doug Knight) + </para> + + <para> + This caused all sorts of unpleasantness. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title> + <itemizedlist> + + <listitem> + <para> + List disabled triggers separately in "\d" output + (Brendan Jurd) + </para> + </listitem> + + <listitem> + <para> + Identify schema of inherited table in "\d" output (Bernd Helmle) + </para> + </listitem> + + <listitem> + <para> + Show aggregate return types in "\da" output (Greg Sabino Mullane) + </para> + </listitem> + + <listitem> + <para> + Add the function's volatility to the output of \df+ (Neil) + </para> + </listitem> + + <listitem> + <para> + In \d patterns, always match $ literally, whether quoted or not + (Tom) + </para> + + <para> + Since we allow $ 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. + </para> + </listitem> + + <listitem> + <para> + Add \prompt command (Chad Wagner) + </para> + + <para> + This lets a psql script prompt the user for input. + </para> + </listitem> + + <listitem> + <para> + Allow \pset and \x, \t to use boolean constants on/off, rather than + always toggling (Chad Wagner) + </para> + </listitem> + + <listitem> + <para> + Add \sleep command to allow delays in psql scripts (Jan) + </para> + </listitem> + + <listitem> + <para> + Enable \timing output for \copy commands (Andrew) + </para> + </listitem> + + <listitem> + <para> + Allow \timing to have better resolution than ~15ms on Windows + (Itagaki Takahiro) + </para> + </listitem> + + <listitem> + <para> + Flush the \o file, if any, after each backslash command (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title> + <itemizedlist> + + <listitem> + <para> + Add output-file option for pg_dumpall (Dave Page) + </para> + + <para> + This is primarily useful on Windows, where output redirection of + child pg_dump processes doesn't work. + </para> + </listitem> + + <listitem> + <para> + Allow pg_dumpall to accept an initial-connection database name + rather than the default "template1" (Dave Page) + </para> + </listitem> + + <listitem> + <para> + Add --tablespaces-only and --roles-only options to pg_dumpall (Dave + Page) + </para> + </listitem> + + <listitem> + <para> + In -n and -t switches, always match $ literally, whether quoted or + not (Tom) + </para> + + <para> + Since we allow $ 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. + </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). + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Other Client Application Changes</title> + <itemizedlist> + + <listitem> + <para> + Allow a nondefault pg_xlog directory location to be specified to + initdb (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) + </para> + </listitem> + + <listitem> + <para> + Add cancel handlers so it's possible to Ctrl-C clusterdb, reindexdb + and vacuumdb (Itagaki Takahiro, Magnus) + </para> + </listitem> + + <listitem> + <para> + Remove gratuitous response messages from utility programs (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. + + Progress messages when acting on all databases now go to stdout + instead of stderr, since they are not in fact errors. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title><link linkend="libpq"><application>libpq</></link> Changes</title> + <itemizedlist> + + <listitem> + <para> + Support a global SSL configuration file (Victor Wagner) + </para> + </listitem> + + <listitem> + <para> + Add libpq environment variable PGSSLKEY to control SSL hardware keys + (Victor Wagner) + </para> + </listitem> + + <listitem> + <para> + Interpret the dbName parameter of PQsetdbLogin as a conninfo string + if it contains an = sign (Andrew) + </para> + + <para> + This allows use of all the options of conninfo strings through + client programs that still use PQsetdbLogin. + </para> + </listitem> + + <listitem> + <para> + Add lo_truncate() function for large object truncation (Kris Jurka) + </para> + </listitem> + + <listitem> + <para> + Provide PQconnectionUsedPassword() function that returns true if the + server demanded a password during authentication (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. + </para> + </listitem> + + <listitem> + <para> + Get rid of client-code dependencies on the exact text of the + no-password error message, by using PQconnectionUsedPassword() + instead (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title><link linkend="ecpg"><application>ecpg</></link> Changes</title> + <itemizedlist> + + <listitem> + <para> + Major rewrite to use V3 frontend/backend protocol (Michael) + </para> + + <para> + Among other things, prepared statements can now be prepared on the + server side. + </para> + </listitem> + + <listitem> + <para> + Use native threads, instead of pthreads, on Windows (Magnus) + </para> + </listitem> + + <listitem> + <para> + Improve thread-safety of ecpglib (Itagaki Takahiro) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title><application>Windows</> Port</title> + <itemizedlist> + + <listitem> + <para> + 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) + </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. + </para> + </listitem> + + <listitem> + <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> + + </sect3> + + <sect3> + <title>Source Code Changes</title> + <itemizedlist> + + <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 mdread() beyond EOF, and enforce that mdwrite() is to be + used for rewriting existing blocks while mdextend() is to be used + for extending the relation EOF. + </para> + </listitem> + + <listitem> + <para> + Support "gmake draft" in doc/src/sgml/Makefile (Bruce) + </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. + </para> + </listitem> + + <listitem> + <para> + Rename MaxTupleSize to MaxHeapTupleSize to clarify that it's not + meant to describe the maximum size of index tuples (Tom) + </para> + </listitem> + + <listitem> + <para> + Remove the xlog-centric "database system is ready" message and + replace it with "database system is ready to accept connections" + </para> + </listitem> + + <listitem> + <para> + Provide strlcpy() and strlcat() on all platforms, and replace + error-prone uses of strncpy(), strncat(), etc (Peter) + </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. + </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> + Add configure --enable-profiling switch to enable code profiling + (works with gcc only, for now) (Korry Douglas and Nikhil S) + </para> + </listitem> + + <listitem> + <para> + Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x, + len) (Greg Stark, Tom) + </para> + + <para> + Third-party code that manipulates varlena datums *must* convert to + this convention, since the varvarlena patch changes the + representation of length words on some architectures. + </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. + + Note: 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> + </listitem> + + <listitem> + <para> + Remove the prohibition on executing cursor commands through + SPI_execute (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. + </para> + </listitem> + + <listitem> + <para> + Clean up SPI's API a little bit by declaring SPI plan pointers as + "SPIPlanPtr" instead of "void *" (Tom) + </para> + + <para> + This does not break any existing 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. + </para> + </listitem> + + <listitem> + <para> + Add tas() support for Renesas' M32R processor (Kazuhiro Inaoka) + </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> + 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> + Create hooks to let a loadable plugin monitor (or even replace) the + planner and/or create plans for hypothetical situations (Gurjeet + Singh, Tom) + </para> + </listitem> + + <listitem> + <para> + Create a function variable "join_search_hook" to let plugins + override the join search order portion of the planner (Julius + Stroffek) + </para> + </listitem> + + <listitem> + <para> + Downgrade some low-level startup messages to DEBUG1 (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 quote_identifier() and pg_dump to 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> + Rename DLLIMPORT macro to PGDLLIMPORT to avoid conflict with third + party includes (like tcl) that define DLLIMPORT (Magnus) + </para> + </listitem> + + <listitem> + <para> + Adjust the output of MemoryContextStats() so that the line for a + child memory context is indented two spaces to the right of its + parent context (Neil) + </para> + </listitem> + + <listitem> + <para> + Add configure option --with-system-tzdata to use operating system + time zone database (Peter) + </para> + </listitem> + + <listitem> + <para> + Change on-disk representation of NUMERIC datatype so that the + sign_dscale word comes before the weight instead of after (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) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Contrib Changes</title> + <itemizedlist> + + <listitem> + <para> + Add /contrib/pageinspect module for low-level page inspection + (Simon, Heikki) + </para> + </listitem> + + <listitem> + <para> + Add /contrib/pg_standby module for warm standby operation (Simon) + </para> + </listitem> + + <listitem> + <para> + Add /contrib/uuid-ossp module for generating UUID values using the OSSP + UUID library (Peter) + </para> + + <para> + Use configure option --with-ossp-uuid to activate. + </para> + </listitem> + + <listitem> + <para> + Add pgbench option to set fillfactor (Pavan Deolasee) + </para> + </listitem> + + <listitem> + <para> + Enhance pgbench -l option to add timestamp (Greg Smith) + </para> + </listitem> + + <listitem> + <para> + Add usage count statistics to the information available from + contrib/pgbuffercache (Greg Smith) + </para> + </listitem> + + <listitem> + <para> + Add GIN support for hstore (Guillaume Smet, Teodor) + </para> + </listitem> + + <listitem> + <para> + Add GIN support for pg_trgm (Guillaume Smet, Teodor0 + </para> + </listitem> + + <listitem> + <para> + Update /contrib/start-scripts OS/X startup files, and move to a + separate OS/X directory (Mark Cotner, David Fetter) + </para> + </listitem> + + <listitem> + <para> + Restrict pgrowlocks() and dblink_get_pkey() to users who have SELECT + privilege on the target table (Tom) + </para> + </listitem> + + <listitem> + <para> + Restrict contrib/pgstattuple functions to superusers (Tom) + </para> + </listitem> + + <listitem> + <para> + contrib/xml2 is deprecated and planned for removal in 8.4 (Peter) + </para> + + <para> + The new XML support in core Postgres supersedes this module. + </para> + </listitem> + + </itemizedlist> + + </sect3> + + </sect2> + </sect1> + <sect1 id="release-8-2-5"> <title>Release 8.2.5</title> |