PostgreSQL 9.5
主要功能
INSERT
会生成约束冲突的语句可以转换为UPDATE
或忽略("UPSERT
")(提交 168d5805)GROUP BY
分析功能GROUPING SETS
、CUBE
和ROLLUP
- 添加了行级安全 (RLS)(提交 491c029d)
- 用于逻辑解码的复制来源(提交 5aa23504)
块范围索引
(BRIN)(初始提交 7516f525)- 对排序和多 CPU 机器进行了性能改进
- 表采样(初始提交 f6d208d6)
有用链接
- PostgreSQL 9.5 可观测性 (来自 DataEgret 的交互式图表)
后端更改
执行器
- 添加了 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 DATABASE
ALTER DOMAIN
ALTER DOMAIN ... OWNER TO { CURRENT_USER | SESSION_USER }
语法添加 (提交 31eae602)
ALTER EXTENSION
添加了对
TRANSFORM
成员对象的支持 (提交 cac76582)
ALTER EVENT TRIGGER
ALTER EVENT TRIGGER ... OWNER TO { CURRENT_USER | SESSION_USER }
语法添加 (提交 31eae602)
ALTER FOREIGN TABLE
ALTER 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 ROLE
ALTER 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 TABLE
ALTER TYPE
- 添加了
ALTER TYPE ... OWNER TO { CURRENT_USER | SESSION_USER }
语法 (提交 31eae602)
- 添加了
ALTER USER
ALTER VIEW
- 添加了
ALTER VIEW ... OWNER TO { CURRENT_USER | SESSION_USER }
语法 (提交 31eae602)
- 添加了
COMMENT ON
CREATE DATABASE
CREATE FOREIGN TABLE
CREATE 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 SCHEMA
CURRENT_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)
- 添加了
REINDEX
SELECT
UPDATE
- 添加了
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_authid
pg_pltemplate
- 将
tmplhandler
和tmpllibrary
列设置为NOT NULL
(提交 82a532b3)
- 将
pg_proc
- 添加了
protrftypes
列 (提交 cac76582)
- 添加了
pg_seclabel
pg_shseclabel
视图
新增
pg_file_settings
(提交 a97e0c33)pg_policies
(提交 491c029d)pg_replication_origin_status
(提交 5aa23504)pg_stat_ssl
(提交 9029f4b3)
修改
pg_replication_slots
- 添加了
active_pid
列 (提交 d811c037)
- 添加了
pg_roles
pg_settings
- 添加了
pending_restart
列 (提交 a486e357)
- 添加了
pg_shadow
pg_stat_replication
- 如果
sent
列没有有效值,现在将为NULL,而不是零 (提交 28c36678)
- 如果
pg_tables
- 添加了
hasrowsecurity
列 (提交 491c029d)
- 添加了
系统函数
新增
array_position()
(初始提交 13dbc7a8)array_positions()
(初始提交 13dbc7a8)bound_box()
(提交 3b6db1f4)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)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)
修改
generate_series()
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)|
(提交 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)外部数据包装器
可以实现连接下推 (初始提交 1a8a4e5c)
服务器实用程序
新增
修改
pg_controldata
- 添加了
-D
选项,以便在指定数据目录时与其他实用程序保持一致 (提交 b0d81ade)
- 添加了
pg_ctl
pg_resetxlog
pg_test_fsync
- 从contrib 模块 转换为 服务器实用程序 (提交 00882d9e)
pg_upgrade
pg_xlogdump
核心实用程序
修改
pg_archivecleanup
pg_basebackup
pgbench
pg_dump
pg_dumpall
- 删除冗余的
-i
/--ignore-version
选项(提交232cd63b)
- 删除冗余的
pg_receivexlog
pg_restore
reindexdb
vacuumdb
- 添加用于并行处理的
-j
/--jobs
选项(提交a1792320)
- 添加用于并行处理的
psql 更改
以下是psql的一些重大更改
-b
命令行选项和新的ECHO
模式errors
,仅显示失败的命令(提交5b214c5d)- 添加AsciiDoc输出模式(提交9d9991c8)
- 添加提示选项
%l
,显示当前语句行号(提交51bb7956) - 添加
\pset
选项pager_min_lines
(提交7655f4cc) - 添加Unicode列、标题和边框线样式控件(提交a2dabf0e)
- 为
SET search_path
添加基本选项卡补全支持(提交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)
- 修复
pageinspect
pg_buffercache
- 添加
pinning_backends
列以显示有关缓冲区固定信息(提交f5779198)
- 添加
pgcrypto
- 添加
pgp_armor_headers()
函数(提交32984d8f)
- 添加
pgstattuple
- 添加
pgstattuple_approx()
函数(提交5850b20f)
- 添加
test_decoding
- 添加
only-local
选项(提交5aa23504)
- 添加
已移除
pg_archivecleanup
pgbench
pg_test_fsync
pg_upgrade_support
- 功能集成到后端(提交30982be4)
pg_xlogdump
test_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)。