PostgreSQL 15
- 发行说明 (源文件)
- 发布日期:2022-10-13 (公告)
- 当前次要版本:15.9 (2024-11-14)
- EOL:2027-11(预计)
- 文档:PostgreSQL 15 (索引)
- GIT 分支:REL_15_STABLE
次要版本发布
- 15.9 (2024-11-14; 发行说明; 公告)
- 15.8 (2024-08-08; 发行说明; 公告)
- 15.7 (2024-05-09; 发行说明; 公告)
- 15.6 (2024-02-08; 发行说明; 公告)
- 15.5 (2023-11-09; 发行说明; 公告)
- 15.4 (2023-08-10; 发行说明; 公告)
- 15.3 (2023-05-11; 发行说明; 公告)
- 15.2 (2023-02-09; 发行说明, 公告)
- 15.1 (2022-11-10; 发行说明, 公告)
后端更改
常规
后台写入器
和检查点进程
现在也将在崩溃恢复期间运行(提交 7ff23c6d)- 带有尾随非数字字符的数字文字现在将被拒绝(提交 2549f066)
- 数据库创建可以在不需要 检查点 的情况下执行(提交 9c08aea6)
- 改进的 PRNG API 和算法(提交 3804539e)
源代码配置
- 添加了选项
--with-zstd
(初始提交 6c417bbc)
ABI
- PostgreSQL 派生版本现在可以明确声明其 ABI 不兼容(提交 d6d1dfcc)
备份
- 独占备份模式(自 PostgreSQL 9.6 起已弃用)已删除(提交 39969e2a)
执行器
- 单调窗口函数的执行得到改进(提交 9d9c02cc)
钩子
添加
修改
object_access_hook
- 现在在
ALTER TABLE
通过表重写结束时调用(提交 7b565843)
- 现在在
日志记录
- 添加了对过度 ProcSignalBarrier 等待的日志记录(提交 0d343149)
- 通过
log_destination
选项jsonlog
添加了 JSON 格式的日志输出(dc686681)
权限
- 可以授予非超级用户对
SET
和ALTER SYSTEM
在各个 GUC 上的权限(提交 a0ffa885)
计划器
- 单调窗口函数的执行得到改进(提交 9d9c02cc)
postmaster
- 选项
--forkboot
重命名为--forkaux
(提交 50017f77) CREATE
对public
模式上的权限现在默认总是从PUBLIC
中撤销,并且现在由pg_database_owner
角色拥有(提交 b073c3cc)- 选项
-C
现在显示运行时计算的 GUC(提交 0c39c292)
序列
- 添加了非日志序列(提交 344d62fb)
统计收集器
- 替换为共享内存实现(提交 5891c7a8)
vacuum
VACUUM VERBOSE
和autovacuum
操作现在报告了如何推进relfrozenxid
和relminmxid
的详细信息(提交 872770fd)
WAL
- 整页写入可以使用
- 添加了对自定义资源管理器的支持(提交 5c279a6d)
- 添加了对 WAL 预取的支持(提交 5dc0418f)
- 改进了
pg_wal/archive_status
目录扫描的性能(提交 beb4e9ba)
数据类型更改
常规
- 添加了用于“内部使用”类型的新类型类别(提交 07eee5a0)
修改
分区更改
SQL 更改
常规
- 可以通过
UNIQUE [ NULLS [ NOT ] DISTINCT ]
选项配置UNIQUE
约束中NULL
值的相等性(提交 94aa7cc5) - 添加了
IS JSON
谓词(提交 33a37760) 已撤回(提交 2f2b18bd) - 添加了以下 SQL 标准 JSON 函数(提交 606948b0 和 49082c2c) 已撤回(提交 2f2b18bd)
JSON()
JSON_SCALAR()
JSON_SERIALIZE()
添加
修改
ALTER DATABASE
- 添加了
REFRESH COLLATION VERSION
语法(提交 37851a8b)
- 添加了
ALTER PUBLICATION
ALTER SEQUENCE
- 添加了语法
SET [ LOGGED | UNLOGGED ]
(提交 344d62fb)
- 添加了语法
ALTER SUBSCRIPTION
ALTER TABLE
ALTER VIEW
- 添加了
security_invoker
选项(提交 7faa5fc8)
- 添加了
CLUSTER
COPY
CREATE DATABASE
CREATE INDEX
- 添加了
UNIQUE [ NULLS [ NOT ] DISTINCT ]
语法(提交 94aa7cc5)
- 添加了
CREATE PUBLICATION
CREATE SEQUENCE
- 添加了语法
CREATE UNLOGGED SEQUENCE
(提交 344d62fb)
- 添加了语法
CREATE SUBSCRIPTION
CREATE TABLE
CREATE VIEW
- 添加了
security_invoker
选项(提交 7faa5fc8)
- 添加了
EXPLAIN
- 跟踪临时文件块的 I/O 定时 (efb0ef90)
GRANT
- 添加了
GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] } ON PARAMETER ...
语法(提交 a0ffa885)
- 添加了
REVOKE
- 添加了
REVOKE [ GRANT OPTION FOR ] { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] } ON PARAMETER ...
语法(提交 a0ffa885)
- 添加了
SELECT
- 添加了并行
DISTINCT
支持(提交 22c4e88e)
- 添加了并行
SET
系统目录更改
表
添加
修改
pg_collation
pg_constraint
- 添加了列
confdelsetcols
(提交 d6f96ed9)
- 添加了列
pg_database
pg_statistic_ext_data
- 添加了列
stxdinherit
(提交 269b532a)
- 添加了列
pg_subscription
视图
添加
pg_ident_file_mappings
(提交 a2c84990)pg_stat_recovery_prefetch
(提交 5dc0418f)pg_stat_subscription_stats
(提交 8d74fc96 和 7a850732)
修改
pg_stats_ext
- 添加列
inherited
(提交 269b532a)
- 添加列
pg_stats_ext_exprs
- 添加列
inherited
(提交 269b532a)
- 添加列
系统函数更改
添加
has_parameter_privilege()
(提交 a0ffa885)pg_backup_start()
(提交 39969e2a)pg_backup_stop()
(提交 39969e2a)pg_database_collation_actual_version()
(提交 37851a8b)pg_ls_logicalsnapdir()
(提交 1922d7c6)pg_ls_logicalmapdir()
(提交 1922d7c6)pg_ls_replslotdir()
(提交 1922d7c6)pg_settings_get_flags()
(提交 d10e41d4)pg_stat_force_next_flush()
(提交 0f96965c)regexp_count()
(提交 64243370)regexp_instr()
(提交 64243370)regexp_like()
(提交 64243370)regexp_substr()
(提交 64243370)
修改
array_to_tsvector()
- 禁止创建空词元 (提交 cbe25dcf)
pg_encoding_to_char()
- 添加文档 (提交 f6b5d05b)
pg_log_backend_memory_contexts()
- 非超级用户可以被授予执行权限 (提交 f0b051e3)
pg_size_bytes()
- 能够转换 PB 单位的大小 (提交 ca2e4472)
pg_size_pretty()
- 能够输出 PB 单位的大小 (提交 ca2e4472)
pg_stat_reset_shared()
- 添加选项
recovery_prefetch
(提交 5dc0418f)
- 添加选项
pg_stat_reset_single_table_counters()
- 现在能够重置集群级共享表的统计信息 (提交 e0426784)
poly_distance()
- 完全实现 (之前是一个无功能的存根) (提交 c5c192d7)
random()
- 改进的 PRNG API 和算法(提交 3804539e)
range_agg()
- 添加带有
multirange
输入的版本 (提交 7ae1619b)
- 添加带有
regexp_replace()
- 添加起始位置 (参数
start
) 和匹配位置 (参数N
) (提交 64243370)
- 添加起始位置 (参数
setweight()
- 现在允许
NULL
值 (提交 cbe25dcf)
- 现在允许
to_char()
- 添加对
of
、tzh
和tzm
格式模式的支持 (提交 9dde8289)
- 添加对
ts_delete()
- 现在允许
NULL
值 (提交 cbe25dcf)
- 现在允许
unnest()
- 添加对
multirange
参数的支持 (提交 9e3c217b)
- 添加对
已移除
pg_backup_start_time()
(提交 39969e2a)pg_is_in_backup()
(提交 39969e2a)pg_start_backup()
被pg_backup_start()
替换 (提交 39969e2a)pg_stop_backup()
被pg_backup_stop()
替换 (提交 39969e2a)
配置更改
常规
- 添加用于显示运行时计算的 GUC 的 GUC 标志
GUC_RUNTIME_COMPUTED
(提交 0c39c292)
添加
allow_in_place_tablespaces
(提交 7170f215)archive_library
(提交 5ef1eefd)enable_group_by_reordering
(提交 db0d67db) 在提交 f4c7c410 中回退)log_startup_progress_interval
(提交 9ce346ea)recovery_prefetch
(提交 5dc0418f)recursive_worktable_factor
(提交 0bd7af08)shared_memory_size
(提交 bd178805)shared_memory_size_in_huge_pages
(提交 43c1c4f6)stats_fetch_consistency
(提交 5891c7a8)wal_decode_buffer_size
(提交 5dc0418f)
修改
compute_query_id
- 添加选项
regress
(提交 ebf6c524)
- 添加选项
data_checksums
- 添加
GUC_RUNTIME_COMPUTED
分类 (提交 0c39c292)
- 添加
data_directory_mode
- 添加
GUC_RUNTIME_COMPUTED
分类 (提交 0c39c292)
- 添加
hash_mem_multiplier
- 默认值更改为
2.0
(提交 8f388f6f)
- 默认值更改为
log_autovacuum_min_duration
- 默认值从
-1
更改为10m
(提交 64da07c4)
- 默认值从
log_checkpoints
- 默认值更改为
on
(提交 64da07c4)
- 默认值更改为
log_destination
- 添加选项
jsonlog
(dc686681)
- 添加选项
wal_compression
wal_segment_size
- 添加
GUC_RUNTIME_COMPUTED
分类 (提交 0c39c292)
- 添加
已移除
用户/角色
- 添加
pg_checkpoint
默认角色 (提交 4168a474 和 b9eb0ff0) pg_read_all_stats
现在可以访问pg_backend_memory_contexts
和pg_shmem_allocations
(提交 77ea4f94)
过程语言更改
PL/Perl
- 最低要求版本现在是 Perl 5.8.3(提交 92e6a98c)
PL/pgSQL
- 改进了变量
CONSTANT
标记的强制执行(提交 ccd10a9b)
PL/Python
- 删除了对 Python 2 的支持(初始提交 19252e8e)
PL/Sample
添加了触发器处理程序示例(提交 2f4d0d67)
复制更改
复制协议
- 修改了
BASE_BACKUP
命令,使其语法更灵活(提交 0ba281cb)
PROGRESS [
(之前不接受布尔值)boolean
]CHECKPOINT { 'fast' | 'spread' }
(取代了之前的FAST
选项)WAL [
(之前不接受布尔值)boolean
]WAIT [
(取代了之前的boolean
]WAIT
选项)TABLESPACE_MAP [
(之前不接受布尔值)boolean
]VERIFY_CHECKSUMS [
(取代了之前的boolean
]NOVERIFY_CHECKSUMS
选项)
- 在
CREATE_REPLICATION_SLOT
中添加了TWO_PHASE
选项(提交 cda03cfe) BASE_BACKUP
命令修改了,使其语法更灵活(提交 0ba281cb)IDENTIFY_SYSTEM
不再需要在START_REPLICATION
之前执行(提交 8e7811e9)
逻辑复制
- 添加了对预备事务的支持(提交 a8fd13ca)
- 添加了对流式预备事务的支持(提交 63cf61cd)
- 添加了对发布模式下所有表的支持
(提交 5a283246)
- 添加了对行过滤器的支持(提交 52e4f0cd)
- 订阅可以选择在错误时禁用(提交 705e20f8)
- 添加了对指定单个表列的支持(提交 923def9a)
- 由 GUCs 影响的值的一致逻辑复制
DateStyle
、IntervalStyle
和extra_float_digits
被强制执行(提交 f3d4019d) - 添加了对序列逻辑解码的支持(提交 0da92dc5) 通过提交 2c7ea57e 撤回)
libpq 更改
- 添加了对服务器主题备用名称中 IPv4 和 IPv6 地址的支持(提交 c1932e54)
PQcancel()
现在使用PGconn
的tcp_user_timeout
和tcp_keepalives_{count|idle|interval}
设置(提交 5987feb7)PQsslAttribute(NULL, "library")
返回正在使用的 SSL 库的名称,无需连接句柄(提交 ebc8b7d4)
核心实用程序
createdb
pg_basebackup
- 实现了新的
COPY
子协议(提交 cc333f32) - 添加了选项
-t
/--target
(提交 3500ccc3) - 扩展了选项
--compress
以接受压缩方法和可选的压缩级别(提交 5c649fe1) - 选项
--compress
可以接受client-gzip
或server-gzip
以及gzip
(提交 0ad80329) - 选项
--compress
可以接受lz4
或server-lz4
(提交 dab29847) - 选项
--compress
可以接受client-lz4
(提交 751b8d23) - 选项
--compress
可以接受zstd
、client-zstd
或server-zstd
(提交 7cf085f0) - 选项
--compress
可以接受(client|server)-zstd:workers=N
以使用多个 zstd 工作进程提供并行备份(提交 51c0d186)
- 实现了新的
pgbench
pg_dump
pg_dumpall
- 添加了选项
--no-table-access-method
(提交 21586288) - 删除了对从早于 PostgreSQL 9.2 的版本转储的支持(提交 30e7c175)
- 添加了选项
pg_receivewal
pg_recvlogical
- 添加了选项
--two-phase
(提交 cda03cfe)
- 添加了选项
pg_restore
- 添加了选项
--no-table-access-method
(提交 21586288)
- 添加了选项
服务器实用程序
initdb
pg_resetwal
- 添加了选项
-u
/--oldest-transaction-id
(提交 74cf7d46)
- 添加了选项
pg_rewind
- 添加了选项
--config-file
(提交 0d5c3875)
- 添加了选项
pg_upgrade
- 添加了选项
-N
/--no-sync
(提交 3d5ffccb) - 保留了 filenode 和 tablespace OID(提交 9a974cbc)
- 保留了 postgres 和 template0 数据库 OID(提交 aa010514)
- 由
pg_upgrade
生成的文件现在将存储在升级后的集群的数据目录下的pg_upgrade_output.d
中(提交 38bfae36) - 现在将列出所有无法连接到的数据库(提交 26ebb0e2)
- 如果输出不是 tty,则不会发出进度状态(提交 27b02e07)
- 删除了对从早于 PostgreSQL 9.2 的版本升级的支持(提交 e469f0aa)
- 添加了选项
pg_waldump
psql
- 新的环境变量
PSQL_WATCH_PAGER
用于为psql
的\watch
命令设置分页器(提交 7c09d279) \getenv
斜杠命令 已添加(提交 33d3eead)\lo_list
/\dl
现在在提供+
选项时显示 大对象 的 ACL(提交 328dfbda)- 删除了对早于 PostgreSQL 9.2 版本的支持(提交 cf0cab86)
- 默认情况下显示多个查询的结果;添加了变量
SHOW_ALL_RESULTS
来控制此行为(提交 7844c991) \copy
性能得到提升(提交 eec57115)\dconfig
斜杠命令 已添加(提交 3e707fbb)
Contrib 模块
添加
basebackup_to_shell
(提交 c6306db2)basic_archive
(提交 5ef1eefd)pg_walinspect
(提交 2258e76f)
修改
amcheck
btree_gist
- 添加了
bool
操作类,允许在boolean
列上创建 GiST 索引(提交 57e3c516)
- 添加了
pgcrypto
- 现在仅在配置了 OpenSSL 支持时构建(提交 db7d1a7b)
postgres_fdw
pg_stat_statements
sepgsql
- 日志消息中现在包含了宽松/强制状态(提交 134d9746)
test_decoding
- 添加了选项
include-sequences
(提交 80901b32)
- 添加了选项
xml2
- 删除了函数
xml_is_well_formed()
(提交 fd2abeb7)
- 删除了函数
测试更改
TAP 测试
- Perl 模块
PostgresNode
和TestLib
移动到自定义命名空间PostgreSQL::Test
(b3b4d8e6)
其他
- 添加了通过 cirrus-ci 对 github 存储库进行持续集成支持(提交 93d97349)
CommitFests
以下 提交节 用于 PostgreSQL 15
代码提交
提交节 37(2022-03-01 - 2022-03-31;已关闭)提交节 36(2022-01-01 - 2022-01-31;已关闭)提交节 35(2021-11-01 - 2021-11-30;已关闭)提交节 34(2021-09-01 - 2021-09-30;已关闭)提交节 33(2021-07-01 - 2021-07-31;已关闭)
请注意,三月份的提交节通常会在官方结束日期之后开放几天,直到功能冻结宣布,通常在四月的月初。
发布计划和预发布测试版本
rc2
(REL_15_RC2
) - 提交 2a40d040(2022-10-03)rc1
(REL_15_RC1
) - 提交 6abbd212(2022-09-26);公告(2022-09-29):PostgreSQL 15 RC 1 发布!beta4
(REL_15_BETA4
) - 提交 6e55ea79(2022-09-05);公告(2022-09-08):PostgreSQL 15 Beta 4 发布!beta3
(REL_15_BETA3
) - 提交 6778361e(2022-08-08);公告(2022-08-11):PostgreSQL 14.5、13.8、12.12、11.17、10.22 和 15 Beta 3 发布!beta2
(REL_15_BETA2
) - 提交 c1d033fc(2022-06-27);公告(2022-06-30):PostgreSQL 15 Beta 2 发布!beta1
(REL_15_BETA1
) - 提交 05a5a177(2022-05-16);公告(2022-05-19):PostgreSQL 15 Beta 1 发布!
PostgreSQL 15
开发开始的初始提交是 596b5af1(2021-06-28)。