mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-25 06:47:19 +02:00
4033 lines
123 KiB
Plaintext
4033 lines
123 KiB
Plaintext
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.7 2010/03/21 02:24:29 momjian Exp $ -->
|
|
|
|
|
|
<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 <link
|
|
linkend="posix-syntax-details"><literal>advanced</></link>
|
|
(e.g. Perl-regex compatible) for many years (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
When querying a <link linkend="ddl-inherit">parent table</link>,
|
|
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 conversion truncate rather than
|
|
round when using float-based dates/times (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>String Handling</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link linkend="functions-similarto-regexp"><literal>SIMILAR
|
|
TO</></link> 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 <link
|
|
linkend="functions-string-sql"><function>substring()</></link>
|
|
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 <link
|
|
linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
|
|
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 <link
|
|
linkend="plpgsql-declaration-parameters"><literal>ALIAS</></link>,
|
|
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
|
|
<link linkend="hot-standby">documentation</link>.
|
|
</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 <link
|
|
linkend="streaming-replication">documentation</link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</></link>
|
|
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
|
|
<link linkend="SQL-ALTERTABLESPACE"><command>ALTER TABLESPACE
|
|
... SET/RESET</></link> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <link
|
|
linkend="SQL-TRUNCATE"><command>TRUNCATE</></link> 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 <link linkend="queries-join">outer
|
|
joins</link> (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><link linkend="geqo">GEQO</link></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 <xref
|
|
linkend="guc-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 <link linkend="SQL-ANALYZE"><command>ANALYZE</></link>
|
|
to support inheritance-tree statistics (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for partitioned tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <link linkend="routine-vacuuming">autovacuum</link>
|
|
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 <link
|
|
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
|
|
(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 <link
|
|
linkend="auth-radius"><acronym>RADIUS</></link> (Remote
|
|
Authentication Dial In User Service) authentication
|
|
(Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="auth-ldap"><acronym>LDAP</></link>
|
|
(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 <link
|
|
linkend="auth-pg-hba-conf"><literal>samehost</></link>
|
|
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 <link
|
|
linkend="libpq-connect-application-name">application
|
|
name</link>, which is displayed in
|
|
<structname>pg_stat_activity</> (Dave Page)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an SQL state option (<literal>%e</>) to <link
|
|
linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
|
|
(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 <link
|
|
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</></link>
|
|
to reset the cluster-wide shared statistics of the
|
|
bgwriter (Greg Smith)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</></link>
|
|
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 <link
|
|
linkend="sql-alterrole-title">database/role</link>
|
|
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 <link
|
|
linkend="guc-bonjour"><varname>bonjour</></link>, 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 <link linkend="SQL-FOR-UPDATE-SHARE"><command>SELECT
|
|
FOR UPDATE</>/<literal>SHARE</></link> 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 <link
|
|
linkend="SQL-LIMIT"><literal>LIMIT</>/<literal>OFFSET</></link>
|
|
syntax in the same query (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase the supported frame options in <link
|
|
linkend="SQL-WINDOW">window functions</link> (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>
|
|
|
|
<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>
|
|
<title>Unicode Strings</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add Unicode surrogate pair (dual 16-bit) support to
|
|
<link
|
|
linkend="sql-syntax-strings-uescape"><literal>U&</></link>
|
|
strings and identifiers (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow Unicode escapes in <link
|
|
linkend="sql-syntax-strings-escape"><literal>E'...'</></link>
|
|
strings (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up <link linkend="SQL-CREATEDATABASE"><command>CREATE
|
|
DATABASE</></link> by deferring flushes to disk (Andres
|
|
Freund, Greg Stark)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-COMMENT">comments</link> 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 <link
|
|
linkend="SQL-CREATETYPE-enum">enumerate types</link> 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
|
|
the 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 <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
|
|
DEFAULT PRIVILEGES</></link> 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><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></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>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Constraints</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
|
|
unique constraints</link> (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 <link
|
|
linkend="SQL-CREATETABLE-description"><command>CREATE
|
|
TABLE CONSTRAINT ... EXCLUDE</></link> 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 <link
|
|
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
|
|
IN SCHEMA</></link> 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 <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
|
|
linkend="SQL-NOTIFY"><command>NOTIFY</></link> 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 <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
|
|
to pass an optional string to listeners (Joachim Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-CLUSTER"><command>CLUSTER</></link>
|
|
on all system tables (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Global system tables still cannot be clustered.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-COPY"><command>COPY</></link></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><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
|
|
activity (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
log_*_stats log output, e.g. <xref
|
|
linkend="runtime-config-statistics-monitor">, 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><link linkend="SQL-VACUUM"><command>VACUUM</></link></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
|
|
<link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></link> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-REINDEX"><command>REINDEX</></link>
|
|
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 <link
|
|
linkend="datatype-binary"><type>bytea</></link> strings
|
|
(Peter)
|
|
</para>
|
|
|
|
<para>
|
|
The variable <xref linkend="guc-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 <xref linkend="guc-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><link linkend="textsearch">Full Text Search</link></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 <link
|
|
linkend="functions-posix-regexp">regular expression</link>
|
|
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 <link
|
|
linkend="functions-formatting"><function>to_char()</></link>
|
|
scientific notation output (<link
|
|
linkend="functions-formatting-numeric-table"><literal>'EEEE'</></link>)
|
|
(Pavel Stehule, Brendan Jurd)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <function>to_char()</> honor <link
|
|
linkend="functions-formatting-datetimemod-table"><literal>'FM'</></link>
|
|
(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 <link
|
|
linkend="functions-geometry-op-table">"overlap"</link>
|
|
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 <link
|
|
linkend="functions-aggregate-table"><function>string_agg()</></link>
|
|
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 <link
|
|
linkend="functions-binarystring-other"><function>get_bit()</></link>
|
|
and <function>set_bit()</> functions for <type>bit</>
|
|
strings, mirroring those for <type>bytea</> (Leonardo
|
|
F)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <link
|
|
linkend="functions-string-sql"><function>OVERLAY()</></link>
|
|
(replace) for <type>bit</> strings and <type>bytea</>
|
|
(Leonardo F)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Object Information Functions</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-admin-dbsize"><function>pg_table_size()</></link>
|
|
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 <link
|
|
linkend="functions-info-access-table"><function>has_sequence_privilege()</></link>
|
|
for sequence permission checking (Abhijit Menon-Sen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <link linkend="information-schema">information
|
|
schema</link> 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 <link
|
|
linkend="SQL-DO"><command>DO</></link> 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 <link
|
|
linkend="SQL-CREATETRIGGER">per-column triggers</link>
|
|
(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 <link
|
|
linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
|
|
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>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <literal>OR REPLACE</> clause to <link
|
|
linkend="SQL-CREATELANGUAGE"><command>CREATE LANGUAGE</></link>
|
|
(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>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql">PL/PgSQL</link> 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>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql-cursors">PL/pgSQL Cursors</link></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>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new PL/Perl functions: <link
|
|
linkend="plperl-utility-functions"><function>quote_literal()</></link>,
|
|
<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 <xref linkend="guc-plperl-on-init"> to specify a PL/Perl
|
|
Perl initialization function (Tim Bunce)
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="guc-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>
|
|
|
|
<para>
|
|
This can be enabled with the server variable <xref
|
|
linkend="guc-plperl-use-strict">.
|
|
</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>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpython">PL/Python</link> 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 <link linkend="plpython-arrays">array parameter/return
|
|
support</link> 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 <link
|
|
linkend="plpython-python23"><literal>plpython3u</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve error location and exception reporting in PL/Python (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="APP-VACUUMDB"><command>vacuumdb</></link>
|
|
<option>--analyze-only</> option to only analyze (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly escape <application>psql</> <link
|
|
linkend="APP-PSQL-variables">variables</link> 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 <link
|
|
linkend="R1-APP-PSQL-3"><option>--single-transaction</></link>
|
|
(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</> <link
|
|
linkend="APP-PSQL-meta-commands"><command>\d</></link>
|
|
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><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <application>pg_dump</>/<application>pg_restore</>
|
|
<link linkend="pg-dump-options"><option>--clean</></link>
|
|
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</> <link
|
|
linkend="pg-dump-options"><option>--verbose</></link>
|
|
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><link
|
|
linkend="app-pg-ctl"><application>pg_ctl</></link></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>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Development Tools</></title>
|
|
|
|
<sect4>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <application>libpq</> functions
|
|
<link
|
|
linkend="libpq-connect"><function>PQconnectdbParams()</></link>
|
|
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 <link
|
|
linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</></link>
|
|
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 (<link
|
|
linkend="libpq-pgservice"><filename>.pg_service.conf</></link>),
|
|
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 <link
|
|
linkend="libpq-pgpass"><filename>.pgpass</></link>-retrieved
|
|
password fails (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="ecpg"><application>ecpg</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="ecpg-descriptors"><acronym>SQLDA</></link>
|
|
(SQL Descriptor Area) support to <application>ecpg</>
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</>
|
|
[<literal>OUTPUT</>]</link> statement to <application>ecpg</>
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <application>ecpg</> <link
|
|
linkend="ecpg-library">function</link> 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 <link
|
|
linkend="configure"><application>configure</></link>
|
|
<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 <link
|
|
linkend="linux-memory-overcommit"><literal>-DLINUX_OOM_ADJ=0</></link>
|
|
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 <link
|
|
linkend="build"><literal>world</></link>,
|
|
<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 <link
|
|
linkend="xfunc-c-pgxs"><acronym>PGXS</></link> 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 <link
|
|
linkend="install-win32-full">64-bit
|
|
<productname>Windows</></link> 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 <link
|
|
linkend="install-win32-full"><productname>Visual Studio
|
|
2008</></link> (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>
|
|
Add a new <link
|
|
linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</></link>
|
|
<literal>SQLSTATE</> error code (Bruce)
|
|
</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>
|
|
|
|
</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 <link
|
|
linkend="xaggr"><function>AggCheckCallContext()</></link>
|
|
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 <link
|
|
linkend="catalog-pg-class"><structname>relfilenodes</></link>,
|
|
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 <link
|
|
linkend="pgbench"><filename>/contrib/pgbench</></link>
|
|
(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 <link
|
|
linkend="pgbench"><filename>/contrib/pgbench</></link>
|
|
(Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New features for <link
|
|
linkend="dict-xsyn"><filename>/contrib/dict_xsyn</></link>
|
|
(Sergey Karpov)
|
|
</para>
|
|
|
|
<para>
|
|
The new options are <literal>matchorig</>, <literal>matchsynonyms</>,
|
|
and <literal>keepsynonyms</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add full text dictionary <link
|
|
linkend="unaccent"><filename>/contrib/unaccent</></link>
|
|
(Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
This filter dictionary removes accents from tokens.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link>
|
|
to <filename>/contrib/dblink</> (Marcus Kempe)
|
|
</para>
|
|
|
|
<para>
|
|
This allows async notifications in <productname>dblink</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Greatly increase <link
|
|
linkend="hstore"><filename>/contrib/hstore</></link>'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 <link
|
|
linkend="passwordcheck"><filename>/contrib/passwordcheck</></link>
|
|
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 <link
|
|
linkend="auto-explain"><filename>/contrib/auto_explain</></link>
|
|
output (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add buffer access counters to <link
|
|
linkend="pgstatstatements"><filename>/contrib/pg_stat_statements</></link>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update <link
|
|
linkend="server-start"><filename>/contrib/start-scripts/linux</></link>
|
|
to use <filename>/proc/self/oom_adj</> to disable the
|
|
<link linkend="linux-memory-overcommit"><productname>Linux</>
|
|
out-of-memory</link> (<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>
|
|
<para>
|
|
PostgreSQL alpha releases are snapshots of development code. They
|
|
are intended to preview and test upcoming features and to provide
|
|
the possibility for early feedback. They should not be used in
|
|
production installations or active development projects. While the
|
|
PostgreSQL code is continuously subject to a number of automated
|
|
and manual tests, alpha releases might have serious bugs. Also
|
|
features may be changed incompatibly or removed at any time during
|
|
the development cycle.
|
|
</para>
|
|
<para>
|
|
The development cycle of a PostgreSQL major release alternates
|
|
between periods of development and periods of integration work,
|
|
called commit fests, normally one month each. Alpha releases are
|
|
planned to be produced at the end of every commit fest, thus every
|
|
two months. Since the first commit fest starts within a month from
|
|
the beginning of development altogether, early alpha releases are
|
|
not indicative of the likely feature set of the final release.
|
|
</para>
|
|
<para>
|
|
The release notes below highlight user visible changes and new
|
|
features. There are normally numerous bug fixes and performance
|
|
improvements in every new snapshot of PostgreSQL, and it would be
|
|
too bulky to attempt to list them all. Note that many bug fixes are
|
|
also backported to stable releases of PostgreSQL, and you should be
|
|
using those if you are looking for bug-fix-only upgrades for your
|
|
current installations.
|
|
</para>
|
|
<para>
|
|
The release notes are cumulative over all alpha releases. Items
|
|
that are new in the latest alpha release
|
|
are <emphasis>emphasized</emphasis>.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Migration</title>
|
|
<para>
|
|
To upgrade from any release to an alpha release or from an alpha
|
|
release to any other release will most likely require a
|
|
dump/restore upgrade procedure. It may happen that this is not
|
|
necessary in particular cases, but that is not verified beforehand.
|
|
(The server will warn you in any case when a dump/restore is
|
|
necessary if you attempt to use it with an old data directory.)
|
|
Note, however, that the dump/restore upgrade procedure is expected
|
|
to work for alpha releases, and problems in this area should be
|
|
reported.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Testing</title>
|
|
<para>
|
|
The primary reason we release alphas is to get users to test new
|
|
features as early as possible. If you are interested in helping
|
|
with organized testing, please see
|
|
<ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
|
|
testing information page</ulink>.
|
|
</para>
|
|
</sect2>
|
|
<sect2>
|
|
<title>Changes</title>
|
|
<sect3>
|
|
<title>SQL Features</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Disallow comments on columns of relation types
|
|
other than tables, views, and composite types, that is,
|
|
sequences and TOAST tables.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Adjust naming of indexes and their columns. Index
|
|
expression columns are now named after the FigureColname
|
|
result for their expressions, rather than always being
|
|
"pg_expression_N". Digits are appended to this name if
|
|
needed to make the column name unique within the index.
|
|
Default names for indexes and associated constraints now
|
|
include the column names of all their columns, not only the
|
|
first one as in previous practice.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow the index name to be omitted in CREATE INDEX,
|
|
causing the system to choose an index name the same as it
|
|
would do for an unnamed index constraint. A necessary
|
|
side-effect is to promote the word CONCURRENTLY to a more
|
|
reserved status; it can't be a table/column/index name
|
|
anymore unless quoted.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Improve the handling of SET CONSTRAINTS commands by
|
|
having them search pg_constraint before searching pg_trigger.
|
|
This allows saner handling of corner cases.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Typed table feature; this adds the CREATE TABLE
|
|
name OF type command.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Tighten integrity checks on ALTER TABLE ... RENAME
|
|
COLUMN in inheritance hierarchies.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Replace the pg_listener-based LISTEN/NOTIFY
|
|
mechanism with an in-memory queue. In addition, add support
|
|
for a "payload" string to be passed along with each notify
|
|
event.</emphasis>
|
|
</para>
|
|
<para>
|
|
<emphasis>This implementation should be significantly more
|
|
efficient than the old one, and is also more compatible with
|
|
Hot Standby usage. There is not yet any facility for HS
|
|
slaves to receive notifications generated on the master,
|
|
although such a thing is possible in future.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Have SELECT and CREATE TABLE AS queries return a
|
|
row count. While this is invisible in psql, other
|
|
interfaces, like libpq, make this value visible.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Extend the set of frame options supported for
|
|
window functions. This allows the frame to start from
|
|
CURRENT ROW (in either RANGE or ROWS mode), and it also adds
|
|
support for ROWS n PRECEDING and ROWS n FOLLOWING start and
|
|
end points.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add DO statement to support execution of procedural language
|
|
code without having to create a function for it.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support use of function argument names to identify which
|
|
actual arguments match which function parameters. The syntax
|
|
uses AS, for example funcname(value AS arg1, anothervalue AS
|
|
arg2).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Remove previously deprecated configuration
|
|
parameter add_missing_from. The system now always behaves as
|
|
though add_missing_from were off.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Performance and behavioral improvements in UPDATE,
|
|
DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
|
|
Fix various corner cases that could have resulted in duplicated output
|
|
rows. Set-returning functions are now prohibited in the
|
|
target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
|
|
propagate into a WITH query anymore.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
|
|
Previously, it could return fewer rows than the limit specified.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
|
|
to be checked to determine whether the trigger should be fired.
|
|
</para>
|
|
<para>
|
|
For BEFORE triggers this is mostly a matter of spec compliance; but
|
|
for AFTER triggers it can provide a noticeable performance
|
|
improvement, since queuing of a deferred trigger event and
|
|
re-fetching of the row(s) at end of statement can be
|
|
short-circuited if the trigger does not need to be fired.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add exclusion constraints, which generalize the concept of
|
|
uniqueness to support any indexable commutative operator, not just
|
|
equality. Two rows violate the exclusion constraint if
|
|
"row1.col OP row2.col" is TRUE for each of the columns in
|
|
the constraint.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support ORDER BY within aggregate function calls, at long last
|
|
providing a non-kluge method for controlling the order in which
|
|
values are fed to an aggregate function. At the same time eliminate
|
|
the old implementation restriction that DISTINCT was only supported
|
|
for single-argument aggregates.
|
|
</para>
|
|
<para>
|
|
Behavioral change: formerly, agg(DISTINCT x) dropped null values of
|
|
x unconditionally. Now, it does so only if the aggregate's transition
|
|
function is strict; otherwise nulls are treated as DISTINCT
|
|
normally would, i.e., you get one copy.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add SQL-compliant triggers on columns, which fire only if
|
|
certain columns are named in the UPDATE's SET list.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
|
|
ALL shortcut to allow users to make an exact copy of a table including
|
|
all options and features.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Define a new, more extensible syntax for COPY options
|
|
in order to support additional COPY options in the future.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Modify the definition of window-function PARTITION
|
|
BY and ORDER BY clauses so that their elements are always
|
|
taken as simple expressions over the query's input
|
|
columns. This fixes a bug.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix bug with nested WITH RECURSIVE statements.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add surrogate pair support for U& string and identifier
|
|
syntax.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add Unicode escapes in E'...' strings.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
DROP COLUMN and DROP CONSTRAINT now support an IF EXISTS clause so
|
|
that users can avoid fatal errors when running repeatable scripts.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
UNIQUE constraints can now be DEFERRABLE. This is primarily useful
|
|
for incremental updates of numerical keys, e.g. "ID = ID +
|
|
1"
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow parentheses around the query expression that follows a WITH
|
|
clause.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
INFORMATION_SCHEMA, a catalog of standard views of database
|
|
objects, has been updated to the SQL:2008 standard.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Change character_octet_length to more sensible values in
|
|
INFORMATION_SCHEMA.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow * as parameter for FORCE QUOTE for COPY CSV, so that all
|
|
columns will be quoted.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Performance</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Support "x IS NOT NULL" clauses as index-scan
|
|
conditions.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>When estimating the selectivity of an inequality
|
|
"column > constant" or "column < constant", and the
|
|
comparison value is in the first or last histogram bin or
|
|
outside the histogram entirely, try to fetch the actual
|
|
column min or max value using an index scan (if there is an
|
|
index on the column). If successful, replace the lower or
|
|
upper histogram bound with that value before carrying on with
|
|
the estimate. This limits the estimation error caused by
|
|
moving min/max values when the comparison value is close to
|
|
the min or max.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Generic implementation of red-black binary tree.
|
|
For now, only GIN uses it during index creation. Using
|
|
self-balanced tree greatly speeds up index creation in corner
|
|
cases with preordered data.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow rewriting forms of ALTER TABLE to skip WAL
|
|
logging.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Speed up INFORMATION_SCHEMA's privilege views.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make TRUNCATE do truncate-in-place when processing
|
|
a relation that was created or previously truncated in the
|
|
current (sub)transaction.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Implement "join removal" for cases where the inner side
|
|
of a left join is unique and is not referenced above the join. This should
|
|
speed up many ORM-generated and reporting tool queries.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Remove the use of the flat files pg_auth and
|
|
pg_database in order to improve performance. (Warning: pgbouncer
|
|
and possibly other tools currently suggest referring to the pg_auth
|
|
file for its user database. Such schemes will no longer work.)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
EXPLAIN allows output of plans in XML, JSON, or YAML format for automated
|
|
processing of explain plans by analysis or visualization tools.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
EXPLAIN now supports the use of generic options in EXPLAIN ( option
|
|
value, ... ) format, which permits the creation of additional
|
|
EXPLAIN options.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DISTINCT allows
|
|
users to manually tweak the number of distinct values estimated for
|
|
a column, to fix cases where ANALYZE estimates are incorrect.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make GEQO's planning deterministic by having it start from a
|
|
predictable random number seed each time.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Rewrite GEQO's gimme_tree function so that it always finds a legal
|
|
join sequence. Previously, it could have failed to produce a plan
|
|
in some cases.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Tweak TOAST code so that columns marked with MAIN storage strategy
|
|
are not forced out-of-line unless that is necessary to make the row
|
|
fit on a page. Previously, they were forced out-of-line if needed
|
|
to get the row down to the default target size (1/4th page).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Simplify the forms foo <> true and foo <> false to foo
|
|
= false and foo = true during query optimization.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Avoid per-send() system calls to manage SIGPIPE in libpq, if the
|
|
platform provides either sockopt(SO_NOSIGPIPE) or the MSG_NOSIGNAL
|
|
flag to send().
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Administration and Monitoring</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add the ability to store inheritance-tree
|
|
statistics in pg_statistic, and teach ANALYZE to compute such
|
|
stats for tables that have subclasses.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Revise pgstat's tracking of tuple changes to
|
|
improve the reliability of decisions about when to
|
|
auto-analyze. The previous code depended on n_live_tuples +
|
|
n_dead_tuples - last_anl_tuples, where all three of these
|
|
numbers could be bad estimates from ANALYZE itself. Even
|
|
worse, in the presence of a steady flow of HOT updates and
|
|
matching HOT-tuple reclamations, auto-analyze might never
|
|
trigger at all, even if all three numbers are exactly right,
|
|
because n_dead_tuples could hold steady.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Support ALTER TABLESPACE name SET/RESET (
|
|
tablespace_options ), currently supporting seq_page_cost and
|
|
random_page_cost as parameters.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>New faster implementation of VACUUM FULL. The old
|
|
idiom of using CLUSTER instead of VACUUM FULL for speed is
|
|
now obsolete.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add buffer access counters to
|
|
pg_stat_statements.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add some simple support and documentation for using
|
|
process-specific oom_adj settings to prevent the postmaster
|
|
from being OOM-killed on Linux systems.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Place tablespace directories in their own
|
|
subdirectory so pg_migrator can upgrade clusters without
|
|
renaming the tablespace directories.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Introduce Streaming Replication.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add pg_table_size() and pg_indexes_size() to
|
|
provide more user-friendly wrappers around the
|
|
pg_relation_size() function.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add pg_stat_reset_shared('bgwriter') to reset the
|
|
cluster-wide shared statistics of the bgwriter.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Replace ALTER TABLE ... SET STATISTICS DISTINCT
|
|
with a more general mechanism. Attributes can now have
|
|
options, just as relations and tablespaces do, and the
|
|
reloptions code is used to parse, validate, and store
|
|
them.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Fix longstanding gripe that we check for
|
|
0000000001.history at start of archive recovery, even when we
|
|
know it is never present.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Make standby server continuously retry restoring
|
|
the next WAL segment with restore_command, if the connection
|
|
to the primary server is lost. This ensures that the standby
|
|
can recover automatically, if the connection is lost for a
|
|
long time and standby falls behind so much that the required
|
|
WAL segments have been archived and deleted in the
|
|
master.</emphasis>
|
|
</para>
|
|
<para>
|
|
<emphasis>This also makes standby_mode useful without
|
|
streaming replication; the server will keep retrying
|
|
restore_command every few seconds until the trigger file is
|
|
found. That's the same basic functionality pg_standby
|
|
offers, but without the bells and whistles.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add functions to reset the statistics counter for a
|
|
single table/index or a single function.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Augment EXPLAIN output with more details on Hash
|
|
nodes.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Reindexing shared system catalogs is now fully
|
|
transactional and crash-safe.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow read-only connections during recovery, also
|
|
known as Hot Standby. This provides a built-in master-slave
|
|
replication solution.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Provide a parenthesized-options syntax for VACUUM, analogous to
|
|
that recently adopted for EXPLAIN. This will allow additional
|
|
options to be implemented in future without having to make them
|
|
fully-reserved keywords. The old syntax remains available for
|
|
existing options, however.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add support for an application_name parameter, which is displayed
|
|
in pg_stat_activity and recorded in log entries.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix longstanding problems in VACUUM caused by untimely
|
|
interruptions.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add YAML to list of EXPLAIN formats.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add a hook to let loadable modules get control at ProcessUtility
|
|
execution, and use it to extend contrib/pg_stat_statements to track
|
|
utility commands.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add a Boolean server configuration parameter
|
|
"bonjour" to control whether a Bonjour-enabled
|
|
build actually attempts to advertise itself via Bonjour.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
When reloading postgresql.conf, log what parameters actually
|
|
changed.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make it possibly to specify server configuration parameters
|
|
per user-database combination. Add a \drds command to psql to
|
|
display the settings.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow the collection of statistics on sequences.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Increase the maximum value of extra_float_digits to
|
|
3, and have pg_dump use that value when the backend is new
|
|
enough to allow it, because it is possible to need 3 extra
|
|
digits for float4 values (but not for float8 values).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add the ability to include the SQLSTATE error code of any error
|
|
messages in the PostgreSQL activity log with the new
|
|
log_line_prefix placeholder %e.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Show the exact value being complained of in
|
|
unique-constraint-violation error messages, including unique-index
|
|
build failures.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Security</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add support for RADIUS authentication.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
When querying a table with child tables, do not check permissions
|
|
on the child tables, only on the parent table. The old behavior was
|
|
found to be useless and confusing in virtually all cases, and also
|
|
contrary to the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add a hook to CREATE/ALTER ROLE to allow an external module to
|
|
check the strength of database passwords, and create a sample
|
|
implementation of such a hook as a new contrib module
|
|
"passwordcheck".
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add large object access control.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow LDAP authentication to operate in search+bind
|
|
mode, meaning it does a search for the user in the directory
|
|
first, and then binds with the DN found for this user. This
|
|
allows for LDAP logins in scenarios where the DN of the user
|
|
cannot be determined simply by prefix and suffix, such as the
|
|
case where different users are located in different
|
|
containers. The old way of authentication can be
|
|
significantly faster, so it's kept as an option.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add ALTER DEFAULT PRIVILEGES command, which allows
|
|
users to adjust the privileges that will be applied to
|
|
subsequently-created objects.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
|
|
This makes it easier to manage permissions on database objects.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support "samehost" and "samenet" specifications
|
|
in pg_hba.conf. This allows users with dynamic server addresses to run
|
|
PostgreSQL without frequently modifying pg_hba.conf.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
New has_sequence_privilege() functions allow you to check sequence
|
|
privileges for a given ROLE.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Built-In Functions</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Fix 3-parameter form of bit substring() to throw
|
|
error for negative length, as required by SQL
|
|
standard.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add get_bit/set_bit functions for bit strings,
|
|
paralleling those for bytea, and implement OVERLAY() for bit
|
|
strings and bytea.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add string_agg aggregate functions. The
|
|
one-argument version concatenates the input values into a
|
|
string. The two-argument version also does the same thing,
|
|
but inserts delimiters between elements.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Honor to_char() "FM" specification in YYY, YY, and
|
|
Y; it was already honored by YYYY.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Remove configuration parameter regex_flavor. It is now always
|
|
"advanced".
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Teach the regular expression functions to do case-insensitive
|
|
matching and locale-dependent character classification properly
|
|
when the database encoding is UTF8. This previously only worked
|
|
correctly for single-byte encodings. It is still broken for other
|
|
multibyte encodings.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support POSIX-compatible interpretation of ? as well as {m,n}
|
|
and related constructs in SIMILAR TO, per SQL:2008.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
The to_char() formatting functions now supports EEEE (scientific
|
|
notation).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Use floor() not rint() when reducing precision of fractional
|
|
seconds in timestamp_trunc, timestamptz_trunc, and interval_trunc()
|
|
for the float-datetime case. This improves accuracy of time
|
|
calculations.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix ancient bug in handling of to_char() modifier 'TH', when used
|
|
with HH.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow enums to be created with zero labels, for use
|
|
during binary upgrade.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
When doing "ARRAY[...]::domain", where domain is a domain
|
|
over an array type, we need to check domain constraints. Regression
|
|
introduced in 8.4.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix integer-to-bit-string conversions to handle the first
|
|
fractional byte correctly when the output bit width is wider than
|
|
the given integer by something other than a multiple of 8 bits.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix encoding handling in binary input function of xml type.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Tighten binary receive functions so that they reject values
|
|
that the text input functions don't accept either.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
New hex-string input and output format options for type bytea. Hex
|
|
output format is enabled by default, which is an incompatible
|
|
change. See the new bytea_output parameter if you need to restore
|
|
compatibility.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Adds prefix support for text search synonym dictionary, allowing
|
|
creation of synonyms on partial matches.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Server Tools</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
initdb now selects the encoding SQL_ASCII when the locale specifies
|
|
US-ASCII. This case previously failed.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add init[db] option to pg_ctl.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
It is now reasonably safe to use pg_ctl to start
|
|
the postmaster from a boot-time script.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
pg_dump/pg_restore --clean now drops large objects.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Modify parallel pg_restore ordering logic to avoid a potential
|
|
O(N^2) slowdown for some complex databases.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>libpq</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add user-specific .pg_service.conf file.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add new escaping functions PQescapeLiteral and
|
|
PQescapeIdentifier.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Introduce two new libpq connection functions,
|
|
PQconnectdbParams and PQconnectStartParams, which are
|
|
analogous to PQconnectdb and PQconnectStart respectively, but
|
|
accept two NULL-terminated arrays, keywords and values,
|
|
rather than conninfo strings. This avoids the need to build
|
|
the conninfo string in cases where it might be inconvenient
|
|
to do so.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Throw error when a specified connection service name is not
|
|
found in pg_service.conf, instead of ignoring it.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make libpq reject non-numeric and out-of-range port numbers with a
|
|
suitable error message.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>psql</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow psql variables to be interpolated with
|
|
literal or identifier escaping.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
In psql, show view definition only with \d+, not with \d.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
In psql, ignore UTF-8-encoded Unicode byte-order mark at the
|
|
beginning of a file if the client encoding is UTF-8.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Improve psql's tabular display of wrapped-around data by inserting
|
|
markers in the formerly-always-blank columns just to left and right
|
|
of the data. "pset linestyle old-ascii" is added to make
|
|
the previous behavior available if anyone really wants it.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Simplify psql's new linestyle behavior to default to
|
|
linestyle=ascii all the time, rather than hoping we can tell
|
|
whether the terminal supports UTF-8 characters.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Implement significantly saner behavior when two or
|
|
more psql sessions overlap in their use of the history file.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add "pset linestyle ascii/unicode" option to psql,
|
|
allowing our traditional ASCII-art style of table output to
|
|
be upgraded to use Unicode box drawing characters if
|
|
desired.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Have \d show child tables that inherit from the specified parent
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
psql now shows the index methods in \di
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Procedural Languages</title>
|
|
<sect4>
|
|
<title>PL/pgSQL</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add "USING expressions" option to PL/pgSQL's OPEN
|
|
cursor FOR EXECUTE.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL is installed by default.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Remove PL/pgSQL's RENAME declaration, which has
|
|
bizarre and mostly nonfunctional behavior, and is so little
|
|
used that no one has been interested in fixing it. To ensure
|
|
that possible uses are covered, remove the ALIAS declaration's
|
|
arbitrary restriction that only $n identifiers can be
|
|
aliased.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
The PL/pgSQL parser and scanner were reworked to behave much more
|
|
sanely:
|
|
</para>
|
|
<para>
|
|
A variable reference will only be recognized where it can validly
|
|
go, ie, a place where a column value or parameter would be legal,
|
|
instead of the former behavior that would replace any textual match
|
|
including table names and column aliases (leading to syntax errors
|
|
later on).
|
|
</para>
|
|
<para>
|
|
When a name could refer either to a PL/pgSQL variable or a
|
|
table column, PL/pgSQL formerly always assumed the variable was
|
|
meant, sometimes resulting in surprising behavior. Now, PL/pgSQL
|
|
can assume the variable is meant, or assume the table column is
|
|
meant, or throw an error in ambiguous cases. For safety the default
|
|
is to throw error. To configure this see <link
|
|
linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
|
|
</para>
|
|
<para>
|
|
Error reporting is much nicer: it no longer shows edited
|
|
versions of statements that look significantly different from what
|
|
you wrote.
|
|
</para>
|
|
<para>
|
|
Note that this change affects the set of keywords that are
|
|
reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
|
|
variable). Now, all keywords shown as reserved in <link
|
|
linkend="sql-keywords-appendix">Appendix C</link> are reserved for
|
|
PL/pgSQL purposes as well. However, many PL/pgSQL-only keywords
|
|
that were formerly treated as reserved no longer are. As in regular
|
|
SQL, you can double-quote a variable's name if you want to use a
|
|
name that conflicts with a reserved keyword.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL IN parameters now accept value assignments.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
|
|
MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL functions can now better cope with row types
|
|
containing dropped columns.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>PL/Perl</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add utility functions to PL/Perl: quote_literal,
|
|
quote_nullable, quote_ident, encode_bytea, decode_bytea,
|
|
looks_like_number, encode_array_literal,
|
|
encode_array_constructor.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add plperl.on_plperl_init, plperl.on_plperlu_init,
|
|
and plperl.on_init settings for startup code.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Allow (ineffective) use of "require". If the
|
|
required module is not already loaded then it dies. So "use
|
|
strict;" now works in PL/Perl.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Pre-load the feature module if Perl >= 5.10.
|
|
So "use feature :5.10;" now works in PL/Perl.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Stored procedure subs are now given names. The
|
|
names are not visible in ordinary use, but they make tools
|
|
like Devel::NYTProf and Devel::Cover much more
|
|
useful.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Handle END blocks in PL/Perl.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Clean up package namespace use and use of Safe.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Change log level of Perl warnings from NOTICE to
|
|
WARNING.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add support for anonymous code blocks (DO blocks) to PL/Perl.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Improve error context reporting in PL/Perl, for
|
|
easier debugging.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Convert a Perl array to a PostgreSQL array when returned by
|
|
set-returning functions as well as non-SRFs.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>PL/Python</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Improved printing of Python exceptions in
|
|
PL/Python.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add PL/Python DO handler.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support arrays as parameters and return values of PL/Python
|
|
functions.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add Python 3 support to PL/Python. It behaves more or less
|
|
unchanged compared to Python 2, but the new language variant is
|
|
called plpython3u.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix/improve bytea and boolean support in PL/Python. Data type
|
|
conversion into and out of PL/Python previously went through
|
|
an intermediate string representation, which caused various
|
|
discrepancies especially with bytea and boolean data. This is
|
|
now fixed by converting the values directly.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
PL/Python now accepts Unicode objects where it previously
|
|
only accepted string objects (for example, as return
|
|
value). Unicode objects are converted to the PostgreSQL
|
|
server encoding as necessary.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Improve error context reporting in PL/Python, for easier
|
|
debugging.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Greatly expand the regression testing for PL/Python.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Additional Supplied Modules</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add query text to auto_explain output.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add \shell and \setshell meta commands to pgbench.
|
|
</para>
|
|
<para>
|
|
\shell runs an external shell command. \setshell
|
|
does the same and assigns the result to a variable.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Multiple improvements in contrib/hstore, including
|
|
raising limits on keys and values, conversions to and from
|
|
records and arrays, and support for GROUP BY and DISTINCT.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
pgbench is now multi-threaded, allowing it to use multiple CPU's
|
|
for its client connections, and to do more realistic workload
|
|
testing.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Added the ability to retrieve asynchronous notifications using
|
|
dblink, via the addition of the function dblink_get_notify().
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Added matchorig, matchsynonyms, and keepsynonyms options to
|
|
contrib/dict_xsyn.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Added contrib/unaccent.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>ECPG</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add sqlda support in both native and compatibility
|
|
mode.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Fix SQL3 type return value: For non-SQL3 types ECPG
|
|
used to return -OID. This will break if there are enough OIDs
|
|
to fill the namespace. Therefore we play it safe and return
|
|
0 if there is no OID->SQL3 type mapping available.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Make char the default sqlda type.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add DESCRIBE [OUTPUT] statement.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add out-of-scope cursor support to native mode.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Refactor ECPG grammar so that it uses the core grammar's
|
|
unreserved_keyword list, minus a few specific words that have to be
|
|
treated specially. This de-reserves a number of words in ECPG.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Added dynamic cursor names to ECPG.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add ECPG function that returns the current transaction status.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make ECPG more robust against applications freeing strings.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
ECPG now includes a STRING datatype for Informix compatibility
|
|
mode.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Ports</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add basic build support for Visual Studio 2008,
|
|
without resorting to generating the build files for 2005 and
|
|
then converting them.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Added support for 64-bit Windows platforms.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Disable triggering failover with a signal in pg_standby on Windows.
|
|
It never really worked before anyway.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Change the WIN32 API version to be 5.01 (Windows XP), to
|
|
bring in the proper IPv6 headers in newer SDKs.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Write to the Windows eventlog in UTF-16, converting the
|
|
message encoding as necessary.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Replace use of the long-deprecated Bonjour API
|
|
DNSServiceRegistrationCreate with the not-so-deprecated
|
|
DNSServiceRegister. The new code will fail on Mac OS X
|
|
releases before 10.3.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Reserve the shared memory region during backend startup on Windows,
|
|
so that memory allocated by starting third party DLLs doesn't end
|
|
up conflicting with it. Hopefully this solves the long-time issue
|
|
with "could not reattach to shared memory" errors on
|
|
Win32.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add s_lock support for SuperH architecture (not well tested).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
<sect3>
|
|
<title>Source Code, Build Options</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Improve PGXS makefile system to allow the module's
|
|
makefile to specify where to install DATA and DOCS files.
|
|
This is mainly intended to allow versioned installation, eg,
|
|
install into contrib/fooM.N/ rather than directly into
|
|
contrib/.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Get rid of the need for manual maintenance of the
|
|
initial contents of pg_attribute, by having genbki.pl derive
|
|
the information from the various catalog header files. This
|
|
greatly simplifies modification of the "bootstrapped"
|
|
catalogs. This patch finally kills genbki.sh and
|
|
Gen_fmgrtab.sh; we now rely entirely on Perl scripts for
|
|
those build steps. To avoid creating a Perl build dependency
|
|
where there was not one before, they will be built and
|
|
shipped in tarballs.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Move the default configuration for the MSVC build
|
|
system to config_default.pl, and allow using config.pl to
|
|
override the defaults.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Make configure check the version of Perl we're
|
|
building with, and reject versions < 5.8.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Remove all support for working around on systems
|
|
that don't provide a working 64-bit integer type.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Add new make targets "world", "install-world" and
|
|
"installcheck-world" to build, install and check just about
|
|
everything. In addition to everything built installed and
|
|
tested by all, install and installcheck targets, these build
|
|
HTML documentation, build and test contrib, and test
|
|
procedural languages and ECPG.</emphasis>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
configure --enable-thread-safety is now the default (but can still
|
|
be turned off).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Fix inclusions of readline/editline header files so that we
|
|
only attempt to #include the version of history.h that is in
|
|
the same directory as the readline.h we are using. This
|
|
avoids problems in some scenarios where both readline and
|
|
editline are installed.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Derived files that are shipped in the distribution used to be
|
|
built in the source directory even for out-of-tree
|
|
builds. They are now built in the build tree. This
|
|
should be more convenient for certain developers' workflows.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Functions which conflict with C++ reserved words have been renamed,
|
|
making backend header files now safe to use with C++ libraries.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add man pages for SPI functions.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Upgrade to Autoconf 2.63 (not relevant to users of distribution
|
|
tarballs).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Minimum version of Flex is now 2.5.31, to support reentrant
|
|
scanners (not relevant to users of distribution tarballs).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Documentation build rules have been improved. The generated
|
|
documentation files are now shipped "loose", not in
|
|
sub-tarballs.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
New toolchain to generate man pages. From now on, the man pages
|
|
will be current in every release.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Code-coverage testing support now extends to the entire source
|
|
tree, not only src/backend/.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Make the core scanner re-entrant, along with additional fixes that
|
|
will let it be used directly by PL/pgSQL.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|