PostgreSQL 9.6
- 发行说明 (源文件)
- 发布日期:2016-09-29 (发布公告)
- 最终小版本:9.6.24 (2021-11-11)
- EOL:2021-11 (EOL 通知)
- 文档:PostgreSQL 9.6
- GIT 分支:REL9_6_STABLE
主要特性
- 顺序扫描、连接和聚合的并行执行
VACUUM FREEZE避免不必要的页面扫描- 同步复制可以使用多个备用服务器来提高可靠性
- 全文搜索能够搜索短语(多个相邻的单词)
postgres_fdw支持远程连接、排序、UPDATE和DELETE
SQL 更改
已添加
已修改
ALTER EXTENSION- 添加了对
ACCESS METHOD成员对象的支持(提交 e8bdee27;注意此功能实际上是在 PostgreSQL 9.6.1 中添加的)
- 添加了对
ALTER FUNCTIONALTER INDEXDEPENDS ON EXTENSION语法已添加 (提交 f2fcad27)
ALTER MATERIALIZED VIEWDEPENDS ON EXTENSION语法已添加 (提交 f2fcad27)
ALTER OPERATOR- 添加了用于更改现有运算符关联的选择性函数的选项(提交 321eed5f)
ALTER ROLE- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
ALTER TABLE- 添加了
ALTER TABLE ... ADD COLUMN ... IF NOT EXISTS语法(提交 2cd40adb)
- 添加了
ALTER TRIGGERDEPENDS ON EXTENSION语法已添加 (提交 f2fcad27)
ALTER USER- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
COMMENT ON- 添加了
COMMENT ON ACCESS METHOD(提交 4f04b66f)
- 添加了
COPYCOPY现在可以复制INSERT/UPDATE/DELETE … RETURNING查询的输出(提交 92e38182)
CREATE AGGREGATECREATE EXTENSION- 添加了
CREATE EXTENSION … CASCADE语法(提交 b67aaf21)
- 添加了
CREATE FUNCTION- 添加了
PARALLEL { UNSAFE | RESTRICTED | SAFE }选项(提交 7aea8e4f)
- 添加了
CREATE GROUP- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
CREATE ROLE- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
CREATE USER- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
INSERT- 在目标列列表中添加了对数组下标和字段选择的支持(提交 a3c7a993)
VACUUM- 添加了
DISABLE_PAGE_SKIPPING选项(提交 ede62e56)
- 添加了
性能变更
ALTER TABLE ... SET (fillfactor = ...)可在较低的锁级别下执行(提交 fcb4bfdd)ALTER TABLE ... SET (autovacuum* = ...)可在较低的锁级别下执行(提交 47167b79)
后端更改
通用
- 添加了对 systemd 服务通知的支持(提交 7d17e683)
存储参数
已添加
parallel_workers(初始提交 25fe8b5f)
钩子
添加了以下 钩子
锁定
- 如果使用了
trace_lwlocks,锁现在将通过名称识别(提交 aa65de04)
规划器
- 现在会忽略在功能上依赖于其他列的
GROUP BY列(提交 d4c3a156)
WAL
- 添加了通用 WAL 接口(提交 65578341)
源配置
- 添加了
--with-systemd选项(提交 7d17e683)
数据类型更改
系统目录更改
表
已添加
pg_init_privs(提交 6c268df1)
已修改
pg_aggregatepg_ampg_proc- 添加了
proparallel列(提交 7aea8e4f)
- 添加了
视图
已添加
pg_config(提交 a5c43b88)pg_stat_wal_receiver(提交 b1a9bad9)pg_stat_progress_vacuum(提交 c16dc1ac)
已修改
pg_replication_slots- 添加了
confirmed_flush_lsn列(提交 3f811c2d)
- 添加了
pg_stat_activity
系统函数更改
已添加
acosd()(提交 e1bd684a)array_to_tsvector()(提交 6943a946)asind()(提交 e1bd684a)atand()(提交 e1bd684a)atan2d()(提交 e1bd684a)cosd()(提交 e1bd684a)cotd()(提交 e1bd684a)gin_clean_pending_list()(提交 7f46eaf0)jsonb_insert()(提交 0b62fd03)parse_ident()(提交 3187d6de)pg_blocking_pids()(提交 52f5d578)pg_control_checkpoint()(提交 dc7d70ea)pg_control_init()(提交 dc7d70ea)pg_control_recovery()(提交 dc7d70ea)pg_control_system()(提交 dc7d70ea)pg_current_xlog_flush_location()(提交 e63bb454)pg_index_column_has_property()(提交 ed0097e4)pg_index_has_property()(提交 ed0097e4)pg_indexam_has_property()(提交 ed0097e4)pg_logical_emit_message()(提交 3fe3511d)pg_notification_queue_usage()(提交 a04bb65f)pg_size_bytes()(提交 53874c52)pg_stat_get_backend_wait_event()(提交 53be0b1a)pg_stat_get_backend_wait_event_type()(提交 53be0b1a)phraseto_tsquery()(提交 bb140506)row_security_active()(提交 7b4bfc87)scale()(提交 abb17339)setweight()(提交 6943a946)sind()(提交 e1bd684a)tand()(提交 e1bd684a)ts_delete()(提交 6943a946)ts_filter()(提交 6943a946)tsquery_phrase()(提交 bb140506)tsvector_to_array()(提交 6943a946)unnest(tsvector)(提交 6943a946)
已修改
current_setting()- 添加了
missing_ok选项(提交 10fb48d6)
- 添加了
extract()- 改进了对无限日期时间的处理(提交 647d87c5)
pg_create_physical_replication_slot()- 添加了可选参数
immediately_reserve以在备份开始前保留 WAL(提交 6fcd8851)
- 添加了可选参数
pg_stop_backup()- 添加了
exclusive boolean选项(提交 71176854)
- 添加了
to_char()- 负号("
-")不再被计为时间值的数字(提交 2d87eedc)
- 负号("
配置更改
已添加
backend_flush_after(提交 428b1d6b)bgwriter_flush_after(提交 428b1d6b)checkpoint_flush_after(提交 428b1d6b)force_parallel_mode(提交 7c944bd9)idle_in_transaction_session_timeout(提交 c6dda1f4)max_parallel_workers_per_gather(初始提交 80558c1f)min_parallel_relation_size(提交 75be6646)parallel_setup_cost(提交 3bd909b2)parallel_tuple_cost(提交 3bd909b2)old_snapshot_threshold(提交 848ef42b)syslog_sequence_numbers(提交 f4c454e9)syslog_split_messages(提交 fc201dfd)wal_writer_flush_after(提交 7975c5e0)
已修改
checkpoint_timeout- 最大值提高到
1d(提交 f2dba881)
- 最大值提高到
log_line_prefix- 添加了
%n参数以显示 Unix epoch(提交 f828654e)
- 添加了
synchronous_commit- 添加了允许值
remote_apply(提交 314cbfc5)
- 添加了允许值
synchronous_standby_names- 添加了
num_sync(...)语法(提交 989be081)
- 添加了
索引更改
GIN
maintenance_work_mem对于GIN索引构建可以使用大于1GB的值(提交 30bb26b5)- 从 GIN 索引的挂起列表中删除的页面立即添加到空闲空间映射中(提交 e9568083 和 dc943ad9)
SP-GiST
全文搜索更改
外部数据包装器 (FDW) 更改
UPDATE或DELETE命令可以完全在远程服务器上执行(提交 0bf3ae88)- 远程外部连接仅在受影响的表将在同一角色 ID 下访问时执行(提交 45639a05)
- 并行查询的 API 支持(提交 35746bc3)
用户/角色
复制更改
- 添加了对多个同步备用服务器的支持(提交 989be081)
服务器实用程序
已修改
核心实用程序
已修改
pg_basebackup- 添加了
--slot选项,用于在备份开始前预留复制槽(提交 0dc848b0)
- 添加了
pg_restore
psql 更改
- 添加了对多个和混合
-c和-f选项的支持(提交 d5563d7d) - 添加了
\crosstabview,它可以将查询结果以交叉表的形式显示(初始提交 c09b18f2) - 添加了
\errverbose命令,显示最后一个服务器错误的完整详细信息(提交 3cc38ca7) - 添加了
\ev和\sv命令,用于编辑/显示视图定义(提交 8eb6407a) - 添加了
\gexec命令,它可以执行查询并将结果作为新查询重新提交(提交 2bbe9112) - 制表符补全现在会考虑整个查询,而不仅仅是当前行(提交 d854118c)
- 添加了提示符选项
%p,显示连接的后端的 PID(提交 275f05c9) - 消息的
CONTEXT字段的显示可以通过新变量SHOW_CONTEXT控制(提交 0426f349) - 在
\connect命令中添加了--reuse-previous选项(提交 9d924e9a)
Contrib模块
已添加
bloom(提交 9ee014fc)pg_visibility(提交 ba0a198f)
已修改
auto_explain- 在
auto_explain.sample_rate中添加了选项(提交 92f03fe7)
- 在
citext- 添加了
并行查询支持(提交 a89b4b1b)
- 添加了
cubeearthdistance- 添加了
并行查询支持(提交 50e5226b)
- 添加了
file_fdw- 添加了
并行查询支持(提交 35746bc3)
- 添加了
fuzzystrmatch- 所有函数都标记为并行安全(提交 ffab82fb)
lo- 添加了
并行查询支持(e7880e5d)
- 添加了
pgcrypto- 添加了
并行查询支持(提交 0dbf3ce0)
- 添加了
pg_freespacemap- 添加了
并行查询支持(提交 42d4257a)
- 添加了
pg_prewarm- 添加了
并行查询支持(提交 6b3586ca)
- 添加了
pgrowlocks- 添加了
并行查询支持(提交 9164deea)
- 添加了
pg_trgmpostgres_fdw- 添加了对远程连接的基本支持(提交 e4106b25 和 aa09cd24)
- 添加了对远程排序的支持(提交 f18c944b 和 ccd8f979)
- 添加了对使用远程
UPDATE或DELETE直接修改外部表(foreign tables)的支持(提交 0bf3ae88) - 现在
fetch_size选项可以应用于单个表以及外部服务器(提交 dc203dc3) - 查询取消请求将被传输到远程服务器(提交 f039eaac 和 1b812afb)
- 映射到远程服务器上同一用户的用户映射将被合并为一个远程连接(提交 96198d94)
- 如果扩展函数和操作符在
extensions选项中指定,它们可以被下推到远程服务器(提交 d8949416)
segsslinfo- 添加了函数
ssl_extension_info()(提交 49124613)
- 添加了函数
测试
pg_regress
- 允许多个
--temp-config选项(提交 26fdff1b)
测试模块
已添加
snapshot_too_old(提交 848ef42b)test_extensions(提交 b67aaf21)test_pg_dump(提交 6bd356c3)
预发布测试版本
标志着 PostgreSQL 9.6 开发开始的初始提交是 cf8d65de (2015-06-30)。
