PostgreSQL 10
- 发行说明 (源文件)
- 发布日期:2017-10-05 (发布公告)
- 最终次要版本:10.23 (2022-11-10)
- 生命周期结束:2022-11 (生命周期结束公告)
- 文档:PostgreSQL 10
- GIT 分支:REL_10_STABLE
次要版本发布
- 10.22 (2022-08-11; 发行说明,公告)
- 10.21 (2022-05-12; 发行说明,公告)
- 10.20 (2022-02-10; 发行说明,公告)
- 10.19 (2021-11-11; 发行说明,公告)
- 10.18 (2021-08-12; 发行说明,公告)
- 10.17 (2021-05-13; 发行说明,公告)
- 10.16 (2021-02-11; 发行说明,公告)
- 10.15 (2020-11-12; 发行说明,公告)
- 10.14 (2020-08-13; 发行说明,公告)
主要功能
- 逻辑复制 使用发布/订阅
- 声明式表分区
- 改进的查询并行性
- 基于
SCRAM-SHA-256
的更强大的密码身份验证 (提交 818fd4a6) - 显著的一般性能改进
- 改进的监控和控制
- SQL 标准标识列 (提交 32173270)
- ICU 排序支持 (初始提交 eccfef81)
- 版本号更改为两部分系统 (提交 ca9112a4)
有用链接
- PostgreSQL 10 可观察性 (来自 DataEgret 的交互式图表)
后端更改
数据目录
扩展支持
前端/后端协议
- 删除了对协议版本 1 的支持 (提交 2f1eaf87)
进程管理
postmaster.pid
- 添加了包含 postmaster 状态的附加行 (提交 f13ea95f)
优化器
- 可选的多列
扩展统计对象
,可通过CREATE STATISTICS
命令配置 (初始提交 7b504eb2)
SPI
- 一些函数被删除并替换为无操作宏 (提交 1833f1a1)
SPI_connect()
和SPI_finish()
将不再返回错误代码 (SPI_ERROR_CONNECT
和SPI_ERROR_UNCONNECTED
) ,因为任何失败条件都将被服务器ERROR
捕获 (提交 1833f1a1)
统计
- 实现了多元 n-distinct 系数支持 (初始提交 7b504eb2)
触发器
- 在
AFTER
触发器中的转换表 (初始提交 8c48375e)
Vacuum
- 更快地删除孤立的临时表 (提交 a734fd5d)
源代码配置
SQL 更改
一般更改
命令更改
已添加
ALTER PUBLICATION
(提交 665d1fad)ALTER SUBSCRIPTION
(提交 665d1fad)ALTER STATISTICS
(提交 7b504eb2)CREATE PUBLICATION
(提交 665d1fad)CREATE STATISTICS
(提交 7b504eb2)CREATE SUBSCRIPTION
(提交 665d1fad)DROP PUBLICATION
(提交 665d1fad)DROP STATISTICS
(提交 7b504eb2)DROP SUBSCRIPTION
(提交 665d1fad)
修改
ALTER COLLATION
ALTER COLLATION ... REFRESH VERSION
语法已添加 (提交 eccfef81)
ALTER DEFAULT PRIVILEGES
- 添加了修改模式权限的支持 (提交 ab89e465)
ALTER ROLE
- 选项
UNENCRYPTED PASSWORD
已移除 (eb61136d)
- 选项
ALTER SEQUENCE
ALTER TYPE
ALTER USER
- 选项
UNENCRYPTED PASSWORD
已移除 (提交 eb61136d)
- 选项
COMMENT ON
COPY
COPY view FROM
现在可以插入到使用INSTEAD OF INSERT
触发器定义的视图中 (提交 279c439c)
CREATE COLLATION
CREATE FOREIGN TABLE
- 添加了通过
CREATE FOREIGN TABLE ... PARTITION OF
语法进行表分区的支持 (提交 f0e44751)
- 添加了通过
CREATE POLICY
AS { PERMISSIVE | RESTRICTIVE }
语法已添加 (提交 093129c9)
CREATE ROLE
- 选项
UNENCRYPTED PASSWORD
已移除 (提交 eb61136d)
- 选项
CREATE SEQUENCE
CREATE SEQUENCE ... AS *data_type*
子句已添加 (提交 2ea5b06c)
CREATE SERVER
IF NOT EXISTS
子句已添加 (提交 b6fb534f)
CREATE TABLE
CREATE TRIGGER
REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name }
语法已添加 (初始提交 8c48375e)
CREATE USER
- 选项
UNENCRYPTED PASSWORD
已移除 (eb61136d)
- 选项
CREATE USER MAPPING
IF NOT EXISTS
子句已添加 (提交 b6fb534f)
EXPLAIN
SUMMARY
选项已添加 (提交 f9b1a0dd)
INSERT
OVERRIDING { SYSTEM | USER } VALUE
语法已添加 (提交 32173270)
SELECT
- 在
CASE
或COALESCE
子句内不允许使用返回集合的函数 (提交 0436f6bd)
- 在
数据类型更改
常规
- 已移除对浮点时间戳的支持 (提交 b6aa17e0)
修改
ENUM
:可以使用ALTER TYPE
重命名值 (提交 0ab9c56d)
索引更改
BRIN
- 添加了自动汇总功能 (提交 7526e102)
- 添加了通过
brin summarize range()
和brin desummarize range()
函数进行反汇总的支持 (提交 c655899b) - 成本估算改进 (提交 7e534adc)
btree 索引
- 添加了并行索引扫描支持 (初始提交 569174f1)
GIN
- 减少了真空操作期间的页面锁定 (提交 218f5158)
哈希索引
SP-GiST
- 添加了对
inet
和cidr
数据类型的支持 (提交 77e29068)
配置更改
已添加
enable_gathermerge
(提交 355d3993)max_logical_replication_workers
(提交 665d1fad)max_parallel_workers
(提交 b460f5d6)max_pred_locks_per_page
(提交 c63172d6)max_pred_locks_per_relation
(提交 c63172d6)max_sync_workers_per_subscription
(提交 665d1fad)min_parallel_index_scan_size
(提交 51ee6f31)min_parallel_table_scan_size
(提交 51ee6f31)ssl_dh_params_file
(提交 c0a15e07)wal_consistency_checking
(提交 a507b869)
修改
bgwriter_lru_maxpages
- 最大值从
1000
提高到INT_MAX
/2
(提交 14ca9abf)
- 最大值从
hot_standby
- 默认值从
off
更改为on
(提交 34fc6167)
- 默认值从
integer_datetimes
- 更改为始终报告
on
(提交 b9d092c9)
- 更改为始终报告
local_preload_libraries
- 库名称被视为字符串文字,而不是 SQL 标识符 (提交 a69dfe5f)
log_directory
- 默认值从
pg_log
更改为log
(提交 3371e4d9)
- 默认值从
log_line_prefix
- 默认值从空字符串更改为 '
%m [%p]
' (提交 7d3235ba)
- 默认值从空字符串更改为 '
max_parallel_workers_per_gather
- 默认值更改为
2
(提交 77cd477c)
- 默认值更改为
max_replication_slots
- 默认值从
0
更改为10
(提交 f6d6d292)
- 默认值从
max_wal_senders
- 默认值从
0
更改为10
(提交 f6d6d292)
- 默认值从
password_encryption
session_preload_libraries
- 库名称被视为字符串文字,而不是 SQL 标识符 (提交 a69dfe5f)
shared_preload_libraries
- 库名称被视为字符串文字,而不是 SQL 标识符 (提交 a69dfe5f)
ssl
,ssl_ca_file
,ssl_cert_file
,ssl_ciphers
,ssl_crl_file
,ssl_ecdh_curve
,ssl_key_file
,ssl_prefer_server_ciphers
- 更改现在可以通过
SIGHUP
应用,而无需重新启动服务器 (提交 de41869b)
- 更改现在可以通过
synchronous_standby_names
- 添加了支持基于仲裁的同步复制的
FIRST
和ANY
语法 (提交 3901fd70)
- 添加了支持基于仲裁的同步复制的
wal_level
已移除
- 移除
min_parallel_relation_size
(提交 51ee6f31) - 移除
sql_inheritance
(提交 e13486eb)
分区更改
- 添加了 声明式表分区 (初始提交 f0e44751)
ALTER TABLE ... ADD PRIMARY KEY
将任何NOT NULL
更改传播到继承子表 (提交 c30f1770)
系统目录更改
表
已添加
- 添加
pg_partitioned_table
(提交 f0e44751) - 添加
pg_publication
(提交 665d1fad) - 添加
pg_publication_rel
(提交 665d1fad) - 添加
pg_sequence
(提交 1753b1b0) - 添加
pg_statistic_ext
(提交 7b504eb2) - 添加
pg_subscription
(提交 665d1fad) - 添加
pg_subscription_rel
(提交 7c4f5240)
修改
pg_attribute
- 添加列
attidentity
(提交 32173270)
- 添加列
pg_class
- 添加以下列 (提交 f0e44751)
relispartition
relpartbound
- 添加以下列 (提交 f0e44751)
pg_policy
- 添加列
polpermissive
(提交 093129c9)
- 添加列
pg_trigger
- 添加以下列 (提交 8c48375e)tgoldtable
tgnewtable
视图
已添加
- 添加
pg_hba_file_rules
(提交 de16ab72) - 添加
pg_publication_tables
(提交 665d1fad) - 添加
pg_sequences
(提交 67dc4ccb) - 添加
pg_stat_subscription
(提交 665d1fad)
修改
pg_policies
- 添加列
permissive
(提交 093129c9)
- 添加列
pg_replication_slots
- 添加列
temporary
(提交 a924c327)
- 添加列
pg_stat_activity
pg_stat_replication
系统函数
已添加
- 添加函数
brin_desummarize_range()
(提交 c655899b) - 添加函数
brin_summarize_range()
(提交 c655899b) - 添加函数
pg_collation_actual_version()
(提交 eccfef81) - 添加函数
pg_current_logfile()
(提交 19dc233c) - 添加函数
pg_get_partkeydef()
(提交 f0e44751) - 添加函数
pg_get_statisticsobjdef()
(提交 7b504eb2) - 添加函数
pg_import_system_collations()
(提交 aa17c06f) - 添加函数
pg_ls_logdir()
(提交 befd73c5) - 添加函数
pg_ls_waldir()
(提交 befd73c5) - 添加函数
pg_relation_is_publishable()
(提交 a2141c42) - 添加函数
pg_safe_snapshot_blocking_pids()
(提交 511540da) - 添加函数
regexp_match()
(提交 cf9b0fea)
修改
to_date()
- 加强输入字段范围检查 (提交 d3cd36a1)
to_timestamp()
- 加强输入字段范围检查 (提交 d3cd36a1)
pg_create_logical_replication_slot()
- 添加可选参数
temporary
(提交 a924c327)
- 添加可选参数
pg_create_physical_replication_slot()
- 添加可选参数
temporary
(提交 a924c327)
- 添加可选参数
pg_stop_backup()
- 添加选项
wait_for_archive
boolean
(提交 017e4f25)
- 添加选项
pg_is_xlog_replay_paused()
- 重命名为
pg_is_wal_replay_paused()
(提交 806091c9)
- 重命名为
pg_xlog_location_diff()
- 重命名为
pg_wal_lsn_diff()
(提交 d10c626d)
- 重命名为
身份验证更改
pg_hba.conf
- 逻辑复制连接现在作为普通连接处理,即不再使用
replication
关键字 (提交 8df9bd0b)
libpq 更改
- 添加连接参数
passfile
(提交 ba005f19) - 添加连接参数
target_session_attrs
(提交 721f7bd3) - 添加函数
PQencryptPasswordConn()
(提交 8f8b9be5)
用户/角色
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables
pg_monitor
过程语言
常规
- 改进对并行查询的支持 (提交 61c2e1a9)
PL/Python
- 添加对函数参数中多维数组的支持 (提交 94aceed3)
复制更改
配置
已添加
- 添加
recovery_target_lsn
(提交 35250b6a)
逻辑复制
物理复制
- 添加了基于仲裁的同步复制支持 (初始提交 3901fd70)
全文搜索更改
- 添加对
json
和jsonb
数据类型的支持 (提交 e306df7f)
外部数据包装器 更改
服务器实用程序
修改
initdb
pg_ctl
pg_upgrade
- 将使来自旧版PostgreSQL的哈希索引失效,并生成一个用于重新创建它们的脚本(提交 a95410e2)
核心实用程序
修改
createuser
- 选项
--unencrypted
已移除(提交 eb61136d)
- 选项
pg_basebackup
pg_dump
pg_receivewal
pg_recvlogical
- 添加了选项
--endpos
(提交 7c030783)
- 添加了选项
pg_restore
已移除
createlang
(提交 50c956ad)droplang
(提交 50c956ad)
psql 变更
- 添加了显示
psql
版本和服务器版本的变量(提交 9ae9d8c1) - 添加了元命令
\if
、\elif
、\else
和\endif
(提交 e984ef58) - 添加了
\gx
命令,用于以扩展模式执行查询(提交 b2678efd)
Contrib 模块
已添加
修改
btree_gin
btree_gist
citext
- 添加了对
regexp_match()
的支持(提交 f9d747a4)
- 添加了对
cube
file_fdw
- 能够读取程序的输出以及文件中的输出(提交 8e91e12b)
pageinspect
pg_buffercache
- 修改为使用更少的锁运行(提交 6e654546)
pgcrypto
- 如果PostgreSQL使用
--disable-strong-random
选项编译,则gen_random_uuid()
将失败(提交 bf723a27)
- 如果PostgreSQL使用
pg_freespacemap
- 提供的函数可以由默认角色pg_stat_scan_tables的成员执行(提交 25fff407)
pgrowlocks
- 新的默认角色
pg_stat_scan_tables
的成员现在可以执行pgrowlocks()
(提交 25fff407)
- 新的默认角色
pg_stat_statements
- 忽略的常量显示为"
$N
"而不是"?
"(提交 a6f22e83)
- 忽略的常量显示为"
pgstattuple
pg_visibility
postgres_fdw
seg
sepgsql
- 添加了分区表支持(提交 25542d77)
已移除
预发行测试版本
标记PostgreSQL 10
开发开始的初始提交是 ca9112a4(2016-08-15)。