📄 release.sgml
字号:
<sect1 id="release-8-1-1"> <title>Release 8.1.1</title> <note> <title>Release date</title> <simpara>2005-12-12</simpara> </note> <para> This release contains a variety of fixes from 8.1.0. </para> <sect2> <title>Migration to version 8.1.1</title> <para> A dump/restore is not required for those running 8.1.X. </para> </sect2> <sect2> <title>Changes</title><itemizedlist><listitem><para>Fix incorrect optimizations of outer-join conditions(Tom)</para></listitem><listitem><para>Fix problems with wrong reported column names in casesinvolving sub-selects flattened by the optimizer (Tom)</para></listitem><listitem><para>Fix update failures in scenarios involving CHECK constraints,toasted columns, <emphasis>and</> indexes (Tom)</para></listitem><listitem><para>Fix bgwriter problems after recovering from errors(Tom)</para><para>The background writer was found to leak buffer pins after write errors.While not fatal in itself, this might lead to mysterious blockages oflater VACUUM commands.</para></listitem><listitem><para>Prevent failure if client sends Bind protocol messagewhen current transaction is already aborted</para></listitem><listitem><para><filename>/contrib/tsearch2</> and <filename>/contrib/ltree</>fixes (Teodor)</para></listitem><listitem><para>Fix problems with translated error messages inlanguages that require word reordering, such as Turkish; also problems withunexpected truncation of output strings and wrong display of the smallestpossible bigint value (Andrew, Tom)</para><para>These problems only appeared on platforms that were using our<filename>port/snprintf.c</> code, which includes BSD variants if<literal>--enable-nls</> was given, and perhaps others. In addition,a different form of the translated-error-message problem could appearon Windows depending on which version of <filename>libintl</> was used.</para></listitem><listitem><para>Re-allow <literal>AM</>/<literal>PM</>, <literal>HH</>,<literal>HH12</>, and <literal>D</> format specifiers for<function>to_char(time)</> and <function>to_char(interval)</>.(<function>to_char(interval)</> should probably use<literal>HH24</>.) (Bruce)</para></listitem><listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi Saito)</para></listitem><listitem><para>Optimizer improvements (Tom)</para></listitem><listitem><para>Retry file reads and writes after WindowsNO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem><listitem><para>Prevent <application>autovacuum</> from crashing duringANALYZE of expression index (Alvaro)</para></listitem><listitem><para>Fix problems with ON COMMIT DELETE ROWS temptables</para></listitem><listitem><para>Fix problems when a trigger alters the output of a SELECTDISTINCT query</para></listitem><listitem><para>Add 8.1.0 release note item on how to migrate invalid<literal>UTF-8</> byte sequences (Paul Lindner)</para></listitem></itemizedlist> </sect2> </sect1> <sect1 id="release-8-1"> <title>Release 8.1</title> <note> <title>Release date</title> <simpara>2005-11-08</simpara> </note> <sect2> <title>Overview</title> <para> Major changes in this release: </para> <variablelist> <varlistentry> <term> Improve concurrent access to the shared buffer cache (Tom) </term> <listitem> <para> Access to the shared buffer cache was identified as a significant scalability problem, particularly on multi-CPU systems. In this release, the way that locking is done in the buffer manager has been overhauled to reduce lock contention and improve scalability. The buffer manager has also been changed to use a <quote>clock sweep</quote> replacement policy. </para> </listitem> </varlistentry> <varlistentry> <term> Allow index scans to use an intermediate in-memory bitmap (Tom) </term> <listitem> <para> In previous releases, only a single index could be used to do lookups on a table. With this feature, if a query has <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is no multicolumn index on <literal>col1</> and <literal>col2</>, but there is an index on <literal>col1</> and another on <literal>col2</>, it is possible to search both indexes and combine the results in memory, then do heap fetches for only the rows matching both the <literal>col1</> and <literal>col2</> restrictions. This is very useful in environments that have a lot of unstructured queries where it is impossible to create indexes that match all possible access conditions. Bitmap scans are useful even with a single index, as they reduce the amount of random access needed; a bitmap index scan is efficient for retrieving fairly large fractions of the complete table, whereas plain index scans are not. </para> </listitem> </varlistentry> <varlistentry> <term> Add two-phase commit (Heikki Linnakangas, Alvaro, Tom) </term> <listitem> <para> Two-phase commit allows transactions to be "prepared" on several computers, and once all computers have successfully prepared their transactions (none failed), all transactions can be committed. Even if a machine crashes after a prepare, the prepared transaction can be committed after the machine is restarted. New syntax includes <command>PREPARE TRANSACTION</> and <command>COMMIT/ROLLBACK PREPARED</>. A new system view <literal>pg_prepared_xacts</> has also been added. </para> </listitem> </varlistentry> <varlistentry> <term> Create a new role system that replaces users and groups (Stephen Frost) </term> <listitem> <para> Roles are a combination of users and groups. Like users, they can have login capability, and like groups, a role can have other roles as members. Roles basically remove the distinction between users and groups. For example, a role can: </para> <itemizedlist> <listitem> <para> Have login capability (optionally) </para> </listitem> <listitem> <para> Own objects </para> </listitem> <listitem> <para> Hold access permissions for database objects </para> </listitem> <listitem> <para> Inherit permissions from other roles it is a member of </para> </listitem> </itemizedlist> <para> Once a user logs into a role, she obtains capabilities of the login role plus any inherited roles, and can use <command>SET ROLE</> to switch to other roles she is a member of. This feature is a generalization of the SQL standard's concept of roles. This change also replaces <structname>pg_shadow</> and <structname>pg_group</> by new role-capable catalogs <structname>pg_authid</> and <structname>pg_auth_members</>. The old tables are redefined as read-only views on the new role tables. </para> </listitem> </varlistentry> <varlistentry> <term> Automatically use indexes for <function>MIN()</> and <function>MAX()</> (Tom) </term> <listitem> <para> In previous releases, the only way to use an index for <function>MIN()</> or <function>MAX()</> was to rewrite the query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>. Index usage now happens automatically. </para> </listitem> </varlistentry> <varlistentry> <term> Move <filename>/contrib/pg_autovacuum</> into the main server (Alvaro) </term> <listitem> <para> Integrating autovacuum into the server allows it to be automatically started and stopped in sync with the database server, and allows autovacuum to be configured from <filename>postgresql.conf</>. </para> </listitem> </varlistentry> <varlistentry> <term> Add shared row level locks using <command>SELECT ... FOR SHARE</> (Alvaro) </term> <listitem> <para> While <productname>PostgreSQL</productname>'s MVCC locking allows <command>SELECT</> to never be blocked by writers and therefore does not need shared row locks for typical operations, shared locks are useful for applications that require shared row locking. In particular this reduces the locking requirements imposed by referential integrity checks. </para> </listitem> </varlistentry> <varlistentry> <term> Add dependencies on shared objects, specifically roles (Alvaro) </term> <listitem> <para> This extension of the dependency mechanism prevents roles from being dropped while there are still database objects they own. Formerly it was possible to accidentally <quote>orphan</> objects by deleting their owner. While this could be recovered from, it was messy and unpleasant. </para> </listitem> </varlistentry> <varlistentry> <term> Improve performance for partitioned tables (Simon) </term> <listitem> <para> The new <varname>constraint_exclusion</varname> configuration parameter avoids lookups on child tables where constraints indicate that no matching rows exist in the child table. </para> <para> This allows for a basic type of table partitioning. If child tables store separate key ranges and this is enforced using appropriate <command>CHECK</> constraints, the optimizer will skip child table accesses when the constraint guarantees no matching rows exist in the child table. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2> <title>Migration to version 8.1</title> <para> A dump/restore using <application>pg_dump</application> is required for those wishing to migrate data from any previous release. </para> <para> The 8.0 release announced that the <function>to_char()</> function for intervals would be removed in 8.1. However, since no better API has been suggested, <function>to_char(interval)</> has been enhanced in 8.1 and will remain in the server. </para> <para> Observe the following incompatibilities: </para> <itemizedlist> <listitem> <para> <varname>add_missing_from</> is now false by default (Neil) </para> <para> By default, we now generate an error if a table is used in a query without a <literal>FROM</> reference. The old behavior is still available, but the parameter must be set to 'true' to obtain it. </para> <para> It may be necessary to set <varname>add_missing_from</> to true in order to load an existing dump file, if the dump contains any views or rules created using the implicit-<literal>FROM</> syntax. This should be a one-time annoyance, because <productname>PostgreSQL</productname> 8.1 will convert such views and rules to standard explicit-<literal>FROM</> syntax. Subsequent dumps will therefore not have the problem. </para> </listitem> <listitem> <para> Cause input of a zero-length string (<literal>''</literal>) for <type>float4</type>/<type>float8</type>/<type>oid</type> to throw an error, rather than treating it as a zero (Neil) </para> <para> This change is consistent with the current handling of zero-length strings for integers. The schedule for this change was announced in 8.0. </para> </listitem> <listitem> <para> <varname>default_with_oids</> is now false by default (Neil) </para> <para> With this option set to false, user-created tables no longer have an OID column unless <command>WITH OIDS</> is specified in <command>CREATE TABLE</>. Though OIDs have existed in all releases of <productname>PostgreSQL</>, their use is limited because they are only four bytes long and the counter is shared across all installed databases. The preferred way of uniquely identifying rows is via sequences and the <type>SERIAL</> type, which have been supported since <productname>PostgreSQL</> 6.4. </para> </listitem> <listitem> <para> Add <literal>E''</> syntax so eventually ordinary strings can treat backslashes literally (Bruce) </para>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -