赞助/发布 9.1 文档
E.1.1. 概述
PostgreSQL 的这个版本添加了许多主要功能,包括
(摘要待补充)
以上内容将在下面的章节中更详细地解释。
E.1.2. 迁移到版本 9.1
对于想要从任何早期版本迁移数据的用户,需要使用 pg_dump 进行转储/恢复,或者使用 pg_upgrade。
版本 9.1 包含一些可能会影响与早期版本兼容性的更改。请注意以下不兼容性
E.1.2.1. 字符串
将标准 conforming_strings 的默认值更改为 on (Robert Haas)
这消除了一个长期存在的不兼容性,即与 SQL 标准不一致;escape_string_warning 多年来一直对这种用法发出警告。 E 字符串是字符串中嵌入转义的正确方法,不受此更改的影响。
E.1.2.2. 转换
禁止对复合类型使用函数式和属性式数据类型转换 (Tom Lane)
例如,禁止 composite_value.text 和 text(composite_value)。CAST 和 :: 语法在需要对整个复合值进行转换时仍然可用。
收紧基于数组的域的转换检查 (Tom Lane)
当域基于数组类型时,它被允许“查看”域类型以访问数组元素,包括对域值进行下标运算以获取或分配元素。例如,使用 UPDATE ... SET domaincol[5] = ... 对该域值的元素进行赋值,现在会重新检查域类型的约束,而在之前,检查会被跳过。
此外,这种域类型不再被允许与多态函数的 anyarray 参数匹配,除非显式将其向下转换到基本数组类型。
E.1.2.3. 数组
更改 string_to_array() 以便对于零长度字符串返回一个空数组 (Pavel Stehule)
之前,它返回 NULL。
更改 string_to_array(),以便 NULL 分隔符将字符串拆分为字符 (Pavel Stehule)
之前,它返回 NULL。
E.1.2.4. 对象修改
修复对 before/after 触发器的错误检查 (Tom Lane)
触发器现在可以在三种情况下被触发:BEFORE、AFTER 或 INSTEAD OF 一些操作。触发器函数作者应该验证他们的逻辑在这三种情况下都能正常工作。
要求超级用户或 CREATEROLE 权限才能设置角色注释 (Tom Lane)
E.1.2.5. 服务器设置
更改 pg_last_xlog_receive_location() 以便它永远不会向后移动 (Fujii Masao)
之前,pg_last_xlog_receive_location() 在流式复制重新启动时可能会向后移动。
让复制连接的日志记录遵守 log_connections (Magnus Hagander)
之前,复制连接总是被记录。
E.1.2.6. PL/pgSQL 服务器端语言
更改 PL/pgSQL 的 RAISE 命令(没有参数)以使其可以被附加的异常块捕获 (Piyush Newe)
之前,代码块中的 RAISE 始终作用域为附加的异常块,因此它在相同作用域内无法捕获。
调整 PL/pgSQL 的错误行报告代码以使其与其他 PL 一致 (Pavel Stehule)
之前,PL/pgSQL 会忽略(不计算)函数体开头处的空行。由于这与所有其他语言不一致,因此删除了特殊情况。
E.1.2.7. 其他不兼容性
让 pg_stat_reset() 重置所有数据库级别的统计信息 (Tomas Vondra)
一些 pg_stat_database 计数器没有被重置。
修复一些 information_schema.triggers 列名以匹配新的 SQL 标准名称 (Dean Rasheed)
将 ECPG 光标名称视为不区分大小写 (Zoltan Boszormenyi)
E.1.3. 变化
版本 9.1 包含...
E.1.3.1. 服务器
E.1.3.1.1. 性能
允许使用 UNLOGGED 在 CREATE TABLE 时创建非日志表 (Robert Haas)
这些表针对性能进行了优化,但在服务器崩溃的情况下会被清除。
允许 FULL OUTER JOIN 作为散列连接实现,并允许 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 的任一方进行散列 (Tom Lane)
之前,FULL OUTER JOIN 只能作为合并连接实现,而 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 只能对连接的可空一侧进行散列。这些更改提供了额外的查询优化可能性。
在繁忙的系统上合并重复的 fsync 请求 (Robert Haas, Greg Smith)
提高 commit_siblings 的性能 (Greg Smith)
这允许使用 commit_siblings 并降低开销。
减少大型 ispell 字典的内存需求 (Pavel Stehule, Tom Lane)
E.1.3.1.2. 优化器
允许继承表查询返回有意义地排序的结果 (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom Lane)
这允许优化继承表查询中的 ORDER BY 和 LIMIT 子句。
允许优化继承表查询的 MIN/MAX (Tom Lane)
支持散列数组值 (Tom Lane)
这提供了额外的查询优化可能性。
改进 GIN 索引扫描成本估算 (Teodor Sigaev)
E.1.3.1.3. 身份验证
在 pg_hba.conf 中支持主机名和主机后缀(例如 .example.com) (Peter Eisentraut)
之前,只支持主机 IP 地址和 CIDR 值。
在 pg_hba.conf 的 host 列中支持关键字 all (Peter Eisentraut)
之前,人们使用 0.0.0.0/0 或 ::/0 来表示这一点。
允许 GSSAPI 用于通过 SSPI 身份验证服务器 (Christian Ullrich)
具体来说,这允许基于 Unix 的 GSSAPI 客户端对 Windows 服务器进行 SSPI 身份验证。
E.1.3.1.4. 监控
将详细信息添加到重启点和检查点的日志记录中,这些日志记录由 log_checkpoints 控制 (Fujii Masao, Greg Smith)
新的详细信息显示了 WAL 文件和同步活动。
添加 log_file_mode,它控制由 logging_collector 创建的日志文件的权限 (Martin Pihlak)
E.1.3.1.5. 统计视图
在 pg_stat_activity 中添加 client_hostname 字段 (Peter Eisentraut)
之前,只报告客户端地址。
添加 pg_stat_xact_* 统计函数和视图 (Joel Jacobson)
这些类似于数据库范围的统计计数器视图,但反映了当前事务的计数。
在数据库级别和后台写器统计视图中添加最后重置时间 (Tomas Vondra)
在 pg_stat_*_tables 视图中添加显示真空和分析操作数量的列 (Magnus Hagander)
在 pg_stat_bgwriter 中添加 buffers_backend_fsync 字段 (Greg Smith)
这个新字段统计了后端同步缓冲区的次数。
E.1.3.1.6. 服务器设置
允许自动调整 wal_buffers (Greg Smith)
wal_buffers 现在默认情况下会根据 shared_buffers 的大小进行自动调整。
增加 deadlock_timeout、log_min_duration_statement 和 log_autovacuum_min_duration 的最大值 (Peter Eisentraut)
之前,这些参数的每个参数的最大值都只有大约 35 分钟。现在允许更大的值。
E.1.3.2. 复制和恢复
E.1.3.2.1. 流式复制和持续归档
允许同步复制 (Simon Riggs, Fujii Masao)
这允许主服务器在确认提交之前等待备用服务器将事务信息写入磁盘。一次只有一个备用服务器可以担任同步备用服务器的角色,这由 synchronous_standby_names 设置控制。同步复制可以通过 synchronous_commit 设置在每个事务的基础上启用或禁用。
添加协议支持,用于通过流式复制网络连接将文件系统备份发送到备用服务器 (Magnus Hagander, Heikki Linnakangas)
这避免了在创建备用服务器时手动传输文件系统备份的要求。
添加命令行工具 pg_basebackup 用于创建新的备用服务器或数据库备份(Magnus Hagander)
为角色添加复制权限(Magnus Hagander)
这是一个用于流式复制的只读权限,允许非超级用户启动复制连接。以前只有超级用户才能启动复制连接;超级用户默认拥有此权限。
通过本地套接字的 ident 身份验证现在称为 peer(Magnus Hagander)
为了向后兼容,仍然接受旧术语。
E.1.3.2.2. 复制监控
添加系统视图 pg_stat_replication,用于显示 WAL 发送器进程的活动(Itagaki Takahiro,Simon Riggs)
这报告所有已连接备用服务器的状态。
添加监控函数 pg_last_xact_replay_timestamp()(Fujii Masao)
这返回主服务器上生成在备用服务器上应用的最新提交或中止记录的时间。
E.1.3.2.3. 热备
添加变量 hot_standby_feedback,以使备用服务器能够推迟主服务器上旧行版本的清理(Simon Riggs)
这有助于避免取消备用服务器上的长时间运行的查询。
添加系统视图 pg_stat_database_conflicts,以显示已被取消的查询及其原因(Magnus Hagander)
取消可能是由于表空间被删除、锁定超时、旧快照、固定缓冲区和死锁造成的。
向 pg_stat_database 添加冲突计数(Magnus Hagander)
这是在数据库中发生的冲突数量。
增加 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值。
之前,这些参数的每个参数的最大值都只有大约 35 分钟。现在允许更大的值。
添加 ERRCODE_T_R_DATABASE_DROPPED 错误代码,以报告由于数据库被删除而导致的恢复冲突(Tatsuo Ishii)
这对连接池软件很有用。
E.1.3.2.4. 恢复控制
添加函数来控制流式复制重放(Simon Riggs)
新函数为 pg_xlog_replay_pause()、pg_xlog_replay_resume() 和状态函数 pg_is_xlog_replay_paused()。
添加 recovery.conf 设置 pause_at_recovery_target,以在目标处暂停恢复(Simon Riggs)
这允许查询恢复服务器以检查恢复点是否为所需点。
添加使用 pg_create_restore_point() 创建命名恢复点的能力(Jaime Casanova)
这些命名恢复点可以使用新的 recovery.conf 设置 recovery_target_name 指定为恢复目标。
允许备用恢复自动切换到新的时间线(Heikki Linnakangas)
现在备用服务器会定期扫描归档目录以查找新的时间线。
添加 restart_after_crash,它在后端崩溃后禁用服务器重启(Robert Haas)
这允许外部集群管理软件控制服务器是否重启。
允许 recovery.conf 使用与 postgresql.conf 相同的引用行为(Dimitri Fontaine)
以前所有值都必须用引号括起来。
E.1.3.3. 查询
添加真正的可串行隔离级别(Kevin Grittner,Dan Ports)
以前,要求可串行隔离仅保证整个事务将使用单个 MVCC 快照,这允许某些已记录的异常。通过请求 REPEATABLE READ 隔离级别仍然可以访问旧的快照隔离行为。
允许在 WITH 子句中使用数据修改命令(INSERT/UPDATE/DELETE)(Marko Tiikkaja,Hitoshi Harada)
这些命令可以使用 RETURNING 将数据传递给包含查询。
允许将 WITH 子句附加到 INSERT、UPDATE、DELETE 语句(Marko Tiikkaja,Hitoshi Harada)
当在 GROUP BY 子句中指定主键时,允许在查询目标列表中使用非 GROUP BY 列(Peter Eisentraut)
某些其他数据库系统已经允许这种行为,并且由于主键的存在,结果是明确的。
允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT(Tom Lane)
DISTINCT 是默认行为,因此使用此关键字是多余的,但 SQL 标准允许使用它。
修复使用规则的普通查询,以使用与 EXPLAIN ANALYZE 相同的快照行为(Marko Tiikkaja)
以前 EXPLAIN ANALYZE 对涉及规则的查询使用了稍微不同的快照。EXPLAIN ANALYZE 的行为被认为更合理。
E.1.3.3.1. 字符串
添加每列排序规则支持(Peter Eisentraut,Tom Lane)
以前排序规则只能在数据库创建时设置。现在可以通过 SQL 标准的 COLLATE 子句在每列、域、索引或表达式中设置排序规则。
E.1.3.4. 对象操作
添加对外部表的支持(Shigeru Hanada,Robert Haas,Jan Urbanski,Heikki Linnakangas)
这允许使用存储在数据库外部的数据,就像使用本机 PostgreSQL 存储的数据一样。但是,外部表目前是只读的。
允许通过 ALTER TYPE 向现有枚举类型添加新值(Andrew Dunstan)
添加 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE(Peter Eisentraut)
这允许修改复合类型。
E.1.3.4.1. ALTER 对象
向类型化表上的 ALTER TYPE 操作添加 RESTRICT/CASCADE(Peter Eisentraut)
这控制 ADD/DROP/ALTER/RENAME ATTRIBUTE 的级联行为。
添加对 ALTER ... SET SCHEMA 命令中更多对象类型的支持(Dimitri Fontaine)
此命令现在支持转换、运算符、运算符类、运算符族、文本搜索配置以及文本搜索字典、文本搜索解析器和文本搜索模板。
E.1.3.4.2. CREATE/ALTER TABLE
添加 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX(Gurjeet Singh)
这允许使用现有唯一索引(包括并发创建的唯一索引)添加主键或唯一约束。
允许 ALTER TABLE 添加不带验证的外部键(Simon Riggs)
新选项称为 NOT VALID,它可以稍后修改为 VALIDATED 并执行验证检查。这些共同允许您添加外部键,对读写操作的影响最小。
允许 ALTER TABLE ... SET DATA TYPE 在适当的情况下避免表重写(Noah Misch,Robert Haas)
例如,将 varchar 列转换为 text 不再需要重写表。但是,增加 varchar 列上的长度约束仍然需要重写表。
添加 CREATE TABLE IF NOT EXISTS 语法(Robert Haas)
这允许创建表,如果表已经存在,则不会导致错误。
修复两个服务器后端尝试在同一时间向同一表添加继承父级时可能出现的“元组并发更新”错误(Robert Haas)
ALTER TABLE 现在对父表采取更强的锁定,因此两个子表不会同时尝试更新它。
E.1.3.4.3. 对象权限
添加 SECURITY LABEL 命令(KaiGai Kohei)
这允许将安全标签分配给对象。
E.1.3.5. 实用程序操作
添加事务级咨询锁(Marko Tiikkaja)
这类似于现有的会话级咨询锁,但锁会在事务结束时自动释放。
使 TRUNCATE ... RESTART IDENTITY 按事务方式重启序列(Steve Singer)
以前,如果后端在提交后截断活动和提交完成之间崩溃,计数器可能会不同步。
E.1.3.5.1. COPY
向 COPY TO/FROM 添加 ENCODING 选项(Hitoshi Harada,Itagaki Takahiro)
这允许分别指定 COPY 文件的编码,与客户端编码分开。
添加双向 COPY 协议支持(Fujii Masao)
这目前仅由流式复制使用。
E.1.3.5.2. EXPLAIN
使 EXPLAIN VERBOSE 在 FunctionScan 节点中显示函数调用表达式(Tom Lane)
E.1.3.5.3. VACUUM
向 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多详细信息(Itagaki Takahiro)
新信息包括活动元组计数和死元组计数,以及 CLUSTER 是否使用索引进行重建。
防止自动真空在无法获取锁时等待(Robert Haas)
它会尝试稍后进行真空。
E.1.3.5.4. CLUSTER
允许 CLUSTER 对表进行排序,而不是扫描索引,当这样做似乎更便宜时(Leonardo Francalanci)
E.1.3.5.5. 索引
向 GiST 索引添加最近邻(按运算符排序)搜索(Teodor Sigaev,Tom Lane)
这允许 GiST 索引在使用 LIMIT 的查询中快速返回 N 个最接近的值。
允许 GIN 索引索引空值和空值(Tom Lane)
这允许完全 GIN 索引扫描,并修复 GIN 扫描失败的各种极端情况。
允许 GIN 索引更好地识别重复搜索条目(Tom Lane)
这降低了索引扫描的成本,特别是在避免不必要的完全索引扫描的情况下。
修复 GiST 索引使其完全崩溃安全(Heikki Linnakangas)
以前,在某些情况下需要执行 REINDEX(您会收到通知)。
E.1.3.6. 数据类型
允许 numeric 在许多情况下使用更紧凑的 2 字节头(Robert Haas)
以前所有 numeric 值都有 4 字节头;这节省了磁盘存储空间。
添加对用 money 除以 money 的支持(Andy Balholm)
允许对类型 void 进行二进制 I/O(Radoslaw Smogura)
改进几何运算符的斜边计算(Paul Matthews)
这避免了不必要的溢出,也可能更准确。
E.1.3.6.1. 转换
添加对 money 和 numeric 之间转换的支持(Andy Balholm)
允许将表的行类型转换为表的超类型,如果它是一个类型化表(Peter Eisentraut)
这类似于现有的允许将行类型转换为超表的行类型的功能。
E.1.3.6.2. XML
添加 XML 函数 XMLEXISTS 和 xpath_exists() 函数(Mike Fowler)
这些用于 xpath 匹配。
添加 XML 函数 xml_is_well_formed()、xml_is_well_formed_document()、xml_is_well_formed_content()(Mike Fowler)
这些检查输入是否为格式正确的 XML。它们提供了以前仅在已弃用的 contrib/xml2 模块中可用的功能。
E.1.3.7. 函数
添加 SQL 函数 format(text),其行为类似于 C 的 printf()(Pavel Stehule,Robert Haas)
它目前支持字符串、SQL 字面量和 SQL 标识符的格式。
添加字符串函数 concat()、concat_ws()、left()、right() 和 reverse()(Pavel Stehule)
这些提高了与其他数据库产品的兼容性。
添加函数 pg_read_binary_file() 以读取二进制文件(Dimitri Fontaine,Itagaki Takahiro)
添加函数 pg_read_file() 的单参数版本以读取整个文件(Dimitri Fontaine,Itagaki Takahiro)
添加 array_to_string() 和 string_to_array() 的三参数形式,用于 NULL 处理控制(Pavel Stehule)
E.1.3.7.1. 对象信息函数
添加 pg_describe_object() 函数(Alvaro Herrera)
此函数用于获取描述对象的易于理解的字符串,该字符串基于 pg_class OID、对象 OID 和子对象 OID。它可以用来帮助解释 pg_depend 的内容。
更新内置运算符及其底层函数的注释(Tom Lane)
添加变量 quote_all_identifiers,以强制在 EXPLAIN 和系统目录函数(如 pg_get_viewdef())中引用所有标识符(Robert Haas)
这使得将模式导出到具有不同引用规则的工具和其他数据库变得更容易。
向 information_schema.sequences 系统视图添加字段(Peter Eisentraut)
以前,虽然视图存在,但所有这些视图字段都没有实现。
允许在 has_table_privilege() 和相关函数中使用 public 作为伪角色名称(Alvaro Herrera)
这允许检查公共权限。
E.1.3.7.2. 函数和触发器创建
允许在视图上使用 INSTEAD OF 触发器(Dean Rasheed)
此功能可用于实现完全可更新的视图。
最小化 CREATE TRIGGER 和许多 ALTER TABLE 和 CREATE RULE 操作的锁级别(Simon Riggs)
这提高了在更改活动数据库时的数据库可用性。
E.1.3.8. 服务器端语言
E.1.3.8.1. PL/pgSQL 服务器端语言
向 PL/pgSQL 添加 FOREACH IN ARRAY(Pavel Stehule)
这比以前遍历数组值元素的方法更有效率和易读。
允许在可以捕获相同位置的 RAISE ERROR 的地方捕获没有参数的 RAISE(Piyush Newe)
之前的编码从包含活动异常处理程序的块抛出错误。新的行为与其他 DBMS 产品更加一致。
E.1.3.8.2. PL/Perl 服务器端语言
允许将通用记录参数传递给 PL/Perl 函数(Andrew Dunstan)
PL/Perl 函数现在可以声明为接受类型为 record 的参数。行为与任何命名的复合类型相同。
将 PL/Perl 数组参数转换为 Perl 数组(Alexey Klyukin,Alex Hunsaker)
字符串表示仍然可用。
将 PL/Perl 复合类型参数转换为 Perl 哈希(Alexey Klyukin,Alex Hunsaker)
字符串表示仍然可用。
E.1.3.8.3. PL/Python 服务器端语言
为 PL/Python 添加表格函数支持(Jan Urbanski)
PL/Python 现在可以返回多个 OUT 参数和记录集。
为 PL/Python 添加验证器(Jan Urbanski)
这允许在函数创建时对 PL/Python 函数进行语法检查。
允许 PL/Python 中的 SQL 查询出现异常(Jan Urbanski)
这允许从 PL/Python 异常块访问 SQL 生成的异常错误代码。
添加 PL/Python 显式子事务(Jan Urbanski)
添加用于转义字符串的 PL/Python 函数(Jan Urbanski)
这些函数是 plpy.quote_ident、plpy.quote_literal 和 plpy.quote_nullable。
使用 PLy_elog 报告迭代器中的 PL/Python 错误(Jan Urbanski)
plpy.Fatal 现在会引发 FATAL,而不是 ERROR(Jan Urbanski)
旧的行为是错误的。
PL/Python 的彻底改造(Jan Urbanski)
这包括对 Python 3 的异常支持。**更多细节?
E.1.3.9. 客户端应用程序
将 createlang 和 droplang 标记为已弃用,因为它们现在只调用扩展命令(Tom Lane)
E.1.3.9.1. psql
在 psql 中添加 \conninfo 命令,以显示当前连接信息(David Christensen)
添加 psql 命令 \sf 以显示函数的定义(Pavel Stehule)
添加 psql 命令 \dL 以列出语言(Fernando Ike)
在 psql \dn(模式)中添加系统表 S 选项(Tom Lane)
\dn 不带 S 现在会抑制系统模式。
允许 psql 的 \e 和 \ef 命令接受行号,用于在编辑器中定位光标(Pavel Stehule)
这将通过 EDITOR_LINENUMBER_SWITCH 环境变量传递给编辑器。
使 psql 默认情况下从操作系统区域设置设置客户端编码(Heikki Linnakangas)
只有在未设置 PGCLIENTENCODING 环境变量时才会发生这种情况。
使 psql 区分唯一索引和唯一约束(Josh Kupershmidt)
额外的制表符补全支持(Itagaki Takahiro,Pavel Stehule,Andrey Popp,Christoph Berg,David Fetter,Josh Kupershmidt)
E.1.3.9.2. pg_dump
添加 pg_dump 和 pg_dumpall 选项 --quote-all-identifiers,以强制对所有标识符进行引用(Robert Haas)
将目录格式添加到 pg_dump(Joachim Wieland,Heikki Linnakangas)
这在内部类似于 tar pg_dump 格式。
E.1.3.9.3. pg_ctl
修复 pg_ctl,使其不再错误地报告服务器未运行(Bruce Momjian)
以前,如果服务器正在运行但 pg_ctl 无法进行身份验证,就会出现这种情况。
改进 pg_ctl start 的“wait”(-w)模式,以处理非标准端口号、非标准 Unix 域套接字位置、权限问题和陈旧的 postmaster 锁文件(Bruce Momjian)
将 promote 选项添加到 pg_ctl,以将备用服务器切换为主服务器(Fujii Masao)
E.1.3.10. 开发工具
E.1.3.10.1. libpq
添加 libpq 连接选项 client_encoding,其行为类似于 PGCLIENTENCODING 环境变量(Heikki Linnakangas)
值 auto 会根据操作系统区域设置设置客户端编码。
添加 PQlibVersion() 函数,该函数返回 libpq 库版本(Magnus Hagander)
libpq 已经有了 PQserverVersion(),它会返回服务器版本。
允许 libpq 数据库客户端使用 Unix 域套接字通过 requirepeer 检查服务器进程的用户名称(Peter Eisentraut)
PostgreSQL 已经允许服务器通过 Unix 域套接字确定客户端用户名。
将 PQping() 和 PQpingParams() 添加到 libpq(Bruce Momjian,Tom Lane)
允许在不创建新会话的情况下检测服务器的状态。
E.1.3.10.2. ECPG
允许 ecpg 接受动态游标名称,即使在 WHERE CURRENT OF 子句中也是如此
E.1.3.11. 构建选项
添加扩展,简化 PostgreSQL 添加功能的打包(Dimitri Fontaine,Tom Lane)
这由新的 CREATE/ALTER/DROP EXTENSION 命令控制;这取代了更手动地将功能添加到 PostgreSQL 的方法。
E.1.3.11.1. Makefile
改进了并行 make 支持(Peter Eisentraut)
这允许更快的编译。此外,make -k 和 make -q 现在在并行构建中正常工作。
要求 GNU make 3.80 或更高版本(Peter Eisentraut)
这是因为并行 make 改进的需要。
E.1.3.11.2. Windows
在 Windows 上,允许 pg_ctl 将服务注册为自动启动或按需启动(Quan Zongliang)
添加对在 Windows 上收集崩溃转储的支持(Craig Ringer,Magnus Hagander)
现在,非调试 Windows 二进制文件可以生成 minidump,并由标准调试工具进行分析。
启用使用 Mingw64 编译器构建(Andrew Dunstan)
这允许即使在非 Windows 平台上使用交叉编译也能够构建 64 位 Windows 二进制文件。
E.1.3.12. 源代码
为源代码添加闩锁,以等待事件(Heikki Linnakangas)
集中数据修改权限检查逻辑(KaiGai Kohei)
添加缺少的 get_{object}_oid() 函数,以保持一致性(Robert Haas)
通过删除冲突的关键字,提高使用 C++ 编译器进行后端编译的能力(Tom Lane)
添加对 DragonFly BSD 的支持(Rumko)
公开 quote_literal_cstr() 以供后端使用(Robert Haas)
在默认编码中运行回归测试(Peter Eisentraut)
回归测试以前总是使用 SQL_ASCII 编码运行。
将 src/tools/git_changelog 添加到源代码中,以替换 cvs2cl 和 pgcvslog(Robert Haas,Tom Lane)
将 git-external-diff 脚本添加到 src/tools 中(Bruce Momjian)
这用于从 git 生成上下文差异。
E.1.3.12.1. 服务器钩子
添加源代码钩子以检查权限(Robert Haas,Stephen Frost)
添加用于安全框架的后对象创建函数钩子(KaiGai Kohei)
添加客户端身份验证钩子(KaiGai Kohei)
E.1.3.13. Contrib
修改 /contrib 模块和存储过程语言,使其通过新的扩展机制安装(Tom Lane,Dimitri Fontaine)
这取代了更手动安装的方法。
添加 contrib/file_fdw 外部数据包装器(Shigeru Hanada)
使用该外部数据包装器的外表可以以与 COPY 非常相似的方式读取平面文件。
在 contrib/pg_trgm 和 contrib/btree_gist 中添加最近邻支持(Teodor Sigaev)
添加 contrib/btree_gist 对不等于搜索的支持(Jeff Davis)
允许 contrib/fuzzystrmatch 的 levenshtein() 函数处理多字节字符(Alexander Korotkov)
将 ssl_cipher() 和 ssl_version() 函数添加到 contrib/sslinfo(Robert Haas)
修复 contrib/intarray 和 contrib/hstore,使其对索引为空数组给出一致的结果(Tom Lane)
以前,使用索引的空数组查询可能会返回与使用顺序扫描的查询不同的结果。
允许 contrib/intarray 在多维数组上正常工作(Tom Lane)
在 contrib/intarray 中,避免出现关于在实际上不存在空值的情况下出现空值的错误消息(Tom Lane)
在 contrib/intarray 中,修复包含运算符关于空数组的行为(Tom Lane)
现在,空数组被正确地认为包含在任何其他数组中。
删除 contrib/xml2 对 xslt_process() 可以处理的参数=值对数量的任意限制(Pavel Stehule)
以前的限制是 10。
在 contrib/pageinspect 中,修复 heap_page_item 以将 infomasks 返回为 32 位值(Alvaro Herrera)
这避免返回负值,这会导致混淆。底层值是 16 位无符号整数。
E.1.3.13.1. 安全性
添加 contrib/sepgsql,以将权限检查与 SE-Linux 接口(KaiGai Kohei)
这使用新的 SECURITY LABEL 功能。
添加 contrib 模块 auth_delay(KaiGai Kohei)
这会导致服务器在返回身份验证失败之前暂停;它旨在使暴力密码攻击更加困难。
添加虚拟_seclabel contrib 模块(KaiGai Kohei)
这用于权限回归测试。
E.1.3.13.2. 性能
在 contrib/pg_trgm 中添加对 LIKE 和 ILIKE 索引搜索的支持(Alexander Korotkov)
将 levenshtein_less_equal() 函数添加到 contrib/fuzzystrmatch,它针对较小的距离进行了优化(Alexander Korotkov)
改进 contrib/seg 列上的索引查找性能(Alexander Korotkov)
改进 pg_upgrade 对具有大量关系的数据库的性能(Bruce Momjian)
添加标志到 contrib/pgbench,以报告每个语句的延迟(Florian Pflug)
E.1.3.13.3. Fsync 测试
将 src/tools/test_fsync 移动到 contrib/pg_test_fsync(Bruce Momjian,Tom Lane)
在 contrib/pg_test_fsync 中添加 O_DIRECT 支持(Bruce Momjian)
这与 wal_sync_method 使用 O_DIRECT 相匹配。
在 contrib/pg_test_fsync 中添加新的测试(Bruce Momjian)
E.1.3.14. 文档
ECPG 文档的大量改进(Satoshi Nagayasu)
大量的校对和文档改进(Thom Brown,Josh Kupershmidt,Susanne Ebrecht)
添加 exit_on_error 的文档(Robert Haas)
此参数会导致会话在任何错误时退出。
添加 pg_options_to_table() 的文档(Josh Berkus)
此参数显示表存储选项。
记录可以使用 (compositeval).* 语法访问所有复合字段(Peter Eisentraut)
记录 translate() 会删除 from 中没有相应 to 字符的字符(Josh Kupershmidt)
合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档(Alvaro Herrera)
集中权限和升级文档(Bruce Momjian)
添加 Solaris 10 的内核调整文档(Josh Berkus)
以前只记录了 Solaris 9 内核调整。