<listitem>
<para>
- Logical change-set extraction allows database
- changes to be optionally recorded in <emphasis>logical</> format
+ <link linkend="logicaldecoding">Logical decoding</link> allows database
+ changes to be streamed out in customizable format
</para>
</listitem>
</para>
</listitem>
+ <listitem>
+ <para>
+ Handle domains over arrays like plain arrays in PL/Python
+ (Rodolfo Campero)
+ </para>
+
+ <para>
+ Previously they were treated as strings.
+ </para>
+ </listitem>
+
<listitem>
<para>
Have libpq's <link
</para>
</listitem>
+ <listitem>
+ <para>
+ The maximum number of <link linkend="bgworker">background workers</link>
+ that can be registered
+ by <function>RegisterBackgroundWorker()</function> is now limited to
+ <link linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
+ </para>
+ </listitem>
+
</itemizedlist>
</sect2>
<listitem>
<para>
- <link linkend="vacuum-for-wraparound">Freeze</link>
- tuples when tables are written with <link
+ Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
+ tuples when tables are rewritten with <link
linkend="SQL-CLUSTER"><command>CLUSTER</></link> or <link
linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas,
Andres Freund)
</para>
<para>
- This avoids the need to freeze the tuples in the future.
+ This can avoid the need to freeze the tuples in the future.
</para>
</listitem>
<listitem>
<para>
- Add <structfield>xid</> and <link
- linkend="ddl-system-columns"><structfield>xmin</></link>
- to system views <link
- linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link>
- and <link
- linkend="pg-stat-replication-view"><structname>pg_stat_replication</></link>
+ Add <varname>backend_xid</> and <varname>backend_xmin</> columns to
+ the system view <link linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link>
+ and <varname>backend_xmin</> to <link linkend="pg-stat-replication-view"><structname>pg_stat_replication</></link>
(Christian Kruse)
</para>
</listitem>
</para>
<para>
- Such keys are faster and have improved security
- over previous options. New variable <link
- linkend="guc-ssl-ecdh-curve"><varname>ssl_ecdh_curve</></link>
- controls the curve that is used.
+ Such keys are faster and have improved security over previous
+ options. The new configuration
+ parameter <link linkend="guc-ssl-ecdh-curve"><varname>ssl_ecdh_curve</></link>
+ controls which curve is used.
</para>
</listitem>
<listitem>
<para>
- Add <acronym>SQL</>-level command <link
+ Add <acronym>SQL</>-level <link
linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link> command
- to edit the <filename>postgresql.conf</> configuration file
- (Amit Kapila)
+ to adjust server-wide settings (Amit Kapila)
</para>
<para>
- Previously <filename>postgresql.conf</> could only be edited at
- the file system level.
+ Previously such settings could only be changed by
+ editing <filename>postgresql.conf</> at the file system level.
</para>
</listitem>
</para>
<para>
- Hint bits are not normally logged, except when checksums are
- enabled. This is useful for tools like <application>pg_rewind</>.
+ Hint bits are not normally logged, except when checksums are enabled.
+ This is useful for external tools like <application>pg_rewind</>.
</para>
</listitem>
</para>
<para>
- Such libraries are auto-<link
- linkend="SQL-LOAD"><command>LOAD</></link>'ed, unlike <link
- linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>.
+ In contrast
+ to <link linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>,
+ this parameter can load any shared library, not just those in
+ the <filename>$libdir/plugins</> directory.
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="recovery-config"><filename>recovery.conf</></link>
- parameter <link
- linkend="recovery-min-apply-delay"><varname>recovery_min_apply_delay</></link>
- to force delayed replication (Robert Haas, Fabrízio de
- Royes Mello, Simon Riggs)
+ Add <link linkend="recovery-config"><filename>recovery.conf</></link>
+ parameter <link linkend="recovery-min-apply-delay"><varname>recovery_min_apply_delay</></link>
+ to delay replication (Robert Haas, Fabrízio de Royes Mello,
+ Simon Riggs)
</para>
<para>
- This is useful for delaying replaying of user errors on standby
+ This is useful for delaying the replay of user errors on standby
servers.
</para>
</listitem>
<para>
Add <link
linkend="recovery-target"><varname>recovery_target</></link>
- option <option>immediate</> option to replay
- <link linkend="wal"><acronym>WAL</></link> stop
- recovery when a consistent state is reached, i.e. <link
- linkend="functions-admin-backup-table"><function>pg_stop_backup()</></link>
- (MauMau, Heikki Linnakangas)
+ option <option>immediate</> to stop <link
+ linkend="wal"><acronym>WAL</></link> recovery as soon as a
+ consistent state is reached (MauMau, Heikki Linnakangas)
</para>
</listitem>
</para>
<para>
- The timestamp reported by <link
- linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
- now shows information about committed records, not commits being
- replayed. Recovering to restore points now replay the restore
- point, rather than stop just before the restore point.
+ The timestamp reported
+ by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
+ now shows information about already-committed records, not of transactions
+ about to be committed. Recovering to a restore point now replays the
+ restore point, rather than stopping just before the restore point.
</para>
</listitem>
<listitem>
<para>
Add <link linkend="streaming-replication-slots">replication
- slots</link> to report the <acronym>WAL</> activity on streaming
- standbys (Andres Freund, Robert Haas)
+ slots</link> to coordinate activity on streaming standbys with the
+ node they are streaming from (Andres Freund, Robert Haas)
</para>
<para>
</itemizedlist>
<sect4>
- <title><link linkend="logicaldecoding">Logical Change-Set Extraction</></title>
+ <title><link linkend="logicaldecoding">Logical Decoding</></title>
<para>
- Logical change-set extraction allows database
- changes to be optionally recorded in <emphasis>logical</> format
- in the <link linkend="wal"><acronym>WAL</></link>. This format can
- be easily processed by external tools. In previous releases, only
- binary changes were recorded in the <acronym>WAL</>. To implement
- this feature, the following changes were made:
+ Logical decoding allows database changes to be optionally streamed in a
+ configurable format. The data is read from
+ the <link linkend="wal"><acronym>WAL</></link> and transformed into the
+ desired target format. To implement this feature, the following changes
+ were made:
</para>
<itemizedlist>
-
+ <!-- FIXME: This imo needs a pretty fundamental rewrite -->
<listitem>
<para>
Add new <option>logical</> <link
<listitem>
<para>
Add <link linkend="queries-tablefunctions"><literal>ROWS
- FROM</></link> syntax to allow horizontal concatenation of
- <literal>FROM</>-clause set-returning functions (Andrew Gierth)
+ FROM()</></link> syntax to allow horizontal concatenation of
+ set-returning functions in the <literal>FROM</>-clause (Andrew Gierth)
</para>
</listitem>
<listitem>
<para>
Add <link linkend="queries-tablefunctions"><literal>WITH
- ORDINALITY</></link> which numbers rows returned from
+ ORDINALITY</></link> syntax which numbers rows returned from
<literal>FROM</>-clause functions (Andrew Gierth, David Fetter)
</para>
</para>
<para>
- This was added for consistency, and so querying tables with no
- columns would not produce an error.
+ <!-- FIXME: drop? -->
+ This was added so views that select from a table with zero columns
+ can be dumped correctly.
</para>
</listitem>
</para>
<para>
+ <!-- FIXME: compatibility break entry? -->
<command>DISCARD ALL</> will now also discard such information.
</para>
</listitem>
<listitem>
<para>
- Allow quoted strings matching the null string to be converted
- to NULL in <link linkend="SQL-COPY"><command>COPY FROM</></link>
+ Add <command>FORCE NULL</> option
+ to <link linkend="SQL-COPY"><command>COPY FROM</></link> which causes
+ quoted strings matching the null string to be converted to NULL in
in <literal>CSV</> mode (Ian Barwick, Michael Paquier)
</para>
<listitem>
<para>
- Issue warnings for <link linkend="SQL-SET"><command>SET</></link>
- outside of a transaction block, as they have no effect (Bruce
- Momjian)
+ Issue warnings for commands used outside of transaction blocks
+ because they have no effect (Bruce Momjian)
</para>
<para>
The cases are <literal>SET
- LOCAL</>/<literal>CONSTRAINTS</>/<literal>TRANSACTION</> and
+ LOCAL</>, <literal>SET CONSTRAINTS</>, <literal>SET TRANSACTION</> and
<literal>ABORT</>.
</para>
</listitem>
<listitem>
<para>
- Allow <link linkend="SQL-CREATEVIEW-updatable-views">auto-updates
- on views</link> where only some columns are auto-updateable
- (Dean Rasheed)
+ Allow the updating of <link
+ linkend="SQL-CREATEVIEW-updatable-views">views</link>
+ where only some columns are auto-updateable (Dean Rasheed)
</para>
<para>
</para>
<para>
- Previously, relations moved into the system catalog schema could
- not be modified.
+ Previously, relations once moved into the system catalog schema could
+ no longer be modified or dropped.
</para>
</listitem>
ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
<option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
- <option>(attribute_option)</>.
+ <option>(attribute_option)</> no longer require <literal>ACCESS
+ EXCLUSIVE</> locks.
</para>
</listitem>
</para>
<para>
- The functions being with <literal>make_</>, e.g. <link
- linkend="functions-datetime-table"><function>make_date()</></link>.
+ These functions are prefixed with <literal>make_</>,
+ e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>.
</para>
</listitem>
<listitem>
<para>
- Add functions for <structname>pg_class</>,
+ Add functions for looking up objects in <structname>pg_class</>,
<structname>pg_proc</>, <structname>pg_type</>, and
- <structname>pg_operator</> lookups that do not generate errors for
+ <structname>pg_operator</> which do not generate errors for
non-existent objects (Yugo Nagata, Nozomi Anzai,
Robert Haas)
</para>
<para>
For example, <link
linkend="functions-info-catalog-table"><function>to_regclass()</></link>
- does error-free lookups of <structname>pg_class</>, and returns
- NULL for lookup failures.
+ does lookups of <structname>pg_class</> and returns NULL for
+ non-existent objects.
</para>
</listitem>
<para>
Add function <link
linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link>
- to allow for more efficient filenode to relation lookups (Andres
+ to allow for more efficient filenode to relation lookups (Andres
Freund)
</para>
</listitem>
</listitem>
<listitem>
+ <!-- FIXME -->
<para>
Allow polymorphic aggregates to have non-polymorphic state data
types ? (Tom Lane)
<itemizedlist>
- <listitem>
- <para>
- Handle domains over arrays like plain arrays in PL/Python
- (Rodolfo Campero)
- </para>
-
- <para>
- Previously they were treated as strings.
- </para>
- </listitem>
-
<listitem>
<para>
Convert <link linkend="datatype-numeric"><type>NUMERIC</></link>s
<listitem>
<para>
- Allow <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
- <option>--analyze-in-stages</> to analyze in stages of increasing
- granularity (Peter Eisentraut)
+ Add <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
+ option <option>--analyze-in-stages</> to analyze in stages of
+ increasing granularity (Peter Eisentraut)
</para>
<para>