Contents
- Minor version releases
- Backend changes
- Data type changes
- Partitioning changes
- SQL changes
- System catalog changes
- System function changes
- Configuration changes
- Users / roles
- Procedural language changes
- Replication changes
- libpq changes
- Core utilities
- Server utilities
- psql
- Contrib modules
- Testing changes
- Other
- CommitFests
- Release schedule and pre-release test versions
PostgreSQL 15
PostgreSQL 15
is the latest major PostgreSQL version, released on October 13th 2022.
- Release notes (source file)
- Released: 2022-10-13 (announcement)
- Current minor version 15.1 (2022-11-10)
- EOL: 2027-11 (estimated)
- Documentation: PostgreSQL 15
- GIT branch: REL_15_STABLE
Minor version releases
- 15.1 (2022-11-10; release notes, announcement)
Backend changes
General
- the
background writer
andcheckpointer
will now also run during crash recovery (commit 7ff23c6d) - numeric literals with trailing non-numeric characters will now be rejected (commit 2549f066)
- database creation can be performed without requiring a checkpoint (commit 9c08aea6)
- improved PRNG API and algorithm (commit 3804539e)
Source configuration
- option
--with-zstd
added (initial commit 6c417bbc)
ABI
- PostgreSQL forks can now explicitly declare their ABI as incompatible (commit d6d1dfcc)
Backup
- exclusive backup mode (deprecated since PostgreSQL 9.6) removed (commit 39969e2a)
Executor
- execution of monotonic window functions improved (commit 9d9c02cc)
Hooks
Added:
shmem_request_hook
(commit 4f2400cb)
Modified:
object_access_hook
- now called at the end of table rewrites by
ALTER TABLE
(commit 7b565843)
- now called at the end of table rewrites by
Logging
- logging for excessive ProcSignalBarrier waits added (commit 0d343149)
- log output in JSON format via
log_destination
optionjsonlog
added (dc686681)
Permissions
- permission can be granted to non-superusers for
SET
andALTER SYSTEM
on individual GUCs (commit a0ffa885)
Planner
- execution of monotonic window functions improved (commit 9d9c02cc)
postmaster
- option
--forkboot
renamed to--forkaux
(commit 50017f77) CREATE
privilege on thepublic
schema is now always revoked by default fromPUBLIC
, and it is now owned by thepg_database_owner
role (commit b073c3cc)- option
-C
now displays runtime-computed GUCs (commit 0c39c292)
Sequences
- unlogged sequences added (commit 344d62fb)
Statistics collector
- replaced by shared memory implementation (commit 5891c7a8)
vacuum
VACUUM VERBOSE
andautovacuum
operations now report the details of howrelfrozenxid
andrelminmxid
were advanced (commit 872770fd)
WAL
- full-page writes can be compressed with:
- support for custom resource managers added (commit 5c279a6d)
- support for WAL prefetching added (commit 5dc0418f)
Data type changes
General:
- new type category for "internal use" types added (commit 07eee5a0)
Modified:
JSON
- following
SQL/JSON
standard constructors added (commits f79b803d and f4fb45d1): withdrawn (commit 2f2b18bd)JSON_ARRAY()
JSON_ARRAYAGG()
JSON_OBJECT()
JSON_OBJECTAGG()
JSON_TABLE()
constructor added (commit 4e34747c) withdrawn (commit 2f2b18bd)- following SQL/JSON query functions added (commit 1a36bc9d) withdrawn (commit 2f2b18bd):
JSON_EXISTS()
JSON_QUERY()
JSON_VALUE()
- following
NUMERIC
- scale can be negative or greater than precision (commit 085f931f)
xid
- support for
MIN()
andMAX()
aggregates added (commit 400fc6b6)
- support for
Partitioning changes
- foreign key triggers now created for partitioned tables as well as their partitions (commit f4566345)
SQL changes
General
- equality of
NULL
values inUNIQUE
constraints configurable viaUNIQUE [ NULLS [ NOT ] DISTINCT ]
option (commit 94aa7cc5) IS JSON
predicate added (commit 33a37760) withdrawn (commit 2f2b18bd)- following SQL standard JSON functions added (commits 606948b0 and 49082c2c) withdrawn (commit 2f2b18bd):
JSON()
JSON_SCALAR()
JSON_SERIALIZE()
Added:
Modified:
ALTER DATABASE
REFRESH COLLATION VERSION
syntax added (commit 37851a8b)
ALTER PUBLICATION
ALTER SEQUENCE
- syntax
SET [ LOGGED | UNLOGGED ]
added (commit 344d62fb)
- syntax
ALTER SUBSCRIPTION
- syntax
ALTER SUBSCRIPTION ... SKIP
added (commit 208c5d65) - parameter
disable_on_error
added (commit 705e20f8) - a
WARNING
will now be emitted if the target publication does not exist onALTER SUBSCRIPTION ... SET PUBLICATION ...
(commit 8f2e2bbf)
- syntax
ALTER TABLE
ALTER VIEW
security_invoker
option added (commit 7faa5fc8)
CLUSTER
- can now be executed on partitioned tables (commit cfdd03f4)
COPY
CREATE DATABASE
CREATE INDEX
UNIQUE [ NULLS [ NOT ] DISTINCT ]
syntax added (commit 94aa7cc5)
CREATE PUBLICATION
CREATE SEQUENCE
- syntax
CREATE UNLOGGED SEQUENCE
added (commit 344d62fb)
- syntax
CREATE SUBSCRIPTION
- parameter
two_phase
added (commit a8fd13ca) - parameter
disable_on_error
added (commit 705e20f8) - a
WARNING
will now be emitted if the target publication does not exist (commit 8f2e2bbf)
- parameter
CREATE TABLE
CREATE VIEW
security_invoker
option added (commit 7faa5fc8)
EXPLAIN
- I/O timing for temporary file blocks tracked (efb0ef90)
GRANT
GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] } ON PARAMETER ...
syntax added (commit a0ffa885)
REVOKE
REVOKE [ GRANT OPTION FOR ] { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] } ON PARAMETER ...
syntax added (commit a0ffa885)
SELECT
- paralllel
DISTINCT
support added (commit 22c4e88e)
- paralllel
SET
System catalog changes
Tables
Added:
pg_parameter_acl
(commit a0ffa885)pg_publication_namespace
(commit 5a283246)
Modified:
pg_collation
pg_constraint
- column
confdelsetcols
added (commit d6f96ed9)
- column
pg_database
pg_statistic_ext_data
- column
stxdinherit
added (commit 269b532a)
- column
pg_subscription
Views
Added:
pg_ident_file_mappings
(commit a2c84990)pg_stat_recovery_prefetch
(commit 5dc0418f)pg_stat_subscription_stats
(commits 8d74fc96 and 7a850732))
Modified:
pg_prepared_statements
- column
result_types
added (commit 84ad713c)
- column
pg_stats_ext
- column
inherited
added (commit 269b532a)
- column
pg_stats_ext_exprs
- column
inherited
added (commit 269b532a)
- column
System function changes
Added:
pg_backup_start()
(commit 39969e2a)pg_backup_stop()
(commit 39969e2a)pg_database_collation_actual_version()
(commit 37851a8b)pg_ls_logicalsnapdir()
(commit 1922d7c6)pg_ls_logicalmapdir()
(commit 1922d7c6)pg_ls_replslotdir()
(commit 1922d7c6)pg_settings_get_flags()
(commit d10e41d4)regexp_count()
(commit 64243370)regexp_instr()
(commit 64243370)regexp_like()
(commit 64243370)regexp_substr()
(commit 64243370)
Modified:
array_to_tsvector()
- creation of empty lexemes prohibited (commit cbe25dcf)
pg_encoding_to_char()
- documentation added (commit f6b5d05b)
pg_log_backend_memory_contexts()
- non-superusers can be granted execution permissions (commit f0b051e3)
pg_size_bytes()
- able to convert sizes in petabytes (commit ca2e4472)
pg_size_pretty()
- able to output sizes in petabytes (commit ca2e4472)
pg_stat_reset_single_table_counters()
- now able to reset statistics for cluster-wide shared tables (commit e0426784)
poly_distance()
- fully implemented (was previously a non-functional stub) (commit c5c192d7)
random()
- improved PRNG API and algorithm (commit 3804539e)
range_agg()
- version with
multirange
inputs added (commit 7ae1619b)
- version with
regexp_replace()
- starting position (parameter
start
) and match position (parameterN
) added (commit 64243370)
- starting position (parameter
setweight()
NULL
values now permitted (commit cbe25dcf)
to_char()
- support for
of
,tzh
andtzm
format patterns added (commit 9dde8289)
- support for
ts_delete()
NULL
values now permitted (commit cbe25dcf)
unnest()
- support for
multirange
argument added (commit 9e3c217b)
- support for
Removed:
pg_backup_start_time()
(commit 39969e2a)pg_is_in_backup()
(commit 39969e2a)pg_start_backup()
replaced bypg_backup_start()
(commit 39969e2a)pg_stop_backup()
replaced bypg_backup_stop()
(commit 39969e2a)
Configuration changes
General:
- GUC flag
GUC_RUNTIME_COMPUTED
added for displaying runtime-computed GUCs (commit 0c39c292)
Added:
allow_in_place_tablespaces
(commit 7170f215)archive_library
(commit 5ef1eefd)enable_group_by_reordering
(commit db0d67db) reverted in commit f4c7c410)log_startup_progress_interval
(commit 9ce346ea)recovery_prefetch
(commit 5dc0418f)recursive_worktable_factor
(commit 0bd7af08)shared_memory_size
(commit bd178805)shared_memory_size_in_huge_pages
(commit 43c1c4f6)stats_fetch_consistency
(commit 5891c7a8)wal_decode_buffer_size
(commit 5dc0418f)
Modified:
compute_query_id
- option
regress
added (commit ebf6c524)
- option
data_checksums
- classification as
GUC_RUNTIME_COMPUTED
added (commit 0c39c292)
- classification as
data_directory_mode
- classification as
GUC_RUNTIME_COMPUTED
added (commit 0c39c292)
- classification as
hash_mem_multiplier
- default value changed to
2.0
(commit 8f388f6f)
- default value changed to
log_autovacuum_min_duration
- default changed from
-1
to10m
(commit 64da07c4)
- default changed from
log_checkpoints
- default value changed to
on
(commit 64da07c4)
- default value changed to
log_destination
- option
jsonlog
added (dc686681)
- option
wal_compression
wal_segment_size
- classification as
GUC_RUNTIME_COMPUTED
added (commit 0c39c292)
- classification as
Removed:
stats_temp_directory
(commit 6f0cf878)
Users / roles
pg_checkpoint
default role added (commits 4168a474 and b9eb0ff0)pg_read_all_stats
can now accesspg_backend_memory_contexts
andpg_shmem_allocations
(commit 77ea4f94)
Procedural language changes
PL/Perl
- minimum required version is now Perl 5.8.3 (commit 92e6a98c)
PL/pgSQL
- enforcement of variable
CONSTANT
markings improved (commit ccd10a9b)
PL/Python
- support for Python 2 removed (initial commit 19252e8e)
PL/Sample
trigger handler example added (commit 2f4d0d67)
Replication changes
Replication protocol
- revised
BASE_BACKUP
command with more flexible syntax (commit 0ba281cb):
PROGRESS [
(previously did not accept a boolean value)boolean
]CHECKPOINT { 'fast' | 'spread' }
(supersedes the previousFAST
option)WAL [
(previously did not accept a boolean value)boolean
]WAIT [
(supersedes the previousboolean
]WAIT
option)TABLESPACE_MAP [
(previously did not accept a boolean value)boolean
]VERIFY_CHECKSUMS [
(supersedes the previousboolean
]NOVERIFY_CHECKSUMS
option)
TWO_PHASE
option added toCREATE_REPLICATION_SLOT
(commit cda03cfe)BASE_BACKUP
command revised with more flexible syntax (commit 0ba281cb)IDENTIFY_SYSTEM
no longer needs to be executed beforeSTART_REPLICATION
(commit 8e7811e9)
Logical replication
- support for prepared transactions added (commit a8fd13ca)
- support for for streaming prepared transactions added (commit 63cf61cd)
- support for publishing all tables of a schema
added (commit 5a283246)
- support for logical decoding of sequences added (commit 0da92dc5)
- support for row filters added (commit 52e4f0cd)
- subscriptions can optionally be disabled on error (commit 705e20f8)
- support for specifying individual table columns added (commit 923def9a)
- consistent logical replication of values effected by GUCs
DateStyle
,IntervalStyle
andextra_float_digits
enforced (commit f3d4019d)
libpq changes
- support for IPv4 and IPv6 addresses in a server's Subject Alternative Names added (commit c1932e54)
PQcancel()
now uses thePGconn
'stcp_user_timeout
andtcp_keepalives_{count|idle|interval}
settings (commit 5987feb7)PQsslAttribute(NULL, "library")
returns the name of the SSL library in use without requiring a connection handle (commit ebc8b7d4)
Core utilities
createdb
pg_basebackup
- new
COPY
subprotocol implemented (commit cc333f32) - option
-t
/--target
added (commit 3500ccc3) - option
--compress
extended to accept a compression method and an optional compression level (commit 5c649fe1) - option
--compress
can acceptclient-gzip
orserver-gzip
as well asgzip
(commit 0ad80329) - option
--compress
can acceptlz4
orserver-lz4
(commit dab29847) - option
--compress
can acceptclient-lz4
(commit 751b8d23) - option
--compress
can acceptzstd
,client-zstd
orserver-zstd
(commit 7cf085f0) - option
--compress
can accept(client|server)-zstd:workers=N
to provide parallel backup using multiple zstd workers (commit 51c0d186)
- new
pgbench
pg_dump
pg_dumpall
- option
--no-table-access-method
added (commit 21586288) - support for dumping from versions older than PostgreSQL 9.2 removed (commit 30e7c175)
- option
pg_receivewal
pg_recvlogical
- option
--two-phase
added (commit cda03cfe)
- option
pg_restore
- option
--no-table-access-method
added (commit 21586288)
- option
Server utilities
initdb
pg_resetwal
- option
-u
/--oldest-transaction-id
added (commit 74cf7d46)
- option
pg_rewind
- option
--config-file
added (commit 0d5c3875)
- option
pg_upgrade
- option
-N
/--no-sync
added (commit 3d5ffccb) - filenode and tablespace OIDs preserved (commit 9a974cbc)
- postgres and template0 database OIDs preserved (commit aa010514)
- files generated by
pg_upgrade
will now be stored in the upgraded cluster's data directory underpg_upgrade_output.d
(commit 38bfae36) - all databases which cannot be connected to will now be listed (commit 26ebb0e2)
- progress status will not be emitted if output is not a tty (commit 27b02e07)
- support for upgrading from versions older than PostgreSQL 9.2 removed (commit e469f0aa)
- option
pg_waldump
- option
--rmgr
can be specified multiple times (commit c8bf5098) - short option for
--block
changed from-k
to-B
(commit 52b55684) - short option for
--relation
changed from-l
to-R
(commit 52b55684) - option
--fork
now accepts the fork name, not the fork number (commit 52b55684) - stats summary now emitted on receipt of
SIGINT
(commit f2c52eeb) - filtering by
RelFileNode
,BlockNumber
,ForkNum
andFPW
added (commit 127aea2a)
- option
psql
- new environment variable
PSQL_WATCH_PAGER
for setting a pager forpsql
's\watch
command (commit 7c09d279) \getenv
slash command added (commit 33d3eead)\lo_list
/\dl
now display large objects' ACLs when the+
option is provided (commit 328dfbda)- support for versions before PostgreSQL 9.2 removed (commit cf0cab86)
- results for multiple queries are displayed by default; variable
SHOW_ALL_RESULTS
added to control this behaviour (commit 7844c991) \copy
performance improved (commit eec57115)\dconfig
slash command added (commit 3e707fbb)
Contrib modules
Added:
basebackup_to_shell
(commit c6306db2)basic_archive
(commit 5ef1eefd)pg_walinspect
(commit 2258e76f)
Modified:
amcheck
btree_gist
bool
opclass added to allow creating GiST indexes onboolean
columns (commit 57e3c516)
pgcrypto
- now only built if OpenSSL support is configured (commit db7d1a7b)
postgres_fdw
- support for parallel commit added (commit 04e706d4)
CASE
expressions can be pushed to the remote server (commit 5d44fff0)- remote connection's
application_name
can be set via GUCpostgres_fdw.application_name
(commit 449ab635) postgres_fdw.application_name
can include certain escape sequences (commits 6e0cb3de and 94c49d53)- report warning when timeout expiration occurs while retrieving a query result (commit 815d61fc)
pg_stat_statements
sepgsql
- permissive/enforcing state now included in log messages (commit 134d9746)
test_decoding
- option
include-sequences
added (commit 80901b32)
- option
xml2
- function
xml_is_well_formed()
removed (commit fd2abeb7)
- function
Testing changes
TAP tests
PostgresNode
andTestLib
Perl modules moved to custom namespacePostgreSQL::Test
(b3b4d8e6)
Other
- support for continuous integration for github repositories via cirrus-ci added (commit 93d97349)
CommitFests
Following CommitFests were for PostgreSQL 15
code submissions:
CommitFest 37 (2022-03-01 - 2022-03-31; closed)CommitFest 36 (2022-01-01 - 2022-01-31; closed)CommitFest 35 (2021-11-01 - 2021-11-30; closed)CommitFest 34 (2021-09-01 - 2021-09-30; closed)CommitFest 33 (2021-07-01 - 2021-07-31; closed)
Note that the March CommitFest generally stays open a few days beyond the official end date until feature freeze is announced, usually in early April.
Release schedule and pre-release test versions
rc2
(REL_15_RC2
) - commit 2a40d040 (2022-10-03)rc1
(REL_15_RC1
) - commit 6abbd212 (2022-09-26); announcement (2022-09-29): PostgreSQL 15 RC 1 Released!beta4
(REL_15_BETA4
) - commit 6e55ea79 (2022-09-05); announcement (2022-09-08): ostgreSQL 15 Beta 4 Released!beta3
(REL_15_BETA3
) - commit 6778361e (2022-08-08); announcement (2022-08-11): PostgreSQL 14.5, 13.8, 12.12, 11.17, 10.22, and 15 Beta 3 Released!beta2
(REL_15_BETA2
) - commit c1d033fc (2022-06-27); announcement (2022-06-30): PostgreSQL 15 Beta 2 Released!beta1
(REL_15_BETA1
) - commit 05a5a177 (2022-05-16); announcement (2022-05-19): PostgreSQL 15 Beta 1 Released!
Initial commit marking the start of PostgreSQL 15
development is 596b5af1 (2021-06-28).