PostgreSQL 9.5

主要特性

  • 会导致约束冲突的INSERT语句可以被转换为UPDATE或被忽略(“UPSERT”)(提交 168d5805
  • GROUP BY分析特性支持GROUPING SETSCUBEROLLUP
  • 增加了行级安全(RLS)(提交 491c029d
  • 逻辑解码的复制源(提交 5aa23504
  • 块范围索引(BRIN)(初始提交 7516f525
  • 排序和多 CPU 机器的性能改进
  • 表采样(初始提交 f6d208d6

后端更改

执行器

  • 添加了 CustomScan API(初始提交 0b03e595

SQL 更改

已添加

已修改

  • 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
    • 添加了ALLOW_CONNECTIONSIS_TEMPLATE 选项(提交 fbb1d7d7
    • 添加了ALTER DATABASE ... OWNER TO { CURRENT_USER | SESSION_USER } 语法(提交 31eae602
  • ALTER 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 TABLE
    • 添加了ALTER FOREIGN TABLE ... INHERIT / NO INHERIT 语法(提交 cb1ca4d8
    • 添加了ALTER FOREIGN TABLE ... SET WITH / WITHOUT OIDS 语法(提交 cb1ca4d8
    • 添加了ALTER FOREIGN TABLE ... ALTER COLUMN ... SET STORAGE 语法(提交 cb1ca4d8
    • 现在可以使用CURRENT_USER / SESSION_USER 来指定用户名(提交 31eae602
    • 添加了对CHECK约束的支持(提交 fc2ac1fb
  • 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
    • CURRENT_USERSESSION_USER 现在可以替代用户名使用(提交 31eae602
    • 添加了 BYPASSRLS/NOBYPASSRLS 选项(提交 491c029d
  • 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_USERSESSION_USER 选项(提交 31eae602
  • ALTER TABLE
    • 添加了ALTER TABLE ... (ENABLE|DISABLE) ROW SECURITY (提交 491c029d
    • 添加了ALTER TABLE ... SET (LOGGED|UNLOGGED) (提交 f41872d0
    • ALTER TABLE ... RENAME CONSTRAINT 子句添加了对ALTER TABLE IF EXISTS 的支持(提交 1d8198bb
    • ALTER TABLE 现在会执行table_rewrite 事件触发器(提交 618c9430
  • ALTER TYPE
    • 添加了ALTER TYPE ... OWNER TO { CURRENT_USER | SESSION_USER } 语法(提交 31eae602
  • ALTER USER
    • CURRENT_USERSESSION_USER 现在可以替代用户名使用(提交 31eae602
    • 添加了 BYPASSRLS/NOBYPASSRLS 选项(提交 491c029d
  • ALTER VIEW
    • 添加了ALTER VIEW ... OWNER TO { CURRENT_USER | SESSION_USER } 语法(提交 31eae602
  • COMMENT ON
    • 添加了COMMENT ON CONSTRAINT ... ON DOMAIN ... (提交 7eca575d
    • 添加了COMMENT ON POLICY (提交 143b39c1
    • 添加了COMMENT ON TRANSFORM FOR (提交 cac76582
  • CREATE DATABASE
    • 添加了ALLOW_CONNECTIONS 选项(提交 fbb1d7d7
    • 添加了IS_TEMPLATE 选项(提交 fbb1d7d7
  • CREATE FOREIGN TABLE
    • 添加了对CHECK约束的支持(提交 fc2ac1fb
    • 添加了对INHERITS 子句的支持(提交 cb1ca4d8
  • 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_USERSESSION_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
    • 添加了REINDEX SCHEMA ... 选项(提交 fe263d11
    • 添加了VERBOSE 选项(提交 ecd222e7
  • SELECT
    • 添加了SKIP LOCKED 语法(提交 df630b0d
    • 添加了TABLESAMPLE 语法(初始提交 f6d208d6
    • 添加了对GROUPING SETSCUBEROLLUP 的支持(提交 f3d31185
  • UPDATE
    • 添加了UPDATE tab SET (col1,col2,...) = (SELECT ...), ... 语法(提交 8f889b10

后端更改

通用

钩子

添加了以下钩子

源配置

  • 添加了--enable-cassert 选项(提交 3bdcf6a5

系统目录更改

已添加

已修改

  • pg_authid
    • 移除了rolcatupdate 列(提交 bb8582ab
    • 添加了rolbypassrls 列(提交 491c029d
  • pg_pltemplate
    • tmplhandlertmpllibrary 列设置为NOT NULL (提交 82a532b3
  • pg_proc
    • 添加了protrftypes 列(提交 cac76582
  • pg_seclabel
    • 更改了索引pg_seclabel_object_indexprovider 列的定义,使用text_pattern_ops(提交 0b28ea79
    • providerlabel 被设置为 NOT NULL (提交 82a532b3)
  • pg_shseclabel
    • 更改了索引pg_shseclabel_object_indexprovider 列的定义,使用text_pattern_ops(提交 0b28ea79
    • providerlabel 被设置为 NOT NULL (提交 82a532b3)

视图

已添加

已修改

系统函数

已添加

已修改

数据类型

  • regnamespace 添加为命名空间的OID 别名(初始提交 cb9fa802
  • regrole 添加为角色的OID 别名(提交 0c90f676

配置更改

已添加

已修改

移除

复制更改

通用

配置

已添加

移除

过程语言更改

通用

  • 添加了transform functions ,使得可以在数据类型和过程语言之间指定转换例程SQL数据类型(提交 cac76582

外部数据包装器更改

服务器实用程序

已添加

已修改

核心实用程序

已修改

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模块

已添加

已修改

移除

测试

测试模块

从这个版本开始,新的源目录src/test/modules/ 包含了一些测试模块(实现为扩展和/或 SQL 测试)。一些测试模块以前是contrib 模块

已添加

已修改

预发布测试版本

标记PostgreSQL 9.5 开发开始的初始提交是ab76208e (2014-06-09)。