<itemizedlist>
<listitem>
<para>
- Partitioning by a hash key
+ Add support for partitioning by a hash key
</para>
</listitem>
<listitem>
<para>
- Support for <literal>PRIMARY KEY</literal>, <literal>FOREIGN
+ Add support for <literal>PRIMARY KEY</literal>, <literal>FOREIGN
KEY</literal>, indexes, and triggers on partitioned tables
</para>
</listitem>
<listitem>
<para>
<command>UPDATE</command> statements that change a partition key
- column now move affected rows to the appropriate partitions
+ column now cause affected rows to be moved to the appropriate
+ partitions
</para>
</listitem>
<listitem>
<para>
- Improved <command>SELECT</command> performance due to enhanced
- partition elimination strategies during query processing
+ Improve <command>SELECT</command> performance through enhanced
+ partition elimination strategies during query planning and execution
</para>
</listitem>
</itemizedlist>
<listitem>
<para>
- Many other useful performance improvements, including making
- <command>ALTER TABLE ... ADD COLUMN</command> with a
- non-null column default faster
+ Many other useful performance improvements, including a significant
+ speedup to <command>ALTER TABLE ... ADD COLUMN</command> with a
+ non-null column default, as it no longer rewrites the table data
</para>
</listitem>
<application>pg_dumpall</application>'s output script will now always
create databases with their original locale and encoding, and hence
will fail if the locale or encoding name is unknown to the
- destination system. Previously <command>CREATE DATABASE</command>
+ destination system. Previously, <command>CREATE DATABASE</command>
would be emitted without these specifications if the database locale
and encoding matched the old cluster's defaults.
</para>
</para>
<para>
- Previously they skipped one <emphasis>byte</emphasis> for each byte
+ Previously, they skipped one <emphasis>byte</emphasis> for each byte
of template character, resulting in strange behavior if either string
contained multibyte characters.
</para>
<para>
Per the SQL standard, relative paths start from the document node of
the XML input document, not the root node as these functions
- formerly did it.
+ previously did.
</para>
</listitem>
<para>
Creation of a trigger on a partitioned table automatically creates
- triggers on all existing partitions, and on newly-created ones.
+ triggers on all existing and future partitions.
This also allows deferred unique constraints on partitioned tables.
</para>
</listitem>
-->
<para>
- Allow updated rows to automatically move to new partitions based
- on the new row contents (Amit Khandekar)
+ <command>UPDATE</command> statements that change a partition key
+ column now cause affected rows to be moved to the appropriate
+ partitions (Amit Khandekar)
</para>
</listitem>
</para>
<para>
- Previously partition elimination only happened at planning
+ Previously, partition elimination only happened at planning
time, meaning many joins and prepared queries could not use
partition elimination.
</para>
-->
<para>
- Allow equality joins between partitioned tables with identically
- partitioned child tables to join the child tables directly
- (Ashutosh Bapat)
+ In an equality join between partitioned tables, allow matching
+ partitions to be joined directly (Ashutosh Bapat)
</para>
<para>
-->
<para>
- Allow btree indexes to be built in parallel (Peter Geoghegan,
+ Allow parallel building of a btree index (Peter Geoghegan,
Rushabh Lathia, Heikki Linnakangas)
</para>
</listitem>
</para>
<para>
- Previously the most common values (<acronym>MCV</acronym>s) were
+ Previously, the most common values (<acronym>MCV</acronym>s) were
identified based on their frequency compared to all column
values. Now, <acronym>MCV</acronym>s are chosen based on their
frequency compared to the non-<acronym>MCV</acronym> values.
</para>
<para>
- Previously such cases used the same selectivity estimates
+ Previously, such cases used the same selectivity estimates
as <literal>></literal> and <literal><</literal>, respectively,
unless the comparison constants are <acronym>MCV</acronym>s.
This change is particularly helpful for queries
</para>
<para>
- Previously only non-join <command>UPDATE</command>s and
+ Previously, only non-join <command>UPDATE</command>s and
<command>DELETE</command>s were pushed.
</para>
<literal>pg_execute_server_program</literal>. These roles now also
control who can use server-side <command>COPY</command> and the <link
linkend="file-fdw"><filename>file_fdw</filename></link> extension.
- Previously only superusers could use these functions, and that
+ Previously, only superusers could use these functions, and that
is still the default behavior.
</para>
</listitem>
</para>
<para>
- Specifically, these functions were modified: <link
+ Specifically, these functions were modified: <link
linkend="functions-admin-genfile-table"><function>pg_ls_dir()</function></link>,
<function>pg_read_file()</function>,
<function>pg_read_binary_file()</function>,
<para>
<productname>PostgreSQL</productname> only allows superusers to
access <filename>postgres_fdw</filename> tables without
- passwords, e.g. via <literal>peer</literal>. Previously the
- session owner had to be a superuser to allow such access; now
+ passwords, e.g. via <literal>peer</literal>. Previously, the
+ session owner had to be a superuser to allow such access; now
the view owner is checked instead.
</para>
</listitem>
</para>
<para>
- Previously the 16MB default could only be changed at compile time.
+ Previously, the 16MB default could only be changed at compile time.
</para>
</listitem>
-->
<para>
- No longer retain <acronym>WAL</acronym> that spans two checkpoints
+ Retain <acronym>WAL</acronym> data for only a single checkpoint
(Simon Riggs)
</para>
<para>
- Retention of <acronym>WAL</acronym> records is only required for one
- checkpoint.
+ Previously, <acronym>WAL</acronym> was retained for two checkpoints.
</para>
</listitem>
-->
<para>
- Allow heap pages' checksums to be checked during streaming base
+ Allow checksums of heap pages to be verified during streaming base
backup (Michael Banck)
</para>
</listitem>
<para>
Allow <function>to_char()</function> and
<function>to_timestamp()</function> to specify the time zone's
- hours and minutes from <acronym>UTC</acronym> (Nikita Glukhov,
- Andrew Dunstan)
+ offset from <acronym>UTC</acronym> in hours and minutes
+ (Nikita Glukhov, Andrew Dunstan)
</para>
<para>
</para>
<para>
- Previously such circumstances generated errors.
+ Previously, such circumstances generated errors.
</para>
</listitem>
</para>
<para>
- Previously partition information would not be displayed for a
+ Previously, partition information would not be displayed for a
partitioned table if it had no partitions. Also indicate which
partitions are themselves partitioned.
</para>
</para>
<para>
- Previously tab completion queries could fail against older servers.
+ Previously, tab completion queries could fail against older servers.
</para>
</listitem>
<para>
Allow <application>pgbench</application> to do exponentiation
- with <function>pow()</function> and <function>power()</function>
+ with <function>pow()</function> and <function>power()</function>
(Raúl Marín Rodríguez)
</para>
</listitem>
-->
<para>
- Make the computation of system column
+ Make the computation of
<structname>pg_class</structname>.<structfield>reltuples</structfield>
- more consistent (Tomas Vondra)
+ by <command>VACUUM</command> consistent with its computation
+ by <command>ANALYZE</command> (Tomas Vondra)
</para>
</listitem>
</para>
<para>
- Previously only superusers could call <filename>adminpack</filename>
+ Previously, only superusers could call <filename>adminpack</filename>
functions; now role permissions are checked.
</para>
</listitem>