diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml index cb07f37fef9357ff1cba620d58edfd9b06b77c2b..71bae0d496bdba784eacd779c6973447a52567d5 100644 --- a/doc/src/sgml/release-9.0.sgml +++ b/doc/src/sgml/release-9.0.sgml @@ -1,6 +1,2420 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.2 2010/02/19 00:35:18 petere Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.3 2010/03/20 03:30:12 momjian Exp $ --> -<sect1 id="release-9-0"> + + <sect1 id="release-9-0"> + <title>Release 9.0</title> + + <note> + <title>Release date</title> + <simpara>2010-??-??</simpara> + </note> + + <sect2> + <title>Overview</title> + + <para> + ADD HERE + </para> + + <!-- This list duplicates items below, but without authors or details--> + + <para> + The above items are explained in more detail in the sections below. + </para> + + </sect2> + + <sect2> + + <title>Migration to Version 9.0</title> + <para>CURRENT AS OF 2010-03-15</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> + + <sect3> + <title>Server Settings</title> + + <itemizedlist> + + <listitem> + <para> + Remove server variable <varname>add_missing_from</>, which was + defaulted to off for many years (Tom) + </para> + </listitem> + + <listitem> + <para> + Remove server variable <varname>regex_flavor</>, which was defaulted + to <literal>advanced</> (e.g. Perl-regex compatible) for many + years (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Queries</title> + <itemizedlist> + + <listitem> + <para> + When querying a parent table, do not do additional permission + checks on child tables returned as part of the query (Peter) + </para> + + <para> + The SQL standard specifies this behavior. + </para> + </listitem> + + <listitem> + <para> + Have fractional seconds truncate rather than round when using + float-based dates/times (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>String Handling</title> + <itemizedlist> + + <listitem> + <para> + Fix <literal>SIMILAR TO</> to match the SQL standard-specified behavior + by processing <literal>?</> and <literal>{}</> the same way they are + processed in regular expressions (Tom) + </para> + </listitem> + + <listitem> + <para> + Properly treat <literal>^</> and <literal>$</> as literals in + <literal>SIMILAR TO</> patterns, to match the SQL standard (Tom) + </para> + + <para> + Previously these were treated using regular expression syntax. This + change breaks backward compatibility. This also affects + <function>substring()</>'s interpretation of regular expressions. + </para> + </listitem> + + <listitem> + <para> + Process parentheses as literals in <literal>SIMILAR TO</> expressions; + also make character class handling more standards-compliant (Tom) + </para> + + <para> + This also affects <function>substring()</>'s handling of regular + expressions. + </para> + </listitem> + + <listitem> + <para> + Do not allow <function>substring()</> to have a negative third + length, per the SQL standard (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + + <sect3> + <title>Object Renaming</title> + <itemizedlist> + + <listitem> + <para> + Tighten enforcement of column renaming when a child table inherits + the renamed column from an unrelated parent (KaiGai Kohei) + </para> + </listitem> + + <listitem> + <para> + No longer rename index names and index column names when table + columns are renamed (Tom) + </para> + + <para> + Administrators still can rename such columns manually. Expression + index names are also not renamed. WHY ARE EXPRESSION INDEXES + SIGNIFICANT? + </para> + </listitem> + + + </itemizedlist> + + </sect3> + + <sect3> + <title>PL/pgSQL Variables</title> + <itemizedlist> + + + <listitem> + <para> + Have PL/pgSQL throw an error if a variable name conflicts with a + column name used in a query (Tom) + </para> + + <para> + This behavior can be changed via the server variable + <varname>plpgsql.variable_conflict</>, or by the per-function option + <literal>#variable_conflict</>. The former behavior was to bind to + variable names over column names. + </para> + </listitem> + + <listitem> + <para> + Remove PL/pgSQL's <literal>RENAME</> declaration option (Tom) + </para> + + <para> + Instead, use <literal>ALIAS</>, which can now alias any variable, + not just dollar sign variables, e.g. <literal>$1</>. + </para> + </listitem> + + <listitem> + <para> + PL/pgSQL no longer allows unquoted variables names that match SQL + reserved words (Tom) + </para> + + <para> + Variables can be double-quoted to avoid this restriction. + </para> + </listitem> + </itemizedlist> + + </sect3> + </sect2> + + <sect2> + <title>Changes</title> + + <sect3> + <title>Server</title> + + <sect4> + <title>Continuous Archiving</title> + <itemizedlist> + + <listitem> + <para> + Allow continuous archive standby systems to accept read-only queries + (Simon, Heikki) + </para> + + <para> + This feature is called Hot Standby. There are new + <filename>postgresql.conf</> and <filename>recovery.conf</> settings + to enable this feature, as well as extensive documentation. + </para> + </listitem> + + <listitem> + <para> + Allow continuous archive (<acronym>WAL</>) files to be streamed to a + standby system (Fujii Masao, Heikki) + </para> + + <para> + Previously <acronym>WAL</> files could be sent to standby systems only + as 16 megabytes files; this allows master changes to be sent to the + slave with very little delay. There are new <filename>postgresql.conf</> + and <filename>recovery.conf</> settings to enable this feature, as + well as extensive documentation. + </para> + </listitem> + + <listitem> + <para> + Add <function>pg_last_xlog_receive_location()</> and + <function>pg_last_xlog_replay_location()</>, which can be used to + monitor standby server <acronym>WAL</> activity (Fujii Masao, + Heikki) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Performance</title> + <itemizedlist> + + <listitem> + <para> + Improve performance of finding inherited child tables (Tom) + </para> + </listitem> + + <listitem> + <para> + Allow per-tablespace sequential and random page cost variables + (<varname>seq_page_cost</>/(<varname>random_page_cost</>)) via + <command>ALTER TABLESPACE + ... SET/RESET</> (Robert Haas) + </para> + </listitem> + + <listitem> + <para> + Improve performance of <command>TRUNCATE</> when used in the same + transaction as table creation (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Optimizer</title> + + <itemizedlist> + <listitem> + <para> + Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom) + </para> + + <para> + This is particularly useful for finding + <function>MAX()</>/<function>MIN()</> values in indexes that also + contain NULLs. + </para> + </listitem> + + <listitem> + <para> + Remove unnecessary outer joins (Robert Haas) + </para> + + <para> + Outer joins where the inner side is unique and not referenced in + the query are unnecessary and are therefore now removed. + </para> + </listitem> + + <listitem> + <para> + Improve optimizer equivalence detection of <> <type>boolean</> + tests (Tom) + </para> + </listitem> + </itemizedlist> + </sect4> + + <sect4> + <title>GEQO</title> + <itemizedlist> + + <listitem> + <para> + Use the same random seed everytime GEQO plans a query (Andres + Freund) + </para> + + <para> + While the Genetic Query Optimizer (GEQO) still selects random plans, + it now selects the same random plans for identical queries. You + can modify <varname>geqo_seed</> to randomize the starting value + of the random plan generator. + </para> + </listitem> + + <listitem> + <para> + Improve GEQO plan selection (Tom). + </para> + + <para> + This avoids the rare error, "failed to make a valid plan". + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Optimizer Statistics</title> + <itemizedlist> + + <listitem> + <para> + Improve <command>ANALYZE</> to support inheritance-tree statistics + (Tom) + </para> + + <para> + This is particularly useful for partitioned tables. + </para> + </listitem> + + <listitem> + <para> + Improve autovacuum detection of when re-analyze is necessary (Tom) + </para> + </listitem> + + <listitem> + <para> + Improve optimizer statistics for greater/less-than comparisons + (Tom) + </para> + + <para> + When looking up optimizer statistics for greater/less-than comparisons, + if the comparison value is in the first or last histogram bucket, + use an index to generate the actual statistics. This is particularly + useful for columns that are always increasing, and hence often have + inaccurate statistics. + </para> + </listitem> + + <listitem> + <para> + Allow setting of distinct statistics using <command>ALTER TABLE</> + (Robert Haas) + </para> + + <para> + This allows user-override of the number or percentage of distinct + values for a column and optionally its child tables. This value + is normally computed by <command>ANALYZE</>. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Authentication</title> + <itemizedlist> + + <listitem> + <para> + Add support for <acronym>RADIUS</> (Remote Authentication Dial In + User Service) authentication (Magnus) + </para> + </listitem> + + + <listitem> + <para> + Allow <acronym>LDAP</> (Lightweight Directory Access Protocol) + authentication to operate in "search/bind" mode (Robert Fleming, + Magnus) + </para> + + <para> + This allows the user to be looked up first, then the system uses + the <acronym>DN</> (Distinguished Name) returned for that user. + </para> + </listitem> + + <listitem> + <para> + Add <literal>samehost</> and <literal>samenet</> designations to + <filename>pg_hba.conf</> (Stef Walter) + </para> + + <para> + These match the server's <acronym>IP</> address and network address + respectively. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Monitoring</title> + <itemizedlist> + + <listitem> + <para> + Add the ability for clients to set an application name, which is + displayed in <structname>pg_stat_activity</> (Dave Page) + </para> + </listitem> + + <listitem> + <para> + Add an SQL state option (<literal>%e</>) to <varname>log_line_prefix</> + (Guillaume Smet) + </para> + </listitem> + + <listitem> + <para> + Write to the Windows event log in <acronym>UTF16</> encoding + (Itagaki Takahiro) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Statistics Counters</title> + <itemizedlist> + + <listitem> + <para> + Add <function>pg_stat_reset_shared('bgwriter')</> to reset the + cluster-wide shared statistics of the bgwriter (Greg Smith) + </para> + </listitem> + + <listitem> + <para> + Add <function>pg_stat_reset_single_table_counters()</> and + <function>pg_stat_reset_single_function_counters()</> to allow the + reseting of statistics counters for individual tables and indexes + (Magnus) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Server Settings</title> + <itemizedlist> + + <listitem> + <para> + Allow setting of configuration variables based on database/role + combinations (Alvaro) + </para> + + <para> + Previously only per-database and per-role setting were possible, + not combinations. All role and database settings are now stored + in the new <structname>pg_db_role_setting</> system table. A new + <application>psql</> <literal>\drds</> command shows these settings. + Backwards-compatible system views do not show this information. + </para> + </listitem> + + <listitem> + <para> + Add boolean variable <varname>bonjour</>, which controls whether + a Bonjour-enabled binary advertises itself via <productname>Bonjour</> + (Tom) + </para> + + <para> + The default is off, meaning it does not advertise. + </para> + </listitem> + + <listitem> + <para> + Log changed parameter values when <filename>postgresql.conf</> is + reloaded (Peter) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Queries</title> + <itemizedlist> + + <listitem> + <para> + Do <command>SELECT FOR UPDATE</>/<literal>SHARE</> processing + after applying <literal>LIMIT</>, so the number of rows returned + is always predictable (Tom) + </para> + + <para> + Previously, concurrent transactions could potentially cause + <command>SELECT</> to return fewer rows than specified by + <literal>LIMIT</>. <literal>FOR UPDATE</> can still affect + <literal>ORDER BY</> ordering, but this can be corrected by using + <literal>FOR UPDATE</> in a subquery. + </para> + </listitem> + + <listitem> + <para> + Allow mixing of traditional and SQL-standard + <literal>LIMIT</>/<literal>OFFSET</> syntax in the same query (Tom) + </para> + </listitem> + + <listitem> + <para> + Increase the supported frame options in window functions (Hitoshi + Harada) + </para> + + <para> + This allows frames (<literal>RANGE</> or <literal>ROWS</>) to start + with <literal>CURRENT ROW</>, and to use the <literal>ROWS n + PRECEDING</>/<literal>FOLLOWING</> clause. + </para> + </listitem> + + + </itemizedlist> + + <sect4> + <title>Unicode Strings</title> + <itemizedlist> + + <listitem> + <para> + Add Unicode surrogate pair (dual 16-bit) support to <literal>U&</> + strings and identifiers (Peter) + </para> + </listitem> + + <listitem> + <para> + Allow Unicode escapes in <literal>E'...'</> strings (Marko Kreen) + </para> + </listitem> + + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Object Manipulation</title> + <itemizedlist> + + <listitem> + <para> + Speed up <command>CREATE DATABASE</> by deferring flushes to disk + (Andres Freund, Greg Stark) + </para> + </listitem> + + <listitem> + <para> + Allow comments only on columns of tables, views, and composite + types, not other objects like indexes and <acronym>TOAST</> tables + (Tom) + </para> + </listitem> + + <listitem> + <para> + Allow the creation of enumerate types with no labels (Bruce) + </para> + + <para> + This is useful for supporting binary upgrades. + </para> + </listitem> + + <listitem> + <para> + Have columns defined with storage type <literal>MAIN</> remain on + main heap page unless it cannot fit (Kevin Grittner) + </para> + + <para> + Previously <literal>MAIN</> values were forced to <acronym>TOAST</> + tables until the row size was one-quarter of the page size. + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title><command>ALTER</></title> + <itemizedlist> + + <listitem> + <para> + Add <command>ALTER DEFAULT PRIVILEGES</> command to control privileges of + all newly-created objects (Petr Jelinek) + </para> + + <para> + It currently supports tables, views, sequences, and functions, and + also has per-schema control. + </para> + </listitem> + + <listitem> + <para> + Implement <literal>IF EXISTS</> for <literal>DROP COLUMN</> and + <literal>DROP CONSTRAINT </> (Andres Freund) + </para> + </listitem> + + <listitem> + <para> + Allow <command>ALTER TABLE</> commands which rewrite tables to skip + <acronym>WAL</> logging (Itagaki Takahiro) + </para> + + <para> + Such operations either complete fully or are rolled back, so + <acronym>WAL</> archiving can be skipped, unless running in continuous + archiving mode. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title><command>CREATE TABLE</></title> + <itemizedlist> + + <listitem> + <para> + Add support for copying <literal>COMMENTS</> and <literal>STORAGE</> + to the <command>CREATE TABLE ... LIKE INCLUDING</> command (Itagaki + Takahiro) + </para> + </listitem> + + <listitem> + <para> + Add support for copying all attributes to the <command>CREATE + TABLE LIKE INCLUDING</> command (Itagaki Takahiro) + </para> + </listitem> + + <listitem> + <para> + Add the SQL-standard <command>CREATE TABLE ... OF type</> command + (Peter) + </para> + + <para> + This allows the creation of a table to match an existing composite + type. Additional constraints and defaults can be specified in the + command. + </para> + </listitem> + + <listitem> + <para> + Have <command>SELECT</> and <command>CREATE TABLE AS</> return + row counts to the client + (Boszormenyi Zoltan) + </para> + + <para> + <application>psql</> does not display these counts. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Constraints</title> + <itemizedlist> + + <listitem> + <para> + Add deferrable unique constraints (Dean Rasheed) + </para> + + <para> + This allows <command>UPDATE tab SET col = col + 1</> to work on + columns that have a unique indexes or are marked as primary keys, + but <literal>DEFERRABLE INITIALLY DEFERRED</> must be used to mark + the constraint as deferred. + </para> + </listitem> + + <listitem> + <para> + Generalize uniqueness constraints by allowing arbitrary operator + comparisons, not just equality (Jeff Davis) + </para> + + <para> + This is enabled with the <command>CREATE TABLE CONSTRAINT ... + EXCLUDE</> clause. While uniqueness checks could be specified + using this syntax, the real value of this features is in using + complex operators that do not have built-in constraints. + </para> + </listitem> + + <listitem> + <para> + Improve the constraint violation error message to report the values + causing the failure (Itagaki Takahiro) + </para> + + <para> + For example, a uniqueness constraint violation now reports <literal>Key + (x)=(2) already exists</>. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Object Permissions</title> + <itemizedlist> + + <listitem> + <para> + Add the ability to make mass permission changes per schema using + the new <command>GRANT</>/<command>REVOKE IN SCHEMA</> clause + (Petr Jelinek) + </para> + </listitem> + + <listitem> + <para> + Add the ability to control large object permissions with + <command>GRANT</>/<command>REVOKE </>(KaiGai Kohei) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Utility Operations</title> + + <itemizedlist> + + <listitem> + <para> + Have <command>LISTEN</>/<command>NOTIFY</> store events in a memory + queue, rather than a system table (Joachim Wieland) + </para> + + <para> + This greatly improves performance for these operations. + </para> + </listitem> + + <listitem> + <para> + Allow <command>NOTIFY</> to pass an optional string to listeners + (Joachim Wieland) + </para> + </listitem> + + <listitem> + <para> + Allow <command>CLUSTER</> on all system tables (Tom) + </para> + + <para> + Global system tables still cannot be clustered. + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title><command>COPY</></title> + <itemizedlist> + + <listitem> + <para> + Allow <literal>*</> as a parameter in <literal>FORCE QUOTE</> for + <literal>COPY CSV</> (Itagaki Takahiro) + </para> + + <para> + This forces quotes for all <acronym>CSV</> output columns. + </para> + </listitem> + + <listitem> + <para> + Add new <command>COPY</> syntax that allows parameters to be + specified in parentheses (Robert Haas, Emmanuel Cecchet) + </para> + + <para> + This allows greater flexibility for future <command>COPY</> options. + The old syntax is still supported. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title><command>EXPLAIN</></title> + <itemizedlist> + + <listitem> + <para> + Add new <command>EXPLAIN (BUFFERS)</> to report query buffer + activity (Itagaki Takahiro) + </para> + + <para> + log_*_stats log output, e.g. <varname>log_statement_stats</>, no + longer shows this information. + </para> + </listitem> + + <listitem> + <para> + Add hash usage information to <command>EXPLAIN</> output (Robert + Haas) + </para> + </listitem> + + <listitem> + <para> + Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>, + and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane) + </para> + </listitem> + + <listitem> + <para> + Allow <command>EXPLAIN</> options to be specified inside parentheses + (Robert Haas) + </para> + + <para> + This allows for the expansion of <command>EXPLAIN</> options. The + old syntax is still supported. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title><command>VACUUM</></title> + <itemizedlist> + + <listitem> + <para> + Change <command>VACUUM FULL</> to rewrite the entire table and + indexes, rather than moving around single rows to compact space + (Itagaki Takahiro, Tom) + </para> + + <para> + The previous method was usually slower and caused index bloat. + </para> + </listitem> + + <listitem> + <para> + Add new <command>VACUUM</> syntax that allows parameters to be + specified in parentheses (Itagaki Takahiro) + </para> + + <para> + This allows greater flexibility for future <command>VACUUM</> + options. The old syntax is still supported. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Indexes</title> + <itemizedlist> + + <listitem> + <para> + Allow an index to be auto-named by not supplying an index name to + <command>CREATE INDEX</> (Tom) + </para> + </listitem> + + <listitem> + <para> + Allow <command>REINDEX</> on system indexes (Tom) + </para> + + <para> + WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE? NON-HARDWIRED ONES? + </para> + </listitem> + + <listitem> + <para> + Add <literal>point_ops</> opclass for GiST (Teodor) + </para> + + <para> + DETAILS? + </para> + </listitem> + + <listitem> + <para> + Use red-black trees for <acronym>GIN</> index creation (Teodor) + </para> + + <para> + Red-black trees are self-balanced so allow for faster index + creation. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Data Types</title> + <itemizedlist> + + <listitem> + <para> + Allow hex values to be specified in <type>bytea</> strings (Peter) + </para> + + <para> + The variable <varname>bytea_output</> controls if hex (default) + or octal escapes are used for <type>bytea</> output. (SWITCH + DEFAULT FOR BETA? PETER) Libpq's <function>PQescapeByteaConn()</> + now uses the hex format for <productname>PostgreSQL</> 9.0 servers. + </para> + </listitem> + + <listitem> + <para> + Allow <varname>extra_float_digits</> to be increased to <literal>3</> + (Tom) + </para> + + <para> + The previous maximum <varname>extra_float_digits</> was <literal>2</>. + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title>Full Text Search</title> + <itemizedlist> + + <listitem> + <para> + Add prefix support for the full text search synonym dictionary + (Teodor) + </para> + </listitem> + + <listitem> + <para> + Add full text search filtering dictionaries (Teodor) + </para> + + <para> + Filtering dictionaries allow tokens to be modified and passed to + subsequent dictionaries. + </para> + </listitem> + + <listitem> + <para> + Allow underscores in full text email addresses (Teodor) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Functions</title> + <itemizedlist> + + <listitem> + <para> + Allow case-insensitive regular expression matching with <acronym>UTF-8</> + server encodings. + </para> + + <para> + Previously, only <acronym>ASCII</> characters and single-byte + encodings worked properly. Other multi-byte, non-<acronym>UTF-8</> + encodings are still broken for case-insensitive regular expression + matching. + </para> + </listitem> + + <listitem> + <para> + Allow function calls to supply parameter names and match them to named + parameters in the function definition (Pavel Stehule) + </para> + + <para> + For example, if a function is defined to take parameters <literal>a</> + and <literal>b</>, it can be called with <literal>func(7 AS a, 12 + AS b)</> or <literal>func(12 AS b, 7 AS a)</>. + </para> + </listitem> + + <listitem> + <para> + Add support for <function>to_char()</> scientific notation output + (<literal>'EEEE'</>) (Pavel Stehule, Brendan Jurd) + </para> + </listitem> + + <listitem> + <para> + Have <function>to_char()</> honor <literal>'FM'</> (fill mode) in + <literal>'Y'</>, <literal>'YY'</>, and <literal>'YYY'</> specifications + (Bruce) + </para> + + <para> + It was already honored by <literal>'YYYY'</>. + </para> + </listitem> + + <listitem> + <para> + Correct calculations of "overlap" and "contains" operations over + polygons (Teodor) + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title>Aggregates</title> + <itemizedlist> + + <listitem> + <para> + Allow aggregate functions to use <literal>ORDER BY</> (Andrew + Gierth) + </para> + + <para> + For example, this is now supported, <literal>array_agg(a ORDER BY + b)</>. This is useful for aggregates where the order of values is + significant. + </para> + </listitem> + + <listitem> + <para> + Add the <function>string_agg()</> aggregate function which aggregates + values into a single string (Pavel Stehule) + </para> + + <para> + An optional second argument allows specification of a delimiter. + </para> + </listitem> + + <listitem> + <para> + Aggregate functions that are called with <literal>DISTINCT</> are + now passed NULL values if the aggregate transition function is + not marked as <literal>STRICT</> (Andrew Gierth) + </para> + + <para> + For example, <literal>agg(DISTINCT x)</> might pass NULL <literal>x</> + values to <function>agg()</>. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Bit Strings</title> + <itemizedlist> + + <listitem> + <para> + Add <function>get_bit()</> and <function>set_bit()</> functions + for <type>bit</> strings, mirroring those for <type>bytea</> + (Leonardo F) + </para> + </listitem> + + <listitem> + <para> + Implement <function>OVERLAY()</> (replace) for <type>bit</> strings + and <type>bytea</> (Leonardo F) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Object Information Functions</title> + <itemizedlist> + + <listitem> + <para> + Add <function>pg_table_size()</> and <function>pg_indexes_size()</> + to provide a more user-friendly interface to the + <function>pg_relation_size()</> function (Bernd Helmle) + </para> + </listitem> + + <listitem> + <para> + Add <function>has_sequence_privilege()</> for sequence permission + checking (Abhijit Menon-Sen) + </para> + </listitem> + + <listitem> + <para> + Have information schema properly display date type octet lengths + (Peter) + </para> + + <para> + The reported length is now the maximum octet length; previously, + a huge value was reported. + </para> + </listitem> + + <listitem> + <para> + Speed up information schema privilege views (Joachim Wieland) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Function and Trigger Creation</title> + <itemizedlist> + + <listitem> + <para> + Implement anonymous functions using the <command>DO</> statement + (Petr Jelinek, Joshua Tolley, Hannu Valtonen) + </para> + + <para> + This allows execution of server-side code without the need to create + a new function and execute it. + </para> + </listitem> + + <listitem> + <para> + Allow SQL-compliant per-column triggers (Itagaki Takahiro) + </para> + + <para> + Such triggers are fired only if the specified columns are affected + by the query, e.g. in <command>UPDATE</>'s <literal>SET</> list. + information_schema now also shows this information. + </para> + </listitem> + + <listitem> + <para> + Add <literal>WHERE</> clause to <command>CREATE TRIGGER</> to + allow control over whether a trigger is fired (Takahiro Itagaki) + </para> + + <para> + While a check can be performed inside the trigger, doing it in an + external <literal>WHERE</> clause has performance benefits. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Server-Side Languages</title> + + <itemizedlist> + + <listitem> + <para> + Add the <literal>OR REPLACE</> clause to <command>CREATE + LANGUAGE</> (Tom) + </para> + + <para> + This is helpful to optionally install a language if it does not + already exist, and is particularly helpful now that PL/pgSQL is + installed by default. + </para> + </listitem> + + </itemizedlist> + + <sect5> + <title>PL/PgSQL Server-Side Language</title> + + <itemizedlist> + + <listitem> + <para> + Install server-side language PL/pgSQL by default (Bruce) + </para> + </listitem> + + <listitem> + <para> + Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule) + </para> + </listitem> + + <listitem> + <para> + Allow <literal>IN</> parameters to be assigned values within + PL/pgSQL functions (Steve Prentice) + </para> + </listitem> + + <listitem> + <para> + Improve error location reporting in PL/pgSQL (Tom) + </para> + </listitem> + + <listitem> + <para> + Have PL/pgSQL use the main lexer, rather than a custom version (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect5> + + <sect5> + <title>PL/pgSQL Cursors</title> + <itemizedlist> + + <listitem> + <para> + Add count and <literal>ALL</> options to <command>MOVE + FORWARD</>/<literal>BACKWARD</> in PL/pgSQL (Pavel Stehule) + </para> + </listitem> + + <listitem> + <para> + Allow PL/pgSQL's <literal>WHERE CURRENT OF</> to use a cursor + variable (Tom) + </para> + </listitem> + + <listitem> + <para> + Add PL/pgSQL's <command>OPEN cursor FOR EXECUTE</> to use parameters + (Pavel Stehule, Itagaki Takahiro) + </para> + + <para> + This is accomplished with a new <literal>USING</> clause. + </para> + </listitem> + + </itemizedlist> + + </sect5> + + <sect5> + <title>PL/Perl Server-Side Language</title> + <itemizedlist> + + <listitem> + <para> + Add new PL/Perl functions: <function>quote_literal()</>, + <function>quote_nullable()</>, <function>quote_ident()</>, + <function>encode_bytea()</>, <function>decode_bytea()</>, + <function>looks_like_number()</>, <function>encode_array_literal()</>, + <function>encode_array_constructor()</> (Tim Bunce) + </para> + </listitem> + + <listitem> + <para> + Add server variable <varname>plperl.on_init</> to specify a PL/Perl + Perl initialization function (Tim Bunce) + </para> + + <para> + <varname>plperl.on_plperl_init</> and <varname>plperl.on_plperlu_init</> + are also available for trusted/untrusted-specific initialization. + </para> + </listitem> + + <listitem> + <para> + Improve error context support in PL/Perl (Alexey Klyukin) + </para> + </listitem> + + <listitem> + <para> + Support <command>END</> blocks in PL/Perl (Tim Bunce) + </para> + + <para> + <command>END</> blocks do not currently allow database access. + </para> + </listitem> + + <listitem> + <para> + Allow <command>use strict</> in PL/Perl (Tim Bunce) + </para> + </listitem> + + <listitem> + <para> + Allow <command>require</> in PL/Perl (Tim Bunce) + </para> + + <para> + This basically tests to see if the module is loaded, and if not, + generates an error. + </para> + </listitem> + + <listitem> + <para> + Allow <command>use feature</> in PL/Perl if Perl version 5.10 or + later is used (Tim Bunce) + </para> + </listitem> + + <listitem> + <para> + Verify that PL/Perl return values are valid in the server encoding + (Andrew) + </para> + </listitem> + + <listitem> + <para> + Improve PL/Perl code structure (Tim Bunce) + </para> + </listitem> + + <listitem> + <para> + PL/Perl subroutines are now given names (Tim Bunce) + </para> + + <para> + This is for the use of profiling and code coverage tools. DIDN'T + THEY HAVE NAMES BEFORE? + </para> + </listitem> + + <listitem> + <para> + PL/Perl no longer allows <application>Safe</> version 2.20 because + it is unsafe (Tim Bunce) + </para> + </listitem> + + </itemizedlist> + + </sect5> + + <sect5> + <title>PL/Python Server-Side Language</title> + <itemizedlist> + + <listitem> + <para> + Add Unicode support in PL/Python (Peter) + </para> + + <para> + Strings are automatically converted from/to the server encoding as + necessary. + </para> + </listitem> + + <listitem> + <para> + Improve <type>bytea</> support in PL/Python (Caleb Welton) + </para> + + <para> + <type>Bytea</> values passed into PL/Python now are represented as + binary, rather than the Postgres <type>bytea</> text format. Null + bytes are now also output properly from PL/Python. <type>Boolean</> + and <type>numeric</> value passing in PL/Python was also improved. + </para> + </listitem> + + <listitem> + <para> + Add array parameter/return support to PL/Python (Peter) + </para> + </listitem> + + <listitem> + <para> + Improve mapping of domains to Python base types in PL/Python (Peter) + </para> + </listitem> + + <listitem> + <para> + Add <application>Python</> 3 support to PL/Python (Peter) + </para> + + <para> + The new server-side language is called <literal>plpython3u</>. + </para> + </listitem> + + <listitem> + <para> + Improve error location and exception reporting in PL/Python (Peter) + </para> + </listitem> + + </itemizedlist> + + </sect5> + + </sect4> + + </sect3> + + <sect3> + <title>Client Applications</title> + <itemizedlist> + + <listitem> + <para> + Add <command>vacuumdb</> <option>--analyze-only</> option to only + analyze (Bruce) + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title><application>psql</></title> + <itemizedlist> + + <listitem> + <para> + Properly escape <application>psql</> variables and identifiers + (Pavel Stehule, Robert Haas) + </para> + + <para> + For example, <literal>:'var'</> will be escaped as a literal string, and + <literal>:"var"</> will be escaped as an SQL identifier. + </para> + </listitem> + + <listitem> + <para> + Ignore leading UTF-8-encoded Unicode byte-order marker in + <application>psql</> (Itagaki Takahiro) + </para> + + <para> + This is enabled when the client encoding is <acronym>UTF-8</>. + </para> + </listitem> + + <listitem> + <para> + Fix <command>psql --file -</> to properly honor + <option>--single-transaction</> (Bruce) + </para> + </listitem> + + <listitem> + <para> + Prevent overwriting of <application>psql</>'s command-line history + if two <application>psql</> sessions are run simultaneously (Tom) + </para> + </listitem> + + <listitem> + <para> + Improve <application>psql</>'s tab completion support (Itagaki + Takahiro) + </para> + </listitem> + + </itemizedlist> + + <sect5> + <title><application>psql</> Display</title> + <itemizedlist> + + <listitem> + <para> + Allow <application>psql</> to use fancy Unicode line-drawing + characters via <command>\pset linestyle unicode</> (Roger Leigh) + </para> + </listitem> + + <listitem> + <para> + Improve display of wrapped columns in <application>psql</> (Roger + Leigh) + </para> + + <para> + The previous format is available by using <command>\pset linestyle + old-ascii</>. + </para> + </listitem> + + </itemizedlist> + + </sect5> + + <sect5> + <title><application>psql</> <command>\d</> Commands</title> + <itemizedlist> + + <listitem> + <para> + Have <command>\d</> show child tables that inherit from the specified + parent (Damien Clochard) + </para> + + <para> + <command>\d</> shows only the number of child tables, while + <command>\d+</> shows the names of all child tables. + </para> + </listitem> + + <listitem> + <para> + Show definition of indexes in <command>\d index_name</> (Khee Chin) + </para> + + <para> + The definition is useful for expression indexes. + </para> + </listitem> + + <listitem> + <para> + In <application>psql</>, show the view definition only with <command>\d+</>, + not with <command>\d</> (Peter) + </para> + </listitem> + + </itemizedlist> + + </sect5> + </sect4> + + <sect4> + <title><application>pg_dump</></title> + <itemizedlist> + + <listitem> + <para> + Have <application>pg_dump</>/<application>pg_restore</> <option>--clean</> + also remove large objects (Itagaki Takahiro) + </para> + </listitem> + + <listitem> + <para> + Fix <application>pg_dump</> to properly dump large objects if + standard_conforming_strings is enabled (Tom) + </para> + + <para> + Large objects dumps now use hex format for output. (SWITCH DEFAULT + FOR BETA? TOM) + </para> + </listitem> + + <listitem> + <para> + Allow <application>pg_dump</> to dump comments attached to columns + of composite types (Taro Minowa (Higepon)) + </para> + </listitem> + + <listitem> + <para> + Have <application>pg_dump</> <option>--verbose</> output the + <application>pg_dump</> and server versions in text output mode (Jim + Cox, Tom) + </para> + + <para> + These were already present in custom output mode. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title><application>pg_ctl</></title> + <itemizedlist> + + <listitem> + <para> + Allow <application>pg_ctl</> to be safely used to start the + <application>postmaster</> at boot-time (Tom) + </para> + + <para> + Previously the <application>pg_ctl</> process could have been mistakenly + identified as a running <application>postmaster</> based on a stale + <application>postmaster</> lock file. + </para> + </listitem> + + <listitem> + <para> + Give <application>pg_ctl</> the ability to initialize the database + (like <application>initdb</>) (Zdenek Kotala) + </para> + </listitem> + + + </itemizedlist> + + </sect4> + + <sect4> + <title><application>libpq</></title> + <itemizedlist> + + <listitem> + <para> + Add new <application>libpq</> functions + <function>PQconnectdbParams()</> and <function>PQconnectStartParams()</> + (Guillaume Lelarge) + </para> + + <para> + These functions are similar to <function>PQconnectdb()</> and + <function>PQconnectStart()</> except they allow a null-terminated + array of connection options, rather than requiring all options to + be sent in a single string. + </para> + </listitem> + + <listitem> + <para> + Add <application>libpq</> functions <function>PQescapeLiteral()</> and + <function>PQescapeIdentifier()</> (Robert Haas) + </para> + + <para> + These functions return appropriately quoted and escaped literal + strings and identifiers. The caller is not required to pre-allocate + the string result, as is required by <function>PQescapeStringConn()</>. + </para> + </listitem> + + <listitem> + <para> + Add checking for a per-user service file (<filename>.pg_service.conf</>), + which is checked before the site-wide service file (Peter) + </para> + + <para> + The file <filename>.pg_service.conf</> is assumed to be in the + user's home directory. + </para> + </listitem> + + <listitem> + <para> + Properly report an error if the specified <application>libpq</> service + cannot be found (Peter) + </para> + </listitem> + + <listitem> + <para> + Issue a warning if the <filename>.pgpass</>-retrieved password fails + (Bruce) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title><application>ecpg</></title> + <itemizedlist> + + <listitem> + <para> + Add <acronym>SQLDA</> (SQL Descriptor Area) support to <application>ecpg</> + (Boszormenyi Zoltan) + </para> + </listitem> + + <listitem> + <para> + Add the <command>DESCRIBE</> [<literal>OUTPUT</>] statement to + <application>ecpg</> (Boszormenyi Zoltan) + </para> + </listitem> + + <listitem> + <para> + Add an <application>ecpg</> function to return the current transaction + status (Bernd Helmle) + </para> + </listitem> + + <listitem> + <para> + Add the <literal>string</> data type in <application>ecpg</> + Informix-compatibility mode (Zoltan Boszormenyi) + </para> + </listitem> + + <listitem> + <para> + Allow <application>ecpg</> to use <literal>new</> and <literal>old</> + variable names without restriction (Michael) + </para> + </listitem> + + <listitem> + <para> + Have <application>ecpg</> return zero for non-SQL3 data types (Michael) + </para> + + <para> + Previously it returned the negative of the data type <type>oid</>. + </para> + </listitem> + + </itemizedlist> + + <sect5> + <title><application>ecpg</> Cursors</title> + <itemizedlist> + + <listitem> + <para> + Add <application>ecpg</> out-of-scope cursor support in native mode + (Boszormenyi Zoltan) + </para> + + <para> + This allows <command>DECLARE</> to use variables that are not in + scope when <command>OPEN</> is called. This facility already existed + in <application>ecpg</> Informix-compatibility mode. + </para> + </listitem> + + <listitem> + <para> + Allow dynamic <application>ecpg</> cursor names (Boszormenyi Zoltan) + </para> + </listitem> + + <listitem> + <para> + Allow <application>ecpg</> to use noise words <literal>FROM</> and + <literal>IN</> in <command>FETCH</> and <command>MOVE</> (Zoltan + Boszormenyi) + </para> + </listitem> + + </itemizedlist> + + </sect5> + + </sect4> + + </sect3> + + <sect3> + <title>Build Options</title> + <itemizedlist> + + <listitem> + <para> + Enable client thread safety by default (Bruce) + </para> + + <para> + Thread-safe builds can be disabled with <application>configure</> + <option>--disable-thread-safety</>. + </para> + </listitem> + + <listitem> + <para> + Add a compile-time option to allow the Linux out-of-memory killer + to kill backends (Alex Hunsaker, Tom) + </para> + + <para> + Now that <filename>/proc/self/oom_adj</> allows disabling of the + <productname>Linux</> out-of-memory (<acronym>OOM</>) killer for the + postmaster and its children, the new compile-time option + <literal>-DLINUX_OOM_ADJ=0</> allows the killer to be enabled for + <application>postmaster</> children. <application>pg_config</> shows if + this flag was used during compilation. + </para> + </listitem> + + <listitem> + <para> + Use <productname>DocBook</> <acronym>XSL</> stylesheets for man page + building (Peter) + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title>Makefiles</title> + <itemizedlist> + + <listitem> + <para> + New <filename>Makefile</> targets <literal>world</>, + <literal>install-world</>, and <literal>installcheck-world</> (Andrew) + </para> + + <para> + These are similar to the existing <literal>all</>, <literal>install</>, + and <literal>installcheck</> targets, but they build <acronym>HTML</> + documentation, build and test <filename>/contrib</>, and test + server-side languages and <application>ecpg</>. + </para> + </listitem> + + <listitem> + <para> + Add data and documentation location control to <acronym>PGXS</> + Makefiles (Mark Cave-Ayland) + </para> + </listitem> + + <listitem> + <para> + Restructure the <acronym>HTML</> documentation build + <filename>Makefile</> rules (Peter) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>New Requirements</title> + <itemizedlist> + + <listitem> + <para> + Require <application>Autoconf</> 2.63 for building from source (Peter) + </para> + </listitem> + + <listitem> + <para> + Require <application>Flex</> 2.5.31 or later to build from source + (Tom) + </para> + </listitem> + + <listitem> + <para> + Require <application>Perl</> version 5.8 or greater to build the server + from a <acronym>CVS</> copy (John Naylor, Andrew) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Windows</title> + <itemizedlist> + + <listitem> + <para> + Add support for compiling on 64-bit <productname>Windows</> and running + in 64-bit mode (Tsutomu Yamada, Magnus) + </para> + + <para> + This allows for large shared memory sizes on <productname>Windows</>. + </para> + </listitem> + + <listitem> + <para> + Allow server builds using <productname>Visual Studio 2008</> (Magnus) + </para> + </listitem> + + <listitem> + <para> + Allow multi-processor compilation using <productname>Microsoft Visual + C</> (Magnus) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Source Code</title> + <itemizedlist> + + <listitem> + <para> + Distribute documentation in a proper directory tree, rather than + as tar archive files inside the main distribution tarball (Peter) + </para> + + <para> + For example, the <acronym>HTML</> documentation is now in + <filename>doc/src/sgml/html</>; the manual pages are packaged + similarly. + </para> + </listitem> + + <listitem> + <para> + Enable the server lexer to be reentrant (Tom) + </para> + + <para> + This was needed for use of the lexer by PL/pgSQL. + </para> + </listitem> + + <listitem> + <para> + Improve speed of memory allocation (Tom, Greg Stark) + </para> + </listitem> + + <listitem> + <para> + Add system columns to better document the use of indexes for constraint + enforcement (Tom) + </para> + </listitem> + + <listitem> + <para> + Allow multiple actions to be communicated using the same operating + system signal (Fujii Masao) + </para> + + <para> + This allows improved backend communication as new features are + added. + </para> + </listitem> + + <listitem> + <para> + Improve source code test coverage, including /contrib, PL/Python, + and PL/Perl (Peter, Andrew) + </para> + </listitem> + + <listitem> + <para> + Remove the use of flat files for system table bootstrapping (Tom, + Alvaro) + </para> + + <para> + This also improves performance when using millions of users and + databases. + </para> + </listitem> + + <listitem> + <para> + Improve the ability to translate <application>psql</> strings + (Peter) + </para> + </listitem> + + <listitem> + <para> + Reduce the length of some file names so file paths are less than + 100 characters (Tom) + </para> + + <para> + Some decompression programs have problems with long file names. + </para> + </listitem> + + <listitem> + <para> + Tighten input requirements for <type>int2</> vector input (Caleb + Welton) + </para> + </listitem> + + <listitem> + <para> + Properly remove the few remaining personal source code copyright + entries (Bruce) + </para> + + <para> + The personal copyright notices were insignificant but the community + occasionally had to answer questions about them. + </para> + </listitem> + + <listitem> + <para> + Add a new <literal>ERRCODE_INVALID_PASSWORD</> <literal>SQLSTATE</> error + code (Bruce) + </para> + </listitem> + + </itemizedlist> + + <sect4> + <title>Feature Support</title> + <itemizedlist> + + <listitem> + <para> + Use a more modern <acronym>API</> for <application>Bonjour</> (Tom) + </para> + + <para> + Bonjour now requires <productname>OS X</> 10.3 or later. + </para> + </listitem> + + <listitem> + <para> + Add processor test-and-test lock support for the <productname>SuperH</> + architecture (Nobuhiro Iwamatsu) + </para> + </listitem> + + <listitem> + <para> + Allow non-<application>GCC</> compilers to use inline functions if + they support them (Kurt Harriman) + </para> + </listitem> + + <listitem> + <para> + Remove support for platforms that don't have a working 64-bit + integer data types (Tom) + </para> + + <para> + It is believed all supported platforms have working 64-bit integer + data types. + </para> + </listitem> + + + </itemizedlist> + + </sect4> + + <sect4> + <title>Server Programming</title> + <itemizedlist> + + <listitem> + <para> + Allow use of <productname>C++</> functions in backend code (Kurt + Harriman, Peter) + </para> + + <para> + This removes keyword conflicts that previously made <productname>C++</> + usage difficult in backend code. <literal>extern "C" { }</> might still + be necessary. + </para> + </listitem> + + <listitem> + <para> + Add <function>AggCheckCallContext()</> for use in detecting if a + <productname>C</> function is being called as an aggregate (Hitoshi + Harada) + </para> + </listitem> + + <listitem> + <para> + Require <function>fastgetattr()</> and <function>heap_getattr()</> + backend macros to use a non-NULL fourth argument (Robert Haas) + KEEP? + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Server Hooks</title> + <itemizedlist> + + <listitem> + <para> + Add parser hooks to access column and parameter references in + queries (Tom) + </para> + </listitem> + + <listitem> + <para> + Add a hook so loadable modules can control utility commands (Itagaki + Takahiro) + </para> + </listitem> + + <listitem> + <para> + Allow the calling of parser hooks from <acronym>SPI</> and cached + plans (Tom) + </para> + </listitem> + + </itemizedlist> + + </sect4> + + <sect4> + <title>Binary Upgrade Support</title> + <itemizedlist> + + <listitem> + <para> + Add support for preservation of all <structname>relfilenodes</>, for + use during binary upgrades (Bruce) + </para> + </listitem> + + <listitem> + <para> + Add support for binary upgrades to preserve <structname>pg_type</> + and <structname>pg_enum</> <type>oids</> (Bruce) + </para> + + <para> + This is needed to allow binary upgrades of user-defined composite + types, arrays, and enums (enumerated types). + </para> + </listitem> + + <listitem> + <para> + Move tablespace data directories into their own + <productname>PostgreSQL</> version-specific subdirectory (Bruce) + </para> + + <para> + This simplifies binary upgrades. + </para> + </listitem> + + </itemizedlist> + + </sect4> + + </sect3> + + <sect3> + <title>Contrib</title> + <itemizedlist> + + <listitem> + <para> + Add multi-threaded option (<option>-j</>) to + <filename>/contrib/pgbench</> (Itagaki Takahiro) + </para> + + <para> + This allows multiple <acronym>CPU</>s to be used for pgbench tests. + </para> + </listitem> + + <listitem> + <para> + Add <command>\shell</> and <command>\setshell</> meta commands to + <filename>/contrib/pgbench</> (Michael Paquier) + </para> + </listitem> + + <listitem> + <para> + New features for <filename>/contrib/dict_xsyn</> (Sergey Karpov) + </para> + + <para> + The new options are <literal>matchorig</>, <literal>matchsynonyms</>, + and <literal>keepsynonyms</>. + </para> + </listitem> + + <listitem> + <para> + Add full text dictionary <filename>/contrib/unaccent</> (Teodor) + </para> + + <para> + This filter dictionary removes accents from tokens. + </para> + </listitem> + + <listitem> + <para> + Add <function>dblink_get_notify()</> to <filename>/contrib/dblink</> + (Marcus Kempe) + </para> + + <para> + This allows async notifications in <productname>dblink</>. + </para> + </listitem> + + <listitem> + <para> + Greatly increase <filename>/contrib/hstore</>'s length limit and add + btree and hash abilities so <literal>GROUP BY</> and + <literal>DISTINCT</> operations are possible (Andrew Gierth) + </para> + + <para> + New functions and operators were also added. + </para> + </listitem> + + <listitem> + <para> + Add <filename>/contrib/passwordcheck</> which can check the strength of + assigned passwords (Laurenz Albe) + </para> + + <para> + The source code of this module should be modified to implement + site-specific password policies. + </para> + </listitem> + + <listitem> + <para> + Add query text to <filename>/contrib/auto_explain</> output (Andrew) + </para> + </listitem> + + <listitem> + <para> + Add buffer access counters to <filename>/contrib/pg_stat_statements</> + (Itagaki Takahiro) + </para> + </listitem> + + <listitem> + <para> + Update <filename>/contrib/start-scripts/linux</> to use + <filename>/proc/self/oom_adj</> to disable the <productname>Linux</> + out-of-memory (<acronym>OOM</>) killer (Alex Hunsaker, Tom) + </para> + </listitem> + + </itemizedlist> + + </sect3> + </sect2> +</sect1> + + +<sect1 id="release-9-0-alpha"> <title>Release 9.0alpha4</title> <sect2> <title>Overview</title>