PostgreSQL 12
- 发布说明 (源文件)
- 发布日期: 2019-10-03 (发布公告)
- 最后一个次要版本: 12.22 (2024-11-21)
- EOL: 2024-11
- 文档: PostgreSQL 12 (索引)
- GIT 分支: REL_12_STABLE
次要版本发布
- 12.22 (2024-11-21; 发布说明; 公告)
- 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 path
支持
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)
- 添加了
总体变更
优化器
- 为
统计对象
添加了most-common-value统计选项(提交 7300a699)
性能
在将ALTER TABLE ... SET DATA TYPE
timestamp
和timestamptz
之间更改时,如果会话时区是 UTC,则避免表重写(提交 3c592630)ALTER TABLE ... SET NOT NULL
可以避免不必要的表扫描(提交 bbb96c37)- 规划器可以通过替换空的 FROM 子句为一个虚拟 RTE 来提高性能(提交 4be058fe)
分区更改
ALTER TABLE ... ATTACH PARTITION
现在通过降低锁定要求来执行(提交 898e5e32)
兼容性变更
- OIDs 不再作为行级属性可用;系统目录表上的 OID 列已成为普通列
recovery.conf
项目已集成到主 PostgreSQL 配置文件结构中(提交 2dedf4d9)jit
现在默认on
后端更改
排序规则处理
- 添加了对非确定性排序规则的支持(提交 5e1963fb)
存储参数
- 添加了以下 存储参数
vacuum_index_cleanup
(提交 a96c41fe)toast.vacuum_index_cleanup
(提交 ce59b75d)vacuum_truncate
,toast.vacuum_truncate
(提交 119dcfad)
系统目录更改
表
通用
已添加
已修改
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 更改
- 在函数
PQsetErrorVerbosity()
中添加了SQLSTATE
的详细程度级别(提交 7bac3aca) - 添加了
gssencmode
连接参数(提交 b0b39f72) - 添加了
tcp_user_timeout
连接参数(提交 249d6499)
全文搜索
- 添加了阿拉伯语、印度尼西亚语、爱尔兰语、立陶宛语、尼泊尔语和泰语的词干提取支持(提交 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
移除
- 从
spi
contrib 模块
中移除了timetravel
示例扩展(提交 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)。