PostgreSQL 9.5
- 发布说明 (源文件)
- 发布日期:2016-01-07 (公告)
- 最终次要版本:9.5.25 (2021-02-11)
- EOL:2021-02-11 (EOL 通知)
- 文档:PostgreSQL 9.5 (索引)
主要特性
- 会导致约束冲突的
INSERT语句可以被转换为UPDATE或被忽略(“UPSERT”)(提交 168d5805) GROUP BY分析特性支持GROUPING SETS、CUBE和ROLLUP- 增加了行级安全(RLS)(提交 491c029d)
- 逻辑解码的复制源(提交 5aa23504)
块范围索引(BRIN)(初始提交 7516f525)- 排序和多 CPU 机器的性能改进
- 表采样(初始提交 f6d208d6)
后端更改
执行器
- 添加了 CustomScan API(初始提交 0b03e595)
SQL 更改
已添加
ALTER POLICY(提交 491c029d)CREATE POLICY(提交 491c029d)CREATE TRANSFORM(提交 cac76582)DROP POLICY(提交 491c029d)DROP TRANSFORM(提交 cac76582)IMPORT FOREIGN SCHEMA(初始提交 59efda3e)
已修改
ALTER AGGREGATE- 添加了
ALTER AGGREGATE ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER COLLATION- 添加了
ALTER COLLATION ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER CONVERSION- 添加了
ALTER CONVERSION ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER DATABASEALTER DOMAIN- 添加了
ALTER DOMAIN ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER EXTENSION- 添加了对
TRANSFORM成员对象(commit cac76582)
- 添加了对
ALTER EVENT TRIGGER- 添加了
ALTER EVENT TRIGGER ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER FOREIGN TABLEALTER GROUP- 添加了
ALTER GROUP { CURRENT_USER | SESSION_USER } ...语法(提交 31eae602)
- 添加了
ALTER LANGUAGE- 添加了
ALTER LANGUAGE ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER LARGE OBJECT- 添加了
ALTER LARGE OBJECT ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER OPERATOR- 添加了
ALTER OPERATOR ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER OPERATOR CLASS- 添加了
ALTER OPERATOR CLASS ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER ROLEALTER SCHEMA- 添加了
ALTER SCHEMA ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER SEQUENCE- 添加了
ALTER SEQUENCE ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER SERVER- 在
ALTER SERVER ... RENAME TO ...子句中添加了CURRENT_USER和SESSION_USER选项(提交 31eae602)
- 在
ALTER TABLEALTER TYPE- 添加了
ALTER TYPE ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
ALTER USERALTER VIEW- 添加了
ALTER VIEW ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
COMMENT ONCREATE DATABASECREATE FOREIGN TABLECREATE FUNCTION- 添加了
TRANSFORM属性(提交 cac76582)
- 添加了
CREATE INDEX- 添加了
CREATE INDEX IF NOT EXISTS语法(提交 08309aaf)
- 添加了
CREATE MATERIALIZED VIEW- 添加了
CREATE MATERIALIZED VIEW IF NOT EXISTS语法(提交 e39b6f95)
- 添加了
CREATE ROLE- 添加了
BYPASSRLS/NOBYPASSRLS选项(提交 491c029d)
- 添加了
CREATE SCHEMACURRENT_USER和SESSION_USER可用于CREATE SCHEMA [...] AUTHORIZATION ...(提交 31eae602)
CREATE TABLE AS- 添加了
CREATE TABLE IF NOT EXISTS语法(提交 e39b6f95)
- 添加了
CREATE TABLESPACE- 添加了
CREATE TABLESPACE ... OWNER { CURRENT_USER | SESSION_USER }选项(提交 31eae602)
- 添加了
DROP OWNED- 添加了
DROP OWNED BY { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
INSERT- 添加了对
INSERT ... ON CONFLICT的支持(初始提交 168d5805)
- 添加了对
REASSIGN OWNED- 添加了
REASSIGN OWNED BY { CURRENT_USER | SESSION_USER } TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
REINDEXSELECTUPDATE- 添加了
UPDATE tab SET (col1,col2,...) = (SELECT ...), ...语法(提交 8f889b10)
- 添加了
后端更改
通用
钩子
添加了以下钩子
row_security_policy_hook_permissive(提交 0bf22e0c)row_security_policy_hook_restrictive(提交 0bf22e0c)set_join_pathlist_hook(提交 e7cb7ee1)set_rel_pathlist_hook(提交 c2ea2285)
源配置
- 添加了
--enable-cassert选项(提交 3bdcf6a5)
系统目录更改
表
已添加
pg_policy(初始提交 491c029d)pg_replication_origin(提交 5aa23504)pg_transform(提交 cac76582)
已修改
pg_authidpg_pltemplate- 将
tmplhandler和tmpllibrary列设置为NOT NULL(提交 82a532b3)
- 将
pg_proc- 添加了
protrftypes列(提交 cac76582)
- 添加了
pg_seclabelpg_shseclabel
视图
已添加
pg_file_settings(提交 a97e0c33)pg_policies(提交 491c029d)pg_replication_origin_status(提交 5aa23504)pg_stat_ssl(提交 9029f4b3)
已修改
pg_replication_slots- 添加了
active_pid列以显示有关缓冲区引用的信息(提交 d811c037)
- 添加了
pg_rolespg_settings- 添加了
pending_restart列(提交 a486e357)
- 添加了
pg_shadowpg_stat_replication- 如果
sent列没有有效值,现在它将是NULL而不是零(提交 28c36678)
- 如果
pg_tables- 添加了
hasrowsecurity列(提交 491c029d)
- 添加了
系统函数
已添加
array_position()(初始提交 13dbc7a8)array_positions()(初始提交 13dbc7a8)bound_box()(提交 3b6db1f4)brin_summarize_new_values()(提交 7516f525)inet_merge()(提交 3b6db1f4)inet_same_family()(提交 3b6db1f4)jsonb_agg()(提交 7e354ab9)jsonb_build_array()(提交 7e354ab9)jsonb_build_object()(提交 7e354ab9)jsonb_object()(提交 7e354ab9)jsonb_object_agg()(提交 7e354ab9)jsonb_pretty()(提交 c6947010)jsonb_set()(初始提交 c6947010)jsonb_strip_nulls()(提交 237a8824)json_strip_nulls()(提交 237a8824)mxid_age()(提交 36ad1a87)pg_get_object_address()(提交 d7ee82e5)pg_identify_object_as_address()(提交 a6762014)pg_last_committed_xact()(提交 73c986ad)pg_replication_origin_advance()(提交 5aa23504)pg_replication_origin_create()(提交 5aa23504)pg_replication_origin_drop()(提交 5aa23504)pg_replication_origin_oid()(提交 5aa23504)pg_replication_origin_progress()(提交 5aa23504)pg_replication_origin_session_is_setup()(提交 5aa23504)pg_replication_origin_session_progress()(提交 5aa23504)pg_replication_origin_session_reset()(提交 5aa23504)pg_replication_origin_session_setup()(提交 5aa23504)pg_replication_origin_xact_setup()(提交 5aa23504)pg_replication_origin_xact_reset()(提交 5aa23504)pg_xact_commit_timestamp()(提交 73c986ad)pg_stat_get_snapshot_timestamp()(提交 2fb7a75f)range_merge()(提交 3b6db1f4)to_jsonb()(提交 7e354ab9)
已修改
array_agg()- 能够接受数组作为输入(提交 bac27394)
generate_series()- 添加了返回一系列
numeric值的变体(提交 1871c892)
- 添加了返回一系列
pg_ls_dir()- 添加了
missing_ok和include_dot_dirs选项(提交 cb2acb10)
- 添加了
pg_read_file()- 添加了
missing_ok选项(提交 cb2acb10)
- 添加了
pg_read_binary_file()- 添加了
missing_ok选项(提交 cb2acb10)
- 添加了
pg_stat_file()- 添加了
missing_ok选项(提交 cb2acb10)
- 添加了
width_bucket()
数据类型
配置更改
已添加
cluster_name(提交 51adcaa0)gin_pending_list_limit(提交 a1b395b6)log_replication_commands(提交 4ad2a548)max_wal_size(提交 88e98230)min_wal_size(提交 88e98230)operator_precedence_warning(提交 c6b3c939)track_commit_timestamp(提交 73c986ad)wal_compression(提交 57aa5b2b)wal_retrieve_retry_interval(提交 5d2b45e3)
已修改
archive_mode- 添加了
always模式(提交 ffd37740)
- 添加了
debug_assertions- 已转换为预设配置参数(提交 3bdcf6a5)
log_connections- 上下文更改为
superuser-backend(提交 fe550b2a)
- 上下文更改为
log_disconnections- 上下文更改为
superuser-backend(提交 fe550b2a)
- 上下文更改为
移除
checkpoint_segments(提交 51adcaa0;被min_wal_size和max_wal_size取代)ssl_renegotiation_limit(提交 426746b9)
复制更改
通用
- 引入了
tablespace_map文件(提交 72d422a5)
配置
已添加
移除
过程语言更改
通用
外部数据包装器更改
- 添加了对导入外部模式的支持(初始提交 59efda3e)
- 可以在外部表上放置
CHECK约束(提交 fc2ac1fb) 外部表可以参与继承(初始提交 cb1ca4d8)外部数据包装器可以实现JOIN下推(初始提交 1a8a4e5c)
服务器实用程序
已添加
已修改
pg_controldata- 为了与其他实用程序保持一致,添加了
-D选项以指定数据目录(提交 b0d81ade)
- 为了与其他实用程序保持一致,添加了
pg_ctlpg_resetxlogpg_test_fsync已从contrib 模块转换为服务器实用程序(提交 00882d9e)
pg_upgradepg_xlogdump- 已从contrib 模块转换为服务器实用程序(提交 b0a738f4)
- 添加了
--stats选项以显示摘要统计信息(提交 bdd5726c)
核心实用程序
已修改
pg_archivecleanup- 已从contrib 模块转换(提交 83aca89f)
pg_basebackup- 在使用tar 格式时,能够使用
tablespace mapping file(提交 72d422a5)
- 在使用tar 格式时,能够使用
pgbench- 已从contrib 模块转换(提交 81134af3)
pg_dumppg_dumpall- 移除了冗余的
-i/--ignore-version选项 (提交 232cd63b)
- 移除了冗余的
pg_receivexlogpg_restorereindexdbvacuumdb- 添加了用于并行处理的
-j/--jobs选项(提交 a1792320)
- 添加了用于并行处理的
psql 更改
以下是psql 的重要更改列表
- 添加了
-b命令行选项和新的ECHO模式errors,该模式仅显示失败的命令(提交 5b214c5d) - 添加了AsciiDoc 输出模式(提交 9d9991c8)
- 添加了提示符选项
%l,用于显示当前语句的行号(提交 51bb7956) - 添加了
\pset选项pager_min_lines(提交 7655f4cc) - 添加了 Unicode 列、标题和边框线条样式控件(提交 a2dabf0e)
- 对
SET search_path的基本 Tab 自动补全支持(提交 bd409519) \db+显示表空间大小(在PostgreSQL 9.2 及之后版本)(提交 ee80f043)
Contrib模块
已添加
hstore_plperl(提交 cac76582)hstore_plpython(提交 cac76582)ltree_plpython(提交 cac76582)tsm_system_rows(提交 4d40494b)tsm_system_time(提交 56e121a5)
已修改
- 以下模块已移至src/test/modules/ (提交 22dfd116)
citext- 对
regexp_matches()函数进行了修复,需要升级扩展版本(提交 b22527f2)
- 对
pageinspectpg_buffercache- 添加了
pinning_backends列以显示有关缓冲区引用的信息(提交 f5779198)
- 添加了
pgcrypto- 添加了函数
pgp_armor_headers()(提交 32984d8f)
- 添加了函数
pgstattuple- 添加了函数
pgstattuple_approx()(提交 5850b20f)
- 添加了函数
test_decoding- 添加了
only-local选项(提交 5aa23504)
- 添加了
移除
pg_archivecleanuppgbenchpg_test_fsyncpg_upgrade_support- 功能已集成到后端(提交 30982be4)
pg_xlogdumptest_parser
测试
测试模块
从这个版本开始,新的源目录src/test/modules/ 包含了一些测试模块(实现为扩展和/或 SQL 测试)。一些测试模块以前是contrib 模块。
已添加
- 添加了
brin模块(提交 672e3ec0) - 添加了
commit_ts模块(提交 73c986ad) - 添加了
test_ddl_deparse模块(提交 b488c580) - 添加了
test_rls_hooks模块(提交 0bf22e0c)
已修改
预发布测试版本
标记PostgreSQL 9.5 开发开始的初始提交是ab76208e (2014-06-09)。
