PostgreSQL 12
- 发布说明 (源文件)
- 发布日期:2019-10-03 (发布公告)
- 当前次要版本:12.20 (2024-08-08)
- EOL:2024-11 (预计)
- 文档:PostgreSQL 12 (索引)
- GIT 分支:REL_12_STABLE
次要版本发布
- 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)
当在ALTER TABLE ... SET DATA TYPE
timestamp
和timestamptz
之间更改时,避免表重写,此时会话时区为 UTC (提交 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)archive_cleanup_command
promote_trigger_file
(以前为trigger_file
)recovery_end_command
recovery_min_apply_delay
autovacuum_vacuum_cost_delay
- 默认值从 20ms 降低到 2ms (提交 cbccac37)
extra_float_digits
- 默认值从
0
更改为1
(提交 02ddd499)
- 默认值从
max_wal_senders
- 现在,备用服务器上该值必须与上游服务器上的值相同或更大(提交 ea92368c)
recovery_target_timeline
- 现在默认值为
latest
而不是current
(提交 0acb3bc3)
- 现在默认值为
删除了
default_with_oids
(提交 578b2297)standby_mode
- (以前的 recovery.conf 参数) 被
recovery.signal
和standby.signal
文件替换(提交 2dedf4d9)
- (以前的 recovery.conf 参数) 被
索引更改
GIN
真空更改
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_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).