PostgreSQL 12
- 发行说明 (源文件)
- 发布日期:2019-10-03 (发布公告)
- 最终次要版本:12.21 (2024-11-14)
- EOL:2024-11
- 文档:PostgreSQL 12 (索引)
- GIT 分支:REL_12_STABLE
次要版本发布
- 12.21 (2024-11-14; 发行说明; 公告)
- 12.20 (2024-08-08; 发行说明; 公告)
- 12.19 (2024-05-09; 发行说明; 公告)
- 12.18 (2024-02-08; 发行说明, 公告
- 12.17 (2023-11-09; 发行说明, 公告
- 12.16 (2023-08-10; 发行说明, 公告
- 12.15 (2023-05-11; 发行说明, 公告
- 12.14 (2023-02-09; 发行说明, 公告)
- 12.13 (2022-11-10; 发行说明, 公告)
- 12.12 (2022-08-11; 发行说明, 公告)
- 12.11 (2022-05-12; 发行说明, 公告)
- 12.10 (2022-02-10; 发行说明, 公告)
- 12.9 (2021-11-11; 发行说明, 公告)
- 12.8 (2021-08-12; 发行说明, 公告)
- 12.7 (2021-05-13; 发行说明, 公告)
- 12.6 (2021-02-11; 发行说明, 公告)
- 12.5 (2020-11-12; 发行说明, 公告)
- 12.4 (2020-08-13; 发行说明, 公告)
- 12.3 (2020-05-14; 发行说明)
- 12.2 (2020-02-13; 发行说明)
- 12.1 (2019-11-14; 发行说明)
主要功能
分区
性能增强btree
索引增强REINDEX CONCURRENTLY
生成列
- 自动(但可覆盖)内联
公共表表达式
- 进度报告 视图用于
CREATE INDEX
、REINDEX
、CLUSTER
和VACUUM FULL
SQL/JSON 路径
支持
有用链接
- PostgreSQL 12 可观察性 (来自 DataEgret 的交互式图表)
SQL 更改
一般
公共表表达式 (CTE)
MATERIALIZED
/NOT MATERIALIZED
子句用于控制物化 (提交 608b167f)
已修改
ABORT
[ AND [ NO ] CHAIN ]
语法已添加 (提交 280a408b)
ALTER FOREIGN TABLE
ALTER FUNCTION
- 已添加选项
SUPPORT
(提交 1fb57af9)
- 已添加选项
ALTER TABLE
ALTER TABLE ... ATTACH PARTITION
现在以减少的锁定要求执行 (提交 898e5e32)
在会话时区为 UTC 时,在ALTER TABLE ... SET DATA TYPE
timestamp
和timestamptz
之间更改时避免表重写 (提交 3c592630)ALTER TABLE ... SET NOT NULL
可以避免不必要的表扫描 (提交 bbb96c37)ALTER TABLE
现在可以在 系统目录 表上干净地执行 (提交 590a8702)GENERATED ALWAYS AS ( ... ) STORED
语法已添加 (提交 fc22b662)
COMMIT
[ AND [ NO ] CHAIN ]
语法已添加 (提交 280a408b)
COPY
CREATE AGGREGATE
- 添加了
OR REPLACE
语法 (提交 01bde4fa)
- 添加了
CREATE COLLATION
- 添加了
DETERMINISTIC
选项 (提交 5e1963fb)
- 添加了
CREATE FOREIGN TABLE
CREATE FUNCTION
- 已添加选项
SUPPORT
(提交 1fb57af9)
- 已添加选项
CREATE TABLE AS
EXPLAIN
- 添加了
SETTINGS
选项 (提交 ea569d64)
- 添加了
REINDEX
- 添加了
CONCURRENTLY
选项 (5dc92b84)
- 添加了
ROLLBACK
[ AND [ NO ] CHAIN ]
语法已添加 (提交 280a408b)
常规更改
优化器
- 为
statistic objects
添加了最常见值统计选项 (提交 7300a699)
性能
当在会话时区为 UTC 时,在ALTER TABLE ... SET DATA TYPE
timestamp
和timestamptz
之间更改时,避免表重写 (提交 3c592630)ALTER TABLE ... SET NOT NULL
可以避免不必要的表扫描 (提交 bbb96c37)- 规划器可以使用虚拟 RTE 替换空的 FROM 子句,从而提高性能 (提交 4be058fe)
分区更改
ALTER TABLE ... ATTACH PARTITION
现在以减少的锁定需求执行 (提交 898e5e32)
兼容性更改
- OID 现在不再可用作行级属性;系统目录表上的 OID 列已成为普通列
recovery.conf
项目已集成到主 PostgreSQL 配置文件 结构中 (提交 2dedf4d9)jit
现在默认on
后端更改
排序规则处理
- 添加了对非确定性排序规则的支持 (提交 5e1963fb)
存储参数
- 添加了以下 存储参数
系统目录更改
表
一般
添加了
已修改
pg_am
- 除了索引访问方法外,还支持表访问方法 (提交 8586bf7e)
pg_attrdef
- 删除了
adsrc
列 (提交 fe503823)
- 删除了
pg_class
- 删除了
relhasoids
列
- 删除了
pg_constraint
- 删除了 consrc (提交 96b00c43)
pg_proc
将
protransform
列重命名为prosupport
(提交 74dfe58a)
pg_statistic
- 添加了以下列 (提交 5e092800)
stacoll1
stacoll2
stacoll3
stacoll4
stacoll5
- 添加了以下列 (提交 5e092800)
pg_statistic_ext
- 删除了以下列(并合并到新表
pg_statistic_ext_data
中,提交 6cbfb784)stxndistinct
stxdependencies
- 删除了以下列(并合并到新表
视图
添加了
pg_stats_ext
(提交 aa087ec6)pg_stat_gssapi
(提交 b0b39f72)pg_stat_progress_cluster
(提交 6f97457e)pg_stat_progress_create_index
(提交 ab0dfc96)
已修改
pg_stat_database
:pg_stat_replication
- 添加了
reply_time
列 (提交 7fee252f)
- 添加了
pg_stat_ssl
系统函数
添加了
acosh()
(提交 f1d85aa9)asinh()
(提交 f1d85aa9)atanh()
(提交 f1d85aa9)cosh()
(提交 f1d85aa9)jsonb_path_exists()
(提交 72b64603)jsonb_path_match()
(提交 72b64603)jsonb_path_query()
(提交 72b64603)jsonb_path_query_array()
(提交 72b64603)jsonb_path_query_first()
(提交 72b64603)log10()
(提交 f1d85aa9)pg_copy_logical_replication_slot()
(提交 9f06d79e)pg_copy_physical_replication_slot()
(提交 9f06d79e)pg_ls_archive_statusdir()
(提交 c4810162)pg_ls_tmpdir()
(提交 9cd92d1a)pg_partition_ancestors()
(提交 b96f6b19)pg_partition_root()
(提交 3677a0b2)pg_partition_tree()
(提交 d5eec4ee)pg_promote()
(提交 10074651)sinh()
(提交 f1d85aa9)tanh()
(提交 f1d85aa9)
已修改
pg_config()
- 标记为
stable
(之前为:immutable
;提交 290e3b77)的功能行为
- 标记为
数据类型
添加了
jsonpath
(初始提交 72b64603)
已移除
配置更改
添加了
data_sync_retry
(回退到 PostgreSQL 9.4;提交 9ccdd7f6)default_table_access_method
(提交 8586bf7e)log_transaction_sample_rate
(提交 799e2203)plan_cache_mode
(提交 f7cb2842)shared_memory_type
(提交 f1bebef6)ssl_library
(提交 98efa76f)ssl_max_protocol_version
(提交 e73e67c7)ssl_min_protocol_version
(提交 e73e67c7)tcp_user_timeout
(提交 249d6499)wal_init_zero
(提交 475861b2)wal_recycle
(提交 475861b2)
已修改
- 以下项目(之前的
recovery.conf
参数)现在可以通过重新加载(SIGHUP
)而不是服务器重启来更改(提交 13b89f96) autovacuum_vacuum_cost_delay
- 默认值从 20ms 降低到 2ms(提交 cbccac37)
extra_float_digits
- 默认值从
0
更改为1
(提交 02ddd499)
- 默认值从
max_wal_senders
- 现在,备用服务器上的此值必须与上游服务器上的值相同或更大(提交 ea92368c)
recovery_target_timeline
- 现在默认为
latest
而不是current
(提交 0acb3bc3)
- 现在默认为
wal_sender_timeout
- 可以为单个连接设置(提交 db361db2)
已移除
default_with_oids
(提交 578b2297)standby_mode
- (之前的 recovery.conf 参数)由
recovery.signal
和standby.signal
文件替换(提交 2dedf4d9)
- (之前的 recovery.conf 参数)由
索引更改
GIN
Vacuum 更改
VACUUM
选项INDEX_CLEANUP
已添加(提交 a96c41fe)VACUUM
/ANALYZE
选项SKIP_LOCKED
已添加(提交 803b1301)VACUUM
选项TRUNCATE
已添加(提交 b84dbc8e)
复制更改
复制槽
- 复制槽(物理和逻辑)现在可以复制(提交 9f06d79e)
Walreceiver
- 如果设置了
cluster_name
,则连接到上游节点时,fallback_application_name
将设置为该值(提交 6ae578a9)
复制配置更改
recovery.conf
项目已集成到 PostgreSQL 主 配置文件 结构中(提交 2dedf4d9)。
libpq 更改
- 详细程度级别
SQLSTATE
已添加到函数PQsetErrorVerbosity()
中(提交 7bac3aca)
全文搜索
- 添加了对阿拉伯语、印尼语、爱尔兰语、立陶宛语、尼泊尔语和泰米尔语的词干提取支持(提交 fd582317)
信息模式 更改
服务器实用程序
添加了
pg_checksums
(替换pg_verify_checksums
;初始提交 6dd263cf)
已修改
pg_ctl
pg_upgrade
pg_rewind
- 添加了选项
-N
/--no-sync
(提交 8a00b96a)
- 添加了选项
核心实用程序
已修改
pg_basebackup
- 选项
--write-recovery-conf
现在会将其配置设置写入postgresql.auto.conf
(提交 2dedf4d9)
- 选项
pgbench
pg_restore
- 输出不再默认定向到
STDOUT
;必须显式指定“-f -
”(提交 413ccaa7)
- 输出不再默认定向到
reindexdb
- 添加了
--concurrently
选项(提交 5dc92b84)
- 添加了
vacuumdb
ECPG 更改
psql 更改
- 添加了
\dP
命令以列出分区表和索引(提交 1c5d9270) - CSV添加了表格输出模式(提交 aa2ba50c)
- 在
psql
的\help
输出中显示了指向联机手册页面的链接(提交 27f3dea6) - 特殊变量
VERBOSITY
现在接受值sqlstate
(提交 7bac3aca)
Contrib 模块
已修改
auto_explain
- 添加了选项
auto_explain.log_level
(提交 2d36a5e9)
- 添加了选项
citext
- 添加了类型 citext 的 64 位哈希函数(提交 48c41fa9)
postgres_fdw
pg_stat_statements
- 现在可以针对特定的数据库、用户和查询重置统计信息(提交 43cbedab)。
vacuumlo
已移除
timetravel
示例扩展已从spi
contrib 模块
中移除(提交 2d10defa)。
源代码
- 需要 C99 支持(提交 d9dd406f)。
测试
一般
测试模块
添加了
test_integerset
(提交 df816f6a)。test_misc
(提交 121e3cee)。unsafe_tests
(提交 c91504b9)。
预发布测试版本
rc1
- 提交:17822c0e(2019-09-23)beta4
- 提交:84bb33c4(2019-09-09);公告(2019-09-12)beta3
- 提交:7c45b994(2019-08-05);公告(2019-08-08)beta2
- 提交:0ab7110b(2019-06-17);公告(2019-06-20)beta1
- 提交:a240570b(2019-05-20);公告(2019-05-23)
PostgreSQL 12
开发的初始提交标记为 feced138(2018-06-30)。