Contents
- CommitFests
- Backend changes
- Performance improvements
- Data type changes
- Indexing changes
- SQL changes
- System catalog changes
- System function changes
- Configuration changes
- Platform support changes
- Indexing changes
- Logging changes
- Users / roles
- Authentication changes
- Procedural language changes
- Replication changes
- Foreign data wrapper changes
- Core utilities
- Server utilities
- psql
- Contrib module changes
PostgreSQL 16
PostgreSQL 16
is the future development version of PostgreSQL, likely to be released in late 2023.
Initial commit marking the start of PostgreSQL 16
development is d31d3097 (2022-06-30).
CommitFests
Following CommitFests are for PostgreSQL 16
code submissions:
- CommitFest 42 (2023-03-01 - 2023-03-31; future)
- CommitFest 41 (2023-01-01 - 2023-01-31; in progress)
- CommitFest 40 (2022-11-01 - 2022-11-30; closed)
- CommitFest 39 (2022-09-01 - 2022-09-30; closed)
- CommitFest 38 (2022-07-01 - 2022-07-31; closed)
Note that the last CommitFest (March 2023) generally stays open a few days beyond the official end date until feature freeze is announced, usually in early April.
Backend changes
Build system
- support for Meson build system added (initial commit e6927270)
Source configuration
- segment size can be specified in blocks (commit d3b111e3)
Materialized views
- materialized views participate in predicate locking (commit 43351557)
postmaster
- option
-n
removed (commit 51b5834c) - option
-T
now sentsSIGABRT
rather thanSIGSTOP
(commit 51b5834c)
WAL
- freeze plans in freeze WAL records deduplicated (commit 9e540599)
walreceiver
- wakeup intervals made more targetted towards actual pending work (commit 05a7be93)
walsender
- database name shown in
ps
display (commit af205152)
Performance improvements
- performance of
ORDER BY
/DISTINCT
aggregates improved (commit 1349d279) - bulk inserts and updates on partitioned tables made more efficient (commit 3592e0ff)
- lookup in snapshots optimized (commits 37a6e5df, b6ef1675 and 82739d4a)
- performance of string-to-integer conversion improved (commit 6b423ec6)
Data type changes
General:
- support for binary, octal and hexadecimal integer literals added (commit 6fcda9ab)
+infinity
now accepted for input withdate
andtimestamp
types (commit 2ceea5ad)
Indexing changes
Hash indexes
- speed of hash index builds improved (commit e09d7a12)
SQL changes
General:
FROM
clause subquery aliases no longer required (commit bcedd8f5)SYSTEM_USER
reserved keyword now supported (commit 0823d061)
Modified:
ALTER DATABASE
ALTER DATABASE ... SET ... { TO | = } value USER SET
syntax added (commit 096dd80f)
ALTER DEFAULT PRIVILEGES
- now requires privileges instead of membership (commit 48a257d4)
ALTER ROLE
ALTER ROLE ... SET ... { TO | = } value USER SET
syntax added (commit 096dd80f)
ALTER TABLE
SET STORAGE DEFAULT
syntax added (commit b9424d01)
ALTER USER
ALTER USER ... SET ... { TO | = } value USER SET
syntax added (commit 096dd80f)
COPY
- batch insertion into foreign tables enabled (commit 97da4824)
CREATE STATISTICS
- the statistics name is now optional (commit 624aa2a1)
CREATE SUBSCRIPTION
- parameter
origin
added (commit 36628396)
- parameter
CREATE TABLE
CREATE TABLE ... STORAGE ...
syntax added (commit 784cedda)
GRANT
REINDEX
VACUUM
- options
SKIP_DATABASE_STATS
andONLY_DATABASE_STATS
added (commit a46a7011)
- options
System catalog changes
Tables
Modified:
pg_auth_members
- column
set_option
added (commit 3d14e171)
- column
pg_class
- type of column
relfilenode
changed fromoid
toint8
(commit 05d4cbf9)
- type of column
pg_db_role_setting]
- column
setuser
added (commit 096dd80f)
- column
Views
Modified:
pg_stat_all_tables
- column
last_seq_scan
added (commit c0374718)
- column
pg_stat_subscription
- column
leader_pid
addedd540a02a)
- column
System function changes
Added:
pg_input_error_message()
(commit 1939d262)pg_input_is_valid()
(commit 1939d262)pg_split_walfile_name()
(commit cca18634)pg_stat_get_backend_subxact()
(commit 10ea0f92)random_normal()
(commit 38d81760)
Modified:
array_agg()
- parallel aggregation support added (commit 16fd03e9)
pg_collation_actual_version()
- made effective with the default collation instead of returning
NULL
(commit 10932ed5)
- made effective with the default collation instead of returning
pg_import_system_collations()
- Windows support added (commit bf03cfd1)
pg_read_file()
- can be called as
pg_read_file (
(commit 283129e3)filename
text
,missing_ok
boolean
)
- can be called as
pg_stat_get_backend_idset()
- returns actual backend IDs (commit d7e39d72)
power()
- accuracy of numeric
power()
for integer exponents improved (commit 40c7fcbb)
- accuracy of numeric
array_agg()
- parallel aggregation support added (commit 16fd03e9)
to_regclass()
to_regcollation()
to_regnamespace()
to_regoper()
to_regoperator()
to_regproc()
to_regprocedure()
to_regrole()
to_regtype()
Configuration changes
General:
GUC
infrastructure modernized and made more efficient (commits f13b2088, 3057465a, 407b50f2, 9c911ec0)GUC_NO_RESET
flag added (commit 38536642)
Added:
createrole_self_grant
(commit e5b8a4c0)enable_presorted_aggregate
(commit 3226f472)logical_decoding_mode
(commit 5de94a04)max_parallel_apply_workers_per_subscription
(commit 216a7848)reserved_connections
(commit 6e2775e4)send_abort_for_crash
(commit 51b5834c)send_abort_for_kill
(commit 51b5834c)vacuum_freeze_strategy_threshold
(commit 4d417992)reverted in 6c6b4972
Modified:
archive_command
- may no longer be set at the same time as
archive_library
(commit d627ce3b)
- may no longer be set at the same time as
archive_library
- may no longer be set at the same time as
archive_command
(commit d627ce3b)
- may no longer be set at the same time as
shared_preload_libraries
- now processed in single-user mode (commit 6c31ac09)
wal_sync_method
fdatasync
option now supported on Windows (commit 9430fb40)
Removed:
promote_trigger_file
(commit cd4329d9)
Platform support changes
HP/Intel Itanium
- support removed (commit 0ad5b48e)
HP-UX
- port removed (commit 9db300ce)
Windows
- support removed for versions older than Windows 10 (commit 495ed0ef)
Indexing changes
- hash index build speed improved (commit d09dbeb9)
Logging changes
- internal
log_status_format()
added for use byemit_log_hook
etc. (commit b40baa96) - checkpoint and recovery point LSNs displayed in
LogCheckpointEnd
log message (commit 62c46eee) - autovacuum log output and
VACUUM VERBOSE
output now include a line containing the total number of heap pages which had one or more tuples frozen, and the total number of tuples frozen (commit d977ffd9) - LSN now included in some error messages related to WAL pages (commit 71cb84ec)
Users / roles
- superuser privileges can no longer be removed from the bootstrap user (commit e530be2c)
pg_maintain
predefined role added (commit 60684dd8)pg_use_reserved_connections
predefined role added (commit 6e2775e4)- users with the
CREATEROLE
attribute restricted to asdministrating roles they created or have been granted privileges on (cpmmit cf5eb37c)
Authentication changes
pg_hba.conf
- regular expressions (regexp) support added for database and user entries (commit 8fea8683)
- support for file inclusion added (commit a54b658c)
pg_ident.conf
- support for file inclusion added (commit a54b658c)
Procedural language changes
PL/pgSQL
- bound cursor variables no longer have a preassigned portal name (commit d747dc85)
Replication changes
Logical replication
- publications can include both a schema and individual tables from the same schema (commit 13a185f5)
- logical replication of data with an origin can be skipped (commit 36628396)
- large transactions applied by parallel workers (commit 216a7848)
Foreign data wrapper changes
TRUNCATE
triggers on foreign tables now permitted (commit 3b00a944)
Core utilities
Modified:
createuser
- following options added (commit 08951a7c):
-a
/--admin
--bypassrls/
--no-bypassrls
-m/
--member
--valid-until
- following options added (commit 08951a7c):
pg_dump
vacuumdb
- options
--schema
and--exclude-schema
added (commit 7781f4e3)
- options
Server utilities
Modified:
pg_upgrade
- option
--copy
added (commit 746915c6
- option
pg_waldump
- option
--save-fullpage
added (commit d497093c)
- option
psql
\pset
optionxheader_width
added (commit a45388d6)\d+
on a partitioned table now indicates foreign partitions (commit bd95816f)\bind
command added for setting query parameters and using the extended query protocol (commit 5b66de34)\dpS
and\zS
commands added (commit d913928c)
Contrib module changes
auto_explain
- option
auto_explain.log_parameter_max_length
added (commit d4bfe412)
ltree
- maximum label length extended to
1000
characters and labels may contain hyphens (commit b1665bf0)
pageinspect
- function
bt_multi_page_stats()
added (commit 1fd3dd20)
pg_buffercache
- function
pg_buffercache_summary()
added (commit 2589434a)
pg_walinspect
- function
pg_get_wal_fpi_info()
added (commit c31cf1c0)