- Partitioning by a hash key
+ Add support for partitioning by a hash key
- Support for PRIMARY KEY, FOREIGN
+ Add support for PRIMARY KEY, FOREIGN
KEY, indexes, and triggers on partitioned tables
UPDATE 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
- Improved SELECT performance due to enhanced
- partition elimination strategies during query processing
+ Improve SELECT performance through enhanced
+ partition elimination strategies during query planning and execution
- Many other useful performance improvements, including making
- ALTER TABLE ... ADD COLUMN with a
- non-null column default faster
+ Many other useful performance improvements, including a significant
+ speedup to ALTER TABLE ... ADD COLUMN with a
+ non-null column default, as it no longer rewrites the table data
pg_dumpall'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 CREATE DATABASE
+ destination system. Previously, CREATE DATABASE
would be emitted without these specifications if the database locale
and encoding matched the old cluster's defaults.
- Previously they skipped one byte for each byte
+ Previously, they skipped one byte for each byte
of template character, resulting in strange behavior if either string
contained multibyte characters.
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.
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.
-->
- Allow updated rows to automatically move to new partitions based
- on the new row contents (Amit Khandekar)
+ UPDATE statements that change a partition key
+ column now cause affected rows to be moved to the appropriate
+ partitions (Amit Khandekar)
- 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.
-->
- 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)
-->
- Allow btree indexes to be built in parallel (Peter Geoghegan,
+ Allow parallel building of a btree index (Peter Geoghegan,
Rushabh Lathia, Heikki Linnakangas)
- Previously the most common values (
MCVs) were
+ Previously
, the most common values (
MCVs) were
identified based on their frequency compared to all column
values. Now,
MCVs are chosen based on their
frequency compared to the non-
MCV values.
- Previously such cases used the same selectivity estimates
+ Previously, such cases used the same selectivity estimates
as > and <, respectively,
unless the comparison constants are
MCVs.
This change is particularly helpful for queries
- Previously only non-join UPDATEs and
+ Previously, only non-join UPDATEs and
DELETEs were pushed.
pg_execute_server_program. These roles now also
control who can use server-side
COPY and the
linkend="file-fdw">file_fdw extension.
- Previously only superusers could use these functions, and that
+ Previously, only superusers could use these functions, and that
is still the default behavior.
- Specifically, these functions were modified:
+ Specifically, these functions were modified:
linkend="functions-admin-genfile-table">pg_ls_dir(),
pg_read_file(),
pg_read_binary_file(),
PostgreSQL only allows superusers to
access postgres_fdw tables without
- passwords, e.g. via peer. Previously the
- session owner had to be a superuser to allow such access; now
+ passwords, e.g. via peer. Previously, the
+ session owner had to be a superuser to allow such access; now
the view owner is checked instead.
- Previously the 16MB default could only be changed at compile time.
+ Previously, the 16MB default could only be changed at compile time.
-->
- No longer retain
WAL that spans two checkpoints
+ Retain
WAL data for only a single checkpoint
(Simon Riggs)
- Retention of
WAL records is only required for one
- checkpoint.
+ Previously,
WAL was retained for two checkpoints.
-->
- Allow heap pages' checksums to be checked during streaming base
+ Allow checksums of heap pages to be verified during streaming base
backup (Michael Banck)
Allow to_char() and
to_timestamp() to specify the time zone's
- hours and minutes from
UTC (Nikita Glukhov,
- Andrew Dunstan)
+ offset from
UTC in hours and minutes
+ (Nikita Glukhov, Andrew Dunstan)
- Previously such circumstances generated errors.
+ Previously, such circumstances generated errors.
- 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.
- Previously tab completion queries could fail against older servers.
+ Previously, tab completion queries could fail against older servers.
Allow
pgbench to do exponentiation
- with pow() and power()
+ with pow() and power()
(Raúl Marín Rodríguez)
-->
- Make the computation of system column
+ Make the computation of
pg_class.reltuples
- more consistent (Tomas Vondra)
+ by VACUUM consistent with its computation
+ by ANALYZE (Tomas Vondra)
- Previously only superusers could call adminpack
+ Previously, only superusers could call adminpack
functions; now role permissions are checked.