PostgreSQL 15
- 发布说明 (源文件)
- 发布日期:2022-10-13 (公告)
- 当前小版本:15.14 (2025-08-14)
- EOL:2027-11 (估算)
- 文档:PostgreSQL 15 (索引)
- GIT 分支:REL_15_STABLE
次要版本发布
- 15.14 (2025-08-14; 发布说明; 公告)
- 15.13 (2025-05-08; 发布说明; 公告)
- 15.12 (2025-02-20; 发布说明; 公告)
- 15.11 (2025-02-13; 发布说明; 公告)
- 15.10 (2024-11-21; 发布说明; 公告)
- 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; 发布说明, 公告)
后端更改
通用
background writer和checkpointer现在在崩溃恢复期间也会运行 (提交 7ff23c6d)- 带有尾随非数字字符的数值字面量现在将被拒绝 (提交 2549f066)
- 数据库创建可以在不需要 checkpoint 的情况下执行 (提交 9c08aea6)
- 改进了 PRNG API 和算法 (提交 3804539e)
源配置
- 添加了选项
--with-zstd(初始提交 6c417bbc)
ABI
- PostgreSQL 分支现在可以显式声明其 ABI 不兼容 (提交 d6d1dfcc)
备份
- 删除了独占备份模式(自 PostgreSQL 9.6 起已弃用)(提交 39969e2a)
执行器
钩子
已添加
已修改
object_access_hook- 现在在
ALTER TABLE进行表重写结束时调用 (提交 7b565843)
- 现在在
日志记录
- 添加了过度的 ProcSignalBarrier 等待的日志记录 (提交 0d343149)
- 通过
log_destination选项jsonlog添加了 JSON 格式的日志输出 (dc686681)
权限
- 允许将权限授予非超级用户以在单个 GUC 上执行
SET和ALTER SYSTEM(提交 a0ffa885)
规划器
postmaster
- 选项
--forkboot重命名为--forkaux(提交 50017f77) - 默认情况下,
CREATE对public模式的权限现在总是被撤销,并且现在由pg_database_owner角色拥有 (提交 b073c3cc) - 选项
-C现在显示运行时计算的 GUCs (提交 0c39c292)
序列
- 添加了未记录的序列 (提交 344d62fb)
统计收集器
- 被共享内存实现取代 (提交 5891c7a8)
vacuum
VACUUM VERBOSE和autovacuum操作现在报告relfrozenxid和relminmxid如何前进的详细信息 (提交 872770fd)
WAL
- 全页写入可以被压缩
- 添加了对自定义资源管理器(custom resource managers)的支持 (提交 5c279a6d)
- 添加了对 WAL 预取(WAL prefetching)的支持 (提交 5dc0418f)
- 改进了
pg_wal/archive_status目录扫描的性能 (提交 beb4e9ba)
数据类型更改
通用
- 添加了用于“内部使用”类型的("internal use" types)新类型类别 (提交 07eee5a0)
已修改
JSONNUMERIC- 标度(scale)可以是负数或大于精度(precision)(提交 085f931f)
xid- 添加了对
MIN()和MAX()聚合函数(aggregates)的支持 (提交 400fc6b6)
- 添加了对
分区更改
SQL 更改
通用
NULL值在UNIQUE约束中的相等性可以通过UNIQUE [ NULLS [ NOT ] DISTINCT ]选项进行配置 (提交 94aa7cc5)- 添加了
IS JSON断言 (commit 33a37760) 已撤销 (commit 2f2b18bd) - 添加了以下 SQL 标准 JSON 函数 (提交 606948b0 和 49082c2c) 已撤销 (提交 2f2b18bd)
JSON()JSON_SCALAR()JSON_SERIALIZE()
已添加
已修改
ALTER DATABASE- 添加了
REFRESH COLLATION VERSION语法 (提交 37851a8b)
- 添加了
ALTER PUBLICATIONALTER SEQUENCE- 添加了
SET [ LOGGED | UNLOGGED ]语法 (提交 344d62fb)
- 添加了
ALTER SUBSCRIPTION
- 添加了
ALTER SUBSCRIPTION ... SKIP语法 (提交 208c5d65) - 添加了参数
disable_on_error(提交 705e20f8) - 在
ALTER SUBSCRIPTION ... SET PUBLICATION ...中,如果目标 publication 不存在,现在将发出WARNING(提交 8f2e2bbf)
- 添加了
ALTER TABLEALTER VIEW- 添加了
security_invoker选项 (提交 7faa5fc8)
- 添加了
CLUSTERCOPYCREATE DATABASECREATE INDEX- 添加了
UNIQUE [ NULLS [ NOT ] DISTINCT ]语法 (提交 94aa7cc5)
- 添加了
CREATE PUBLICATIONCREATE SEQUENCE- 添加了
CREATE UNLOGGED SEQUENCE语法 (提交 344d62fb)
- 添加了
CREATE SUBSCRIPTION- 添加了参数
two_phase(提交 a8fd13ca) - 添加了参数
disable_on_error(提交 705e20f8) - 在
ALTER SUBSCRIPTION ... SET PUBLICATION ...中,如果目标 publication 不存在,现在将发出WARNING(提交 8f2e2bbf)
- 添加了参数
CREATE TABLECREATE 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_collationpg_constraint- 添加了列
confdelsetcols(提交 d6f96ed9)
- 添加了列
pg_databasepg_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()- 禁止创建空词素(empty lexemes)(提交 cbe25dcf)
pg_encoding_to_char()- 添加了文档 (提交 f6b5d05b)
pg_log_backend_memory_contexts()- 可以授予非超级用户执行权限 (提交 f0b051e3)
pg_size_bytes()- 能够转换 PB(petabytes)为单位的大小 (提交 ca2e4472)
pg_size_pretty()- 能够输出 PB(petabytes)为单位的大小 (提交 ca2e4472)
pg_stat_reset_shared()- 添加了选项
recovery_prefetch(提交 5dc0418f)
- 添加了选项
pg_stat_reset_single_table_counters()- 现在能够重置集群范围内共享表(cluster-wide shared tables)的统计信息 (提交 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格式模式(format patterns)的支持 (提交 9dde8289)
- 添加了对
ts_delete()NULL值现在允许 (提交 cbe25dcf)
unnest()- 添加了对
multirange参数的支持 (提交 9e3c217b)
- 添加了对
移除
pg_backup_start_time()(提交 39969e2a)pg_is_in_backup()(提交 39969e2a)- 用
pg_backup_start()替换了pg_start_backup()(提交 39969e2a) - 用
pg_backup_stop()替换了pg_stop_backup()(提交 39969e2a)
配置更改
通用
- 添加了 GUC 标志
GUC_RUNTIME_COMPUTED用于显示运行时计算的 GUCs (提交 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_compressionwal_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) - 执行
START_REPLICATION不再需要先执行IDENTIFY_SYSTEM(提交 8e7811e9)
逻辑复制 (Logical replication)
- 添加了对预备事务(prepared transactions)的支持 (提交 a8fd13ca)
- 添加了对流式预备事务(streaming prepared transactions)的支持 (提交 63cf61cd)
- 支持发布模式下的所有表
(提交 5a283246) - 添加了行过滤器(row filters)的支持 (提交 52e4f0cd)
- 订阅可以根据错误选择性地禁用 (提交 705e20f8)
- 添加了指定单个表列的支持 (提交 923def9a)
- 强制对受 GUC
DateStyle、IntervalStyle和extra_float_digits影响的值进行一致的逻辑复制 (提交 f3d4019d) - 添加了对序列(sequences)的逻辑解码支持 (提交 0da92dc5) 在提交 2c7ea57e 中已回滚)
libpq 更改
- 添加了对服务器主题备用名称(Subject Alternative Names)中 IPv4 和 IPv6 地址的支持 (提交 c1932e54)
PQcancel()现在使用PGconn的tcp_user_timeout和tcp_keepalives_{count|idle|interval}设置 (提交 5987feb7)PQsslAttribute(NULL, "library")在不需要连接句柄的情况下返回正在使用的 SSL 库的名称 (提交 ebc8b7d4)
核心实用程序
createdbpg_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 worker 的并行备份 (提交 51c0d186)
- 实现了新的
pgbenchpg_dumppg_dumpall- 添加了选项
--no-table-access-method(提交 21586288) - 移除了对从 PostgreSQL 9.2 之前的版本进行备份的支持 (提交 30e7c175)
- 添加了选项
pg_receivewalpg_recvlogical- 添加了选项
--two-phase(提交 cda03cfe)
- 添加了选项
pg_restore- 添加了选项
--no-table-access-method(提交 21586288)
- 添加了选项
服务器实用程序
initdbpg_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在提供+选项时现在显示 大对象 的 ACLs (提交 328dfbda)- 移除了对 PostgreSQL 9.2 之前版本(pre-PostgreSQL 9.2)的支持 (提交 cf0cab86)
- 默认显示多个查询的结果;添加了变量
SHOW_ALL_RESULTS来控制此行为 (提交 7844c991) \copy性能得到改进 (提交 eec57115)- 添加了
\dconfig斜杠命令 (提交 3e707fbb)
Contrib模块
已添加
basebackup_to_shell(提交 c6306db2)basic_archive(提交 5ef1eefd)pg_walinspect(提交 2258e76f)
已修改
amcheckbtree_gist- 添加了
boolopclass 以允许在boolean列上创建 GiST 索引 (提交 57e3c516)
- 添加了
pgcrypto- 现在仅在配置了 OpenSSL 支持时才构建 (提交 db7d1a7b)
postgres_fdwpg_stat_statementssepgsql- 允许/强制状态现在包含在日志消息中 (提交 134d9746)
test_decoding- 添加了选项
include-sequences(提交 80901b32)
- 添加了选项
xml2- 删除了函数
xml_is_well_formed()(提交 fd2abeb7)
- 删除了函数
测试变更
TAP 测试
- Perl 模块
PostgresNode和TestLib已移至自定义命名空间PostgreSQL::Test(b3b4d8e6)
其他
- 通过 cirrus-ci 添加了对 github 存储库的持续集成支持 (提交 93d97349)
CommitFests
以下 CommitFests 是为 PostgreSQL 15 的代码提交准备的
CommitFest 37 (2022-03-01 - 2022-03-31; 已关闭)CommitFest 36 (2022-01-01 - 2022-01-31; 已关闭)CommitFest 35 (2021-11-01 - 2021-11-30; 已关闭)CommitFest 34 (2021-09-01 - 2021-09-30; 已关闭)CommitFest 33 (2021-07-01 - 2021-07-31; 已关闭)
请注意,三月的 CommitFest 通常会在官方结束日期后几天保持开放,直到宣布功能冻结(feature freeze),通常在四月初。
发布计划和预发布测试版本
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); announcehttps://postgresql.ac.cn/message-id/170740132495.3279718.8259216676039225646%40wrigleys.postgresql.orgment (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!
标志着 PostgreSQL 15 开发开始的初始提交是 596b5af1 (2021-06-28)。
