Contents
- Minor version releases
- Backend changes
- Data type changes
- Operator changes
- Indexing changes
- Partitioning changes
- SQL changes
- System catalogue changes
- System function changes
- Configuration changes
- Users / roles
- Authentication changes
- Regular expression changes
- Procedural language changes
- Replication changes
- Foreign data wrapper changes
- Information schema changes
- libpq changes
- ECPG changes
- psql changes
- Server utilities
- Core utilities
- Contrib modules
- Testing
- Release schedule and pre-release test versions
PostgreSQL 14
- Release notes (source file)
- Released: 2021-09-30 (announcement)
- Current minor version: 14.13 (2024-08-08)
- EOL: 2026-11 (estimated)
- Documentation: PostgreSQL 14 (index)
- GIT branch: REL_14_STABLE
Minor version releases
- 14.13 (2024-08-08; release notes; announcement)
- 14.12 (2024-05-09; release notes; announcement)
- 14.11 (2024-02-08; release notes; announcement)
- 14.10 (2023-11-09; release notes; announcement)
- 14.9 (2023-08-10; release notes; announcement)
- 14.8 (2023-05-11; release notes; announcement)
- 14.7 (2023-02-09; release notes, announcement)
- 14.6 (2022-11-10; release notes, announcement)
- 14.5 (2022-08-11; release notes, announcement)
- 14.4 (2022-06-16; release notes, announcement)
- 14.3 (2022-05-12; release notes, announcement)
- 14.2 (2022-02-10; release notes, announcement)
- 14.1 (2021-11-11; release notes, announcement)
Backend changes
- enhanced
COPY
performance through improved buffering (commit 0a0727cc) - improvements in snapshot scalability to handle larger number of connections (commits 5788e258, 1f51c17c, 941697c3, 73487a60, 623a9ba7, 07f32fcd, and dc7420c2)
- stored procedures now support
OUT
parameters (commit 2453ea14) - support for abstract UNIX domain sockets (commit c9f0624b)
- improved client error messages for immediate-stop situations (commit 7e784d1d)
key management system (initial commit 978f869b)withdrawn (commit 3187ef7c)- new WAL segments now filled using vectored I/O (commit ce6a71fa)
- TID range scan support added (commit bb437f99)
- support for protocol version 2 removed (commit 3174d69f)
- configurable LZ4 TOAST compression (commit bbe0a81d)
- asynchrous execution support for foreign nodes added (commit 27e1f145)
- support for SQL-standard function bodies (commit e717a9a1)
- query ids previously generated by pg_stat_statements now generated in core (commit 5fd9dfa5)
- support for SSL compression removed (commit f9264d15)
SPI changes
- following functions added (commits ee895a65 and d5a83d79):
SPI_execute_extended()
SPI_cursor_parse_open()
Storage parameter changes
parallel_insert_enabled
added (commit c8f78b61)
Vacuum changes
- a vacuum following
COPY FREEZE
execution no longer needs to rewrite the entire table (commit 7db0cd21) - per-index statistics information displayed in autovacuum verbose logs (commit 5aed6a1f)
- tuple compacting improvements (commit 19c60ad6)
- unnecessary index vacuuming skipped (commit 5100010e)
index operations performed with thethis change was found to be unsafe and reverted with commit 042b584c (PostgreSQL 14.4)CONCURRENTLY
option will be ignored (commit d9d07622)- wraparound failsafe functionality added (commit 1e55e7d1)
Source configuration
- option
--with-ssl
added (commit fe61df7f)
Data type changes
General
- support for subscripting of arbitrary data types added (commit c7aba7c1)
- support for
multirange
types added (commit 6df7a969)
jsonb
- subscripting support added (commit 676887a3)
+(pg_lsn,numeric)
and-(pg_lsn,numeric)
operators added (commit 9bae7e4c)
Operator changes
Removed:
- factorial operators
!
and!!
(commit 76f412ab) - deprecated containment operators
@
and~
for built-in geometry data types (commit 2f70fdb0) - support for postfix (right-unary) operators removed (commit 1ed6b895)
Indexing changes
General
- support for collation versioning added (initial commit 257836a7)
- concurrent index creation can skip waits on other concurrent (re)index processes (commit c98763bf)
- concurrent reindexing can skip waits on other concurrent (re)index processes (commit f9900df5)
btree indexes
- "bottom-up deletion" for btree indexes (commit d168b666)
BRIN indexes
- support for
BRIN
bloom indexes added (commit 77b88cd1) - support for
BRIN
minmax-multi indexes added (commit ab596105)
GiST indexes
- support for building
GiST
indexes by presorting the data (commit 16fa9b2b)
SP-GiST indexes
- support for
INCLUDE
columns added (commit 09c1c6ab)
Partitioning changes
- partitions can be detached concurrently (commit 71f4c8c6)
SQL changes
Modified:
ALTER AGGREGATE
ALTER AGGREGATE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER COLLATION
ALTER COLLATION ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER CONVERSION
ALTER CONVERSION ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER DATABASE
ALTER DATABASE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER DOMAIN
ALTER DOMAIN ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER EVENT TRIGGER
ALTER EVENT TRIGGER ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER FOREIGN DATA WRAPPER
ALTER FOREIGN DATA WRAPPER ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER FOREIGN TABLE
ALTER FOREIGN TABLE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER FUNCTION
ALTER FUNCTION ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER GROUP
ALTER GROUP ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER INDEX
ALTER INDEX ... ALTER COLLATION ...
syntax added (commit 257836a7)
ALTER LANGUAGE
ALTER LANGUAGE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER LARGE OBJECT
ALTER LARGE OBJECT ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER MATERIALIZED VIEW
ALTER MATERIALIZED VIEW ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER OPERATOR
ALTER OPERATOR ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER OPERATOR CLASS
ALTER OPERATOR CLASS ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER OPERATOR FAMILY
ALTER OPERATOR FAMILY ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER POLICY
ALTER POLICY ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER PROCEDURE
ALTER PROCEDURE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER PUBLICATION
ALTER PUBLICATION ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER ROLE
ALTER ROLE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER ROUTINE
ALTER ROUTINE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER SCHEMA
ALTER SCHEMA ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER SEQUENCE
ALTER SEQUENCE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER SERVER
ALTER SERVER ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER STATISTICS
ALTER STATISTICS ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER SUBSCRIPTION
ALTER TABLE
ALTER TABLESPACE
ALTER TABLESPACE ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER TEXT SEARCH DICTIONARY
ALTER TEXT SEARCH DICTIONARY ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER TYPE
ALTER USER
ALTER USER ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER USER MAPPING
ALTER USER MAPPING ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
ALTER VIEW
ALTER VIEW ... OWNER TO CURRENT_ROLE
syntax added (commit 45b98057)
CREATE FUNCTION
- support for SQL-standard function bodies with SQL functions (commit e717a9a1)
CREATE LANGUAGE
- obsolete option to specify the language name as a single-quoted string removed (commit 5333e014)
CREATE POLICY
... TO CURRENT_USER ...
syntax added (commit 45b98057)
CREATE PROCEDURE
- support for SQL-standard function bodies with SQL functions (commit e717a9a1)
CREATE SCHEMA
CURRENT_ROLE
available forCREATE SCHEMA [...] AUTHORIZATION ...
(commit 45b98057)
CREATE STATISTICS
- support for extended statistics on expressions added (commit a4d75c86)
CREATE SUBSCRIPTION
CREATE TABLE
COMPRESSION
option for column definitions added (commit bbe0a81d)
CREATE TABLESPACE
CREATE TABLESPACE ... OWNER CURRENT_ROLE
option added (commit 45b98057)
CREATE TYPE
SUBSCRIPT
function handler option added (commit c7aba7c1)
CREATE TRIGGER
OR REPLACE
option added (commit 92bf7e2d)
CREATE USER MAPPING
CREATE USER MAPPING FOR CURRENT_ROLE
syntax added (commit 45b98057)
DROP OWNED
DROP OWNED BY CURRENT_ROLE
syntax added (commit 45b98057)
DROP USER MAPPING
DROP USER MAPPING FOR CURRENT_ROLE
syntax added (commit 45b98057)
EXPLAIN
EXPLAIN VERBOSE
will now display the query identifier, ifcompute_query_id
is not disabled (commit 4f0b0966)
GRANT
INSERT
REASSIGN OWNED
CURRENT_ROLE
accepted as role specification (commit 45b98057)
REINDEX
REVOKE
SELECT
- support for
GROUP BY DISTINCT
added (commit be45be9c) - support for
SEARCH
andCYCLE
clauses added (commit 3696a600) - most keywords can be used as column labels without requiring
AS
(commit 06a7c315) - support for aliases with
JOIN ... USING
, e.g.SELECT ... FROM t1 JOIN t2 USING (a, b, c) AS x
(commit 055fee7e)
- support for
TRUNCATE
- now possible to truncate foreign tables (commit 8ff1c946)
VACUUM
System catalogue changes
Tables
General
- primary keys and unique constraints added to system catalogue tables (commit dfb75e47)
Modified:
pg_attribute
- column
attcompression
added (commit bbe0a81d)
- column
pg_class
- column
reltuples
is set to-1
by default (commit 3d351d91)
- column
pg_inherits
- column
inhdetachpending
added (commit 71f4c8c6)
- column
pg_proc
- column
prosqlbody
added (commit e717a9a1)
- column
pg_range
- column
rngmultitypid
added (commit 6df7a969)
- column
pg_statistic_ext_data
- column
stxdexpr
added (commit a4d75c86)
- column
pg_subscription
pg_type
Views
Added:
pg_backend_memory_contexts
(commit 3e98c0ba)withdrawn (commit c2dc1934)pg_stat_prefetch_recovery
(commit 1d257577)pg_stat_progress_copy
(commit 8a4f618e)pg_stat_replication_slots
(commit 98681675)pg_stat_wal
(commit 8d9a9359)pg_stats_ext_exprs
(commit a4d75c86)
Modified:
pg_locks
- column
waitstart
added (commit 46d6e5f5)
- column
pg_prepared_statements
pg_replication_slots
- column
two_phase
added (commit 19890a06)
- column
pg_stat_activity
pg_stats_ext
- column
exprs
added (commit a4d75c86)
- column
pg_stat_database
- following columns added (commit 960869da):
session_time
active_time
idle_in_transaction_time
sessions
sessions_abandoned
sessions_fatal
sessions_killed
- following columns added (commit 960869da):
pg_stat_ssl
- column
compression
removed (commit f9264d15)
- column
System function changes
Added:
bit_count()
(commit a6715af1)bit_xor()
(commit f9a0392e)date_bin()
(commit 49ab61f0)multirange()
(commit 6df7a969)range_agg()
(commit 6df7a969)range_intersect_agg()
(commit 6df7a969)pg_column_compression()
(commit bbe0a81d)pg_get_catalog_foreign_keys()
(commit 62f34097)pg_get_wal_replay_pause_state()
(commit 32fd2b57)pg_log_backend_memory_contexts()
(commit 43620e32)feature withdrawnpg_relation_check_pages()
(commit f2b88396)pg_stat_reset_replication_slot()
(commit 98681675)withdrawn (commit 5f1df62a)pg_wait_for_backend_termination()
(commit aaf04325)pg_xact_commit_timestamp_origin()
(commit b1e48bbe)string_to_table()
(commit 66f16306)trim_array()
(commit 0a687c8f)unistr()
(commit f37fec83)
Modified:
extract()
factorial()
- factorial of negative numbers disallowed (commit 0a40563e)
inet_server_addr()
- marked as as parallel-restricted (commit 5a6f9bce)
inet_server_port()
- marked as as parallel-restricted (commit 5a6f9bce)
ltrim()
pg_get_keywords()
- following output columns added (commit 06a7c315):
barelabel
baredesc
- following output columns added (commit 06a7c315):
pg_last_committed_xact()
- now also returns the replication origin ID (commit b1e48bbe)
pg_terminate_backend()
- parameter
timeout
added (commit aaf04325)
- parameter
pg_create_logical_replication_slot()
- option
two_phase
added (commit 19890a06)
- option
pg_stat_reset_shared()
- option
wal
added (commit 8d9a9359)
- option
rtrim()
split_part()
- support for negative indexes added (commit ec0294fb)
stddev_samp()
- returns
NULL
(previously:NaN
) if aNaN
value was provided (commit 23cbeda5)
- returns
substring()
SUBSTRING(text SIMILAR pattern ESCAPE escape_text)
variant added (commit 78c88767)
to_tsquery()
- words residing adjacent positions now connected with with
OP_PHRASE
(commit 0c4f355c)
- words residing adjacent positions now connected with with
var_samp()
- returns
NULL
(previously:NaN
) if aNaN
value was provided (commit 23cbeda5)
- returns
websearch_to_tsquery()
Removed:
numeric_fac()
(commit 76f412ab)
Configuration changes
General:
- custom configuration parameter names may only use names which are valid for unquoted SQL identifiers (commit 3db826bd)
Added:
client_connection_check_interval
(commit c30f54ad)compute_query_id
(commit 5fd9dfa5)debug_discard_caches
(commit 4656e3d6)default_toast_compression
(commit bbe0a81d)enable_async_append
(commit 27e1f145)enable_memoize
(initial commit 9eacee2e)huge_page_size
(commit d2bddc25)idle_session_timeout
(commit 9877374b)in_hot_standby
(commit bf8a662c)log_recovery_conflict_waits
(commit 0650ff23)min_dynamic_shared_memory
(commit 84b1c63a)recovery_init_sync_method
(commit 61752afb)remove_temp_files_after_crash
(commit cd91de0d)ssl_crl_dir
(commit f5465fad)track_wal_io_timing
(commit ff99918c)vacuum_failsafe_age
(commit 1e55e7d1)vacuum_multixact_failsafe_age
(commit 1e55e7d1)wal_decode_buffer_size
(commit 1d257577)
Modified:
checkpoint_completion_target
- default value changed to
0.9
(commit bbcc4eb2)
- default value changed to
default_transaction_read_only
- marked as
GUC_REPORT
(commit d16f8c8e)
- marked as
log_connections
- authenticated identify details will also be logged (commit 9afffcb8)
log_line_prefix
password_encryption
restore_command
- can now be changed with a configuration reload (
SIGHUP
) rather than a server restart (commit 942305a3)
- can now be changed with a configuration reload (
wal_sync_method
- default value on FreeBSD changed to
fdatasync
(commit f900a79e)
- default value on FreeBSD changed to
vacuum_cost_page_miss
- default value changed from
10
to2
(commit e19594c5)
- default value changed from
Removed:
operator_precedence_warning
(commit a676386b)vacuum_cleanup_index_scale_factor
(commit 9f3665fb)
Withdrawn:
withdrawn (commit 26acb54a)enable_parallel_insert
(commit c8f78b61)withdrawn (commit c2dc1934)recovery_prefetch
(commit 1d257577)withdrawn (commit c2dc1934)recovery_prefetch_fpw
(commit 1d257577)
Users / roles
pg_database_owner
default role added (commit a14a0118)pg_read_all_data
default role added (commit 6c3ffd69)pg_write_all_data
default role added (commit 6c3ffd69)
Authentication changes
pg_hba.conf
- authentication option
clientcert
no longer supports the options0
,1
andno-verify
(commit 253f1025) - records can span multiple lines (commit 8f8154a5)
pg_ident.conf
- records can span multiple lines (commit 8f8154a5)
Regular expression changes
\w
now maps to[[:word:]]
(previously:[[:alnum:]_]
) and disallowed as range start/end in character classes (commit 2a0af7fe)\D
,\S
and\W
are now allowed within bracket expressions (commit 2a0af7fe)- handling of handling of regular expression back-references improved (commit 4aea704a)
Procedural language changes
PL/pgSQL
- performance of repeated
CALL
invocations improved (commit ee895a65) - undocumented
IS [NOT] OF
syntax removed (commit 926fa801)
Replication changes
Streaming replication
WAL can optionally be pre-fetched by standbys (commit 1d257577)withdrawn (commit c2dc1934)- standby servers will now pause rather than shut down if critical standby configuration item values fall below those on the primary (commit 15251c0a)
Logical replication
- data can be transferred in binary format (commit 9de77b54)
- support for streaming of in-progress transactions added (commit 46482432)
- output plugin API is now able to decode prepared transactions (commit 0aa8a01d)
- multiple transactions permitted during table synchronization (commit ce0fdbfe)
Foreign data wrapper changes
- bulk insert API added (commit b663a413)
- table truncation API added (commit 8ff1c946)
- asynchronous execution support added (commit 27e1f145)
Information schema changes
- routine usage tables added as placeholders (commit f40c6969)
libpq changes
General
in_hot_standby
now reported byPQparameterStatus()
(commit bf8a662c)- pipeline mode added (commit acb7e4eb)
PQtrace()
output format improved (commit 198b3716)- Server Name Indication (SNI) set by default for SSL connections (commit 5c55dc8b)
Connection parameters
Modified:
target_session_attrs
- options
read-only
,primary
,standby
, andprefer-standby
added (commit ee28cacf)
- options
Removed:
ECPG changes
DECLARE STATEMENT
command added (commit ad8305a4)
psql changes
\dX
command added to display extended statistics objects added (commit ad600bba)\di
,\dm
and\dt
commands now displayaccess method
name (commit 07f386ed)- all query results are displayed by default if a command string contains multiple queries (commit 3a513067)
SHOW_ALL_RESULTS
variable added (commit 3a513067)\df
and\do
commands now accept specification of argument types (commit a3027e1e)
Server utilities
Added:
withdrawn (commit 3187ef7c)pg_alterckey
(initial commit 62afb42a)
Modified:
initdb
- option
--no-instructions
added (commit e09155bd)
- option
pg_waldump
- contents of logical messages will now also be included in the output (commit 9f1cf97b)
Core utilities
Added:
pg_amcheck
(commit 97060928)
Modified:
pgbench
pg_dump
pg_dumpall
- option
--no-toast-compression
added (commit 694da198)
- option
reindexdb
- option
--tablespace
added (commit 57e6db70)
- option
vacuumdb
Contrib modules
Added:
old_snapshot
(commit aecf5ee2)pg_surgery
(commit 34a947ca)bool_plperlu
(commit 36058a3c)
Modified:
amcheck
- now able to check heap pages (commit 866e24d4)
cube
- binary I/O capability support added to the
cube
(commit 1265a9c8)
- binary I/O capability support added to the
btree_gist
- marked as parallel safe (commit d98c08cd)
hstore
- support for subscripting of
hstore
values added (commit 0ec5f7e7)
- support for subscripting of
intarray
<@
operator removed fromGiST
operator classes (commit 20e7e1fe)
pageinspect
pg_stat_statements
- now tracks the total number of rows retrieved or affected by
CREATE TABLE AS
,SELECT INTO
,CREATE MATERIALIZED VIEW
andFETCH
commands (commit 6023b7ea) - now tracks the total number of rows processed by
REFRESH MATERIALIZED VIEW
(commit b62e6056) - view
pg_stat_statements_info
added to display statistics about pg_stat_statements operations (initial commit 9fbc3f31) - column
toplevel
added to view viewpg_stat_statements
indicating whether the tracked statement is a top-level or nested statement (commit 6b4d23fe)
- now tracks the total number of rows retrieved or affected by
pgstattuple
- function
pgstattuple_approx()
can report on TOAST tables (commit ee0202d5)
- function
pg_trgm
postgres_fdw
- support for bulk inserts (commit b663a413)
- function
postgres_fdw_get_connections()
added (commit 708d165d) - function
postgres_fdw_disconnect()
added (commit 411ae649) - function
postgres_fdw_disconnect_all()
added (commit 411ae649)t - table/server option
async_capable
added to enable asynchronous execution support (commit 27e1f145) - server option
keep_connections
added (commit b1be3074) - partitions specified in the
IMPORT FOREIGN SCHEMA ... LIMIT
clause can now be imported (commit a3740c48) - support for truncating tables on the remote server added (commit 8ff1c946)
tablefunc
- function
normal_rand()
no longer accepts negative values (commit f7399926)
- function
test_decoding
- option
stream-changes
added (commit 7259736a)
- option
Removed:
pg_standby
(commit 514b411a)
Testing
Test modules
Added:
Release schedule and pre-release test versions
rc1
(REL_14_RC1
) - commit 8aed7f7a (2021-09-20); announcement (2021-09-23): PostgreSQL 14 RC 1 Released!beta3
(REL_14_BETA3
) - commit 26f5391d (2021-08-09); announcment (2021-08-12): PostgreSQL 13.4, 12.8, 11.13, 10.18, 9.6.23, and 14 Beta 3 Released!beta2
(REL_14_BETA2
) - commit bafad2c5 (2021-06-22); announcement (2021-06-25): PostgreSQL 14 Beta 2 Released!beta1
(REL_14_BETA1
) - commit e4f9737f (2021-05-17); announcement (2021-05-20): PostgreSQL 14 Beta 1 Released!
Initial commit marking the start of PostgreSQL 14
development is d10b19e2 (2020-06-07).
CommitFests
Following CommitFests were for PostgreSQL 14 code submissions:
CommitFest 32 (2021-03-01 - 2021-04-07; closed)CommitFest 31 (2021-01-01 - 2021-01-31; closed)CommitFest 30 (2020-11-01 - 2020-11-30; closed)CommitFest 29 (2020-09-01 - 2020-09-30; closed)CommitFest 28 (2020-07-01 - 2020-07-31; closed)