发布日期: 2018-10-18
PostgreSQL11的主要改进有:
分区功能的改进,包括:
增加用哈希键分区的支持
增加分区表上PRIMARY KEY
, FOREIGN KEY
,索引和触发器的支持
允许创建“default”分区,以存储与其余分区都不匹配的数据
改变分区键列的UPDATE
语句现在会导致受到影响的行移动到适当的分区
在查询计划和执行时通过增强分区排除策略来提高SELECT
性能
并行性改进,包括:
现在构建B-树索引时CREATE INDEX
可使用并行处理
现在CREATE TABLE ... AS
,CREATE MATERIALIZED VIEW
和某些使用UNION
的查询中并行是可能的
并行化的哈希连接和并行化顺序扫描现在表现更好
支持嵌入式事务的SQL存储过程
对于一些SQL代码,可用即时(JIT)编译加速表达式评估
窗口函数现在支持SQL:2011标准中的所有帧选项,包括RANGE
, distance
PRECEDING/FOLLOWINGGROUPS
模式和帧排除选项
现在使用 CREATE INDEX
的INCLUDE
子句可创建覆盖索引
其它很多有用的性能改进,包括在ALTER TABLE ... ADD COLUMN
以非空列作为缺省时避免对表重写的能力
以上的项在下面的章节中详细说明。
要从任何以前的版本迁移数据,需要使用pg_dumpall或使用pg_upgrade来转储/恢复。
版本11包含一些影响到与以前的版本的兼容性的修改。注意以下不兼容的方面:
使pg_dump转储数据库属性,而不仅仅是其内容 (Haribabu Kommi)
以前,数据库本身的属性,例如数据库级的GRANT
/REVOKE
权限和ALTER DATABASE SET
变量设置,仅由pg_dumpall来转储。现在pg_dump --create
和pg_restore --create
将恢复数据库中的属性和对象。pg_dumpall -g
现在仅转储角色和表空间相关属性。pg_dumpall的全部输出(无-g
)未改变。
pg_dump和pg_restore,没有--create
选项时,不在转储/恢复数据库级注释和安全标记,这些内容现在被当作数据库属性。
pg_dumpall的输出脚本现在创建数据库时总与其原来的区域设置和编码一起,所以如果目的系统的区域设置和编码名称未知的话,就会失败。以前,如果数据库的区域设置和编码与旧集群的缺省设置匹配的话,则CREATE DATABASE
命令无此要求即被发出。
pg_dumpall --clean
现在可恢复postgres
和template1
数据库原来的区域设置和编码设置,这与用户创建的数据库是一样的。
消除函数与列引用的歧义时考虑句法形式 (Tom Lane)
当x
是表名或复合列时,PostgreSQL通常认为
和f
(x
)
的句法形式是等价的。这就允许类似于写一个函数,然后使用时它象是一按需计算的列这样的小把戏。但是,如果两种解释都可行,一般总选择列解释,就会导致用户需要函数解释时出现奇怪的结果。现在,如果有歧义,将选择匹配句法形式的解释。
x
.f
完全强制表和域约束名的唯一性 (Tom Lane)
PostgreSQL要求表名不同,约束名也不同。但是,对此没有严格的强制措施,以前出现过相同名可以创建的特殊案例。
使power(numeric, numeric)
和power(float8, float8)
按POSIX标准处理NaN
输入 (Tom Lane, Dang Minh Huong)
POSIX要求NaN ^ 0 = 1
,1 ^ NaN
= 1
,所有其他有NaN
输入的情况都应返回NaN
。在这些所有的情况下,power(numeric, numeric)
正好返回NaN
;现在接受两种异常。power(float8, float8)
遵循标准只要C库支持;但在一些老的Unix平台上C库并未遵循标准,在Windows的一些版本上也有问题。
防止to_number()
在模板分隔符不匹配时消耗掉字符 (Oliver Ford)
特别地,SELECT to_number('1234', '9,999')
过去返回134
,现在返回1234
。L
和TH
现在仅消掉非数字、正/负符号、小数点和逗号的字符。
修复to_date()
,to_number()
和to_timestamp()
,对于每个模板字符跳过一个字符 (Tom Lane)
以前,对于模板字符的每一字节,跳过一个byte。如果字符串包含多字节字符,则导致奇怪的行为。
调整to_char()
,to_number()
和to_timestamp()
模板字符串中双引号内的反斜杠的处理。
现在反斜杠将对其后面的字符转义,特别是双引号或其它反斜杠。
正确处理xmltable()
, xpath()
和其他XML处理函数中的相对路径表达式 (Markus Winand)
根据SQL标准,相对路径是从XML输入文档的文档节点开始,而不是这些函数以前所用的根节点。
在扩展查询协议中,使statement_timeout
独立地应用于每个Execute消息,而不是Sync前的所有命令 (Tatsuo Ishii, Andres Freund)
从系统目录pg_class
删除relhaspkey
列(Peter Eisentraut)
需要检查主键的应用程序应查询pg_index
。
系统目录pg_proc
的proisagg
和proiswindow
列被替换为prokind
(Peter Eisentraut)
新的列可更清晰地区分函数、过程、聚集和窗口函数。
纠正信息模式列tables
.table_type
,返回FOREIGN
而不是FOREIGN TABLE
(Peter Eisentraut)
新输出符合SQL标准。
修改后台工作者的ps进程显示标记以匹配pg_stat_activity
.backend_type
标记 (Peter Eisentraut)
使大对象的权限检查在大对象打开即lo_open()
时进行,而不是在尝试读和写时进行 (Tom Lane, Michael Paquier)
如果写访问已请求且未可用,现在会抛出一条错误,即使该大对象从未被写过。
防止非超级用户重建共享的目录索引 (Michael Paquier, Robert Haas)
以前,允许数据库的拥有者这么做,但现在被看作是在其权限边界之外。
移除过时的adminpack
函数pg_file_read()
,pg_file_length()
和pg_logfile_rotate()
(Stephen Frost)
相同的功能现在在核心后端中。现有的adminpack
安装可继续访问这些函数,直到用ALTER EXTENSION ... UPDATE
更新为止。
遵守双引号命令选项的大写(规则)(Daniel Gustafsson)
以前,特定SQL命令中的选型名称是强制小写,即使有双引号;比如"FillFactor"
将接受为索引存储选项,尽管其名字应为小写。这种情况现在会产生错误。
移除服务器参数replacement_sort_tuples
(Peter Geoghegan)
经确认,不再使用替换排序。
移除CREATE FUNCTION
中的WITH
子句 (Michael Paquier)
关于这种功能的一种更符合标准的语法,PostgreSQL已支持了很久。
PL/pgSQL触发器函数中,没有赋值时,变量OLD
和NEW
现在读出来是NULL (Tom Lane)
以前,对这些变量的引用可被解析但不执行。
下面是PostgreSQL11和以前主版本间的变更的详细说明。
允许创建基于键列哈希的的分区 (Amul Sul)
支持分区表上的索引 (Álvaro Herrera, Amit Langote)
分区表上的“索引”不是一种跨整个分区表的物理索引,而是一种自动创建表的每个分区上类似索引的模板。
如果分区键是索引列集的一部分,分区索引可声明为UNIQUE
。它将代表跨整个分区表的有效唯一性约束,即使每个物理索引仅强制其自己分区内的唯一性。
新命令ALTER INDEX ATTACH PARTITION
使得分区表分区上已有索引与相配的索引模板关联。这样为已存在的分区表设置新的分区索引提供了灵活性。
允许分区表上的外键 (Álvaro Herrera)
允许分区表上的FOR EACH ROW
触发器 (Álvaro Herrera)
创建分区表上的触发器,会自动创建所有已存在的和未来的分区上的触发器。这也允许分区表上可延迟的唯一约束。
允许分区表有缺省分区 (Jeevan Ladhe, Beena Emerson, Ashutosh Bapat, Rahila Syed, Robert Haas)
缺省分区将存储与任何其他已定义分区不匹配的行,作相应的搜索。
改变分区键列的UPDATE
语句现在会使得受影响的行移动到适当的分区 (Amit Khandekar)
允许分区表上的INSERT
, UPDATE
和COPY
,将行正确地路由到外部分区 (Etsuro Fujita, Amit Langote)
该功能由postgres_fdw
外部表支持。
允许查询处理时更快的分区排除 (Amit Langote, David Rowley, Dilip Kumar)
这将加速对有许多分区的分区表的访问。
允许查询执行期间分区消除 (David Rowley, Beena Emerson)
以前,分区消除仅在计划期间发生,意味着许多连接和准备的查询不能使用分区消除。
分区表之间等值连接时,允许匹配的分区直接连接 (Ashutosh Bapat)
该特性缺省是禁用的,可修改enable_partitionwise_join
来启用。
允许分区表上的聚集函数对每个分区独立评估而后归并结果 (Jeevan Chalke, Ashutosh Bapat, Robert Haas)
该特性缺省是禁用的,可修改enable_partitionwise_aggregate
来启用。
允许postgres_fdw
将聚集下推到那些作为分区的外部表 (Jeevan Chalke)
允许并行构建btree索引 (Peter Geoghegan, Rushabh Lathia, Heikki Linnakangas)
允许使用共享哈希表并行执行哈希连接 (Thomas Munro)
允许UNION
并行运行每个SELECT
,如果单个SELECT
无法并行化的话 (Amit Khandekar, Robert Haas, Amul Sul)
允许使用并行工作者进行更有效的分区扫描 (Amit Khandekar, Robert Haas, Amul Sul)
允许将LIMIT
传给并行工作者 (Robert Haas, Tom Lane)
这样允许工作者减少返回结果,使用有针对性的索引扫描。
允许单次评估查询,例如WHERE
子句聚集查询和目标列表中的函数并行化 (Amit Kapila, Robert Haas)
增加服务器参数parallel_leader_participation
用来控制领导者是否执行子计划 (Thomas Munro)
缺省启用,意味着领导者要执行子计划。
允许命令CREATE TABLE ... AS
, SELECT INTO
和CREATE MATERIALIZED VIEW
并行化 (Haribabu Kommi)
改进有许多并行工作者时顺序扫描的性能 (David Rowley)
在EXPLAIN
中增加并行工作者排序活动的报告 (Robert Haas, Tom Lane)
允许B-树索引包含不是搜索键或唯一约束的,但可用于仅索引扫描读的列 (Anastasia Lubennikova, Alexander Korotkov, Teodor Sigaev)
该功能可用CREATE INDEX
的新的INCLUDE
子句来启用。它利用构造“覆盖索引”来优化特定类型的查询。可包含一些列,即使其数据类型B-树不支持。
改进索引不断增长时的性能 (Pavan Deolasee, Peter Geoghegan)
改进哈希索引扫描的性能 (Ashutosh Sharma)
为哈希、GiST和GIN索引添加谓词锁 (Shubham Barai)
这样减少了序列化模式事务中序列化冲突的可能性。
增加前缀匹配操作符text
^@
text
,由SP-GiST支持此项功能 (Ildus Kurbangaliev)
这类似于btree索引时使用var
LIKE
'word%'
,但它更有效。
允许使用SP-GiST索引多边形。(Nikita Glukhov, Alexander Korotkov)
允许SP-GiST使用叶子键的有损表示 (Teodor Sigaev, Heikki Linnakangas, Alexander Korotkov, Nikita Glukhov)
改进统计信息最频值的选择 (Jeff Janes, Dean Rasheed)
以前,最频值(MCV)的标识是基于他们与所有列值比较的频度。现在MCV的选择是基于他们与非MCV值比较的频度。这样就改进了均匀和不均匀分布下的算法的健壮性。
改进>=
和<=
的选择性评估 (Tom Lane)
以前,此类案例如>
和<
分别使用同样的选择性评估,除非比较常数是MCV。该变化对使用BETWEEN
在小区间查询特别有用。
在等效的地方将var
=
var
简化为var
IS NOT NULL
(Tom Lane)
这会带来更好的选择性评估。
改进优化器对EXISTS
和NOT EXISTS
查询的行计数估计 (Tom Lane)
使优化器负责评估代价和HAVING
子句的选择性 (Tom Lane)
增加对查询计划的某些部分的即时(JIT)编译,以改进执行性能 (Andres Freund)
该特性需LLVM可用。当前不是默认启用,即使在构建中支持也不是。
允许在可能时位图扫描执行仅索引扫描 (Alexander Kuzmenkov)
更新VACUUM
时空闲空间映射 (Claudio Freire)
这样允许空闲空间能更快地重用。
允许VACUUM
避免不必要的索引扫描 (Masahiko Sawada, Alexander Korotkov)
改进多并发事务的提交性能 (Amit Kapila)
减少那些在目标列表中使用集返回函数的查询的内存使用 (Andres Freund)
改进聚集计算的速度 (Andres Freund)
允许postgres_fdw
将使用连接的UPDATE
和DELETE
命令推送到外部服务器 (Etsuro Fujita)
以前,仅推送非连接的UPDATE
和DELETE
命令。
增加Windows上的大页支持 (Takayuki Tsunakawa, Thomas Munro)
该功能由huge_pages配置参数来控制。
在log_statement_stats
,log_parser_stats
,log_planner_stats
和log_executor_stats
的输出中显示内存使用情况 (Justin Pryzby, Peter Eisentraut)
增加pg_stat_activity
.backend_type
列以显示后台工作者类型 (Peter Eisentraut)
该类型在ps输出中也可见。
使log_autovacuum_min_duration
记录那些被同时删除而忽略掉的表 (Nathan Bossart)
增加与表约束和触发器相关的information_schema
列 (Peter Eisentraut)
特别是现在triggers
.action_order
,triggers
.action_reference_old_table
和triggers
.action_reference_new_table
都填有数据,而以前则总为空。此外,现在table_constraints
.enforced
虽然存在,但仍未填入有用数据。
允许服务器在搜索+绑定模式中指定更为复杂的LDAP规格要求 (Thomas Munro)
特别是ldapsearchfilter
允许使用LDAP属性组合进行模式匹配。
允许LDAP认证使用加密的LDAP (Thomas Munro)
我们已经支持TLS上的LDAP,这通过用ldaptls=1
来实现。新的TLS LDAP是加密LDAP,用ldapscheme=ldaps
或ldapurl=ldaps://
来启用。
改进LDAP错误日志(Thomas Munro)
增加启用文件系统访问的默认角色 (Stephen Frost)
特别地,这些新角色是:pg_read_server_files
,pg_write_server_files
和pg_execute_server_program
。这些角色现在还控制着谁可以使用服务器端COPY
和file_fdw
扩展。以前,仅超级用户才能使用这些功能,这仍然是默认行为。
允许用GRANT
/REVOKE
权限许可来控制文件系统函数的访问,而不是由超级用户检查来控制 (Stephen Frost)
特别地,修改了这些函数:pg_ls_dir()
,pg_read_file()
,pg_read_binary_file()
,pg_stat_file()
。
使用GRANT
/REVOKE
控制对lo_import()
和lo_export()
的访问 (Michael Paquier, Tom Lane)
以前,仅超级用户才有权访问这些函数。
编译时选项ALLOW_DANGEROUS_LO_FUNCTIONS
已被移除。
防止对postgres_fdw
表进行无密码访问时,使用视图拥有者而非会话拥有者 (Robert Haas)
PostgreSQL仅允许超级用户对postgres_fdw
表进行无密码的访问,例如通过peer
访问。以前,会话拥有者必须为超级用户才允许访问;现在以检查视图拥有者代之。
修复视图上SELECT FOR UPDATE
的无效的锁权限检查问题 (Tom Lane)
增加服务器参数ssl_passphrase_command
以允许提供SSL密钥文件的密语 (Peter Eisentraut)
此外增加ssl_passphrase_command_supports_reload
以详细说明SSL配置是否应重新载入,且服务器配置重新载入时是否调用ssl_passphrase_command
。
增加存储参数toast_tuple_target
,以在考虑用TOAST存储前控制最小的元组长度 (Simon Riggs)
缺省的TOAST阈值不变。
允许以字节为单位制定内存和文件大小相关的服务器选项 (Beena Emerson)
新单位后缀为“B”。另外已有的单位是“kB”, “MB”, “GB”和“TB”。
允许initdb时设置WAL文件大小 (Beena Emerson)
以前,缺省值16MB只能在编译时改变。
仅为单个检查点保留WAL数据 (Simon Riggs)
以前,为两个检查点保留WAL。
为提高压缩率,以零填充强制切换的WAL段文件的未使用部分 (Chapman Flack)
使用流复制时,复制TRUNCATE
活动 (Simon Riggs, Marco Nenciarini, Peter Eisentraut)
将准备事务信息传给逻辑复制订阅者 (Nikhil Sontakke, Stas Kelvich)
将非日志表、临时表和pg_internal.init
文件从流式库备份中排除 (David Steele)
没有必要拷贝这些文件。
允许在流式库备份时验证堆页面的校验和 (Michael Banck)
允许复制槽以编程方式前进,而不是被订阅者消费 (Petr Jelinek)
这样允许在没必要消费内容时,复制槽有效前进。此功能通过pg_replication_slot_advance()
实现。
将时间线信息加到backup_label
文件中 (Michael Paquier)
另增WAL时间线与backup_label
匹配的检查。
将主机和端口连接信息加到pg_stat_wal_receiver
系统视图中 (Haribabu Kommi)
允许ALTER TABLE
用非空缺省值添加列,而不需重写表 (Andrew Dunstan, Serge Rielau)
当缺省值为常数时启用该项功能。
允许用视图所基于的表来锁定视图 (Yugo Nagata)
允许ALTER INDEX
为表达式索引设置统计信息收集目标 (Alexander Korotkov, Adrien Nayrat)
在psql中,\d+
现在显示索引的统计信息目标。
允许一条VACUUM
或ANALYZE
命令中指定多个表 (Nathan Bossart)
此外,VACUUM
中提及的任何表若使用列(字段)列表,则必须提供ANALYZE
关键词;以前此类情况下ANALYZE
是隐含在内的。
把括号括起来的选项语法增加到ANALYZE
(Nathan Bossart)
这类似于VACUUM
支持的语法。
增加CREATE AGGREGATE
选项以指定聚集的终结函数的行为 (Tom Lane)
这有助于允许用户定义聚集函数的优化、用作窗口函数。
允许创建域数组 (Tom Lane)
这也允许array_agg()
用在域上。
支持符合类型上的域 (Tom Lane)
也允许PL/Perl, PL/Python和PL/Tcl处理复合域函数参数和结果。亦改进了PL/Python的域处理。
增加从JSONB
标量到数字和布尔数据类型的类型转换 (Anastasia Lubennikova)
增加SQL:2011指定的所有窗口函数帧选项 (Oliver Ford, Tom Lane)
特别地,允许RANGE
模式使用PRECEDING
和FOLLOWING
选择那些在指定正负偏移内有分组的行。增加GROUPS
模式以包含加减该数量的对等组。帧排除语法也加进来了。
增加SHA-2哈希函数家族 (Peter Eisentraut)
特别地,增加sha224()
,sha256()
, sha384()
,sha512()
。
增加对64位非加密哈希函数的支持 (Robert Haas, Amul Sul)
允许to_char()
和to_timestamp()
指定自UTC的时区偏移的小时和分钟 (Nikita Glukhov, Andrew Dunstan)
这以TZH
和TZM
格式规范来实施。
增加搜索函数websearch_to_tsquery()
,支持一种类似于Web搜索引擎使用的查询语法 (Victor Drobny, Dmitry Ivanov)
增加json(b)_to_tsvector()
函数以创建用于匹配JSON
/JSONB
值的文本搜索查询 (Dmitry Dolgov)
增加SQL级过程,在过程中能够开始和提交其自身的事务 (Peter Eisentraut)
用新命令CREATE PROCEDURE
创建过程,用CALL
来调用。
新命令ALTER
/DROP ROUTINE
可以改变/删除所有类似程序的对象,包括过程、函数和聚集。
而且在CREATE OPERATOR
和CREATE TRIGGER
时,现在写FUNCTION
比写PROCEDURE
好,因为引用的对象必须是函数而非过程。但是,为了兼容性,仍然接受过去的语法。
将事务控制增加到PL/pgSQL, PL/Perl, PL/Python, PL/Tcl和SPI服务器端语言中 (Peter Eisentraut)
事务控制仅在顶部事务层过程和仅包含其它DO
和CALL
块的嵌套DO
和CALL
块中可用。
增加将PL/pgSQL复合类型变量定义为非空、常数或带初始值的功能 (Tom Lane)
允许PL/pgSQL处理同一会话中发生在第一次和后来函数执行之间对复合类型的修改 (Tom Lane)
以前这些情况产生错误。
增加jsonb_plpython
扩展以转换JSONB
到/自PL/Python类型 (Anthony
Bykov)
增加jsonb_plperl
扩展以转换JSONB
到/自PL/Perl类型 (Anthony Bykov)
修改libpq,以禁用默认的压缩 (Peter Eisentraut)
现代的OpenSSL版本中,压缩已被禁用,故与这些库一起的libpq设置无效。
将DO CONTINUE
选项加到ecpg的WHENEVER
语句中 (Vinayak Pokale)
这会产生C的continue
语句,特定条件发生时将导致返回含有它的循环的顶部。
增加ecpg模式以启用Oracle Pro*C风格的字符数组处理方式。
该模式用-C
来启用。
增加psql命令\gdesc
以显示查询结果中的列的名字和类型 (Pavel Stehule)
增加psql变量以报告查询活动或错误 (Fabien Coelho)
特别地,这些新变量是ERROR
,SQLSTATE
, ROW_COUNT
,LAST_ERROR_MESSAGE
和LAST_ERROR_SQLSTATE
。
允许psql测试一个变量是否存在 (Fabien Coelho)
特别地,语法:{?variable_name}
允许在\if
语句中测试变量是否存在。
允许环境变量PSQL_PAGER
控制psql的分页 (Pavel Stehule)
该项功能允许psql的缺省分页器可指定为单独环境变量,与其它应用程序分页器分开。如果PSQL_PAGER
未设置,PAGER
仍然起作用。
使psql的\d+
命令总显示表分区信息 (Amit Langote, Ashutosh Bapat)
以前如果无分区,分区表不会显示分区信息。现在也要显示哪些分区是如何划分的。
确保psql提示输入密码时报告确切的用户名 (Tom Lane)
以前嵌入在URI中的-U
和用户名的组合会导致错误的报告。当指定--password
时,也会在密码提示之前禁止(显示)用户名。
允许没有先前输入时,使用quit
和exit
退出psql (Bruce Momjian)
此外输入缓冲区非空时,若在一行中单独使用quit
和exit
,则打印如何退出的提示。对于help
也添加了类似的提示。
在一行中单独输入了\q
但被忽略时,让psql提示使用CTRL+D (Bruce Momjian)
例如,当\q
是在字符串中给出时,该命令并不退出。
改进ALTER INDEX RESET
/SET
的制表符 (Masahiko Sawada)
增加允许psql基于服务器版本适配其制表符自动补全查询的基础架构 (Tom Lane)
以前对老版本服务器的制表符自动补全查询会失败。
在pgbench中增加对NULL、布尔数和一些函数与操作符的表达式支持 (Fabien Coelho)
在pgbench中增加\if
条件支持 (Fabien Coelho)
允许在pgbench变量名中使用非ASCII字符 (Fabien Coelho)
增加pgbench选项--init-steps
以控制初始化步骤的执行 (Masahiko Sawada)
将一种近似于Zipfian分布的随机数发生器添加到pgbench (Alik Khilazhev)
允许在pgbench中设置随机数种子 (Fabien Coelho)
允许pgbench用pow()
和power()
来做幂运算 (Raúl Marín Rodríguez)
将哈希函数添加到pgbench (Ildar Musin)
当使用--latency-limit
和--rate
时,使pgbench统计更准确 (Fabien Coelho)
在pg_basebackup增加一创建命名复制槽的选项 (Michael Banck)
使用WAL流式方法时,选项--create-slot
创建命名复制槽(--slot
)。
允许initdb设置对数据目录的组读取访问 (David Steele)
该功能用新的initdb选项--allow-group-access
来实现。在运行initdb之前,管理员也可以对空数据目录设置组权限。服务器变量data_directory_mode
允许读取数据目录组权限。
增加pg_verify_checksums工具以验证离线时数据库校验和 (Magnus Hagander)
允许pg_resetwal通过--wal-segsize
修改WAL大小 (Nathan Bossart)
在pg_resetwal和pg_controldata中增加长选项 (Nathan Bossart, Peter Eisentraut)
为了测试,将--no-sync
选项添加到pg_receivewal以防止同步WAL写 (Michael Paquier)
将--endpos
选项添加到pg_receivewal以指定WAL接收何时停止 (Michael Paquier)
允许pg_ctl向进程发送SIGKILL
信号 (Andres Freund)
以前该功能是不支持的,原因是担心可能被误用。
减少pg_rewind复制的文件数量 (Michael Paquier)
防止pg_rewind从root
用户运行 (Michael Paquier)
增加pg_dumpall选项--encoding
用来控制输出的编码 (Michael Paquier)
pg_dump已有此选项。
增加pg_dump选项--load-via-partition-root
,强制将数据加载到分区的根表中,而不是原来的分区 (Rushabh Lathia)
如果系统要加载到不同的排序规则定义或字节序的库,相比以前而言可能需要将行存储在不同的分区。这种情况下就很有用。
增加禁止转储和恢复数据库对象注释的选项 (Robins Tharakan)
新的pg_dumppg_dumpall和pg_restore选项是--no-comments
。
增加PGXS支持以安装头文件 (Andrew Gierth)
这样可支持创建依赖其他模块的扩展模块。以前没有容易的方法让依赖模块找到所引用的模块的头文件。现有的几个定义数据类型的contrib
模块已经调整,安装了相关文件。PL/Perl和PL/Python现在也安装了它们的头文件,以支持语言转换模块的创建。
安装errcodes.txt
,以允许扩展访问PostgreSQL所知的错误代码列表 (Thomas Munro)
将文档转成了DocBook XML格式 (Peter Eisentraut, Alexander Lakhin, Jürgen Purtz)
为了与以前分支兼容,文件名仍使用sgml
扩展名。
在合适的平台上(大多数是这样),使用stdbool.h
定义bool
类型 (Peter Eisentraut)
这样就消除了需包含stdbool.h
的扩展模块的编码危险。
彻底修改初始系统目录内容定义的方法 (John Naylor)
初始数据现在用Perl数据结构表示,使之更易进行机械式处理。
防止扩展创建带引号的值列表自定义服务器参数 (Tom Lane)
该功能目前不支持,因为即使在扩展加载之前也需要参数属性的知识。
使用SCRAM认证时,增加使用通道绑定的功能 (Michael Paquier)
通道绑定的目的是防止中间人攻击,但SCRAM无法阻止,除非它能被强制激活。不幸的是,在libpq中无法做到。期望在未来的libpq版本和不是由libpql构建的接口如JDBC中支持它。
允许后台工作者连接到通常不允许连接的数据库 (Magnus Hagander)
ARMv8上,增加硬件CRC计算的支持 (Yuqi Gu, Heikki Linnakangas, Thomas Munro)
加速用OID对内置函数的查找 (Andres Freund)
以前的二分法查找被替换为查找数组。
加速查询结果的构造 (Andres Freund)
改进系统缓存的访问速度 (Andres Freund)
增加代内存分配器以对顺序的分配/释放进行优化 (Tomas Vondra)
这样会减少逻辑解码的内存使用。
使VACUUM
对 pg_class
.reltuples
的计算与ANALYZE
对其的计算一致 (Tomas Vondra)
升级以使用perltidy的版本20170521
(Tom Lane, Peter Eisentraut)
允许pg_prewarm
启动时恢复以前的共享缓冲区内容 (Mithun Cy, Robert Haas)
该功能实现的是让pg_prewarm
在服务器运行期间和关闭时偶尔将共享缓冲区的关系和块数量的数据保存到磁盘。
增加pg_trgm
函数strict_word_similarity()
以计算整个单词的相似性 (Alexander Korotkov)
为此,已有函数word_similarity()
,但其设计是为了找到单词相似的部分,而strict_word_similarity()
则是计算整个单词的相似性。
允许创建能用于在citext
列上进行LIKE
的索引 (Alexey Chernyshov)
这样做的话,索引就必须用citext_pattern_ops
操作符类创建。
允许btree_gin
对bool
, bpchar
, name
和uuid
数据类型进行索引 (Matheus Oliveira)
允许用~>
操作符接收负的立方体坐标 (Alexander Korotkov)
这对在查找降序的坐标时做KNN-GiST搜索很有用。
将越南文处理加到unaccent
扩展 (Dang Minh Huong, Michael Paquier)
改进amcheck
,检查每个堆元组有无索引入口 (Peter Geoghegan)
使adminpack
使用新的缺省文件系统访问角色 (Stephen Frost)
以前,只有超级用户才能调用adminpack
函数;现在检查角色的权限。
将pg_stat_statement
的查询ID增宽至64位 (Robert Haas)
这将大大减少查询ID出现哈希冲突的可能性。现在查询ID可能显示为负值。
移除contrib/start-scripts/osx
脚本,因为其不再建议使用(contrib/start-scripts/macos
代替) (Tom Lane)
移除chkpass
扩展 (Peter Eisentraut)
该扩展不再视为是一种有用的安全工具或如何编写扩展的示例。
作为补丁的作者、提交者、审阅者、测试者或问题报告者,以下人员(按字母顺序排列)对该发行版做出了贡献。
Abhijit Menon-Sen |
Adam Bielanski |
Adam Brightwell |
Adam Brusselback |
Aditya Toshniwal |
Adrián Escoms |
Adrien Nayrat |
Akos Vandra |
Aleksander Alekseev |
Aleksandr Parfenov |
Alexander Korotkov |
Alexander Kukushkin |
Alexander Kuzmenkov |
Alexander Lakhin |
Alexandre Garcia |
Alexey Bashtanov |
Alexey Chernyshov |
Alexey Kryuchkov |
Alik Khilazhev |
Álvaro Herrera |
Amit Kapila |
Amit Khandekar |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
Andreas Joseph Krogh |
Andreas Karlsson |
Andreas Seltenreich |
André Hänsel |
Andrei Gorita |
Andres Freund |
Andrew Dunstan |
Andrew Fletcher |
Andrew Gierth |
Andrew Grossman |
Andrew Krasichkov |
Andrey Borodin |
Andrey Lizenko |
Andy Abelisto |
Anthony Bykov |
Antoine Scemama |
Anton Dignös |
Antonin Houska |
Arseniy Sharoglazov |
Arseny Sher |
Arthur Zakirov |
Ashutosh Bapat |
Ashutosh Sharma |
Ashwin Agrawal |
Asim Praveen |
Atsushi Torikoshi |
Badrul Chowdhury |
Balazs Szilfai |
Basil Bourque |
Beena Emerson |
Ben Chobot |
Benjamin Coutu |
Bernd Helmle |
Blaz Merela |
Brad DeJong |
Brent Dearth |
Brian Cloutier |
Bruce Momjian |
Catalin Iacob |
Chad Trabant |
Chapman Flack |
Christian Duta |
Christian Ullrich |
Christoph Berg |
Christoph Dreis |
Christophe Courtois |
Christopher Jones |
Claudio Freire |
Clayton Salem |
Craig Ringer |
Dagfinn Ilmari Mannsåker |
Dan Vianello |
Dan Watson |
Dang Minh Huong |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Daniel Wood |
Darafei Praliaskouski |
Dave Cramer |
Dave Page |
David Binderman |
David Carlier |
David Fetter |
David G. Johnston |
David Gould |
David Hinkle |
David Pereiro Lagares |
David Rader |
David Rowley |
David Steele |
Davy Machado |
Dean Rasheed |
Dian Fay |
Dilip Kumar |
Dmitriy Sarafannikov |
Dmitry Dolgov |
Dmitry Ivanov |
Dmitry Shalashov |
Don Seiler |
Doug Doole |
Doug Rady |
Edmund Horner |
Eiji Seki |
Elvis Pranskevichus |
Emre Hasegeli |
Erik Rijkers |
Erwin Brandstetter |
Etsuro Fujita |
Euler Taveira |
Everaldo Canuto |
Fabien Coelho |
Fabrízio de Royes Mello |
Feike Steenbergen |
Frits Jalvingh |
Fujii Masao |
Gao Zengqi |
Gianni Ciolli |
Greg Stark |
Gunnlaugur Thor Briem |
Guo Xiang Tan |
Hadi Moshayedi |
Hailong Li |
Haribabu Kommi |
Heath Lord |
Heikki Linnakangas |
Hugo Mercier |
Igor Korot |
Igor Neyman |
Ildar Musin |
Ildus Kurbangaliev |
Ioseph Kim |
Jacob Champion |
Jaime Casanova |
Jakob Egger |
Jean-Pierre Pelletier |
Jeevan Chalke |
Jeevan Ladhe |
Jeff Davis |
Jeff Janes |
Jeremy Evans |
Jeremy Finzel |
Jeremy Schneider |
Jesper Pedersen |
Jim Nasby |
Jimmy Yih |
Jing Wang |
Jobin Augustine |
Joe Conway |
John Gorman |
John Naylor |
Jon Nelson |
Jon Wolski |
Jonathan Allen |
Jonathan S. Katz |
Julien Rouhaud |
Jürgen Purtz |
Justin Pryzby |
KaiGai Kohei |
Kaiting Chen |
Karl Lehenbauer |
Keith Fiske |
Kevin Bloch |
Kha Nguyen |
Kim Rose Carlsen |
Konstantin Knizhnik |
Kuntal Ghosh |
Kyle Samson |
Kyotaro Horiguchi |
Lætitia Avrot |
Lars Kanis |
Laurenz Albe |
Leonardo Cecchi |
Liudmila Mantrova |
Lixian Zou |
Lloyd Albin |
Luca Ferrari |
Lucas Fairchild |
Lukas Eder |
Lukas Fittl |
Magnus Hagander |
Mai Peng |
Maksim Milyutin |
Maksym Boguk |
Mansur Galiev |
Marc Dilger |
Marco Nenciarini |
Marina Polyakova |
Mario de Frutos Dieguez |
Mark Cave-Ayland |
Mark Dilger |
Mark Wood |
Marko Tiikkaja |
Markus Winand |
Martín Marqués |
Masahiko Sawada |
Matheus Oliveira |
Matthew Stickney |
Metin Doslu |
Michael Banck |
Michael Meskes |
Michael Paquier |
Michail Nikolaev |
Mike Blackwell |
Minh-Quan Tran |
Mithun Cy |
Morgan Owens |
Nathan Bossart |
Nathan Wagner |
Neil Conway |
Nick Barnes |
Nicolas Thauvin |
Nikhil Sontakke |
Nikita Glukhov |
Nikolay Shaplov |
Noah Misch |
Noriyoshi Shinoda |
Oleg Bartunov |
Oleg Samoilov |
Oliver Ford |
Pan Bian |
Pascal Legrand |
Patrick Hemmer |
Patrick Krecker |
Paul Bonaud |
Paul Guo |
Paul Ramsey |
Pavan Deolasee |
Pavan Maddamsetti |
Pavel Golub |
Pavel Stehule |
Peter Eisentraut |
Peter Geoghegan |
Petr Jelínek |
Petru-Florin Mihancea |
Phil Florent |
Philippe Beaudoin |
Pierre Ducroquet |
Piotr Stefaniak |
Prabhat Sahu |
Pu Qun |
QL Zhuo |
Rafia Sabih |
Rahila Syed |
Rainer Orth |
Rajkumar Raghuwanshi |
Raúl Marín Rodríguez |
Regina Obe |
Richard Yen |
Robert Haas |
Robins Tharakan |
Rod Taylor |
Rushabh Lathia |
Ryan Murphy |
Sahap Asci |
Samuel Horwitz |
Scott Ure |
Sean Johnston |
Shao Bret |
Shay Rojansky |
Shubham Barai |
Simon Riggs |
Simone Gotti |
Sivasubramanian Ramasubramanian |
Stas Kelvich |
Stefan Kaltenbrunner |
Stephen Froehlich |
Stephen Frost |
Steve Singer |
Steven Winfield |
Sven Kunze |
Taiki Kondo |
Takayuki Tsunakawa |
Takeshi Ideriha |
Tatsuo Ishii |
Tatsuro Yamada |
Teodor Sigaev |
Thom Brown |
Thomas Kellerer |
Thomas Munro |
Thomas Reiss |
Tobias Bussmann |
Todd A. Cook |
Tom Kazimiers |
Tom Lane |
Tomas Vondra |
Tomonari Katsumata |
Torsten Grust |
Tushar Ahuja |
Vaishnavi Prabakaran |
Vasundhar Boddapati |
Victor Drobny |
Victor Wagner |
Victor Yegorov |
Vik Fearing |
Vinayak Pokale |
Vincent Lachenal |
Vitaliy Garnashevich |
Vitaly Burovoy |
Vladimir Baranoff |
Xin Zhang |
Yi Wen Wong |
Yorick Peterse |
Yugo Nagata |
Yuqi Gu |
Yura Sokolov |
Yves Goergen |
Zhou Digoal |