PostgreSQL 9.1
已停止支持 · 记录构建 9.1.24 · 2016-10-27
此大版本已停止支持,相关记录用于查阅历史;没有更新的安全记录不代表仍可安全运行。
- 首次正式发布
- 2011-09-12
- 支持结束
- 2016-10-27
- 已收录发布版本
- 25
- 原始发布说明条目
- 895
手册与来源
PostgreSQL 9.1 本站手册 · 已加载 1102 页。
手册加载时间:2026-09-27T00:10:45.258078。
发布说明快照:2026-09-26。安全证据快照:2026-09-26。PDF 链接按本地文件是否存在提供,历史版本的语言与 HTML 手册可能不同。生命周期参见官方版本政策。
升级注意事项
跨大版本升级需要导出/恢复或 pg_upgrade 等迁移方式,应阅读沿途大版本的发布说明与目标版本手册。小版本更新也可能要求额外操作,请核对对应发布的迁移说明。官方升级政策。
9.1.0 的兼容性变化 · 从首发到 9.1.24 的变化
9.1.0 的原始迁移说明
对于希望从任何早期版本迁移数据的用户,需要使用 pg_dump 进行转储/恢复,或者使用 pg_upgrade。
版本 9.1 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处:
发布历史
每次发布的原始变更均独立保留。CVE 数量表示发布说明中的提及,可能包含后续纠正,不等于本次新修复漏洞数。
| 版本 | 日期/快照截止时间 | 全部变化 | BUG 修复 | 迁移条目 | 提及 CVE |
|---|---|---|---|---|---|
| 9.1.24 | 2016-10-27 | 13 | 7 | 0 | 0 |
| 9.1.23 | 2016-08-11 | 22 | 8 | 0 | 2 |
| 9.1.22 | 2016-05-12 | 11 | 5 | 0 | 0 |
| 9.1.21 | 2016-03-31 | 17 | 9 | 0 | 0 |
| 9.1.20 | 2016-02-11 | 45 | 17 | 0 | 4 |
| 9.1.19 | 2015-10-08 | 54 | 30 | 0 | 1 |
| 9.1.18 | 2015-06-12 | 2 | 2 | 0 | 0 |
| 9.1.17 | 2015-06-04 | 3 | 1 | 0 | 0 |
| 9.1.16 | 2015-05-22 | 41 | 15 | 0 | 3 |
| 9.1.15 | 2015-02-05 | 60 | 26 | 0 | 6 |
| 9.1.14 | 2014-07-24 | 32 | 17 | 0 | 1 |
| 9.1.13 | 2014-03-20 | 12 | 3 | 0 | 0 |
| 9.1.12 | 2014-02-20 | 43 | 20 | 0 | 8 |
| 9.1.11 | 2013-12-05 | 18 | 11 | 0 | 0 |
| 9.1.10 | 2013-10-10 | 34 | 17 | 0 | 0 |
| 9.1.9 | 2013-04-04 | 25 | 16 | 0 | 3 |
| 9.1.8 | 2013-02-07 | 30 | 14 | 0 | 1 |
| 9.1.7 | 2012-12-06 | 40 | 25 | 0 | 0 |
| 9.1.6 | 2012-09-24 | 17 | 8 | 0 | 0 |
| 9.1.5 | 2012-08-17 | 30 | 16 | 0 | 2 |
| 9.1.4 | 2012-06-04 | 42 | 30 | 0 | 2 |
| 9.1.3 | 2012-02-27 | 46 | 24 | 0 | 3 |
| 9.1.2 | 2011-12-05 | 52 | 22 | 0 | 0 |
| 9.1.1 | 2011-09-26 | 3 | 2 | 0 | 0 |
| 9.1.0 | 2011-09-12 | 203 | 9 | 17 | 0 |
首次发布变化
9.1.0 的原始条目,包含功能和兼容性变化。类别用于浏览,不是上游原始分类。
匹配 203 / 203 条原始变更。
把 standard_conforming_strings 的默认值改为 on · 兼容性变化 · 迁移说明
把
standard_conforming_strings的默认值改为 on(Robert Haas)默认情况下,反斜杠现在是字符串字面量中的普通字符,而不是转义字符。此变更消除了一个与 SQL 标准长期存在的不兼容。
escape_string_warning多年来一直对这种用法发出警告。E''字符串是在字符串中嵌入反斜杠转义的正确方式,不受此变更影响。警告此变更可能破坏未预料到它并按旧规则自行做字符串转义的应用。后果可能严重到引入 SQL 注入安全漏洞。务必测试暴露于不可信输入的应用,确保它们正确处理文本字符串中的单引号和反斜杠。
原始发布条目 ·
9.1.0/migration/001禁止对组合类型使用函数式和属性式数据类型转换 · 兼容性变化 · 迁移说明
禁止对组合类型使用函数式和属性式数据类型转换(Tom Lane)
例如,禁止
和composite_value.texttext(。无意中使用这种语法常常导致缺陷报告;虽然这不是缺陷,但回到拒绝这类表达式似乎更好。当确实想要转换整个组合值时,composite_value)CAST和::语法仍然可用。原始发布条目 ·
9.1.0/migration/002收紧对基于数组的域的转换检查 · 兼容性变化 · 迁移说明
收紧对基于数组的域的转换检查(Tom Lane)
当域基于数组类型时,允许“透过”域类型访问数组元素,包括对域值做下标操作来获取或赋值元素。对这种域值的元素赋值(例如通过
UPDATE ... SET domaincol[5] = ...)现在会重新检查域类型的约束,而此前会跳过检查。原始发布条目 ·
9.1.0/migration/003更改 string_to_array(),使其对零长度字符串返回空数组 · 兼容性变化 · 迁移说明
更改
string_to_array(),使其对零长度字符串返回空数组(Pavel Stehule)此前这返回空值。
原始发布条目 ·
9.1.0/migration/004更改 string_to_array(),使 NULL 分隔符把字符串拆分为字符 · 兼容性变化 · 迁移说明
更改
string_to_array(),使NULL分隔符把字符串拆分为字符(Pavel Stehule)此前这返回空值。
原始发布条目 ·
9.1.0/migration/005修复对 BEFORE/AFTER 触发器的不当检查 · 兼容性变化 · 迁移说明
修复对 BEFORE/AFTER 触发器的不当检查(Tom Lane)
触发器现在可以在三种情况下触发:某动作的
BEFORE、AFTER或INSTEAD OF。触发器函数作者应验证其逻辑在三种情况下都表现正常。原始发布条目 ·
9.1.0/migration/006要求超级用户或 CREATEROLE 权限才能为角色设置注释 · 兼容性变化 · 迁移说明
要求超级用户或
CREATEROLE权限才能为角色设置注释(Tom Lane)原始发布条目 ·
9.1.0/migration/007更改 pg_last_xlog_receive_location(),使其永不倒退 · 兼容性变化 · 迁移说明
更改
pg_last_xlog_receive_location(),使其永不倒退(Fujii Masao)此前,当流复制重启时,
pg_last_xlog_receive_location()的值可能倒退。原始发布条目 ·
9.1.0/migration/008让复制连接的日志记录遵循 log_connections · 兼容性变化 · 迁移说明
让复制连接的日志记录遵循
log_connections(Magnus Hagander)此前复制连接总是被记录。
原始发布条目 ·
9.1.0/migration/009更改 PL/pgSQL 的无参数 RAISE 命令,使其可被所附加的异常块捕获 · 兼容性变化 · 迁移说明
更改 PL/pgSQL 的无参数
RAISE命令,使其可被所附加的异常块捕获(Piyush Newe)此前代码块中的
RAISE总是作用于所附加的异常块,因此在同一作用域内无法捕获。原始发布条目 ·
9.1.0/migration/010调整 PL/pgSQL 的错误行号代码,使其与其他过程语言一致 · 兼容性变化 · 迁移说明
调整 PL/pgSQL 的错误行号代码,使其与其他过程语言一致(Pavel Stehule)
此前 PL/pgSQL 会忽略(不计数)函数体开头的空行。由于这与其他所有语言不一致,该特殊情况已被移除。
原始发布条目 ·
9.1.0/migration/011让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错 · 兼容性变化 · 迁移说明
让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错(Tom Lane)
此前不会检测冲突,该名称会静默地只指向 OUT 参数。
原始发布条目 ·
9.1.0/migration/012PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见 · 兼容性变化 · 迁移说明
PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见(Tom Lane)
附加到 PL/pgSQL 变量的类型修饰符(如 varchar 长度限制)此前只在赋值期间强制执行,其他用途一律忽略。这类变量现在的行为将更像是用相同修饰符声明的表列。预计在大多数情况下这不会造成可见差异,但可能给 PL/pgSQL 函数发出的某些 SQL 命令带来细微变化。
原始发布条目 ·
9.1.0/migration/013所有 contrib 模块现在都通过 CREATE EXTENSION 安装,而不是手工调用其 SQL 脚本 · 兼容性变化 · 迁移说明
所有 contrib 模块现在都通过
CREATE EXTENSION安装,而不是手工调用其 SQL 脚本(Dimitri Fontaine、Tom Lane)要更新包含某 contrib 模块 9.0 版本的现有数据库,使用
CREATE EXTENSION ... FROM unpackaged把现有 contrib 模块的对象包装成扩展。从 9.0 之前的版本更新时,先用旧的卸载脚本删除该 contrib 模块的对象,然后使用CREATE EXTENSION。原始发布条目 ·
9.1.0/migration/014让 pg_stat_reset() 重置所有数据库级统计信息 · 兼容性变化 · 迁移说明
让
pg_stat_reset()重置所有数据库级统计信息(Tomas Vondra)一些
pg_stat_database计数器此前没有被重置。原始发布条目 ·
9.1.0/migration/015修正一些 information_schema.triggers 列名,使其与新的 SQL 标准名称一致 · 兼容性变化 · 迁移说明
修正一些
information_schema.triggers列名,使其与新的 SQL 标准名称一致(Dean Rasheed)原始发布条目 ·
9.1.0/migration/016支持在 CREATE TABLE 中使用 UNLOGGED 选项的不记录日志的表 · 新功能
支持在
CREATE TABLE中使用UNLOGGED选项的不记录日志的表(Robert Haas)这类表比常规表提供更好的更新性能,但不是崩溃安全的:服务器崩溃时其内容会被自动清除。其内容也不会传播到复制从库。
原始发布条目 ·
9.1.0/changes/001允许把 FULL OUTER JOIN 实现为哈希连接,并允许对 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 的任一侧做哈希 · 新功能
允许把
FULL OUTER JOIN实现为哈希连接,并允许对LEFT OUTER JOIN或RIGHT OUTER JOIN的任一侧做哈希(Tom Lane)此前
FULL OUTER JOIN只能实现为合并连接,而LEFT OUTER JOIN和RIGHT OUTER JOIN只能对连接的可空侧做哈希。这些变更提供了额外的查询优化可能性。原始发布条目 ·
9.1.0/changes/002合并重复的 fsync 请求 · 新功能
合并重复的 fsync 请求(Robert Haas、Greg Smith)
这大幅改进了重写负载下的性能。
原始发布条目 ·
9.1.0/changes/003改进 commit_siblings 的性能 · 性能改进
改进
commit_siblings的性能(Greg Smith)这使
commit_siblings的使用开销更低。原始发布条目 ·
9.1.0/changes/004避免“盲写”之后数据文件保持打开 · 新功能
避免“盲写”之后数据文件保持打开(Alvaro Herrera)
这修复了后端可能在文件被删除后很久仍持有其打开状态、阻止内核回收磁盘空间的场景。
原始发布条目 ·
9.1.0/changes/006允许继承表扫描返回有意义的排序结果 · 新功能
允许继承表扫描返回有意义的排序结果(Greg Stark、Hans-Jurgen Schonig、Robert Haas、Tom Lane)
这允许对继承表上使用
ORDER BY、LIMIT或MIN/MAX的查询做更好的优化。原始发布条目 ·
9.1.0/changes/007在 pg_hba.conf 中支持主机名和主机后缀(例如 .example.com) · 新功能
在
pg_hba.conf中支持主机名和主机后缀(例如.example.com)(Peter Eisentraut)此前只支持主机 IP 地址和 CIDR 值。
原始发布条目 ·
9.1.0/changes/010在 pg_hba.conf 的 host 列中支持关键字 all · 新功能
在
pg_hba.conf的 host 列中支持关键字all(Peter Eisentraut)此前人们为此使用
0.0.0.0/0或::/0。原始发布条目 ·
9.1.0/changes/011在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的 local 行 · 新功能
在不支持 Unix 套接字连接的平台上拒绝
pg_hba.conf中的local行(Magnus Hagander)此前这类行会被静默忽略,这可能令人意外。这使该行为更像其他不受支持的情况。
原始发布条目 ·
9.1.0/changes/012为重启点和检查点的日志记录添加细节,它由 log_checkpoints 控制 · 新功能
为重启点和检查点的日志记录添加细节,它由
log_checkpoints控制(Fujii Masao、Greg Smith)新增细节包括 WAL 文件和同步活动。
原始发布条目 ·
9.1.0/changes/016新增 log_file_mode,控制日志收集器创建的日志文件的权限 · 新功能
新增
log_file_mode,控制日志收集器创建的日志文件的权限(Martin Pihlak)原始发布条目 ·
9.1.0/changes/017把 syslog 日志的默认最大行长降低到 900 字节加前缀 · 新功能
把 syslog 日志的默认最大行长降低到 900 字节加前缀(Noah Misch)
这避免了在有 1KB(而非更常见的 2KB)长度限制的 syslog 实现上长日志行被截断。
原始发布条目 ·
9.1.0/changes/018为 pg_stat_activity 新增 client_hostname 列 · 新功能
为
pg_stat_activity新增client_hostname列(Peter Eisentraut)此前只报告客户端地址。
原始发布条目 ·
9.1.0/changes/019新增 pg_stat_xact_* 统计函数和视图 · 新功能
新增
pg_stat_xact_*统计函数和视图(Joel Jacobson)它们类似于数据库范围的统计计数器视图,但只反映当前事务的计数。
原始发布条目 ·
9.1.0/changes/020在 pg_stat_*_tables 视图中新增显示清理和分析操作次数的列 · 新功能
在
pg_stat_*_tables视图中新增显示清理和分析操作次数的列(Magnus Hagander)原始发布条目 ·
9.1.0/changes/022为 pg_stat_bgwriter 新增 buffers_backend_fsync 列 · 新功能
为
pg_stat_bgwriter新增buffers_backend_fsync列(Greg Smith)这个新列统计后端对缓冲区执行 fsync 的次数。
原始发布条目 ·
9.1.0/changes/023提供 wal_buffers 的自动调整 · 新功能
提供
wal_buffers的自动调整(Greg Smith)默认情况下,
wal_buffers的值现在根据shared_buffers的值自动选择。原始发布条目 ·
9.1.0/changes/024提高 deadlock_timeout、log_min_duration_statement 和 log_autovacuum_min_duration 的最大值 · 新功能
提高
deadlock_timeout、log_min_duration_statement和log_autovacuum_min_duration的最大值(Peter Eisentraut)这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。
原始发布条目 ·
9.1.0/changes/025允许同步复制 · 新功能
允许同步复制(Simon Riggs、Fujii Masao)
这允许主服务器等待备库把事务信息写入磁盘后再确认提交。每次只有一个备库可以充当同步备库的角色,由
synchronous_standby_names设置控制。可以使用synchronous_commit设置按事务启用或禁用同步复制。原始发布条目 ·
9.1.0/changes/026新增协议支持,使用流复制网络连接向备库服务器发送文件系统备份 · 新功能
新增协议支持,使用流复制网络连接向备库服务器发送文件系统备份(Magnus Hagander、Heikki Linnakangas)
这避免了搭建备库服务器时手工传输文件系统备份的要求。
原始发布条目 ·
9.1.0/changes/027新增 replication_timeout 设置 · 新功能
新增
replication_timeout设置(Fujii Masao、Heikki Linnakangas)空闲时间超过
replication_timeout间隔的复制连接将被自动终止。此前,失败的连接通常要等到 TCP 超时才会被检测到,这在许多情况下长得不方便。原始发布条目 ·
9.1.0/changes/028新增命令行工具pg_basebackup,用于创建新的备库服务器或数据库备份 · 新功能
新增命令行工具pg_basebackup,用于创建新的备库服务器或数据库备份(Magnus Hagander)
原始发布条目 ·
9.1.0/changes/029新增系统视图 pg_stat_replication,显示 WAL 发送端进程的活动 · 新功能
新增系统视图
pg_stat_replication,显示 WAL 发送端进程的活动(Itagaki Takahiro、Simon Riggs)它报告所有已连接备库服务器的状态。
原始发布条目 ·
9.1.0/changes/031新增监控函数 pg_last_xact_replay_timestamp() · 新功能
新增监控函数
pg_last_xact_replay_timestamp()(Fujii Masao)它返回主库生成备库上已应用的最新的提交或中止记录的时间。
原始发布条目 ·
9.1.0/changes/032新增配置参数 hot_standby_feedback,使备库可以推迟主库上旧行版本的清理 · 新功能
新增配置参数
hot_standby_feedback,使备库可以推迟主库上旧行版本的清理(Simon Riggs)这有助于避免取消备库上的长时间运行查询。
原始发布条目 ·
9.1.0/changes/033新增系统视图 pg_stat_database_conflicts,显示已被取消的查询及其原因 · 新功能
新增系统视图
pg_stat_database_conflicts,显示已被取消的查询及其原因(Magnus Hagander)取消可能因表空间被删除、锁超时、旧快照、被固定的缓冲区和死锁而发生。
原始发布条目 ·
9.1.0/changes/034为 pg_stat_database 新增 conflicts 计数 · 新功能
为
pg_stat_database新增conflicts计数(Magnus Hagander)这是该数据库中发生的冲突数量。
原始发布条目 ·
9.1.0/changes/035提高 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值 · 新功能
提高
max_standby_archive_delay和max_standby_streaming_delay的最大值这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。
原始发布条目 ·
9.1.0/changes/036新增错误码 ERRCODE_T_R_DATABASE_DROPPED,用于报告因数据库被删除导致的恢复冲突 · 新功能
新增错误码
ERRCODE_T_R_DATABASE_DROPPED,用于报告因数据库被删除导致的恢复冲突(Tatsuo Ishii)这对连接池软件很有用。
原始发布条目 ·
9.1.0/changes/037新增控制流复制重放的函数 · 新功能
新增控制流复制重放的函数(Simon Riggs)
新函数为
pg_xlog_replay_pause()、pg_xlog_replay_resume()和状态函数pg_is_xlog_replay_paused()。原始发布条目 ·
9.1.0/changes/038新增 recovery.conf 设置 pause_at_recovery_target,用于在目标处暂停恢复 · 新功能
新增
recovery.conf设置pause_at_recovery_target,用于在目标处暂停恢复(Simon Riggs)这允许查询恢复服务器以检查恢复点是否是期望的那个。
原始发布条目 ·
9.1.0/changes/039新增使用 pg_create_restore_point() 创建命名还原点的能力 · 新功能
新增使用
pg_create_restore_point()创建命名还原点的能力(Jaime Casanova)这些命名还原点可以通过新的
recovery.conf设置recovery_target_name指定为恢复目标。原始发布条目 ·
9.1.0/changes/040允许备库恢复自动切换到新时间线 · 新功能
允许备库恢复自动切换到新时间线(Heikki Linnakangas)
现在备库服务器会定期扫描归档目录以发现新时间线。
原始发布条目 ·
9.1.0/changes/041新增 restart_after_crash 设置,用于在后端崩溃后禁用自动服务器重启 · 新功能
新增
restart_after_crash设置,用于在后端崩溃后禁用自动服务器重启(Robert Haas)这允许外部集簇管理软件控制数据库服务器是否重启。
原始发布条目 ·
9.1.0/changes/042允许 recovery.conf 使用与 postgresql.conf 相同的引号行为 · 新功能
允许
recovery.conf使用与postgresql.conf相同的引号行为(Dimitri Fontaine)此前所有值都必须加引号。
原始发布条目 ·
9.1.0/changes/043新增真正的可序列化隔离级别 · 新功能
新增真正的可序列化隔离级别(Kevin Grittner、Dan Ports)
此前,请求可序列化隔离只保证整个事务使用单个 MVCC 快照,这允许某些已记载的异常。旧的快照隔离行为仍可通过请求
REPEATABLE READ隔离级别获得。原始发布条目 ·
9.1.0/changes/044允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT · 新功能
允许在
UNION/INTERSECT/EXCEPT子句中使用关键字DISTINCT(Tom Lane)DISTINCT是默认行为,因此使用该关键字是冗余的,但 SQL 标准允许。原始发布条目 ·
9.1.0/changes/048修复带规则的普通查询,使其使用与 EXPLAIN ANALYZE 相同的快照行为 · BUG 修复
修复带规则的普通查询,使其使用与
EXPLAIN ANALYZE相同的快照行为(Marko Tiikkaja)此前
EXPLAIN ANALYZE对涉及规则的查询使用的快照时机略有不同。EXPLAIN ANALYZE的行为被认为更合逻辑。原始发布条目 ·
9.1.0/changes/049新增扩展,简化 PostgreSQL 附加功能的打包 · 新功能
新增扩展,简化 PostgreSQL 附加功能的打包(Dimitri Fontaine、Tom Lane)
扩展由新的
CREATE/ALTER/DROP EXTENSION命令控制。这取代了对添加到 PostgreSQL 安装的对象进行分组的临时方法。原始发布条目 ·
9.1.0/changes/051允许通过 ALTER TYPE 向现有枚举类型添加新值 · 新功能
允许通过
ALTER TYPE向现有枚举类型添加新值(Andrew Dunstan)原始发布条目 ·
9.1.0/changes/053新增 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE · 新功能
新增
ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE(Peter Eisentraut)这允许修改组合类型。
原始发布条目 ·
9.1.0/changes/054为类型化表上的 ALTER TYPE 操作新增 RESTRICT/CASCADE · 新功能
为类型化表上的
ALTER TYPE操作新增RESTRICT/CASCADE(Peter Eisentraut)这控制
ADD/DROP/ALTER/RENAME ATTRIBUTE的级联行为。原始发布条目 ·
9.1.0/changes/055支持 ALTER TABLE name {OF | NOT OF} type · 新功能
支持
ALTER TABLE(Noah Misch)name{OF | NOT OF}type该语法允许把独立表变成类型化表,或把类型化表变成独立表。
原始发布条目 ·
9.1.0/changes/056为 ALTER ... SET SCHEMA 命令中的更多对象类型新增支持 · 新功能
为
ALTER ... SET SCHEMA命令中的更多对象类型新增支持(Dimitri Fontaine)该命令现在支持转换、操作符、操作符类、操作符族、文本搜索配置、文本搜索词典、文本搜索解析器和文本搜索模板。
原始发布条目 ·
9.1.0/changes/057新增 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX · 新功能
新增
ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX(Gurjeet Singh)这允许使用现有唯一索引(包括并发创建的唯一索引)来定义主键或唯一约束。
原始发布条目 ·
9.1.0/changes/058允许 ALTER TABLE 添加未经验证的外键 · 新功能
允许
ALTER TABLE添加未经验证的外键(Simon Riggs)新选项名为
NOT VALID。约束的状态之后可以改为VALIDATED并执行验证检查。这两者相结合,使你能够以对读写操作影响最小的方式添加外键。原始发布条目 ·
9.1.0/changes/059允许 ALTER TABLE ... SET DATA TYPE 在适当情况下避免重写表 · 新功能
允许
ALTER TABLE ... SET DATA TYPE在适当情况下避免重写表(Noah Misch、Robert Haas)例如,把
varchar列转换为text不再需要重写表。但增大varchar列的长度约束仍需要重写表。原始发布条目 ·
9.1.0/changes/060新增 CREATE TABLE IF NOT EXISTS 语法 · 新功能
新增
CREATE TABLE IF NOT EXISTS语法(Robert Haas)这允许在表已存在时创建表而不报错。
原始发布条目 ·
9.1.0/changes/061修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误 · BUG 修复
修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误(Robert Haas)
ALTER TABLE现在对父表持有更强的锁,使会话无法同时尝试更新它。原始发布条目 ·
9.1.0/changes/062新增 SECURITY LABEL 命令 · 新功能
新增
SECURITY LABEL命令(KaiGai Kohei)这允许为对象分配安全标签。
原始发布条目 ·
9.1.0/changes/063让 TRUNCATE ... RESTART IDENTITY 以事务方式重启序列 · 新功能
让
TRUNCATE ... RESTART IDENTITY以事务方式重启序列(Steve Singer)此前,如果后端在提交时截断活动与提交完成之间崩溃,计数器可能失去同步。
原始发布条目 ·
9.1.0/changes/065为 COPY TO/FROM 新增 ENCODING 选项 · 新功能
为
COPY TO/FROM新增ENCODING选项(Hitoshi Harada、Itagaki Takahiro)这允许单独指定
COPY文件的编码,而不是跟随客户端编码。原始发布条目 ·
9.1.0/changes/066让 EXPLAIN VERBOSE 显示 FunctionScan 节点中的函数调用表达式 · 新功能
让
EXPLAIN VERBOSE显示FunctionScan节点中的函数调用表达式(Tom Lane)原始发布条目 ·
9.1.0/changes/068为 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多细节 · 新功能
为
VACUUM FULL VERBOSE和CLUSTER VERBOSE的输出添加更多细节(Itagaki Takahiro)新信息包括存活和死亡元组计数,以及
CLUSTER是否使用索引重建。原始发布条目 ·
9.1.0/changes/069当看起来更廉价时,允许 CLUSTER 对表排序而不是扫描索引 · 新功能
当看起来更廉价时,允许
CLUSTER对表排序而不是扫描索引(Leonardo Francalanci)原始发布条目 ·
9.1.0/changes/071允许 numeric 在常见情况下使用更紧凑的两字节头 · 新功能
允许
numeric在常见情况下使用更紧凑的两字节头(Robert Haas)此前所有
numeric值都使用四字节头;此变更节省了磁盘存储。原始发布条目 ·
9.1.0/changes/076除非组合类型的所有列类型都可排序,否则不把该组合类型视为可排序 · 新功能
除非组合类型的所有列类型都可排序,否则不把该组合类型视为可排序(Tom Lane)
如果查询可以在不排序的情况下实现,这避免了运行时可能出现的 “could not identify a comparison function” 失败。此外,
ANALYZE也不会尝试对这类组合类型的列使用不适当的统计收集方法。原始发布条目 ·
9.1.0/changes/081新增从 int4 和 int8 到 money 转换的支持 · 新功能
新增从
int4和int8到money转换的支持(Joey Adams)原始发布条目 ·
9.1.0/changes/083如果表是类型化表,允许把表的行类型转换为该表的超类型 · 新功能
如果表是类型化表,允许把表的行类型转换为该表的超类型(Peter Eisentraut)
这类似于允许把行类型转换为超表的行类型的现有机制。
原始发布条目 ·
9.1.0/changes/084新增 XML 函数 XMLEXISTS 和 xpath_exists() · 新功能
新增 XML 函数
XMLEXISTS和xpath_exists()(Mike Fowler)它们用于 XPath 匹配。
原始发布条目 ·
9.1.0/changes/085新增 XML 函数 xml_is_well_formed()、xml_is_well_formed_document() 和 xml_is_well_formed_content() · 新功能
新增 XML 函数
xml_is_well_formed()、xml_is_well_formed_document()和xml_is_well_formed_content()(Mike Fowler)它们检查输入是否为格式正确的 XML。它们提供了此前只能在已弃用的
contrib/xml2模块中使用的功能。原始发布条目 ·
9.1.0/changes/086新增 SQL 函数 format(text, ...),其行为类似于 C 的 printf() · 新功能
新增 SQL 函数
format(text, ...),其行为类似于 C 的printf()(Pavel Stehule、Robert Haas)它目前支持字符串、SQL 字面量和 SQL 标识符的格式。
原始发布条目 ·
9.1.0/changes/087新增用于读取二进制文件的函数 pg_read_binary_file() · 新功能
新增用于读取二进制文件的函数
pg_read_binary_file()(Dimitri Fontaine、Itagaki Takahiro)原始发布条目 ·
9.1.0/changes/089新增函数 pg_read_file() 的单参数版本,用于读取整个文件 · 新功能
新增函数
pg_read_file()的单参数版本,用于读取整个文件(Dimitri Fontaine、Itagaki Takahiro)原始发布条目 ·
9.1.0/changes/090新增 array_to_string() 和 string_to_array() 的三参数形式,用于控制空值处理 · 新功能
新增
array_to_string()和string_to_array()的三参数形式,用于控制空值处理(Pavel Stehule)原始发布条目 ·
9.1.0/changes/091新增函数 pg_describe_object() · 新功能
新增函数
pg_describe_object()(Alvaro Herrera)该函数用于根据
pg_classOID、对象 OID 和子对象 ID 获取描述对象的人类可读字符串。它可用于帮助解释pg_depend的内容。原始发布条目 ·
9.1.0/changes/092新增变量 quote_all_identifiers,强制为 EXPLAIN 以及 pg_get_viewdef() 等系统目录函数中的所有标识符加引号 · 新功能
新增变量
quote_all_identifiers,强制为EXPLAIN以及pg_get_viewdef()等系统目录函数中的所有标识符加引号(Robert Haas)这使得把模式导出到具有不同引号规则的工具和其他数据库更加容易。
原始发布条目 ·
9.1.0/changes/094为 information_schema.sequences 系统视图新增列 · 新功能
为
information_schema.sequences系统视图新增列(Peter Eisentraut)此前虽然视图存在,但关于序列参数的列未实现。
原始发布条目 ·
9.1.0/changes/095允许在 has_table_privilege() 及相关函数中使用 public 作为伪角色名 · 新功能
允许在
has_table_privilege()及相关函数中使用public作为伪角色名(Alvaro Herrera)这允许检查公共权限。
原始发布条目 ·
9.1.0/changes/096支持视图上的 INSTEAD OF 触发器 · 新功能
支持视图上的
INSTEAD OF触发器(Dean Rasheed)此特性可用于实现完全可更新的视图。
原始发布条目 ·
9.1.0/changes/097为 PL/pgSQL 新增 FOREACH IN ARRAY · 新功能
为 PL/pgSQL 新增
FOREACH IN ARRAY(Pavel Stehule)这比此前遍历数组值元素的方法更高效也更易读。
原始发布条目 ·
9.1.0/changes/098允许在同一位置能够捕获 RAISE ERROR 的地方捕获无参数的 RAISE · 新功能
允许在同一位置能够捕获
RAISE ERROR的地方捕获无参数的RAISE(Piyush Newe)先前的编码会从包含活动异常处理程序的块抛出错误。新行为与其他 DBMS 产品更一致。
原始发布条目 ·
9.1.0/changes/099允许 PL/Perl 函数接受通用 record 参数 · 新功能
允许 PL/Perl 函数接受通用 record 参数(Andrew Dunstan)
PL/Perl 函数现在可以声明为接受
record类型。其行为与任何命名的组合类型相同。原始发布条目 ·
9.1.0/changes/100把 PL/Perl 的数组参数转换为 Perl 数组 · 新功能
把 PL/Perl 的数组参数转换为 Perl 数组(Alexey Klyukin、Alex Hunsaker)
字符串表示仍然可用。
原始发布条目 ·
9.1.0/changes/101把 PL/Perl 的组合类型参数转换为 Perl 哈希 · 新功能
把 PL/Perl 的组合类型参数转换为 Perl 哈希(Alexey Klyukin、Alex Hunsaker)
字符串表示仍然可用。
原始发布条目 ·
9.1.0/changes/102为 PL/Python 新增表函数支持 · 新功能
为 PL/Python 新增表函数支持(Jan Urbanski)
PL/Python 现在可以返回多个
OUT参数和记录集。原始发布条目 ·
9.1.0/changes/103为 PL/Python 新增验证器 · 新功能
为 PL/Python 新增验证器(Jan Urbanski)
这允许在创建函数时对 PL/Python 函数做语法检查。
原始发布条目 ·
9.1.0/changes/104允许 PL/Python 中 SQL 查询的异常 · 新功能
允许 PL/Python 中 SQL 查询的异常(Jan Urbanski)
这允许从 PL/Python 异常块访问 SQL 生成的异常错误码。
原始发布条目 ·
9.1.0/changes/105为 PL/Python 新增字符串加引号函数 · 新功能
为 PL/Python 新增字符串加引号函数(Jan Urbanski)
这些函数是
plpy.quote_ident、plpy.quote_literal和plpy.quote_nullable。原始发布条目 ·
9.1.0/changes/107用 PLy_elog 报告迭代器的 PL/Python 错误 · 新功能
用
PLy_elog报告迭代器的 PL/Python 错误(Jan Urbanski)原始发布条目 ·
9.1.0/changes/109修复 Python 3 的异常处理 · BUG 修复
修复 Python 3 的异常处理(Jan Urbanski)
此前在 Python 3 下
plpy中没有异常类。原始发布条目 ·
9.1.0/changes/110由于createlang和droplang现在只是调用扩展命令,将其标记为已弃用 · 新功能
由于createlang和droplang现在只是调用扩展命令,将其标记为已弃用(Tom Lane)
原始发布条目 ·
9.1.0/changes/111新增 psql 命令 \conninfo,用于显示当前连接信息 · 新功能
新增 psql 命令
\conninfo,用于显示当前连接信息(David Christensen)原始发布条目 ·
9.1.0/changes/112为 psql 的 \dn(列出模式)命令新增 S(“system”)选项 · 新功能
为 psql 的
\dn(列出模式)命令新增S(“system”)选项(Tom Lane)不带
S的\dn现在会隐藏系统模式。原始发布条目 ·
9.1.0/changes/115允许 psql 的 \e 和 \ef 命令接受行号以定位编辑器中的光标 · 新功能
允许 psql 的
\e和\ef命令接受行号以定位编辑器中的光标(Pavel Stehule)该行号根据
PSQL_EDITOR_LINENUMBER_ARG环境变量传递给编辑器。原始发布条目 ·
9.1.0/changes/116让 psql 默认根据操作系统区域设置客户端编码 · 新功能
让 psql 默认根据操作系统区域设置客户端编码(Heikki Linnakangas)
这只在未设置
PGCLIENTENCODING环境变量时发生。原始发布条目 ·
9.1.0/changes/117让 \dt+ 在连接 9.0 或更高版本服务器时报告 pg_table_size 而不是 pg_relation_size · 新功能
让
\dt+在连接 9.0 或更高版本服务器时报告pg_table_size而不是pg_relation_size(Bernd Helmle)这是更有用的表大小度量,但注意它与此前同一显示中报告的值并不相同。
原始发布条目 ·
9.1.0/changes/119更多 Tab 补全支持 · 新功能
更多 Tab 补全支持(Itagaki Takahiro、Pavel Stehule、Andrey Popp、Christoph Berg、David Fetter、Josh Kupershmidt)
原始发布条目 ·
9.1.0/changes/120为pg_dump和pg_dumpall新增选项 --quote-all-identifiers,强制为所有标识符加引号 · 新功能
为pg_dump和pg_dumpall新增选项
--quote-all-identifiers,强制为所有标识符加引号(Robert Haas)原始发布条目 ·
9.1.0/changes/121为 pg_dump 新增 directory 格式 · 新功能
为 pg_dump 新增
directory格式(Joachim Wieland、Heikki Linnakangas)它在内部类似于 pg_dump 的
tar格式。原始发布条目 ·
9.1.0/changes/122修复 pg_ctl,使其不再错误地报告服务器未运行 · BUG 修复
修复 pg_ctl,使其不再错误地报告服务器未运行(Bruce Momjian)
此前当服务器在运行但 pg_ctl 无法认证时可能发生这种情况。
原始发布条目 ·
9.1.0/changes/123改进 pg_ctl start 的“等待”(-w)选项 · 新功能
改进 pg_ctl start 的“等待”(
-w)选项(Bruce Momjian、Tom Lane)等待模式现在明显更健壮。它不会因非默认的 postmaster 端口号、非默认的 Unix 域套接字位置、权限问题或过期的 postmaster 锁文件而困惑。
原始发布条目 ·
9.1.0/changes/124为 pg_ctl 新增 promote 选项,用于把备库切换为主库 · 新功能
为 pg_ctl 新增
promote选项,用于把备库切换为主库(Fujii Masao)原始发布条目 ·
9.1.0/changes/125新增 libpq 连接选项 client_encoding,其行为类似于 PGCLIENTENCODING 环境变量 · 新功能
新增 libpq 连接选项
client_encoding,其行为类似于PGCLIENTENCODING环境变量(Heikki Linnakangas)值
auto根据操作系统区域设置客户端编码。原始发布条目 ·
9.1.0/changes/126新增函数 PQlibVersion(),返回 libpq 库版本 · 新功能
新增函数
PQlibVersion(),返回 libpq 库版本(Magnus Hagander)libpq 此前已有返回服务器版本的
PQserverVersion()。原始发布条目 ·
9.1.0/changes/127允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名,使用新的 requirepeer 连接选项 · 新功能
允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名,使用新的
requirepeer连接选项(Peter Eisentraut)PostgreSQL 此前已允许服务器在通过 Unix 域套接字连接时检查客户端用户名。
原始发布条目 ·
9.1.0/changes/128为 libpq 新增 PQping() 和 PQpingParams() · 新功能
为 libpq 新增
PQping()和PQpingParams()(Bruce Momjian、Tom Lane)这些函数允许在不尝试打开新会话的情况下检测服务器状态。
原始发布条目 ·
9.1.0/changes/129允许 ECPG 即使在 WHERE CURRENT OF 子句中也接受动态游标名 · 新功能
允许 ECPG 即使在
WHERE CURRENT OF子句中也接受动态游标名(Zoltan Boszormenyi)原始发布条目 ·
9.1.0/changes/130让 ecpglib 以 15 位精度写 double 值,而不是此前的 14 位 · 新功能
让 ecpglib 以 15 位精度写
double值,而不是此前的 14 位(Akira Kurosawa)原始发布条目 ·
9.1.0/changes/131对接受它的 HP-UX C 编译器使用 +Olibmerrno 编译标志 · 新功能
对接受它的 HP-UX C 编译器使用
+Olibmerrno编译标志(Ibrar Ahmed)这避免了较新 HP 平台上数学库调用可能的不当行为。
原始发布条目 ·
9.1.0/changes/132改进的并行 make 支持 · 新功能
改进的并行 make 支持(Peter Eisentraut)
这使编译更快。此外,
make -k现在工作得更一致。原始发布条目 ·
9.1.0/changes/133新增 make maintainer-check 目标 · 新功能
新增
make maintainer-check目标(Peter Eisentraut)该目标执行各种既不适合构建也不适合回归测试的源代码检查。目前包括:duplicate_oids、SGML 语法和制表符检查、NLS 语法检查。
原始发布条目 ·
9.1.0/changes/135在 contrib 中支持 make check · 新功能
在
contrib中支持make check(Peter Eisentraut)此前只有
make installcheck可用,但现在支持在临时安装中测试。顶层的make check-world目标现在包括以这种方式测试contrib。原始发布条目 ·
9.1.0/changes/136支持使用 MinGW64 编译器构建 · 新功能
支持使用 MinGW64 编译器构建(Andrew Dunstan)
这允许通过交叉编译即使在非 Windows 平台上也能构建 64 位 Windows 二进制。
原始发布条目 ·
9.1.0/changes/139修订 GUC 变量赋值钩子的 API · 新功能
修订 GUC 变量赋值钩子的 API(Tom Lane)
此前赋值钩子的职能现在拆分到检查钩子和赋值钩子之间,前者可以失败而后者不应失败。此变更会影响定义自定义 GUC 参数的附加模块。
原始发布条目 ·
9.1.0/changes/140为一致性补齐缺失的 get_object_oid() 函数 · 新功能
为一致性补齐缺失的
get_函数(Robert Haas)object_oid()原始发布条目 ·
9.1.0/changes/143为后端使用公开 quote_literal_cstr() · 新功能
为后端使用公开
quote_literal_cstr()(Robert Haas)原始发布条目 ·
9.1.0/changes/146新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog · 新功能
新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog(Robert Haas、Tom Lane)
原始发布条目 ·
9.1.0/changes/148向 src/tools 添加 git-external-diff 脚本 · 新功能
向
src/tools添加 git-external-diff 脚本(Bruce Momjian)它用于从 git 生成上下文差异。
原始发布条目 ·
9.1.0/changes/149新增 contrib/file_fdw 外部数据包装器 · 新功能
新增
contrib/file_fdw外部数据包装器(Shigeru Hanada)使用这个外部数据包装器的外部表可以以非常类似于
COPY的方式读取平面文件。原始发布条目 ·
9.1.0/changes/155为 contrib/pg_trgm 和 contrib/btree_gist 新增最近邻搜索支持 · 新功能
为
contrib/pg_trgm和contrib/btree_gist新增最近邻搜索支持(Teodor Sigaev)原始发布条目 ·
9.1.0/changes/156为 contrib/btree_gist 新增不相等搜索支持 · 新功能
为
contrib/btree_gist新增不相等搜索支持(Jeff Davis)原始发布条目 ·
9.1.0/changes/157修复 contrib/fuzzystrmatch 的 levenshtein() 函数,使其处理多字节字符 · BUG 修复
修复
contrib/fuzzystrmatch的levenshtein()函数,使其处理多字节字符(Alexander Korotkov)原始发布条目 ·
9.1.0/changes/158为 contrib/sslinfo 新增 ssl_cipher() 和 ssl_version() 函数 · 新功能
为
contrib/sslinfo新增ssl_cipher()和ssl_version()函数(Robert Haas)原始发布条目 ·
9.1.0/changes/159修复 contrib/intarray 和 contrib/hstore,使其对索引的空数组给出一致结果 · BUG 修复
修复
contrib/intarray和contrib/hstore,使其对索引的空数组给出一致结果(Tom Lane)此前使用索引的空数组查询可能返回与使用顺序扫描不同的结果。
原始发布条目 ·
9.1.0/changes/160让 contrib/intarray 在多维数组上正确工作 · 新功能
让
contrib/intarray在多维数组上正确工作(Tom Lane)原始发布条目 ·
9.1.0/changes/161在 contrib/intarray 中,避免在实际不存在空值的场合报错抱怨存在空值 · 新功能
在
contrib/intarray中,避免在实际不存在空值的场合报错抱怨存在空值(Tom Lane)原始发布条目 ·
9.1.0/changes/162在 contrib/intarray 中,修复包含操作符对空数组的行为 · BUG 修复
在
contrib/intarray中,修复包含操作符对空数组的行为(Tom Lane)空数组现在被正确地视为包含于任何其他数组。
原始发布条目 ·
9.1.0/changes/163移除 contrib/xml2 对 xslt_process() 可处理的 parameter=value 对数量的任意限制 · 新功能
移除
contrib/xml2对xslt_process()可处理的parameter=value对数量的任意限制(Pavel Stehule)此前的限制是 10。
原始发布条目 ·
9.1.0/changes/164在 contrib/pageinspect 中,修复 heap_page_item 以 32 位值返回 infomask · BUG 修复
在
contrib/pageinspect中,修复 heap_page_item 以 32 位值返回 infomask(Alvaro Herrera)这避免了返回负值(那令人困惑)。底层值是 16 位无符号整数。
原始发布条目 ·
9.1.0/changes/165新增 contrib/sepgsql,使权限检查与 SELinux 接口 · 新功能
新增
contrib/sepgsql,使权限检查与 SELinux 接口(KaiGai Kohei)它使用新的
SECURITY LABEL机制。原始发布条目 ·
9.1.0/changes/166新增 contrib 模块 auth_delay · 新功能
新增 contrib 模块
auth_delay(KaiGai Kohei)它使服务器在返回认证失败前暂停;其设计目的是加大暴力破解口令攻击的难度。
原始发布条目 ·
9.1.0/changes/167新增 dummy_seclabel contrib 模块 · 新功能
新增
dummy_seclabelcontrib 模块(KaiGai Kohei)它用于权限回归测试。
原始发布条目 ·
9.1.0/changes/168为 contrib/pg_trgm 新增 LIKE 和 ILIKE 索引搜索支持 · 新功能
为
contrib/pg_trgm新增LIKE和ILIKE索引搜索支持(Alexander Korotkov)原始发布条目 ·
9.1.0/changes/169为 contrib/fuzzystrmatch 新增针对小距离优化的函数 levenshtein_less_equal() · 新功能
为
contrib/fuzzystrmatch新增针对小距离优化的函数levenshtein_less_equal()(Alexander Korotkov)原始发布条目 ·
9.1.0/changes/170改进 contrib/seg 列上索引查找的性能 · 性能改进
改进
contrib/seg列上索引查找的性能(Alexander Korotkov)原始发布条目 ·
9.1.0/changes/171为 contrib/pgbench 新增报告逐语句延迟的标志 · 新功能
为
contrib/pgbench新增报告逐语句延迟的标志(Florian Pflug)原始发布条目 ·
9.1.0/changes/173把 src/tools/test_fsync 移到 contrib/pg_test_fsync · 新功能
把
src/tools/test_fsync移到contrib/pg_test_fsync(Bruce Momjian、Tom Lane)原始发布条目 ·
9.1.0/changes/174为 contrib/pg_test_fsync 新增 O_DIRECT 支持 · 新功能
为
contrib/pg_test_fsync新增O_DIRECT支持(Bruce Momjian)这与
wal_sync_method对O_DIRECT的使用相匹配。原始发布条目 ·
9.1.0/changes/175为 contrib/pg_test_fsync 新增新测试 · 新功能
为
contrib/pg_test_fsync新增新测试(Bruce Momjian)原始发布条目 ·
9.1.0/changes/176为 exit_on_error 添加文档 · 新功能
为
exit_on_error添加文档(Robert Haas)该参数使会话在任何错误时退出。
原始发布条目 ·
9.1.0/changes/179为 pg_options_to_table() 添加文档 · 新功能
为
pg_options_to_table()添加文档(Josh Berkus)该函数以可读的形式显示表存储选项。
原始发布条目 ·
9.1.0/changes/180记录可以使用 (compositeval).* 语法访问所有组合类型字段 · 新功能
记录可以使用
(compositeval).*语法访问所有组合类型字段(Peter Eisentraut)原始发布条目 ·
9.1.0/changes/181记录 translate() 会删除 from 中没有对应 to 字符的字符 · 新功能
记录
translate()会删除from中没有对应to字符的字符(Josh Kupershmidt)原始发布条目 ·
9.1.0/changes/182合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档 · 新功能
合并
CREATE CONSTRAINT TRIGGER和CREATE TRIGGER的文档(Alvaro Herrera)原始发布条目 ·
9.1.0/changes/183在 HISTORY 文件中一致地处理非 ASCII 字符 · 新功能
在
HISTORY文件中一致地处理非 ASCII 字符(Peter Eisentraut)虽然
HISTORY文件是英文的,但我们必须处理贡献者姓名中的非 ASCII 字母。这些现在被音译,以便在不假设字符集的情况下也相当易读。原始发布条目 ·
9.1.0/changes/186
安全证据
共 35 条记录,来自官方安全矩阵及发布说明的提及。只有安全快照明确列出此分支时才显示修复版本;仅有提及不能确定漏洞适用性或新修复。