选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.5
历史版本PostgreSQL 9.5 已于 2021 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.26. 版本 9.5 #

发布日期:. 2016-01-07

E.26.1. 概述

PostgreSQL 9.5 的主要增强包括:

上述各项在下面的章节中有更详细的说明。

E.26.2. 迁移到版本 9.5

希望从任何之前的版本迁移数据的用户,需要使用 pg_dumpall进行转储/恢复,或使用pg_upgrade

版本 9.5 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处:

  • 调整操作符优先级以符合 SQL 标准(Tom Lane)

    <=>=<> 的优先级已降低到与 <>= 相同。IS 测试(例如 x IS NULL)的优先级已降低到恰好位于这六个比较操作符之下。此外,以 NOT 开头的多关键字操作符现在具有其基础操作符的优先级(例如 NOT BETWEEN 现在与 BETWEEN 优先级相同),而以前它们的优先级并不一致:对左操作数表现得像 NOT,对右操作数表现得像其基础操作符。新的配置参数 operator_precedence_warning 可以启用,以就在这些优先级变更导致不同解析选择的查询发出警告。

  • pg_ctl 的默认关闭模式从 smart 改为 fast(Bruce Momjian)

    这意味着默认行为将是强制取消现有的数据库会话,而不是简单地等待它们退出。

  • PL/pgSQL 赋值中使用赋值转换行为进行数据类型转换,而不是经由文本往返转换(Tom Lane)

    此变更使布尔值到字符串的转换产生 truefalse,而不是 tf。其他类型转换可能在比以前更多的情况下成功;例如,把数值 3.9 赋给整数变量现在会赋值 4,而不是失败。如果没有为特定的源类型和目标类型定义赋值级转换,PL/pgSQL 将回退到旧的 I/O 转换行为。

  • 允许服务器命令行选项中的字符用反斜杠转义(Andres Freund)

    以前,选项字符串中的空格总是分隔选项,因此无法在选项值中包含空格。现在要在选项值中包含反斜杠,需要写成 \\

  • 把 GSSAPI 的 include_realm 参数默认值改为 1,因此默认情况下不会从 GSSSSPI 主体名中移除领域(realm)(Stephen Frost)

  • min_wal_sizemax_wal_size 替换配置参数 checkpoint_segments(Heikki Linnakangas)

    如果你以前调整过 checkpoint_segments,以下公式可给出近似等效的设置:

    max_wal_size = (3 * checkpoint_segments) * 16MB
    

    注意,max_wal_size 的默认设置比过去 checkpoint_segments 的默认值高得多,因此可能不再需要调整它。

  • 通过新的环境变量 PG_OOM_ADJUST_FILEPG_OOM_ADJUST_VALUE 控制 Linux 的 OOM killer,而不是编译时选项 LINUX_OOM_SCORE_ADJLINUX_OOM_ADJ(Gurjeet Singh)

  • 停用服务器配置参数 ssl_renegotiation_limit,它在以前的版本中已被弃用(Andres Freund)

    虽然 SSL 重协商在理论上是个好主意,但它引发的 bug 之多,使它在实践中被认为弊大于利,而且相关标准的未来版本将移除它。因此我们已从 PostgreSQL 中移除了对它的支持。ssl_renegotiation_limit 参数仍然存在,但只能设置为零(禁用)。它也不再被写入文档。

  • 移除服务器配置参数 autocommit,它此前已被弃用且不起作用(Tom Lane)

  • 移除 pg_authid 系统目录的 rolcatupdate 字段,因为它毫无用处(Adam Brightwell)

  • 当没有有效值时,pg_stat_replication 系统视图的 sent 字段现在为 NULL 而不是零(Magnus Hagander)

  • 允许 jsonjsonb 数组提取操作符接受负数下标,它们从 JSON 数组末尾开始计数(Peter Geoghegan、Andrew Dunstan)

    以前,这些操作符对负数下标返回 NULL

E.26.3. 变更

下面你将找到 PostgreSQL 9.5 与上一个大版本之间的变更的详细说明。

E.26.3.1. 服务器

E.26.3.1.1. 索引
  • 添加块范围索引BRIN)(Álvaro Herrera)

    BRIN 索引只为堆块范围存储摘要数据(如最小值和最大值)。因此它们非常紧凑且更新成本低;但如果数据是自然聚簇的,它们仍能显著加速搜索。

  • 允许查询使用 GiST 索引对边界框索引的对象(多边形、圆)执行精确的距离过滤(Alexander Korotkov、Heikki Linnakangas)

    以前,要利用此类索引,必须使用子查询选取大量按边界框距离排序的行,然后再用更精确的距离计算对结果进一步过滤。

  • 允许 GiST 索引执行仅索引扫描(Anastasia Lubennikova、Heikki Linnakangas、Andreas Karlsson)

  • 添加配置参数 gin_pending_list_limit 来控制 GIN 待处理列表的大小(Fujii Masao)

    该值也可以按索引设置为索引存储参数。以前,待处理列表的大小由 work_mem 控制,这很不方便,因为 work_mem 的合适值对此用途往往太大了。

  • 在创建哈希索引期间发出警告,因为它们不是崩溃安全的(Bruce Momjian)

E.26.3.1.2. 一般性能
  • 通过缩写键提高 varchartextnumeric 字段的排序速度(Peter Geoghegan、Andrew Gierth、Robert Haas)

  • 扩展允许由内联的、非 SQL 可调用的比较函数执行排序的基础设施,使其覆盖 CREATE INDEXREINDEXCLUSTER(Peter Geoghegan)

  • 改进哈希连接的性能(Tomas Vondra、Robert Haas)

  • 改进共享缓冲区替换的并发性(Robert Haas、Amit Kapila、Andres Freund)

  • 减少索引扫描期间的页锁和引脚数量(Kevin Grittner)

    其主要好处是让索引清理较少被阻塞。

  • 使按后端的缓冲区引脚跟踪更省内存(Andres Freund)

  • 改进锁的可伸缩性(Andres Freund)

    这尤其解决了在多 CPU 插槽系统上运行时的可伸缩性问题。

  • 允许优化器移除对左连接子查询的不必要引用(David Rowley)

  • 在合适的情况下,允许把查询限制下推到带窗口函数的子查询中(David Rowley)

  • 如果非防泄漏函数不接收任何视图输出列,则允许把它下推到安全屏障视图中(Dean Rasheed)

  • WHERE 中出现匹配的函数调用时,让规划器使用从布尔返回函数表达式索引获得的统计信息(Tom Lane)

  • 即使列的数据类型缺少相等函数,也让 ANALYZE 计算基本统计信息(空值比例和平均列宽)(Oleksandr Shulgin)

  • 加速 CRC(循环冗余校验)计算并切换到 CRC-32C(Abhijit Menon-Sen、Heikki Linnakangas)

  • 改进位图索引扫描的性能(Teodor Sigaev、Tom Lane)

  • 通过避免不必要的内存复制加速 CREATE INDEX(Robert Haas)

  • 增加缓冲区映射的分区数(Amit Kapila、Andres Freund、Robert Haas)

    这提高了高并发负载下的性能。

E.26.3.1.3. 监控
  • 通过新的 log_autovacuum_min_duration 存储参数添加按表的自动清理日志控制(Michael Paquier)

  • 添加新的配置参数 cluster_name(Thomas Munro)

    这个字符串通常在 postgresql.conf 中设置,让客户端能够识别集群。该名称还会出现在所有服务器进程的进程标题中,便于识别属于同一集群的进程。

  • 防止非超级用户在连接启动时更改 log_disconnections(Fujii Masao)

E.26.3.1.4. SSL
  • 检查 SSL 服务器证书中的使用者可选名称(Subject Alternative Names)(如果存在)(Alexey Klyukin)

    当它们存在时,这将取代对证书通用名称(Common Name)的检查。

  • 添加系统视图 pg_stat_ssl,用于报告 SSL 连接信息(Magnus Hagander)

  • 添加以与实现无关的方式返回 SSL 信息的 libpq 函数(Heikki Linnakangas)

    虽然 PQgetssl() 仍可用于调用 OpenSSL 函数,但它现在被视为已弃用,因为未来版本的 libpq 可能支持其他 SSL 实现。在可能的情况下,请使用新函数 PQsslAttribute()PQsslAttributeNames()PQsslInUse(),以与 SSL 实现无关的方式获取 SSL 信息。

  • 使 libpq 遵循任何 OpenSSL 线程回调(Jan Urbanski)

    以前它们会被覆盖。

E.26.3.1.5. 服务器配置
  • min_wal_sizemax_wal_size 替换配置参数 checkpoint_segments(Heikki Linnakangas)

    此变更允许分配大量 WAL 文件,而在不再需要之后不必保留它们。因此 max_wal_size 的默认值被设置为 1GB,比过去 checkpoint_segments 的默认值大得多。另请注意,备库会执行重做点以尝试把 WAL 空间消耗限制在 max_wal_size 以内;以前它们完全不理会 checkpoint_segments

  • 通过新的环境变量 PG_OOM_ADJUST_FILEPG_OOM_ADJUST_VALUE 控制 Linux 的 OOM killer(Gurjeet Singh)

    以前的 OOM 控制基础设施涉及编译时选项 LINUX_OOM_SCORE_ADJLINUX_OOM_ADJ,它们不再受支持。新的行为在所有构建中都可用。

  • 当配置参数 track_commit_timestamp 启用时,允许记录事务提交时间戳(Álvaro Herrera、Petr Jelínek)

    时间戳信息可以通过函数 pg_xact_commit_timestamp()pg_last_committed_xact() 访问。

  • 允许通过 ALTER ROLE SET 设置 local_preload_libraries(Peter Eisentraut、Kyotaro Horiguchi)

  • 允许自动清理工作进程在运行期间响应配置参数更改(Michael Paquier)

  • 把配置参数 debug_assertions 设为只读(Andres Freund)

    这意味着,如果在编译时启用了断言,就无法再关闭它们,从而允许更高效的代码优化。此变更还移除了 postgres-A 选项。

  • 允许在不生效的系统上设置 effective_io_concurrency(Peter Eisentraut)

  • 添加系统视图 pg_file_settings,用于显示服务器配置文件的内容(Sawada Masahiko)

  • 向系统视图 pg_settings 添加 pending_restart,用于指示已做出更改但在数据库重启之前不会生效(Peter Eisentraut)

  • 允许用 ALTER SYSTEM RESET 重置 ALTER SYSTEM 的值(Vik Fearing)

    此命令会从 postgresql.auto.conf 中移除指定的设置。

E.26.3.2. 复制与恢复

  • 创建跟踪复制进度的机制,包括在逻辑复制期间识别单条变更来源的方法(Andres Freund)

    这在实现复制解决方案时很有帮助。

  • 重做多事务提交日志的截断逻辑,使其正确记录 WAL(Andres Freund)

    这使事情变得明显更简单、更健壮。

  • 添加 recovery.conf 参数 recovery_target_action 来控制恢复之后的动作(Petr Jelínek)

    它取代了旧的参数 pause_at_recovery_target

  • archive_mode 添加新值 always,允许备库始终归档收到的 WAL 文件(Fujii Masao)

  • 添加配置参数 wal_retrieve_retry_interval,控制在失败后重试读取 WAL 的间隔(Alexey Vasiliev、Michael Paquier)

    这对温备库特别有用。

  • 允许压缩存储在 WAL 中的全页映像(Rahila Syed、Michael Paquier)

    此特性可减少 WAL 量,代价是 WAL 记录和 WAL 重放消耗更多 CPU 时间。它由新的配置参数 wal_compression 控制,目前默认关闭。

  • 在备库提升期间为 WAL 文件加上 .partial 后缀后归档(Heikki Linnakangas)

  • 添加配置参数 log_replication_commands 来记录复制命令(Fujii Masao)

    默认情况下,复制命令(例如 IDENTIFY_SYSTEM)不会被记录,即使 log_statement 被设置为 all

  • pg_replication_slots 中报告持有复制槽的进程(Craig Ringer)

    新增的输出列为 active_pid

  • 允许 recovery.confprimary_conninfo 设置使用连接 URI(例如 postgres://)(Alexander Shulgin)

E.26.3.3. 查询

  • 允许把会产生约束冲突的 INSERT 转换为 UPDATE 或忽略(Peter Geoghegan、Heikki Linnakangas、Andres Freund)

    语法为 INSERT ... ON CONFLICT DO NOTHING/UPDATE。这是流行的 UPSERT 命令的 Postgres 实现。

  • 添加 GROUP BY 分析特性 GROUPING SETSCUBEROLLUP(Andrew Gierth、Atri Sharma)

  • 允许在 UPDATE 中用单个子 SELECT 的结果设置多个目标列(Tom Lane)

    这通过语法 UPDATE tab SET (col1, col2, ...) = (SELECT ...) 完成。

  • SELECT 添加选项 SKIP LOCKED,用于跳过已锁定的行(Thomas Munro)

    NOWAIT 不同,它不会对已锁定的行抛出错误。

  • SELECT 添加选项 TABLESAMPLE,用于返回表的子集(Petr Jelínek)

    此特性支持 SQL 标准的表采样方法。此外,还为用户自定义表采样方法提供了机制。

  • 为拼错的列名建议可能的匹配(Peter Geoghegan、Robert Haas)

E.26.3.4. 工具命令

  • EXPLAIN 输出中添加有关排序的更多细节(Marius Timmer、Lukas Kreft、Arne Scheffer)

    细节包括 COLLATEDESCUSING 以及 NULLS FIRST/LAST

  • 使 VACUUM 记录因引脚(pin)而跳过的页数(Jim Nasby)

  • 使 TRUNCATE 正确更新 pg_stat* 元组计数器(Alexander Shulgin)

E.26.3.4.1. REINDEX
  • 允许 REINDEX 使用 SCHEMA 选项对整个模式重新索引(Sawada Masahiko)

  • REINDEX 添加 VERBOSE 选项(Sawada Masahiko)

  • 防止 REINDEX DATABASESCHEMA 输出对象名称,除非使用 VERBOSE(Simon Riggs)

  • REINDEX 中移除过时的 FORCE 选项(Fujii Masao)

E.26.3.5. 对象操作

E.26.3.5.1. 外部表
  • 添加对 IMPORT FOREIGN SCHEMA 的支持(Ronan Dunklau、Michael Paquier、Tom Lane)

    此命令允许自动创建与远程服务器上现有表结构匹配的本地外部表。

  • 允许在外部表上放置 CHECK 约束(Shigeru Hanada、Etsuro Fujita)

    此类约束被假定在远程服务器上执行,本地并不执行。但在查询优化(例如约束排除)中假定它们成立。

  • 允许外部表参与继承(Shigeru Hanada、Etsuro Fujita)

    为使其自然工作,现在允许外部表带有标记为 NOT VALID 的检查约束,并允许设置存储和 OID 特性,尽管这些操作对外部表实际上是空操作。

  • 允许外部数据包装器和自定义扫描实现连接下推(KaiGai Kohei)

E.26.3.5.2. 事件触发器
  • 只要安装了 ddl_command_end 事件触发器,就会捕获 DDL 活动的细节供其检查(Álvaro Herrera)

    这些信息可以通过集合返回函数 pg_event_trigger_ddl_commands() 获取;如果该函数提供的细节不够,也可以通过检查 C 数据结构获取。

  • 允许对由 ALTER TABLE 引起的表重写设置事件触发器(Dimitri Fontaine)

  • 为数据库级的 COMMENTSECURITY LABELGRANT/REVOKE 添加事件触发器支持(Álvaro Herrera)

  • pg_event_trigger_dropped_objects 的输出添加列(Álvaro Herrera)

    这使删除操作的处理更简单。

E.26.3.6. 数据类型

  • 允许 xml 数据类型接受空或全空白的内容值(Peter Eisentraut)

    这是 SQL/XML 规范的要求。

  • 允许 macaddr 使用 xxxx-xxxx-xxxx 格式输入(Herwin Weststrate)

  • 禁止对 interval 同时指定精度和字段说明的非 SQL 标准语法(Bruce Momjian)

    按照标准,此类类型说明应写成例如 INTERVAL MINUTE TO SECOND(2)PostgreSQL 以前允许写成 INTERVAL(2) MINUTE TO SECOND,但现在必须按标准方式书写。

  • inet/cidr 操作符添加选择率估计器,并改进文本检索函数的估计器(Emre Hasegeli、Tom Lane)

  • 添加数据类型 regroleregnamespace,以简化角色或命名空间 OID 的输入与美化打印(Kyotaro Horiguchi)

E.26.3.6.1. JSON

E.26.3.7. 函数

  • numeric 值添加 generate_series()(Plato Malugin)

  • 允许 array_agg()ARRAY() 接受数组作为输入(Ali Akbar、Tom Lane)

  • 添加函数 array_position()array_positions(),用于返回数组值的下标(Pavel Stehule)

  • 添加 pointpolygon 的距离操作符 <->(Alexander Korotkov)

  • 允许在 SIMILAR TOSUBSTRING 中使用多字节字符作为转义符(Jeff Davis)

    以前只允许单字节字符作为转义符。

  • 添加 width_bucket() 的一个变体,支持任何可排序的数据类型和非均匀的桶宽(Petr Jelínek)

  • pg_read_file() 及相关函数添加可选的 missing_ok 参数(Michael Paquier、Heikki Linnakangas)

  • 允许在函数调用中用 => 指定命名参数(Pavel Stehule)

    以前只能使用 :=。这要求移除 => 作为用户定义操作符的可能。自 PostgreSQL 9.0 起,创建用户定义的 => 操作符就一直发出警告。

  • 为使用 PostgreSQL 提供的舍入函数的平台添加符合 POSIX 的舍入(Pedro Gimeno Fortea)

E.26.3.7.1. 系统信息函数和视图
E.26.3.7.2. 聚合
  • inet/cidr 数据类型添加 min()/max() 聚合(Haribabu Kommi)

  • 在支持的平台上,使用 128 位整数作为某些聚合函数的累加器(Andreas Karlsson)

E.26.3.8. 服务器端语言

  • 改进 PL/Python 对组合类型的支持(Ed Behn、Ronan Dunklau)

    这允许 PL/Python 函数返回组合类型的数组。

  • 降低 PL/Python 浮点值转换的精度损失(Marko Kreen)

  • 允许指定 SQL 数据类型与过程语言数据类型之间的转换例程(Peter Eisentraut)

    此变更添加了新命令 CREATE/DROP TRANSFORM。它还添加了 hstoreltree 类型与 PL/PerlPL/Python 之间的可选转换。

E.26.3.8.1. PL/pgSQL Server-Side Language
  • 改进 PL/pgSQL 的数组性能(Tom Lane)

  • PL/pgSQL 中添加 ASSERT 语句(Pavel Stehule)

  • 允许更多 PL/pgSQL 关键字用作标识符(Tom Lane)

E.26.3.9. 客户端应用程序

  • pg_archivecleanuppg_test_fsyncpg_test_timingpg_xlogdumpcontrib 移到 src/bin(Peter Eisentraut)

    这应使这些程序在大多数安装中默认被安装。

  • 添加 pg_rewind,它允许在故障回切后重新同步主服务器(Heikki Linnakangas)

  • 允许 pg_receivexlog 管理物理复制槽(Michael Paquier)

    这通过新的 --create-slot--drop-slot 选项控制。

  • 允许 pg_receivexlog 使用新的 --synchronous 选项同步刷写 WAL 到存储(Furuya Osamu、Fujii Masao)

    若不使用该选项,WAL 文件只在关闭时被 fsync。

  • 允许 vacuumdb 使用新的 --jobs 选项并行清理(Dilip Kumar)

  • vacuumdb 中,当需要多个连接时不再重复提示输入同一密码(Haribabu Kommi、Michael Paquier)

  • reindexdb 添加 --verbose 选项(Sawada Masahiko)

  • 使 pg_basebackup 在使用 tar 格式时使用表空间映射文件,以支持 MS Windows 上的符号链接和 100 字符以上的文件路径(Amit Kapila)

  • pg_xlogdump 添加 --stats 选项,用于显示摘要统计(Abhijit Menon-Sen)

E.26.3.9.1. psql
  • 允许 psql 生成 AsciiDoc 输出(Szymon Guz)

  • psqlECHO 变量添加 errors 模式,只显示失败的命令(Pavel Stehule)

    该行为也可以通过 psql-b 选项选择。

  • psql 的 unicode 线型中提供对列、表头和边框线型的分别控制(Pavel Stehule)

    支持单线或双线;默认为 single

  • psqlPROMPT 变量中添加新选项 %l,用于显示当前多行语句的行号(Sawada Masahiko)

  • 添加 \pset 选项 pager_min_lines,用于控制分页器的调用(Andrew Dunstan)

  • 改进 psql 在决定是否调用分页器时使用的行数统计(Andrew Dunstan)

  • 如果 --output--log-file 开关指定的文件无法写入,psql 现在会失败(Tom Lane、Daniel Vérité)

    以前在这种情况下它实际上会忽略该开关。

  • 为设置 search_path 变量添加 psql Tab 补全(Jeff Janes)

    目前只有第一个模式可以被 Tab 补全。

  • 改进 psql 对触发器和规则的 Tab 补全(Andreas Karlsson)

E.26.3.9.1.1. 反斜线命令
  • psql\? 帮助添加 variablesoptions 小节(Pavel Stehule)

    \? variables 显示 psql 的特殊变量,\? options 显示命令行选项。\? commands 显示元命令,这是传统输出,仍为默认。这些帮助显示也可以通过命令行选项 --help=section 获取。

  • psql\db+ 中显示表空间大小(Fabrízio de Royes Mello)

  • psql\dT+ 中显示数据类型的拥有者(Magnus Hagander)

  • 允许 psql\watch 输出 \timing 信息(Fujii Masao)

    同时防止 --echo-hidden 回显 \watch 查询,因为这通常是不需要的。

  • 使 psql\sf\ef 命令遵循 ECHO_HIDDEN(Andrew Dunstan)

  • 改进 psql\set\unset:variable 名称的 Tab 补全(Pavel Stehule)

  • 允许在 psql\c 命令中 Tab 补全角色名(Ian Barwick)

E.26.3.9.2. pg_dump
  • 允许 pg_dump 使用 --snapshot 共享另一个会话取得的快照(Simon Riggs、Michael Paquier)

    远程快照必须是由 pg_export_snapshot() 或逻辑复制槽创建所导出的。这可用于在多个 pg_dump 进程之间共享一致的快照。

  • 支持 tar 归档格式中超过 8GB 的表(Tom Lane)

    POSIX 的 tar 格式标准不允许 tar 归档的元素超过 8GB,但大多数现代 tar 实现支持一个允许超过该限制的扩展。必要时使用扩展格式,而不是失败。

  • 使 pg_dump 始终打印服务器和 pg_dump 的版本(Jing Wang)

    以前,版本信息只在 --verbose 模式下打印。

  • pg_dumppg_dumpallpg_restore 中移除早已被忽略的 -i/--ignore-version 选项(Fujii Masao)

E.26.3.9.3. pg_ctl
  • 支持多个 pg_ctl-o 选项,将其值串联(Bruce Momjian)

  • 允许在 MS Windows 上控制 pg_ctl 的事件源日志(MauMau)

    这只控制 pg_ctl,不控制服务器;服务器在 postgresql.conf 中有单独的设置。

  • 如果服务器的监听地址设置为通配值(IPv4 的 0.0.0.0 或 IPv6 的 ::),则通过回环地址连接,而不是尝试按字面使用通配地址(Kondo Yuta)

    此修复主要影响 Windows,因为在其他平台上 pg_ctl 会优先使用 Unix 域套接字。

E.26.3.9.4. pg_upgrade
  • pg_upgradecontrib 移到 src/bin(Peter Eisentraut)

    与此变更相关,先前由 pg_upgrade_support 模块提供的功能已被移入核心服务器。

  • 支持多个 pg_upgrade-o/-O 选项,将其值串联(Bruce Momjian)

  • 改进 pg_upgrade 中的数据库排序规则比较(Heikki Linnakangas)

  • 移除从 8.3 集群升级的支持(Bruce Momjian)

E.26.3.9.5. pgbench
  • 把 pgbench 从 contrib 移到 src/bin(Peter Eisentraut)

  • 修复excluding connections establishing(排除连接建立)的 TPS 数值的计算(Tatsuo Ishii、Fabien Coelho)

    每当 pgbench 线程数少于客户端连接数时,连接建立的开销就会被算错。虽然这显然是个 bug,但我们不会把它回移植到 9.5 之前的分支,因为这会使 TPS 数值无法与以前的结果比较。

  • 允许统计超过指定时间的 pgbench 事务(Fabien Coelho)

    这由新的 --latency-limit 选项控制。

  • 允许 pgbench 使用 \setrandom 生成高斯/指数分布(Kondo Mitsumasa、Fabien Coelho)

  • 允许 pgbench\set 命令处理包含多个操作符的算术表达式,并向其支持的操作符集合添加 %(取模)(Robert Haas、Fabien Coelho)

E.26.3.10. 源代码

  • 简化 WAL 记录格式(Heikki Linnakangas)

    这使外部工具更容易跟踪哪些块被修改。

  • 改进事务提交和中止 WAL 记录的表示(Andres Freund)

  • 添加原子内存操作 API(Andres Freund)

  • 允许自定义路径和扫描方法(KaiGai Kohei、Tom Lane)

    这允许扩展对优化器和执行器进行更大的控制。

  • 允许外部数据包装器执行过滤后锁定(Etsuro Fujita)

  • 外部表现在可以参与 INSERT ... ON CONFLICT DO NOTHING 查询(Peter Geoghegan、Heikki Linnakangas、Andres Freund)

    必须修改外部数据包装器才能处理这一点。外部表不支持 INSERT ... ON CONFLICT DO UPDATE

  • 改进 hash_create() 选择简单二进制键哈希函数的 API(Teodor Sigaev、Tom Lane)

  • 改进并行执行基础设施(Robert Haas、Amit Kapila、Noah Misch、Rushabh Lathia、Jeevan Chalke)

  • 移除 AlphaCPU)和 Tru64(操作系统)移植(Andres Freund)

  • 移除 ARMv5 及更早 CPU 的基于字节交换的自旋锁实现(Robert Haas)

    ARMv5 的弱内存排序使这种锁定实现不安全。在支持原子操作的较新 gcc 实现上,自旋锁支持仍然可能。

  • 当过长的(100 字符以上)文件路径被写入 tar 文件时产生错误(Peter Eisentraut)

    tar 不支持这种过长的路径。

  • 把列 pg_seclabel.providerpg_shseclabel.provider 的索引操作符类改为 text_pattern_ops(Tom Lane)

    这避免了当集群中不同数据库具有不同默认排序规则时这些索引可能出现的问题。

  • 把自旋锁原语改为兼作编译器屏障(Robert Haas)

E.26.3.10.1. MS Windows
  • Windows 8Windows Server 2012 及更高版本的 Windows 系统上允许更高精度的时间戳分辨率(Craig Ringer)

  • MS Windows 上把共享库安装到 bin(Peter Eisentraut、Michael Paquier)

  • MSVC 构建中把 src/test/modulescontrib 一起安装(Michael Paquier)

  • 允许 MSVC 构建遵循 configure--with-extra-version 选项(Michael Paquier)

  • PGFILEDESC 传入 MSVC contrib 构建(Michael Paquier)

  • 为所有 MSVC 构建的二进制文件添加图标,并为所有 MS Windows 二进制文件添加版本信息(Noah Misch)

    MinGW 此前已有此类图标。

  • 为内部的 getopt_long() 实现添加可选参数支持(Michael Paquier、Andres Freund)

    这被 MSVC 构建使用。

E.26.3.11. 附加模块

  • pg_stat_statements 添加最小、最大、平均和标准差时间统计(Mitsumasa Kondo、Andrew Dunstan)

  • 添加 pgcrypto 函数 pgp_armor_headers(),用于提取 PGP armor 头(Marko Tiikkaja、Heikki Linnakangas)

  • 允许 unaccent 中使用空的替换字符串(Mohammad Alhashash)

    这在变音符号表示为独立字符的语言中很有用。

  • 允许 unaccent 中使用多字符源字符串(Tom Lane)

    这在变音符号表示为独立字符的语言中可能有用。它还允许更复杂的 unaccent 词典。

  • 添加 contrib 模块 tsm_system_rowstsm_system_time,以提供更多的表采样方法(Petr Jelínek)

  • pageinspect 添加 GIN 索引检查函数(Heikki Linnakangas、Peter Geoghegan、Michael Paquier)

  • pg_buffercache 显示中添加有关缓冲区引脚的信息(Andres Freund)

  • 允许 pgstattuple 使用 pgstattuple_approx() 以更低的开销报告近似结果(Abhijit Menon-Sen)

  • dummy_seclabeltest_shm_mqtest_parserworker_spicontrib 移到 src/test/modules(Álvaro Herrera)

    这些模块仅用于服务器测试,因此在打包 PostgreSQL 时无需构建或安装它们。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。