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 TABLEALTER FUNCTION- 添加了
SUPPORT选项(提交 1fb57af9)
- 添加了
ALTER TABLEALTER 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)
- 添加了
COPYCREATE AGGREGATE- 添加了
OR REPLACE语法(提交 01bde4fa)
- 添加了
CREATE COLLATION- 添加了
DETERMINISTIC选项(提交 5e1963fb)
- 添加了
CREATE FOREIGN TABLECREATE FUNCTION- 添加了
SUPPORT选项(提交 1fb57af9)
- 添加了
CREATE TABLE ASEXPLAIN- 添加了
SETTINGS选项(提交 ea569d64)
- 添加了
REINDEX- 添加了
CONCURRENTLY选项(5dc92b84)
- 添加了
ROLLBACK- 添加了
[ AND [ NO ] CHAIN ]语法(提交 280a408b)
- 添加了
总体变更
优化器
- 为
统计对象添加了most-common-value统计选项(提交 7300a699)
性能
在将ALTER TABLE ... SET DATA TYPEtimestamp和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_procprotransform列重命名为prosupport(提交 74dfe58a)
pg_statistic- 添加了以下列(提交 5e092800)
stacoll1stacoll2stacoll3stacoll4stacoll5
- 添加了以下列(提交 5e092800)
pg_statistic_ext- 移除了以下列(并合并到新表
pg_statistic_ext_data中,提交 6cbfb784)stxndistinctstxdependencies
- 移除了以下列(并合并到新表
视图
已添加
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_ctlpg_upgradepg_rewind- 添加了
-N/--no-sync选项(提交 8a00b96a)
- 添加了
核心实用工具
已修改
pg_basebackup--write-recovery-conf现在会将配置设置写入postgresql.auto.conf(提交 2dedf4d9)
pgbenchpg_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_fdwpg_stat_statements- 统计信息现在可以针对特定数据库、用户和查询进行重置(提交 43cbedab)
vacuumlo
移除
- 从
spicontrib 模块中移除了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)。
