-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.523 2007/10/18 06:07:23 neilc Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.524 2007/10/18 16:45:05 momjian Exp $ -->
<!--
Typical markup:
<appendix id="release">
<title>Release Notes</title>
- <sect1 id="release-8-3">
- <title>Release 8.3</title>
+ <sect1 id="release-8-3">
+ <title>Release 8.3</title>
- <note>
- <title>Release date</title>
- <simpara>2007-12-??</simpara>
- <para>CURRENT AS OF 2007-10-03</>
- </note>
+ <note>
+ <title>Release date</title>
+ <simpara>2007-12-??</simpara>
+ <para>CURRENT AS OF 2007-10-03</>
+ </note>
- <sect2>
- <title>Overview</title>
+ <sect2>
+ <title>Overview</title>
- <para>
- 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:
+ <para>
+ 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:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- Full text search now fully integrated into the core database
- system
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Full text search now fully integrated into the core database
+ system
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support for the SQL/XML standard, including new operators and a
- new <type>XML</type> builtin type
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support for the SQL/XML standard, including new operators and a
+ new <type>XML</type> builtin type
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support for enumerated data types (<type>ENUM</type>)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support for enumerated data types (<type>ENUM</type>)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Universally Unique Identifier (<type>UUID</>) data type, similar
- to that defined by RFC 4122
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Universally Unique Identifier (<type>UUID</>) data type, similar
+ to that defined by RFC 4122
+ </para>
+ </listitem>
- <listitem>
- <para>
- Arrays of composite types
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Arrays of composite types
+ </para>
+ </listitem>
- <listitem>
- <para>
- Control over whether <literal>NULL</>s sort first or last, using
- <literal>ORDER BY ... NULLS FIRST/LAST</>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Control over whether <literal>NULL</>s sort first or last, using
+ <literal>ORDER BY ... NULLS FIRST/LAST</>
+ </para>
+ </listitem>
- <listitem>
- <para>
- Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT OF</>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT OF</>
+ </para>
+ </listitem>
- <listitem>
- <para>
- Server configuration parameters can now be set on a per-function
- basis
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Server configuration parameters can now be set on a per-function
+ basis
+ </para>
+ </listitem>
- <listitem>
- <para>
- User-defined types can now have type modifiers
- </para>
- </listitem>
+ <listitem>
+ <para>
+ User-defined types can now have type modifiers
+ </para>
+ </listitem>
- <listitem>
- <para>
- Automatically invalidate cached function code when table
- definitions change or statistics are updated
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Automatically invalidate cached function code when table
+ definitions change or statistics are updated
+ </para>
+ </listitem>
- <listitem>
- <para>
- Numerous improvements in logging and statistics collection,
- including the ability to emit postmaster log messages in
- <acronym>CSV</> format, which can be loaded into a database
- table for analysis
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Numerous improvements in logging and statistics collection,
+ including the ability to emit postmaster log messages in
+ <acronym>CSV</> format, which can be loaded into a database
+ table for analysis
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support Security Service Provider Interface (SSPI) on
- authentication for Windows and GSSAPI
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support Security Service Provider Interface (SSPI) on
+ authentication for Windows and GSSAPI
+ </para>
+ </listitem>
- <listitem>
- <para>
- Multiple autovacuum worker processes, and other autovacuum improvements
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Multiple autovacuum worker processes, and other autovacuum improvements
+ </para>
+ </listitem>
- <listitem>
- <para>
- The backend database server can now be compiled with
- <productname>Microsoft Visual C++</>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ The backend database server can now be compiled with
+ <productname>Microsoft Visual C++</>
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
+ <para>
Major performance improvements are listed below. Fortunately, most of
these enhancements are automatic and do not require user changes or
tuning:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- Asynchronous commit option allows transactions to be committed
- but on-disk changes to be delayed
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Asynchronous commit option allows transactions to be committed
+ but on-disk changes to be delayed
+ </para>
+ </listitem>
- <listitem>
- <para>
- <quote>Distributed</> checkpoints prevent I/O spikes during
- checkpoints
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <quote>Distributed</> checkpoints prevent I/O spikes during
+ checkpoints
+ </para>
+ </listitem>
- <listitem>
- <para>
- Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</>
- space usage
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</>
+ space usage
+ </para>
+ </listitem>
- <listitem>
- <para>
- Just-in-time background writer strategy to improve disk write
- efficiency
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Just-in-time background writer strategy to improve disk write
+ efficiency
+ </para>
+ </listitem>
- <listitem>
- <para>
- Reduction of both per-field and per-row storage requirements
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Reduction of both per-field and per-row storage requirements
+ </para>
+ </listitem>
- <listitem>
- <para>
- Prevent large sequential scans from forcing out more frequently
- used cached pages
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Prevent large sequential scans from forcing out more frequently
+ used cached pages
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow large sequential scans to use cached pages from other
- concurrent sequential scans
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow large sequential scans to use cached pages from other
+ concurrent sequential scans
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow <literal>ORDER BY ... LIMIT</> to be done without sorting
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow <literal>ORDER BY ... LIMIT</> to be done without sorting
+ </para>
+ </listitem>
- <listitem>
- <para>
- Use pseudo-transaction ids in read-only transactions
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Use pseudo-transaction ids in read-only transactions
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </para>
+ </para>
- </sect2>
+ </sect2>
- <sect2>
- <title>Migration to version 8.3</title>
+ <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>
+ 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>
+ <para>
+ Observe the following incompatibilities:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- <filename>contrib/tsearch2</> features have been moved into
- the core server, with some minor syntax changes
- </para>
+ <listitem>
+ <para>
+ <filename>contrib/tsearch2</> features have been moved into
+ the core server, with some minor syntax changes
+ </para>
- <para>
- XXX we need to provide a migration guide, at the very least
- </para>
- </listitem>
+ <para>
+ XXX we need to provide a migration guide, at the very least
+ </para>
+ </listitem>
- <listitem>
- <para>
- Queries that previously automatically cast values to
- <type>TEXT</type> might now need explicit casts
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Queries that previously automatically cast values to
+ <type>TEXT</type> might now need explicit casts (Peter, Tom)
+ </para>
- <listitem>
- <para>
- Numerous changes in administrative server parameters
- </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>
- <para>
- <varname>bgwriter_lru_percent</>,
- <varname>bgwriter_all_percent</>,
- <varname>bgwriter_all_maxpages</>,
- <varname>stats_start_collector</>, and
- <varname>stats_reset_on_server_start</> are removed.
- <varname>redirect_stderr</> is renamed to
- <varname>logging_collector</>.
- <varname>stats_command_string</> is renamed to
- <varname>track_activities</>.
- <varname>stats_block_level</> and <varname>stats_row_level</>
- are merged into <varname>track_counts</>.
- A new boolean configuration parameter, <varname>archive_mode</>,
- controls archiving. Autovacuum's default settings have changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Commenting out a parameter in <filename>postgresql.conf</> now
- causes it to revert to its default value
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Numerous changes in administrative server parameters
+ </para>
- <listitem>
- <para>
- <literal>ARRAY(SELECT ...)</literal>, where <command>SELECT</>
- returns no rows, now returns an empty array, rather than NULL
- </para>
- </listitem>
+ <para>
+ <varname>bgwriter_lru_percent</>,
+ <varname>bgwriter_all_percent</>,
+ <varname>bgwriter_all_maxpages</>,
+ <varname>stats_start_collector</>, and
+ <varname>stats_reset_on_server_start</> are removed.
+ <varname>redirect_stderr</> is renamed to
+ <varname>logging_collector</>.
+ <varname>stats_command_string</> is renamed to
+ <varname>track_activities</>.
+ <varname>stats_block_level</> and <varname>stats_row_level</>
+ are merged into <varname>track_counts</>.
+ A new boolean configuration parameter, <varname>archive_mode</>,
+ controls archiving. Autovacuum's default settings have changed.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>ORDER BY ... USING</> <replaceable>operator</> now must
- use a less-than or greater-than <replaceable>operator</> that is
- defined in a btree operator class
- </para>
+ <listitem>
+ <para>
+ Commenting out a parameter in <filename>postgresql.conf</> now
+ causes it to revert to its default value (Joachim Wieland)
+ </para>
- <para>
- This restriction was added to prevent unexpected results.
- </para>
- </listitem>
+ <para>
+ Previously commenting out a value kept the value unchanged until
+ the next server restart.
+ </para>
+ </listitem>
- <listitem>
- <para>
- The array name for a base data type is no longer required to
- be the data type name with an underscore prefix
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>ARRAY(SELECT ...)</literal>, where <command>SELECT</>
+ returns no rows, now returns an empty array, rather than NULL
+ (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Non-superuser database owners now have privileges to add trusted
- procedural languages in their databases by default
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>ORDER BY ... USING</> <replaceable>operator</> now must
+ use a less-than or greater-than <replaceable>operator</> that is
+ defined in a btree operator class (???)
+ </para>
- <listitem>
- <para>
- <command>SET LOCAL</command> changes now persist until
- the end of the top-most transaction, unless rolled back
- </para>
+ <para>
+ This restriction was added to prevent unexpected results.
+ </para>
+ </listitem>
- </listitem>
+ <listitem>
+ <para>
+ The array name for a base data type is no longer required to
+ be the data type name with an underscore prefix
+ </para>
- <listitem>
- <para>
- Commands that are disallowed in transaction blocks are now also
- disallowed in multiple-statement query strings
- </para>
- </listitem>
+ <para>
+ 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 additional checks for invalidly-encoded multibyte strings
- </para>
+ <listitem>
+ <para>
+ <command>SET LOCAL</command> changes now persist until
+ the end of the top-most transaction, unless rolled back (Tom)
+ </para>
- <para>
- For example, <function>chr()</function> has additional checks.
- </para>
- </listitem>
+ <para>
+ Previously <command>SET LOCAL</command>'s effects reverted
+ during subtransaction commit and <command>RELEASE</>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <function>convert()</function> encoding has changed behavior
- </para>
+ <listitem>
+ <para>
+ Commands that are disallowed in transaction blocks are now also
+ disallowed in multiple-statement query strings (Tom)
+ </para>
- <para>
- <type>bytea</> is now used for strings that do not match the
- server encoding, and <function>convert_from</> and
- <function>convert_to</> have been added for consistency.
- </para>
- </listitem>
+ <para>
+ For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be
+ rejected even if submitted as a single query message.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Restrict object size functions to users who have reasonable
- permissions to view such information
- </para>
- </listitem>
+ <listitem>
+ <para>
+ More checks for invalidly-encoded data (Andrew)
+ </para>
- <listitem>
- <para>
- New C macros for handling variable-length data values
- </para>
- </listitem>
+ <para>
+ 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>
- </itemizedlist>
- </sect2>
+ <listitem>
+ <para>
+ Ensure that <function>chr()</function> cannot create invalidly
+ encoded values (Andrew)
+ </para>
- <sect2>
- <title>Changes</title>
+ <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>
- Below you will find a detailed account of the
- changes between <productname>PostgreSQL</productname> 8.3 and
- the previous major release.
</para>
+ </listitem>
- <sect3>
- <title>Performance Improvements</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Asynchronous commit option allows transactions to be committed
- but on-disk changes to be delayed (Simon)
- </para>
+ <listitem>
+ <para>
+ Adjust <function>convert()</function> behavior to ensure encoding
+ validity (Andrew)
+ </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>
+ <para>
+ 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>
- <quote>Distributed</> checkpoints prevent I/O spikes during
- checkpoints (Itagaki Takahiro and Heikki Linnakangas)
- </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. (User-requested
- and shutdown checkpoints are still immediately written to disk.)
+ <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>
- Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</>
- space usage (Pavan Deolasee, with ideas from many others)
- </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</> even allows deleted row space reuse.
- <command>UPDATE</> space reuse is only possible if no modified
- columns are indexed.
+ <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>
- Just-in-time background writer strategy to improve disk write
- efficiency (Greg Smith, Itagaki Takahiro)
- </para>
-
- <para>
- This basically makes the background writer self-tuning.
+ <function>length(bytea, name)</function> returns
+ <type>INTEGER</> — gives the length of the first
+ argument in characters in the named encoding.
</para>
</listitem>
+ </itemizedlist>
+ </listitem>
- <listitem>
- <para>
- Reduction of both per-field and per-row storage requirements
- (Greg Stark)
- </para>
+ <listitem>
+ <para>
+ Remove <literal>convert(argument USING conversion_name)</literal>
+ (Andrew)
+ </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>
+ <para>
+ Its behavior did not match the SQL standard and could not be
+ implemented in this release.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Use pseudo-transaction ids in read-only transactions (Florian Pflug)
- </para>
+ <listitem>
+ <para>
+ <function>convert()</function> encoding has changed behavior
+ </para>
- <para>
- 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>
+ <para>
+ </listitem>
- <listitem>
- <para>
- Create a dedicated <acronym>WAL</> writer process to off-load
- WAL-writing work from backends (Simon)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Restrict object size functions to users who have reasonable
+ permissions to view such information (Tom)
+ </para>
- <listitem>
- <para>
- Skip unnecessary WAL writes for <command>CLUSTER</command> and
- <command>COPY</command> (Simon)
- </para>
+ <para>
+ 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>
- <para>
- 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>
+ New C macros for handling variable-length data values (Greg
+ Stark, Tom)
+ </para>
- <listitem>
- <para>
- Prevent large sequential scans from forcing out more frequently
- used cached pages (Simon, Heikki, Tom)
- </para>
- </listitem>
+ <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>
- <listitem>
- <para>
- Allow large sequential scans to use cached pages from other
- concurrent sequential scans (Jeff Davis)
- </para>
+ </itemizedlist>
+ </sect2>
- <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.
- This may affect the order in which rows are returned in a
- non-<literal>ORDER BY</> query.
- </para>
- </listitem>
+ <sect2>
+ <title>Changes</title>
- <listitem>
- <para>
- Reduce overhead of populating the statistics tables. (Tom)
- </para>
- </listitem>
+ <para>
+ Below you will find a detailed account of the
+ changes between <productname>PostgreSQL</productname> 8.3 and
+ the previous major release.
+ </para>
- <listitem>
- <para>
- Allow <literal>ORDER BY ... LIMIT</> to be done without sorting
- (Greg Stark)
- </para>
+ <sect3>
+ <title>Performance Improvements</title>
+ <itemizedlist>
- <para>
- 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>
+ Asynchronous commit option allows transactions to be committed
+ but on-disk changes to be delayed (Simon)
+ </para>
- <listitem>
- <para>
- Improve hash join performance for cases with many NULLs (Tom)
- </para>
- </listitem>
+ <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>
- </itemizedlist>
+ <listitem>
+ <para>
+ <quote>Distributed</> checkpoints prevent I/O spikes during
+ checkpoints (Itagaki Takahiro and Heikki Linnakangas)
+ </para>
- </sect3>
+ <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. (User-requested
+ and shutdown checkpoints are still immediately written to disk.)
+ </para>
+ </listitem>
- <sect3>
- <title>Server Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ Heap-Only Tuples (<acronym>HOT</>) improves <command>UPDATE</>
+ space usage (Pavan Deolasee, with ideas from many others)
+ </para>
- <listitem>
- <para>
- Support multiple concurrent autovacuum processes (Alvaro, Itagaki
- Takahiro)
- </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</> even allows deleted row space reuse.
+ <command>UPDATE</> space reuse is only possible if no modified
+ columns are indexed.
+ </para>
+ </listitem>
- <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. Several autovacuum
- default parameter values were also updated.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Just-in-time background writer strategy to improve disk write
+ efficiency (Greg Smith, Itagaki Takahiro)
+ </para>
- <listitem>
- <para>
- Autovacuum is now enabled by default (Alvaro)
- </para>
+ <para>
+ This basically makes the background writer self-tuning.
+ </para>
+ </listitem>
- <para>
- Also, autovacuum now reports its activity start time in
- <literal>pg_stat_activity</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Commenting out a parameter in <filename>postgresql.conf</> now
- causes it to revert to its default value (Joachim Wieland)
- </para>
+ <listitem>
+ <para>
+ Reduction of both per-field and per-row storage requirements
+ (Greg Stark)
+ </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>
- <para>
- Previously commenting out a value kept the value unchanged until
- the next server restart.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Use pseudo-transaction ids in read-only transactions (Florian Pflug)
+ </para>
- <listitem>
- <para>
- Automatically invalidate cached function code when table
- definitions change or statistics are updated (Tom)
- </para>
+ <para>
+ 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>
- <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.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Create a dedicated <acronym>WAL</> writer process to off-load
+ WAL-writing work from backends (Simon)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support Security Service Provider Interface (SSPI)
- authentication on Windows (Magnus)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Skip unnecessary WAL writes for <command>CLUSTER</command> and
+ <command>COPY</command> (Simon)
+ </para>
- <listitem>
- <para>
- Add support for GSSAPI authentication (Henry Hotz, Magnus)
- </para>
- </listitem>
+ <para>
+ 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>
- Support a global SSL configuration file (Victor Wagner)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Prevent large sequential scans from forcing out more frequently
+ used cached pages (Simon, Heikki, Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
- (Victor Wagner)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow large sequential scans to use cached pages from other
+ concurrent sequential scans (Jeff Davis)
+ </para>
- <listitem>
- <para>
- Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004, along with new
- conversions between EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo)
- </para>
- </listitem>
+ <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.
+ This may affect the order in which rows are returned in a
+ non-<literal>ORDER BY</> query.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Make JOHAB encoding client-only (Tatsuo)
- </para>
+ <listitem>
+ <para>
+ Reduce overhead of populating the statistics tables. (Tom)
+ </para>
+ </listitem>
- <para>
- JOHAB cannot safely be used as a server-side encoding.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow <literal>ORDER BY ... LIMIT</> to be done without sorting
+ (Greg Stark)
+ </para>
- <listitem>
- <para>
- Allow logfile creation in CSV format (Arul Shaji, Greg Smith,
- Andrew Dunstan)
- </para>
- </listitem>
+ <para>
+ 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>
- Add <varname>log_autovacuum_min_duration</varname> parameter to
- support configurable logging of autovacuum actions (Simon, Alvaro)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Improve hash join performance for cases with many NULLs (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <varname>log_lock_waits</varname> parameter to log long wait
- times (Simon)
- </para>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Add <varname>log_temp_files</varname> parameter to log usage of
- temporary files (Bill Moran)
- </para>
- </listitem>
+ </sect3>
- <listitem>
- <para>
- Add <varname>log_checkpoints</varname> parameter to improve logging
- of checkpoints (Greg Smith, Heikki)
- </para>
- </listitem>
+ <sect3>
+ <title>Server Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- <varname>log_line_prefix</varname> escapes <literal>%s</literal>
- and <literal>%c</literal> can now be used in all processes
- (Andrew)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support multiple concurrent autovacuum processes (Alvaro, Itagaki
+ Takahiro)
+ </para>
- <listitem>
- <para>
- Use our own timezone support for formatting timestamps displayed in
- the server log (Tom)
- </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. Several autovacuum
+ default parameter values were also updated.
+ </para>
+ </listitem>
- <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, independent of the client-visible
- <varname>timezone</> parameter.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Autovacuum is now enabled by default (Alvaro)
+ </para>
- <listitem>
- <para>
- Change the timestamps recorded in transaction WAL records from
- time_t to TimestampTz representation (Tom)
- </para>
+ <para>
+ Also, autovacuum now reports its activity start time in
+ <literal>pg_stat_activity</literal> (Tom)
+ </para>
+ </listitem>
- <para>
- This provides sub-second resolution in WAL, which can be useful for
- point-in-time recovery.
- </para>
- </listitem>
- <listitem>
- <para>
- New boolean configuration parameter, <varname>archive_mode</>,
- controls archiving (Simon)
- </para>
+ <listitem>
+ <para>
+ Automatically invalidate cached function code when table
+ definitions change or statistics are updated (Tom)
+ </para>
- <para>
- 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>
+ <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.
+ </para>
+ </listitem>
- <listitem>
- <para>
- 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>
+ Support Security Service Provider Interface (SSPI)
+ authentication on Windows (Magnus)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <varname>log_restartpoints</varname> archive recovery option
- to emit a log message at each recovery restart point (Simon)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add support for GSSAPI authentication (Henry Hotz, Magnus)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Last transaction end time is now logged at end of recovery and at
- each logged restart point (Simon)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support a global SSL configuration file (Victor Wagner)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add a <varname>temp_tablespaces</varname> parameter to control
- the tablespaces for temporary tables and files (Jaime Casanova,
- Albert Cervera, Bernd Helmle)
- </para>
+ <listitem>
+ <para>
+ Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
+ (Victor Wagner)
+ </para>
+ </listitem>
- <para>
- 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>
+ Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004, along with new
+ conversions between EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo)
+ </para>
+ </listitem>
- <listitem>
- <para>
- New system view <literal>pg_stat_bgwriter</literal> displays
- statistics about the background writer activity (Magnus)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Make JOHAB encoding client-only (Tatsuo)
+ </para>
- <listitem>
- <para>
- Add new columns for database-wide tuple statistics to
- <literal>pg_stat_database</literal> (Magnus)
- </para>
- </listitem>
+ <para>
+ JOHAB cannot safely be used as a server-side encoding.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add an <literal>xact_start</literal> column to
- <literal>pg_stat_activity</literal> (Neil)
- </para>
+ <listitem>
+ <para>
+ Allow logfile creation in CSV format (Arul Shaji, Greg Smith,
+ Andrew Dunstan)
+ </para>
+ </listitem>
- <para>
- This makes it easier to identify long-running transactions.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <varname>log_autovacuum_min_duration</varname> parameter to
+ support configurable logging of autovacuum actions (Simon, Alvaro)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
- to <literal>pg_stat_all_tables</literal> and related views (Glen
- Parker)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <varname>log_lock_waits</varname> parameter to log long wait
+ times (Simon)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Remove <varname>stats_start_collector</varname> parameter (Tom)
- </para>
+ <listitem>
+ <para>
+ Add <varname>log_temp_files</varname> parameter to log usage of
+ temporary files (Bill Moran)
+ </para>
+ </listitem>
- <para>
- We now always start the collector process, unless prevented by a
- problem with setting up the stats UDP socket.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <varname>log_checkpoints</varname> parameter to improve logging
+ of checkpoints (Greg Smith, Heikki)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
- </para>
+ <listitem>
+ <para>
+ <varname>log_line_prefix</varname> escapes <literal>%s</literal>
+ and <literal>%c</literal> can now be used in all processes
+ (Andrew)
+ </para>
+ </listitem>
- <para>
- This was removed because <function>pg_stat_reset()</function>
- can be used for this purpose.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Use our own timezone support for formatting timestamps displayed in
+ the server log (Tom)
+ </para>
- <listitem>
- <para>
- Merge <varname>stats_block_level</> and <varname>stats_row_level</>
- parameters into a single parameter <varname>track_counts</>,
- which controls all messages sent to the collector process (Tom)
- </para>
- </listitem>
+ <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, independent of the client-visible
+ <varname>timezone</> parameter.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Rename <varname>stats_command_string</varname> parameter to
- <varname>track_activities</varname> (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Change the timestamps recorded in transaction WAL records from
+ time_t to TimestampTz representation (Tom)
+ </para>
- <listitem>
- <para>
- Limit the amount of information reported when a user is dropped
- (Alvaro)
- </para>
+ <para>
+ This provides sub-second resolution in WAL, which can be useful for
+ point-in-time recovery.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ New boolean configuration parameter, <varname>archive_mode</>,
+ controls archiving (Simon)
+ </para>
- <para>
- Previously, dropping (or attempting to drop) a user who owned many
- objects could result in extremely large <literal>NOTICE</literal> or
- <literal>ERROR</literal> 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>
+ <para>
+ 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>
- Arrange to put TOAST tables belonging to temporary tables into
- special schemas named
- <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
- </para>
+ <listitem>
+ <para>
+ 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>
- <para>
- 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>
+ <listitem>
+ <para>
+ Add <varname>log_restartpoints</varname> archive recovery option
+ to emit a log message at each recovery restart point (Simon)
+ </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>
+ Last transaction end time is now logged at end of recovery and at
+ each logged restart point (Simon)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
- transactions in other databases (Simon)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add a <varname>temp_tablespaces</varname> parameter to control
+ the tablespaces for temporary tables and files (Jaime Casanova,
+ Albert Cervera, Bernd Helmle)
+ </para>
- </itemizedlist>
+ <para>
+ 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>
- </sect3>
+ <listitem>
+ <para>
+ New system view <literal>pg_stat_bgwriter</literal> displays
+ statistics about the background writer activity (Magnus)
+ </para>
+ </listitem>
- <sect3>
- <title>Query Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ Add new columns for database-wide tuple statistics to
+ <literal>pg_stat_database</literal> (Magnus)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Text search capability is now in core Postgres (Teodor, Oleg)
- </para>
+ <listitem>
+ <para>
+ Add an <literal>xact_start</literal> column to
+ <literal>pg_stat_activity</literal> (Neil)
+ </para>
- <para>
- This features was previously in <filename>contrib/tsearch2</>.
- It has been improved, moved into the server, and is now installed
- by default.
- </para>
- </listitem>
+ <para>
+ This makes it easier to identify long-running transactions.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Control over whether <literal>NULL</>s sort first or last, using
- <literal>ORDER BY ... NULLS FIRST/LAST</> (Teodor, Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
+ to <literal>pg_stat_all_tables</literal> and related views (Glen
+ Parker)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow ascending/descending (<literal>ASC</>/<literal>DESC</>)
- control during index creation (Teodor, Tom)
- </para>
+ <listitem>
+ <para>
+ Remove <varname>stats_start_collector</varname> parameter (Tom)
+ </para>
- <para>
- 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>
+ <para>
+ We now always start the collector process, unless prevented by a
+ problem with setting up the stats UDP socket.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT
- OF</> (Arul Shaji, Tom)
- </para>
+ <listitem>
+ <para>
+ Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
+ </para>
- <para>
- This eliminates the need to reference a primary key to update or
- delete rows returned by a cursor.
- </para>
- </listitem>
+ <para>
+ This was removed because <function>pg_stat_reset()</function>
+ can be used for this purpose.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Merge <varname>stats_block_level</> and <varname>stats_row_level</>
+ parameters into a single parameter <varname>track_counts</>,
+ which controls all messages sent to the collector process (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Queries that previously automatically cast values to
- <type>TEXT</type> might now need explicit casts (Peter, Tom)
- </para>
+ <listitem>
+ <para>
+ Rename <varname>stats_command_string</varname> parameter to
+ <varname>track_activities</varname> (Tom)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Limit the amount of information reported when a user is dropped
+ (Alvaro)
+ </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>
+ <para>
+ Previously, dropping (or attempting to drop) a user who owned many
+ objects could result in extremely large <literal>NOTICE</literal> or
+ <literal>ERROR</literal> 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 general mechanism that supports casts to and from the
- 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>
+ <listitem>
+ <para>
+ Arrange to put TOAST tables belonging to temporary tables into
+ special schemas named
+ <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
+ </para>
- <para>
- 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.
- </para>
- </listitem>
+ <para>
+ 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>
- <listitem>
- <para>
- <literal>ARRAY(SELECT ...)</literal>, where <command>SELECT</>
- returns no rows, now returns an empty array, rather than NULL
- (Tom)
- </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 <literal>col IS NULL</> to use an index (Teodor)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
+ transactions in other databases (Simon)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow limited hashing when using two different data types (Tom)
- </para>
+ </itemizedlist>
- <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.
- 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>
+ </sect3>
- <listitem>
- <para>
- Improve optimizer logic for detecting when variables are equal
- in a <literal>WHERE</> clause (Tom)
- </para>
+ <sect3>
+ <title>Query Changes</title>
+ <itemizedlist>
- <para>
- This allows mergejoins to work with descending sort orders, and
- improves recognition of redundant sort columns.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Text search capability is now in core Postgres (Teodor, Oleg)
+ </para>
- <listitem>
- <para>
- Improve performance when planning large inheritance trees when
- most tables are excluded by constraints (Tom)
- </para>
- </listitem>
+ <para>
+ 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>
- Remove the undocumented <literal>!!=</> (not in) operator (Tom)
- </para>
+ <listitem>
+ <para>
+ Control over whether <literal>NULL</>s sort first or last, using
+ <literal>ORDER BY ... NULLS FIRST/LAST</> (Teodor, Tom)
+ </para>
+ </listitem>
- <para>
- <literal>NOT IN (SELECT ...)</literal> is the proper way to
- perform this operation.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow ascending/descending (<literal>ASC</>/<literal>DESC</>)
+ control during index creation (Teodor, Tom)
+ </para>
- </itemizedlist>
+ <para>
+ 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>
- </sect3>
+ <listitem>
+ <para>
+ Updatable cursors using <literal>UPDATE/DELETE WHERE CURRENT
+ OF</> (Arul Shaji, Tom)
+ </para>
- <sect3>
- <title>Object Manipulation Changes</title>
- <itemizedlist>
+ <para>
+ This eliminates the need to reference a primary key to update or
+ delete rows returned by a cursor.
+ </para>
+ </listitem>
- <listitem>
+ <listitem>
+ <para>
+ Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
+ </para>
+ </listitem>
- <para>
- Support arrays of composite types (David Fetter, Andrew, Tom)
- </para>
+ <listitem>
+ <para>
+ Create a general mechanism that supports casts to and from the
+ 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>
- Arrays of rowtypes of regular tables and views are now
- supported, but not for system catalogs, sequences, or TOAST
- tables.
- </para>
+ <para>
+ 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.
+ </para>
+ </listitem>
- </listitem>
+ <listitem>
+ <para>
+ Allow <literal>col IS NULL</> to use an index (Teodor)
+ </para>
+ </listitem>
- <listitem>
- <para>
- The array name for a base data type is no longer required to
- be the data type name with an underscore prefix
- </para>
+ <listitem>
+ <para>
+ Allow limited hashing when using two different data types (Tom)
+ </para>
- <para>
- 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>
- Server configuration parameters can now be set on a per-function
- basis (Tom)
- </para>
-
- <para>
- For example, functions can now set their own
- <varname>search_path</> to prevent unexpected behavior if a
- different <varname>search_path</> exists at run-time. Security
- definer functions should set <varname>search_path</varname> to
- avoid security loopholes.
- </para>
- </listitem>
+ <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.
+ 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>
- Add <literal>COST</literal> and <literal>ROWS</literal> options to
- <command>CREATE/ALTER FUNCTION</command> (Tom)
- </para>
+ <listitem>
+ <para>
+ Improve optimizer logic for detecting when variables are equal
+ in a <literal>WHERE</> clause (Tom)
+ </para>
- <para>
- 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>
+ <para>
+ This allows mergejoins to work with descending sort orders, and
+ improves recognition of redundant sort columns.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow triggers and rules to be deactivated in groups using a
- session variable, for replication purposes (Jan)
- </para>
+ <listitem>
+ <para>
+ Improve performance when planning large inheritance trees when
+ most tables are excluded by constraints (Tom)
+ </para>
+ </listitem>
- <para>
- 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>.
+ <listitem>
+ <para>
+ Remove the undocumented <literal>!!=</> (not in) operator (Tom)
</para>
- <para>
- <application>psql</application>'s <literal>\d</literal> command
- and <application>pg_dump</application> have been enhanced
- </para>
- </listitem>
+ <para>
+ <literal>NOT IN (SELECT ...)</literal> is the proper way to
+ perform this operation.
+ </para>
+ </listitem>
- <listitem>
- <para>
- User-defined types can now have type modifiers (Teodor, Tom)
- </para>
+ </itemizedlist>
- <para>
- 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>
+ </sect3>
- <listitem>
- <para>
- Foreign keys now must match indexable conditions for
- cross-data-type references (Tom)
- </para>
- </listitem>
+ <sect3>
+ <title>Object Manipulation Changes</title>
+ <itemizedlist>
- </itemizedlist>
+ <listitem>
- </sect3>
+ <para>
+ Support arrays of composite types (David Fetter, Andrew, Tom)
+ </para>
- <sect3>
- <title>Utility Command Changes</title>
- <itemizedlist>
+ <para>
+ Arrays of rowtypes of regular tables and views are now
+ supported, but not for system catalogs, sequences, or TOAST
+ tables.
+ </para>
- <listitem>
- <para>
- Non-superuser database owners now have privileges to add trusted
- procedural languages in their databases by default (Jeremy Drake)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Server configuration parameters can now be set on a per-function
+ basis (Tom)
+ </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>
+ <para>
+ For example, functions can now set their own
+ <varname>search_path</> to prevent unexpected behavior if a
+ different <varname>search_path</> exists at run-time. Security
+ definer functions should set <varname>search_path</varname> to
+ avoid security loopholes.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <command>SET LOCAL</command> changes now persist until
- the end of the top-most transaction, unless rolled back (Tom)
- </para>
+ <listitem>
+ <para>
+ Add <literal>COST</literal> and <literal>ROWS</literal> options to
+ <command>CREATE/ALTER FUNCTION</command> (Tom)
+ </para>
- <para>
- Previously <command>SET LOCAL</command>'s effects reverted
- during subtransaction commit and <command>RELEASE</>.
- </para>
- </listitem>
+ <para>
+ 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>
- Allow a session's current parameter setting to be used as the
- default for future sessions (Tom)
- </para>
+ <listitem>
+ <para>
+ Allow triggers and rules to be deactivated in groups using a
+ session variable, for replication purposes (Jan)
+ </para>
- <para>
- 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>
+ <para>
+ 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>
- <listitem>
- <para>
- Implement new commands <command>DISCARD ALL</command>,
- <command>DISCARD PLANS</command>, <command>DISCARD
- TEMPORARY</command>, <command>CLOSE ALL</command>, and
- <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
- </para>
+ <para>
+ <application>psql</application>'s <literal>\d</literal> command
+ and <application>pg_dump</application> have been enhanced
+ </para>
+ </listitem>
- <para>
- These commands simplify resetting a database session to its initial
- state, and are particularly useful for connection-pooling software.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ User-defined types can now have type modifiers (Teodor, Tom)
+ </para>
- <listitem>
- <para>
- Allow <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
- SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
- </para>
+ <para>
+ 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>
- <para>
- Previously this could only be done via <command>ALTER TABLE ...
- RENAME TO</command>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Foreign keys now must match indexable conditions for
+ cross-data-type references (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Implement <command>CREATE TABLE LIKE ... INCLUDING
- INDEXES</command> (Trevor Hardcastle, Nikhil S, Neil)
- </para>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
- </para>
+ </sect3>
- <para>
- 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>
+ <sect3>
+ <title>Utility Command Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Add new syntax for <command>CLUSTER</command>: <literal>CLUSTER
- <replaceable>table</> USING <replaceable>index</></literal>
- (Holger Schurig)
+ <listitem>
+ <para>
+ Non-superuser database owners now have privileges to add trusted
+ procedural languages in their databases by default (Jeremy Drake)
</para>
- <para>
- The old <command>CLUSTER</command> syntax is still supported, but
- the new form is considered more logical.
- </para>
- </listitem>
+ <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>
- <para>
- Fix <command>EXPLAIN</command> so it can show more complex plans (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow a session's current parameter setting to be used as the
+ default for future sessions (Tom)
+ </para>
- <listitem>
- <para>
- Commands that are disallowed in transaction blocks are now also
- disallowed in multiple-statement query strings (Tom)
- </para>
+ <para>
+ 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
+ TEMPORARY</command>, <command>CLOSE ALL</command>, and
+ <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
+ </para>
- <para>
- For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be
- rejected even if submitted as a single query message.
- </para>
- </listitem>
+ <para>
+ These commands simplify resetting a database session to its initial
+ state, and are particularly useful for connection-pooling software.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Make CREATE/DROP/RENAME DATABASE wait briefly for other backends
- to exit before failing (Tom)
- </para>
+ <listitem>
+ <para>
+ Allow <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
+ SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
+ </para>
- <para>
- This increases the likelihood that these commands will succeed.
- </para>
- </listitem>
+ <para>
+ Previously this could only be done via <command>ALTER TABLE ...
+ RENAME TO</command>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
- from accepting schema-qualified names (Bruce)
- </para>
+ <listitem>
+ <para>
+ Implement <command>CREATE TABLE LIKE ... INCLUDING
+ INDEXES</command> (Trevor Hardcastle, Nikhil S, Neil)
+ </para>
+ </listitem>
- <para>
- Formerly, these commands accepted <quote>schema.relation</> but
- ignored the schema part, which was confusing.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
+ </para>
- </itemizedlist>
+ <para>
+ 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>
- </sect3>
+ <listitem>
+ <para>
+ Add new syntax for <command>CLUSTER</command>: <literal>CLUSTER
+ <replaceable>table</> USING <replaceable>index</></literal>
+ (Holger Schurig)
+ </para>
- <sect3>
- <title>Data Type and Function Changes</title>
- <itemizedlist>
+ <para>
+ The old <command>CLUSTER</command> syntax is still supported, but
+ the new form is considered more logical.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support for the SQL/XML standard, including new operators and a
- new <type>XML</type> builtin type (Nikolay Samokhvalov, Peter)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Fix <command>EXPLAIN</command> so it can show more complex plans (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support for enumerated data types (<type>ENUM</type>) (Tom Dunstan)
- </para>
+ <listitem>
+ <para>
+ Make CREATE/DROP/RENAME DATABASE wait briefly for other backends
+ to exit before failing (Tom)
+ </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>
+ <para>
+ This increases the likelihood that these commands will succeed.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Universally Unique Identifier (<type>UUID</>) data type, similar
- to that defined by RFC 4122 (Gevik Babakhani, Neil)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
+ from accepting schema-qualified names (Bruce)
+ </para>
- <listitem>
- <para>
- Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
- </para>
+ <para>
+ Formerly, these commands accepted <quote>schema.relation</> but
+ ignored the schema part, which was confusing.
+ </para>
+ </listitem>
- <para>
- This greatly increases the range of supported <type>MONEY</>
- values.
- </para>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Add new regexp functions <function>regexp_matches()</function>,
- <function>regexp_split_to_array()</function>, and
- <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
- </para>
+ </sect3>
- <para>
- These functions provide access to the regex groups,
- <literal>\(.*\)</> , and allows splitting a string on a POSIX
- regular expression.
- </para>
- </listitem>
+ <sect3>
+ <title>Data Type and Function Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Add <function>lo_truncate()</function> function for large object
- truncation (Kris Jurka)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support for the SQL/XML standard, including new operators and a
+ new <type>XML</type> builtin type (Nikolay Samokhvalov, Peter)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Implement <function>width_bucket()</function> for the float8 data
- type (Neil)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support for enumerated data types (<type>ENUM</type>) (Tom Dunstan)
+ </para>
- <listitem>
- <para>
- Add <function>pg_stat_clear_snapshot()</function> to discard
- statistics snapshots collected during the current transaction
- (Tom)
- </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>
- <para>
- 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>
+ <listitem>
+ <para>
+ Universally Unique Identifier (<type>UUID</>) data type, similar
+ to that defined by RFC 4122 (Gevik Babakhani, Neil)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <literal>isodow</> option to <function>EXTRACT()</> and
- <function>date_part()</> (Bruce)
- </para>
+ <listitem>
+ <para>
+ Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
+ </para>
- <para>
- This is the day of the week, with Sunday as seven.
- (<literal>dow</> returns Sunday as zero.)
- </para>
- </listitem>
+ <para>
+ This greatly increases the range of supported <type>MONEY</>
+ values.
+ </para>
+ </listitem>
- <listitem>
- <para>
- 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>
+ Add new regexp functions <function>regexp_matches()</function>,
+ <function>regexp_split_to_array()</function>, and
+ <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
+ </para>
- <listitem>
- <para>
- Make <function>to_timestamp()</> and <function>to_date()</>
- assume <quote>TM</quote> (trim) for potentially variable-width
- fields (Bruce)
- </para>
+ <para>
+ These functions provide access to the regex groups,
+ <literal>\(.*\)</> , and allows splitting a string on a POSIX
+ regular expression.
+ </para>
+ </listitem>
- <para>
- This matches Oracle behavior.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <function>lo_truncate()</function> function for large object
+ truncation (Kris Jurka)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix off-by-one conversion in to_date()/to_timestamp() 'D' fields
- (Bruce)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Implement <function>width_bucket()</function> for the float8 data
+ type (Neil)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix <type>float4</type>/<type>float8</type> to handle
- <literal>Infinity</> and <literal>NAN</> (not a number)
- consistently (Bruce)
- </para>
+ <listitem>
+ <para>
+ Add <function>pg_stat_clear_snapshot()</function> to discard
+ statistics snapshots collected during the current transaction
+ (Tom)
+ </para>
- <para>
- The code formerly was not consistent about distinguishing
- <literal>Infinity</> from overflow conditions.
- </para>
- </listitem>
+ <para>
+ 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>
- <listitem>
- <para>
- Make <function>setseed()</function> return void, rather than a
- useless integer value (Neil)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <literal>isodow</> option to <function>EXTRACT()</> and
+ <function>date_part()</> (Bruce)
+ </para>
- <listitem>
- <para>
- Add a hash function for <type>NUMERIC</type> (Neil)
- </para>
+ <para>
+ This is the day of the week, with Sunday as seven.
+ (<literal>dow</> returns Sunday as zero.)
+ </para>
+ </listitem>
- <para>
- This allows hash indexes and hash-based plans to be used with
- <type>NUMERIC</type>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ 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>
- Improve efficiency of
- <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
- multi-byte character sets like UTF8 (Andrew, Itagaki Takahiro)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Make <function>to_timestamp()</> and <function>to_date()</>
+ assume <quote>TM</quote> (trim) for potentially variable-width
+ fields (Bruce)
+ </para>
- <listitem>
- <para>
- Allow leading and trailing whitespace for <type>BOOLEAN</type>
- values (Neil)
- </para>
- </listitem>
+ <para>
+ This matches Oracle behavior.
+ </para>
+ </listitem>
- <listitem>
- <para>
- More checks for invalidly-encoded data (Andrew)
- </para>
+ <listitem>
+ <para>
+ Fix off-by-one conversion in to_date()/to_timestamp() 'D' fields
+ (Bruce)
+ </para>
+ </listitem>
- <para>
- 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>
+ Fix <type>float4</type>/<type>float8</type> to handle
+ <literal>Infinity</> and <literal>NAN</> (not a number)
+ consistently (Bruce)
+ </para>
- <listitem>
- <para>
- Ensure that <function>chr()</function> cannot create invalidly
- encoded values (Andrew)
- </para>
+ <para>
+ The code formerly was not consistent about distinguishing
+ <literal>Infinity</> from overflow conditions.
+ </para>
+ </listitem>
- <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.
+ <listitem>
+ <para>
+ Make <function>setseed()</function> return void, rather than a
+ useless integer value (Neil)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a hash function for <type>NUMERIC</type> (Neil)
</para>
- </listitem>
- <listitem>
- <para>
- Adjust <function>convert()</function> behavior to ensure encoding
- validity (Andrew)
- </para>
+ <para>
+ This allows hash indexes and hash-based plans to be used with
+ <type>NUMERIC</type>.
+ </para>
+ </listitem>
- <para>
- 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>
+ <listitem>
+ <para>
+ Improve efficiency of
+ <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
+ multi-byte character sets like UTF8 (Andrew, Itagaki Takahiro)
+ </para>
+ </listitem>
- <itemizedlist>
- <listitem>
- <para>
- <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>
+ Allow leading and trailing whitespace for <type>BOOLEAN</type>
+ values (Neil)
+ </para>
+ </listitem>
- <listitem>
- <para>
- <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>
+ Make <function>currtid()</function> functions require
+ <literal>SELECT</literal> privileges on the target table (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- <function>length(bytea, name)</function> returns
- <type>INTEGER</> — gives the length of the first
- argument in characters in the named encoding.
- </para>
- </listitem>
- </itemizedlist>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Remove <literal>convert(argument USING conversion_name)</literal>
- (Andrew)
- </para>
+ </sect3>
- <para>
- Its behavior did not match the SQL standard and could not be
- implemented in this release.
- </para>
- </listitem>
+ <sect3>
+ <title>PL/PgSQL Server-Side Language Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Restrict object size functions to users who have reasonable
- permissions to view such information (Tom)
- </para>
+ <listitem>
+ <para>
+ Add scrollable cursor support by adding directional control to
+ PL/PgSQL's <command>FETCH</command> (Pavel Stehule)
+ </para>
+ </listitem>
- <para>
- 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>
+ <listitem>
+ <para>
+ 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)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Make <function>currtid()</function> functions require
- <literal>SELECT</literal> privileges on the target table (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <command>MOVE</command> to PL/PgSQL (Magnus, Pavel Stehule,
+ Neil)
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
+ </para>
- </sect3>
+ <para>
+ 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>
- <sect3>
- <title>PL/PgSQL Server-Side Language Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ Allow function parameter names to be qualified with the
+ function's name(Tom)
+ </para>
- <listitem>
- <para>
- Add scrollable cursor support by adding directional control to
- PL/PgSQL's <command>FETCH</command> (Pavel Stehule)
- </para>
- </listitem>
+ <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>
- 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)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Tighten requirements for <literal>FOR</literal> loop
+ <literal>STEP</> values (Tom)
+ </para>
- <listitem>
- <para>
- Add <command>MOVE</command> to PL/PgSQL (Magnus, Pavel Stehule,
- Neil)
- </para>
- </listitem>
+ <para>
+ Prevent non-positive <literal>STEP</> values, and handle
+ loop overflows.
+ </para>
+
+ </listitem>
- <listitem>
- <para>
- Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
- </para>
+ <listitem>
+ <para>
+ Improve accuracy when reporting syntax error locations (Tom)
+ </para>
+ </listitem>
- <para>
- 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>
+ </itemizedlist>
- <listitem>
- <para>
- Allow function parameter names to be qualified with the
- function's name(Tom)
- </para>
+ </sect3>
- <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>
+ <sect3>
+ <title>PL/Perl Server-Side Language Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Tighten requirements for <literal>FOR</literal> loop
- <literal>STEP</> values (Tom)
- </para>
+ <listitem>
+ <para>
+ Allow type-name arguments to <function>spi_prepare()</function> to
+ be data type aliases in addition to names in
+ <literal>pg_type</literal> (Andrew)
+ </para>
+ </listitem>
- <para>
- Prevent non-positive <literal>STEP</> values, and handle
- loop overflows.
- </para>
-
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Improve accuracy when reporting syntax error locations (Tom)
- </para>
- </listitem>
+ </sect3>
- </itemizedlist>
+ <sect3>
+ <title>PL/Python Server-Side Language Changes</title>
+ <itemizedlist>
- </sect3>
+ <listitem>
+ <para>
+ Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
+ </para>
+ </listitem>
- <sect3>
- <title>PL/Perl Server-Side Language Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ Allow type-name arguments to <function>plpy.prepare()</function> to
+ be data type aliases in addition to names in
+ <literal>pg_type</literal> (Andrew)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow type-name arguments to <function>spi_prepare()</function> to
- be data type aliases in addition to names in
- <literal>pg_type</literal> (Andrew)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support a true boolean type in compatible Python versions
+ (Python 2.3 and later) (Marko Kreen)
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </sect3>
+ </sect3>
- <sect3>
- <title>PL/Python Server-Side Language Changes</title>
- <itemizedlist>
+ <sect3>
+ <title>PL/Tcl 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 <function>spi_prepare</> to
+ be data type aliases in addition to names in
+ <literal>pg_type</literal> (Andrew)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow type-name arguments to <function>plpy.prepare()</function> to
- be data type aliases in addition to names in
- <literal>pg_type</literal> (Andrew)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Fix problems with thread-enabled <filename>libtcl</> spawning
+ multiple threads within the backend (Steve Marshall, Paul Bayer,
+ Doug Knight)
+ </para>
- <listitem>
- <para>
- Support a true boolean type in compatible Python versions
- (Python 2.3 and later) (Marko Kreen)
- </para>
- </listitem>
+ <para>
+ This caused all sorts of unpleasantness.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </sect3>
+ </sect3>
- <sect3>
- <title>PL/Tcl Server-Side Language Changes</title>
- <itemizedlist>
+ <sect3>
+ <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- 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>
+ List disabled triggers separately in <literal>\d</literal> output
+ (Brendan Jurd)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix problems with thread-enabled <filename>libtcl</> spawning
- multiple threads within the backend (Steve Marshall, Paul Bayer,
- Doug Knight)
- </para>
+ <listitem>
+ <para>
+ Show aggregate return types in <literal>\da</literal> output
+ (Greg Sabino Mullane)
+ </para>
+ </listitem>
- <para>
- This caused all sorts of unpleasantness.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add the function's volatility to the output of
+ <literal>\df+</literal> (Neil)
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ In <literal>\d</literal> patterns, always match <literal>$</literal>
+ literally (Tom)
+ </para>
+ </listitem>
- </sect3>
+ <listitem>
+ <para>
+ Add <literal>\prompt</literal> capability (Chad Wagner)
+ </para>
+ </listitem>
- <sect3>
- <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ 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>
- List disabled triggers separately in <literal>\d</literal> output
- (Brendan Jurd)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <literal>\sleep</> capability (Jan)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Show aggregate return types in <literal>\da</literal> output
- (Greg Sabino Mullane)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add the function's volatility to the output of
- <literal>\df+</literal> (Neil)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Improve <literal>\timing</literal> resolution on Windows
+ (Itagaki Takahiro)
+ </para>
+ </listitem>
- <listitem>
- <para>
- In <literal>\d</literal> patterns, always match <literal>$</literal>
- literally (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Flush <literal>\o</> output after each backslash command (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <literal>\prompt</literal> capability (Chad Wagner)
- </para>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- 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>
+ </sect3>
- <listitem>
- <para>
- Add <literal>\sleep</> capability (Jan)
- </para>
- </listitem>
+ <sect3>
+ <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <literal>--tablespaces-only</> and <literal>--roles-only</>
+ options to <application>pg_dumpall</application> (Dave Page)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Improve <literal>\timing</literal> resolution on Windows
- (Itagaki Takahiro)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add an output file option to
+ <application>pg_dumpall</application> (Dave Page)
+ </para>
- <listitem>
- <para>
- Flush <literal>\o</> output after each backslash command (Tom)
- </para>
- </listitem>
+ <para>
+ This is primarily useful on Windows, where output redirection of
+ child <application>pg_dump</application> processes does not work.
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ Allow <application>pg_dumpall</> to accept an initial-connection
+ database name rather than the default
+ <literal>template1</literal> (Dave Page)
+ </para>
+ </listitem>
- </sect3>
+ <listitem>
+ <para>
+ In <literal>-n</> and <literal>-t</> switches, always match
+ <literal>$</literal> literally (Tom)
+ </para>
+ </listitem>
- <sect3>
- <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
- <itemizedlist>
+ <listitem>
+ <para>
+ Improve performance when a database has many thousands of objects (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <literal>--tablespaces-only</> and <literal>--roles-only</>
- options to <application>pg_dumpall</application> (Dave Page)
- </para>
- </listitem>
+ </itemizedlist>
- <listitem>
- <para>
- Add an output file option to
- <application>pg_dumpall</application> (Dave Page)
- </para>
+ </sect3>
- <para>
- This is primarily useful on Windows, where output redirection of
- child <application>pg_dump</application> processes does not work.
- </para>
- </listitem>
+ <sect3>
+ <title>Other Client Application Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- 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 <application>initdb</>, allow the location of the
+ <filename>pg_xlog</filename> directory location to be specified
+ (Euler Taveira de Oliveira)
+ </para>
+ </listitem>
- <listitem>
- <para>
- In <literal>-n</> and <literal>-t</> switches, always match
- <literal>$</literal> literally (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Enable core dump generation in <application>pg_regress</> and
+ <application>pg_ctl</>, if possible (Andrew)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Improve performance when a database has many thousands of objects (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow Control-C to cancel <application>clusterdb</>,
+ <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
+ Takahiro, Magnus)
+ </para>
+ </listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Client Application Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- 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>
- Enable core dump generation in <application>pg_regress</> and
- <application>pg_ctl</>, if possible (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Control-C to cancel <application>clusterdb</>,
- <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
- Takahiro, Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress command tag output for <application>createdb</>,
- <application>createuser</>, <application>dropdb</>,
- <application>dropuser</> (Peter)
- </para>
-
- <para>
- 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 because they are not actually errors.
- </para>
- </listitem>
-
- </itemizedlist>
+ <listitem>
+ <para>
+ Suppress command tag output for <application>createdb</>,
+ <application>createuser</>, <application>dropdb</>,
+ <application>dropuser</> (Peter)
+ </para>
- </sect3>
+ <para>
+ 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 because they are not actually errors.
+ </para>
+ </listitem>
- <sect3>
- <title><link linkend="libpq"><application>libpq</></link> Changes</title>
- <itemizedlist>
+ </itemizedlist>
- <listitem>
- <para>
- Interpret the <literal>dbName</> parameter of
- <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
- it contains an equals sign (Andrew)
- </para>
+ </sect3>
- <para>
- This allows use of <literal>conninfo</> strings in client
- programs that still use <literal>PQsetdbLogin()</>.
- </para>
- </listitem>
+ <sect3>
+ <title><link linkend="libpq"><application>libpq</></link> Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Support a global <acronym>SSL</> configuration file (Victor
- Wagner)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Interpret the <literal>dbName</> parameter of
+ <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
+ it contains an equals sign (Andrew)
+ </para>
- <listitem>
- <para>
- Add environment variable <varname>PGSSLKEY</> to control
- <acronym>SSL</> hardware keys (Victor Wagner)
- </para>
- </listitem>
+ <para>
+ This allows use of <literal>conninfo</> strings in client
+ programs that still use <literal>PQsetdbLogin()</>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <function>lo_truncate()</function> for large object
- truncation (Kris Jurka)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support a global <acronym>SSL</> configuration file (Victor
+ Wagner)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <function>PQconnectionUsedPassword()</function> that returns
- true if the server required a password (Joe Conway)
- </para>
+ <listitem>
+ <para>
+ Add environment variable <varname>PGSSLKEY</> to control
+ <acronym>SSL</> hardware keys (Victor Wagner)
+ </para>
+ </listitem>
- <para>
- If this returns true and the connection failed a client
- application should prompt the user for a password.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <function>lo_truncate()</function> for large object
+ truncation (Kris Jurka)
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ Add <function>PQconnectionUsedPassword()</function> that returns
+ true if the server required a password (Joe Conway)
+ </para>
- </sect3>
+ <para>
+ If this returns true and the connection failed a client
+ application should prompt the user for a password.
+ </para>
+ </listitem>
- <sect3>
- <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
- <itemizedlist>
+ </itemizedlist>
- <listitem>
- <para>
- Major rewrite to use V3 frontend/backend protocol (Michael)
- </para>
+ </sect3>
- <para>
- This adds server-side prepared statements.
- </para>
- </listitem>
+ <sect3>
+ <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Use native threads, instead of pthreads, on Windows (Magnus)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Major rewrite to use V3 frontend/backend protocol (Michael)
+ </para>
- <listitem>
- <para>
- Improve thread-safety of ecpglib (Itagaki Takahiro)
- </para>
- </listitem>
+ <para>
+ This adds server-side prepared statements.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Have ecpg libraries exporting only API symbols (Michael)
- Win32 only? XXX
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Use native threads, instead of pthreads, on Windows (Magnus)
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ Improve thread-safety of ecpglib (Itagaki Takahiro)
+ </para>
+ </listitem>
- </sect3>
+ <listitem>
+ <para>
+ Have ecpg libraries exporting only API symbols (Michael)
+ Win32 only? XXX
+ </para>
+ </listitem>
- <sect3>
- <title><application>Windows</> Port</title>
- <itemizedlist>
+ </itemizedlist>
- <listitem>
- <para>
- The backend database server can now be compiled with
- <productname>Microsoft Visual C++</> (Magnus and others)
- </para>
+ </sect3>
- <para>
- Windows executables made with Visual C++ might have better
- stability and performance than those made with other tool sets.
- Development and debugging tools familiar to Windows developers
- will also work. The client-only C++ build scripts have been
- removed.
- </para>
- </listitem>
+ <sect3>
+ <title><application>Windows</> Port</title>
+ <itemizedlist>
- <listitem>
- <para>
- Allow regression tests to be started by an <literal>admin</>
- user (Magnus)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ The backend database server can now be compiled with
+ <productname>Microsoft Visual C++</> (Magnus and others)
+ </para>
- <listitem>
- <para>
- Native shared memory implementation for Windows (Magnus)
- </para>
- </listitem>
+ <para>
+ Windows executables made with Visual C++ might have better
+ stability and performance than those made with other tool sets.
+ Development and debugging tools familiar to Windows developers
+ will also work. The client-only C++ build scripts have been
+ removed.
+ </para>
+ </listitem>
- </itemizedlist>
+ <listitem>
+ <para>
+ Allow regression tests to be started by an <literal>admin</>
+ user (Magnus)
+ </para>
+ </listitem>
- </sect3>
+ <listitem>
+ <para>
+ Native shared memory implementation for Windows (Magnus)
+ </para>
+ </listitem>
- <sect3>
- <title>Source Code Changes</title>
- <itemizedlist>
+ </itemizedlist>
- <listitem>
- <para>
- New C macros for handling variable-length data values (Greg
- Stark, Tom)
- </para>
+ </sect3>
- <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>
+ <sect3>
+ <title>Source Code Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
- avoid conflicting with third party includes (like TCL) that
- define DLLIMPORT (Magnus)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
+ avoid conflicting with third party includes (like TCL) that
+ define DLLIMPORT (Magnus)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Allow execution of cursor commands through
- <function>SPI_execute</function> (Tom)
- </para>
+ <listitem>
+ <para>
+ Allow execution of cursor commands through
+ <function>SPI_execute</function> (Tom)
+ </para>
- <para>
- The macro <literal>SPI_ERROR_CURSOR</> still exists but will
- never be returned.
- </para>
- </listitem>
+ <para>
+ The macro <literal>SPI_ERROR_CURSOR</> still exists but will
+ never be returned.
+ </para>
+ </listitem>
- <listitem>
- <para>
- SPI plan pointers are now <literal>SPIPlanPtr</> instead of
- <literal>void *</> (Tom)
- </para>
+ <listitem>
+ <para>
+ SPI plan pointers are now <literal>SPIPlanPtr</> instead of
+ <literal>void *</> (Tom)
+ </para>
- <para>
- This does not break application code, but switching is
- recommended to help catch simple programming mistakes.
- </para>
- </listitem>
+ <para>
+ This does not break application code, but switching is
+ recommended to help catch simple programming mistakes.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add cursor-related functionality in SPI (Pavel Stehule)
- </para>
+ <listitem>
+ <para>
+ Add cursor-related functionality in SPI (Pavel Stehule)
+ </para>
- <para>
- Allow access to the cursor-related planning options, and add
- <command>FETCH</>/<command>MOVE</> routines.
- </para>
- </listitem>
+ <para>
+ Allow access to the cursor-related planning options, and add
+ <command>FETCH</>/<command>MOVE</> routines.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <application>configure</> <literal>--enable-profiling</>
- to enable code profiling (works only with <application>gcc</>)
- (Korry Douglas and Nikhil S)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <application>configure</> <literal>--enable-profiling</>
+ to enable code profiling (works only with <application>gcc</>)
+ (Korry Douglas and Nikhil S)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <application>configure</> <literal>--with-system-tzdata</>
- to use the operating system time zone database (Peter)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <application>configure</> <literal>--with-system-tzdata</>
+ to use the operating system time zone database (Peter)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Create <quote>operator families</quote> improve planning of
- queries involving cross-data-type comparisons (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Create <quote>operator families</quote> improve planning of
+ queries involving cross-data-type comparisons (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Support <command>gmake draft</command> when building the
- <acronym>SGML</> documentation (Bruce)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Support <command>gmake draft</command> when building the
+ <acronym>SGML</> documentation (Bruce)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Update GIN <function>extractQuery()</> API to allow signalling
- that nothing can satisfy the query (Teodor)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Update GIN <function>extractQuery()</> API to allow signalling
+ that nothing can satisfy the query (Teodor)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Move <literal>NAMEDATALEN</> definition from
- <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
- (Peter)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Move <literal>NAMEDATALEN</> definition from
+ <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
+ (Peter)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Change server startup log message from <quote>database system is
- ready</quote> to <quote>database system is ready to accept
- connections</quote>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Change server startup log message from <quote>database system is
+ ready</quote> to <quote>database system is ready to accept
+ connections</quote>
+ </para>
+ </listitem>
- <listitem>
- <para>
- Provide <function>strlcpy()</function> and
- <function>strlcat()</function> on all platforms, and replace
- error-prone uses of <function>strncpy()</function>,
- <function>strncat()</function>, etc (Peter)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Provide <function>strlcpy()</function> and
+ <function>strlcat()</function> on all platforms, and replace
+ error-prone uses of <function>strncpy()</function>,
+ <function>strncat()</function>, etc (Peter)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Fix pgstats counting of live and dead tuples to recognize that
- committed and aborted transactions have different effects (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Fix pgstats counting of live and dead tuples to recognize that
+ committed and aborted transactions have different effects (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Create hooks to let a loadable plugin monitor (or even replace) the
- planner and create plans for hypothetical situations (Gurjeet
- Singh, Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Create hooks to let a loadable plugin monitor (or even replace) the
+ planner and create plans for hypothetical situations (Gurjeet
+ Singh, Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Create a function variable <literal>join_search_hook</> to let plugins
- override the join search order portion of the planner (Julius
- Stroffek)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Create a function variable <literal>join_search_hook</> to let plugins
+ override the join search order portion of the planner (Julius
+ Stroffek)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add tas() support for Renesas' M32R processor (Kazuhiro Inaoka)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add tas() support for Renesas' M32R processor (Kazuhiro Inaoka)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Have <function>quote_identifier()</function> and
- <application>pg_dump</application> not quote keywords that are
- unreserved according to the grammar (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Have <function>quote_identifier()</function> and
+ <application>pg_dump</application> not quote keywords that are
+ unreserved according to the grammar (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- 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>
+ 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>
- data type so that the <structfield>sign_dscale</> word comes
- before the weight (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ 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 <acronym>SYSV</> semaphores rather than POSIX on Darwin
- >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
+ >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </sect3>
+ </sect3>
- <sect3>
- <title>Contrib Changes</title>
- <itemizedlist>
+ <sect3>
+ <title>Contrib Changes</title>
+ <itemizedlist>
- <listitem>
- <para>
- Add <filename>/contrib/pageinspect</filename> module for low-level
- page inspection (Simon, Heikki)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <filename>/contrib/pageinspect</filename> module for low-level
+ page inspection (Simon, Heikki)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <filename>/contrib/pg_standby</filename> module for warm standby
- operation (Simon)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add <filename>/contrib/pg_standby</filename> module for warm standby
+ operation (Simon)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add <filename>/contrib/uuid-ossp</filename> module for generating
- <type>UUID</> values using the OSSP UUID library (Peter)
- </para>
+ <listitem>
+ <para>
+ Add <filename>/contrib/uuid-ossp</filename> module for generating
+ <type>UUID</> values using the OSSP UUID library (Peter)
+ </para>
- <para>
- Use <application>configure</>
- <literal>--with-ossp-uuid</literal> to activate. This takes
- advantage of the new <type>UUID</type> builtin type.
- </para>
- </listitem>
+ <para>
+ 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>
- Allow <application>pgbench</> to set the fillfactor (Pavan Deolasee)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Allow <application>pgbench</> to set the fillfactor (Pavan Deolasee)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add timestamps to <application>pgbench</> <literal>-l</> (Greg
- Smith)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add timestamps to <application>pgbench</> <literal>-l</> (Greg
+ Smith)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add usage count statistics to
- <filename>contrib/pgbuffercache</filename> (Greg Smith)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add usage count statistics to
+ <filename>contrib/pgbuffercache</filename> (Greg Smith)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add GIN support for <filename>hstore</> (Teodor)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add GIN support for <filename>hstore</> (Teodor)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Add GIN support for <filename>pg_trgm</> (Guillaume Smet, Teodor)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Add GIN support for <filename>pg_trgm</> (Guillaume Smet, Teodor)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Update OS/X startup scripts in
- <filename>/contrib/start-scripts</filename> (Mark Cotner, David
- Fetter)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Update OS/X startup scripts in
+ <filename>/contrib/start-scripts</filename> (Mark Cotner, David
+ Fetter)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Restrict <function>pgrowlocks()</function> and
- <function>dblink_get_pkey()</function> to users who have
- <literal>SELECT</literal> privilege on the target table (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Restrict <function>pgrowlocks()</function> and
+ <function>dblink_get_pkey()</function> to users who have
+ <literal>SELECT</literal> privilege on the target table (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- Restrict <filename>contrib/pgstattuple</filename> functions to
- superusers (Tom)
- </para>
- </listitem>
+ <listitem>
+ <para>
+ Restrict <filename>contrib/pgstattuple</filename> functions to
+ superusers (Tom)
+ </para>
+ </listitem>
- <listitem>
- <para>
- <filename>contrib/xml2</filename> is deprecated and planned for
- removal in 8.4 (Peter)
- </para>
+ <listitem>
+ <para>
+ <filename>contrib/xml2</filename> is deprecated and planned for
+ removal in 8.4 (Peter)
+ </para>
- <para>
- The new XML support in core Postgres supersedes this module.
- </para>
- </listitem>
+ <para>
+ The new XML support in core Postgres supersedes this module.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </sect3>
- </sect2>
- </sect1>
+ </sect3>
+ </sect2>
+ </sect1>
<sect1 id="release-8-2-5">
<title>Release 8.2.5</title>