{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2011-09-12", "build": "9.1.0", "major": "9.1", "minor": 0, "manual": "9.1", "status": "stable", "doc_git": "", "version": "9.1.0", "eol_date": "2016-10-27", "date_text": "2011-09-12", "supported": false, "manual_url": "/docs/9.1/release-9-1.html", "source_url": "/docs/release/9.1.0/", "entry_count": 203, "placeholder": false, "content_hash": "249aa96626415dd32a4be984132701732f764b429aba0c735a8d8535646169a2", "manual_build": "9.1.24", "source_as_of": "", "changes_count": 186, "doc_loaded_at": "2026-09-26T02:56:47.783417", "migration_html": "<p>对于希望从任何早期版本迁移数据的用户，需要使用 <span>pg_dump</span> 进行转储/恢复，或者使用 <span>pg_upgrade</span>。</p>\n<p>版本 9.1 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处：</p>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>", "compatibility_count": 17, "label": "9.1", "status_label": "历史版本", "eol": "2016-10-27", "age_days": 5497, "support_days": -3625}, "groups": [{"date": "2011-09-12", "build": "9.1.0", "major": "9.1", "minor": 0, "manual": "9.1", "status": "stable", "doc_git": "", "version": "9.1.0", "eol_date": "2016-10-27", "date_text": "2011-09-12", "supported": false, "manual_url": "/docs/9.1/release-9-1.html", "source_url": "/docs/release/9.1.0/", "entry_count": 203, "placeholder": false, "content_hash": "249aa96626415dd32a4be984132701732f764b429aba0c735a8d8535646169a2", "manual_build": "9.1.24", "source_as_of": "", "changes_count": 186, "doc_loaded_at": "2026-09-26T02:56:47.783417", "migration_html": "<p>对于希望从任何早期版本迁移数据的用户，需要使用 <span>pg_dump</span> 进行转储/恢复，或者使用 <span>pg_upgrade</span>。</p>\n<p>版本 9.1 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处：</p>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>", "compatibility_count": 17, "label": "9.1", "status_label": "历史版本", "eol": "2016-10-27", "age_days": 5497, "support_days": -3625, "entries": [{"id": "9.1.0-3d14c7b18af21e63", "cves": [], "html": "<p>把 <a href=\"/docs/9.1/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS\"><code>standard_conforming_strings</code></a> 的默认值改为 on（Robert Haas）</p>\n<p>默认情况下，反斜杠现在是字符串字面量中的普通字符，而不是转义字符。此变更消除了一个与 SQL 标准长期存在的不兼容。<a href=\"/docs/9.1/runtime-config-compatible.html#GUC-ESCAPE-STRING-WARNING\"><code>escape_string_warning</code></a> 多年来一直对这种用法发出警告。<code>E''</code> 字符串是在字符串中嵌入反斜杠转义的正确方式，不受此变更影响。</p>\n<div>\n\n警告\n<p>此变更可能破坏未预料到它并按旧规则自行做字符串转义的应用。后果可能严重到引入 SQL 注入安全漏洞。务必测试暴露于不可信输入的应用，确保它们正确处理文本字符串中的单引号和反斜杠。</p>\n</div>", "text": "把 standard_conforming_strings 的默认值改为 on（Robert Haas） 默认情况下，反斜杠现在是字符串字面量中的普通字符，而不是转义字符。此变更消除了一个与 SQL 标准长期存在的不兼容。escape_string_warning 多年来一直对这种用法发出警告。E'' 字符串是在字符串中嵌入反斜杠转义的正确方式，不受此变更影响。 警告 此变更可能破坏未预料到它并按旧规则自行做字符串转义的应用。后果可能严重到引入 SQL 注入安全漏洞。务必测试暴露于不可信输入的应用，确保它们正确处理文本字符串中的单引号和反斜杠。", "title": "把 standard_conforming_strings 的默认值改为 on", "commits": [], "section": "字符串", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.4", "source_hash": "db22180001979e6c5b3e9f1877cc72992c8c1474e73491e9441c5fa05e4dcd69", "section_path": ["字符串"], "commit_groups": [], "identity_text": "Change the default value of standard_conforming_strings to on (Robert Haas) By default, backslashes are now ordinary characters in string literals, not escape characters. This change removes a long-standing incompatibility with the SQL standard. escape_string_warning has produced warnings about this usage for years. E'' strings are the proper way to embed backslash escapes in strings and are unaffected by this change. This change can break applications that are not expecting it and do their own string escaping according to the old rules. The consequences could be as severe as introducing SQL-injection security holes. Be sure to test applications that are exposed to untrusted input, to ensure that they correctly handle single quotes and backslashes in text strings.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/001", "db_id": "68491f69c5375056ddd6bb75f172e864", "patch_ids": [], "statement_hash": "dedad57c5cdbceef18439ac1ff57be80d1490f34f1700a9ef6b438351cbd4fe0", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e267d5c16d016b1c", "cves": [], "html": "<p>禁止对组合类型使用函数式和属性式数据类型转换（Tom Lane）</p>\n<p>例如，禁止 <code><em><code>composite_value</code></em>.text</code> 和 <code>text(<em><code>composite_value</code></em>)</code>。无意中使用这种语法常常导致缺陷报告；虽然这不是缺陷，但回到拒绝这类表达式似乎更好。当确实想要转换整个组合值时，<code>CAST</code> 和 <code>::</code> 语法仍然可用。</p>", "text": "禁止对组合类型使用函数式和属性式数据类型转换（Tom Lane） 例如，禁止 composite_value.text 和 text(composite_value)。无意中使用这种语法常常导致缺陷报告；虽然这不是缺陷，但回到拒绝这类表达式似乎更好。当确实想要转换整个组合值时，CAST 和 :: 语法仍然可用。", "title": "禁止对组合类型使用函数式和属性式数据类型转换", "commits": [], "section": "类型转换", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.5", "source_hash": "e0d2e7ff9f4672f2df2b988aeb76dcd5a92c1f2eb94ac3b9c966e6ee8b6d83e8", "section_path": ["类型转换"], "commit_groups": [], "identity_text": "Disallow function-style and attribute-style data type casts for composite types (Tom Lane) For example, disallow composite_value.text and text(composite_value). Unintentional uses of this syntax have frequently resulted in bug reports; although it was not a bug, it seems better to go back to rejecting such expressions. The CAST and :: syntaxes are still available for use when a cast of an entire composite value is actually intended.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/002", "db_id": "6fc4b0b92171fa85b8a8c82a80c56651", "patch_ids": [], "statement_hash": "ba97fcb0b8091bd9ca810da3db24e44a76b12cad701cf33cfed36b106098795c", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2d66033b0554bc02", "cves": [], "html": "<p>收紧对基于数组的域的转换检查（Tom Lane）</p>\n<p>当域基于数组类型时，允许<span>“<span>透过</span>”</span>域类型访问数组元素，包括对域值做下标操作来获取或赋值元素。对这种域值的元素赋值（例如通过 <code>UPDATE ... SET domaincol[5] = ...</code>）现在会重新检查域类型的约束，而此前会跳过检查。</p>", "text": "收紧对基于数组的域的转换检查（Tom Lane） 当域基于数组类型时，允许“透过”域类型访问数组元素，包括对域值做下标操作来获取或赋值元素。对这种域值的元素赋值（例如通过 UPDATE ... SET domaincol[5] = ...）现在会重新检查域类型的约束，而此前会跳过检查。", "title": "收紧对基于数组的域的转换检查", "commits": [], "section": "类型转换", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.5", "source_hash": "af3f29388ff961d2c058092273bcbfb56e5abe5ecbfba9474ffd730bdd3486db", "section_path": ["类型转换"], "commit_groups": [], "identity_text": "Tighten casting checks for domains based on arrays (Tom Lane) When a domain is based on an array type, it is allowed to look through the domain type to access the array elements, including subscripting the domain value to fetch or assign an element. Assignment to an element of such a domain value, for instance via UPDATE ... SET domaincol[5] = ..., will now result in rechecking the domain type's constraints, whereas before the checks were skipped.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/003", "db_id": "2fba586e5b74ae4d1ada4875101bc2fb", "patch_ids": [], "statement_hash": "f9bbb727d12fb13939ada6dbb1cc06229b03ba51f455937d211cb7b6ec91b7e8", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-7462e03ecedb56c4", "cves": [], "html": "<p>更改 <a href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"><code>string_to_array()</code></a>，使其对零长度字符串返回空数组（Pavel Stehule）</p>\n<p>此前这返回空值。</p>", "text": "更改 string_to_array()，使其对零长度字符串返回空数组（Pavel Stehule） 此前这返回空值。", "title": "更改 string_to_array()，使其对零长度字符串返回空数组", "commits": [], "section": "数组", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.6", "source_hash": "07f4b51e9f98b2677848e6abffdc4eca08abc625f17c99ec67e6dc8ca04e913a", "section_path": ["数组"], "commit_groups": [], "identity_text": "Change string_to_array() to return an empty array for a zero-length string (Pavel Stehule) Previously this returned a null value.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/004", "db_id": "d6085f706243e932e033aef5acd6d6ef", "patch_ids": [], "statement_hash": "fd10b25633772be8238c9cee0ccb02d11b8ca2113ba908d7ee28d94da254999a", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a8c84c381410ce55", "cves": [], "html": "<p>更改 <a href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"><code>string_to_array()</code></a>，使 <code>NULL</code> 分隔符把字符串拆分为字符（Pavel Stehule）</p>\n<p>此前这返回空值。</p>", "text": "更改 string_to_array()，使 NULL 分隔符把字符串拆分为字符（Pavel Stehule） 此前这返回空值。", "title": "更改 string_to_array()，使 NULL 分隔符把字符串拆分为字符", "commits": [], "section": "数组", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.6", "source_hash": "93993a34714c5da33a0f1c440f61e7d05c947dfd73a26eb63f08b3f360b24b48", "section_path": ["数组"], "commit_groups": [], "identity_text": "Change string_to_array() so a NULL separator splits the string into characters (Pavel Stehule) Previously this returned a null value.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/005", "db_id": "43a870b4fa526e1a53d3fd14894f99b9", "patch_ids": [], "statement_hash": "4ed96b20ce3ca09d55c9fc4f1b1f39ee598ee8df130da4c113869173113b9212", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-aa32af9c0004b415", "cves": [], "html": "<p>修复对 BEFORE/AFTER 触发器的不当检查（Tom Lane）</p>\n<p>触发器现在可以在三种情况下触发：某动作的 <code>BEFORE</code>、<code>AFTER</code> 或 <code>INSTEAD OF</code>。触发器函数作者应验证其逻辑在三种情况下都表现正常。</p>", "text": "修复对 BEFORE/AFTER 触发器的不当检查（Tom Lane） 触发器现在可以在三种情况下触发：某动作的 BEFORE、AFTER 或 INSTEAD OF。触发器函数作者应验证其逻辑在三种情况下都表现正常。", "title": "修复对 BEFORE/AFTER 触发器的不当检查", "commits": [], "section": "对象修改", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.7", "source_hash": "0541a5678494de5ecf75d96a41ca361213b9eb45d23dbc81d9a811147569d776", "section_path": ["对象修改"], "commit_groups": [], "identity_text": "Fix improper checks for before/after triggers (Tom Lane) Triggers can now be fired in three cases: BEFORE, AFTER, or INSTEAD OF some action. Trigger function authors should verify that their logic behaves sanely in all three cases.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/006", "db_id": "46b7f3e31ae6d9672cb39af9a4049773", "patch_ids": [], "statement_hash": "858f0f1c3e59320c1945d036307046d0e0c9fc6c086532781ab82f80ea6dada1", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c536c3b461885e5a", "cves": [], "html": "<p>要求超级用户或 <code>CREATEROLE</code> 权限才能为角色设置注释（Tom Lane）</p>", "text": "要求超级用户或 CREATEROLE 权限才能为角色设置注释（Tom Lane）", "title": "要求超级用户或 CREATEROLE 权限才能为角色设置注释", "commits": [], "section": "对象修改", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.7", "source_hash": "f806de15eebf0a495dcb7e598ad558e451dfb9af2f09434891e70d9e2d41ee4e", "section_path": ["对象修改"], "commit_groups": [], "identity_text": "Require superuser or CREATEROLE permissions in order to set comments on roles (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/007", "db_id": "d77dff75bf305a4e139b51c6c2bbed43", "patch_ids": [], "statement_hash": "dbb1329e2c5fa79dee40ff4e9810763c7b1d010fc973e0afd2e40a228121ec9e", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-08415aa85e05c659", "cves": [], "html": "<p>更改 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE\" title=\"表 9.58. 恢复信息函数\"><code>pg_last_xlog_receive_location()</code></a>，使其永不倒退（Fujii Masao）</p>\n<p>此前，当流复制重启时，<code>pg_last_xlog_receive_location()</code> 的值可能倒退。</p>", "text": "更改 pg_last_xlog_receive_location()，使其永不倒退（Fujii Masao） 此前，当流复制重启时，pg_last_xlog_receive_location() 的值可能倒退。", "title": "更改 pg_last_xlog_receive_location()，使其永不倒退", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.8", "source_hash": "b6be4a486bac29f310a3069edd4ba30218a3d248af28a84a8a8b1a6d466f9f9c", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "Change pg_last_xlog_receive_location() so it never moves backwards (Fujii Masao) Previously, the value of pg_last_xlog_receive_location() could move backward when streaming replication is restarted.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/008", "db_id": "8f708943a2553a135344292dd9986123", "patch_ids": [], "statement_hash": "da98334f86c0e376f1dcd4795ef6607cd85dbac0d8db70d860177c0bc817f57f", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ce948f07c79c6890", "cves": [], "html": "<p>让复制连接的日志记录遵循 <a href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-CONNECTIONS\"><code>log_connections</code></a>（Magnus Hagander）</p>\n<p>此前复制连接总是被记录。</p>", "text": "让复制连接的日志记录遵循 log_connections（Magnus Hagander） 此前复制连接总是被记录。", "title": "让复制连接的日志记录遵循 log_connections", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.8", "source_hash": "64e305724782dcf952a30ccf21668f9439b4b79a59cf69873274596780bb43d9", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "Have logging of replication connections honor log_connections (Magnus Hagander) Previously, replication connections were always logged.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/009", "db_id": "61b6483661383d3f8411f8e9eaef268a", "patch_ids": [], "statement_hash": "e3dfe4b84c2aef836ea74766ecd9787b78d2b5a9f661f2c591c0fb52801e7108", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2518df69e663492e", "cves": [], "html": "<p>更改 PL/pgSQL 的无参数 <code>RAISE</code> 命令，使其可被所附加的异常块捕获（Piyush Newe）</p>\n<p>此前代码块中的 <code>RAISE</code> 总是作用于所附加的异常块，因此在同一作用域内无法捕获。</p>", "text": "更改 PL/pgSQL 的无参数 RAISE 命令，使其可被所附加的异常块捕获（Piyush Newe） 此前代码块中的 RAISE 总是作用于所附加的异常块，因此在同一作用域内无法捕获。", "title": "更改 PL/pgSQL 的无参数 RAISE 命令，使其可被所附加的异常块捕获", "commits": [], "section": "PL/pgSQL Server-Side Language", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.9", "source_hash": "8793c19faac87fa49a6e14018769f24169c41cf97271356cfc601b9311d64c83", "section_path": ["PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Change PL/pgSQL's RAISE command without parameters to be catchable by the attached exception block (Piyush Newe) Previously RAISE in a code block was always scoped to an attached exception block, so it was uncatchable at the same scope.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/010", "db_id": "b2c151634d90ef72c135ea462ed2e7c6", "patch_ids": [], "statement_hash": "750001173b7a34a313ffecf0c28e3f3177a78130b3c755f3d7bf7f44bcf0aad0", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a494fe3a56f16978", "cves": [], "html": "<p>调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致（Pavel Stehule）</p>\n<p>此前 PL/pgSQL 会忽略（不计数）函数体开头的空行。由于这与其他所有语言不一致，该特殊情况已被移除。</p>", "text": "调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致（Pavel Stehule） 此前 PL/pgSQL 会忽略（不计数）函数体开头的空行。由于这与其他所有语言不一致，该特殊情况已被移除。", "title": "调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致", "commits": [], "section": "PL/pgSQL Server-Side Language", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.9", "source_hash": "86516254ffbf1e8b6c1f7073719a4b9286a9bae0ee3c49444ada16cfcd3e52e2", "section_path": ["PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Adjust PL/pgSQL's error line numbering code to be consistent with other PLs (Pavel Stehule) Previously, PL/pgSQL would ignore (not count) an empty line at the start of the function body. Since this was inconsistent with all other languages, the special case was removed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/011", "db_id": "3f41a73d8787104a66bd7adbb09e6c06", "patch_ids": [], "statement_hash": "464ceca932b2916468c5709a00169c10bbcc2e9a59e29df069afb8267c5ee940", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-550e4aaf08bee2ce", "cves": [], "html": "<p>让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错（Tom Lane）</p>\n<p>此前不会检测冲突，该名称会静默地只指向 OUT 参数。</p>", "text": "让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错（Tom Lane） 此前不会检测冲突，该名称会静默地只指向 OUT 参数。", "title": "让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错", "commits": [], "section": "PL/pgSQL Server-Side Language", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.9", "source_hash": "482a6ea25f29fd5ed6f496d694b251a3e38e328c05ab3799aafa8eb390c95acc", "section_path": ["PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Make PL/pgSQL complain about conflicting IN and OUT parameter names (Tom Lane) Formerly, the collision was not detected, and the name would just silently refer to only the OUT parameter.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/012", "db_id": "de936feb3dff05e890f6a274bbd15809", "patch_ids": [], "statement_hash": "f8bdcc738dcfb8503ce2718148143a36df1fcac3e509cbb8bfab33eca92fed78", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b064ba2139ef02de", "cves": [], "html": "<p>PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见（Tom Lane）</p>\n<p>附加到 PL/pgSQL 变量的类型修饰符（如 varchar 长度限制）此前只在赋值期间强制执行，其他用途一律忽略。这类变量现在的行为将更像是用相同修饰符声明的表列。预计在大多数情况下这不会造成可见差异，但可能给 PL/pgSQL 函数发出的某些 SQL 命令带来细微变化。</p>", "text": "PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见（Tom Lane） 附加到 PL/pgSQL 变量的类型修饰符（如 varchar 长度限制）此前只在赋值期间强制执行，其他用途一律忽略。这类变量现在的行为将更像是用相同修饰符声明的表列。预计在大多数情况下这不会造成可见差异，但可能给 PL/pgSQL 函数发出的某些 SQL 命令带来细微变化。", "title": "PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见", "commits": [], "section": "PL/pgSQL Server-Side Language", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.9", "source_hash": "7bbbffd5d0a3576e7b6d55468126ade4719ac7762d29c80612ae4cc76b209dd7", "section_path": ["PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Type modifiers of PL/pgSQL variables are now visible to the SQL parser (Tom Lane) A type modifier (such as a varchar length limit) attached to a PL/pgSQL variable was formerly enforced during assignments, but was ignored for all other purposes. Such variables will now behave more like table columns declared with the same modifier. This is not expected to make any visible difference in most cases, but it could result in subtle changes for some SQL commands issued by PL/pgSQL functions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/013", "db_id": "fbb635a3b0b777063ef8c990772a2265", "patch_ids": [], "statement_hash": "2645b50c9280a1dd40e4dca7ea974be7cbb8bc32441b03b2ad9dfdadea61c48b", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e14061bb4402811f", "cves": [], "html": "<p>所有 contrib 模块现在都通过 <a href=\"/docs/9.1/sql-createextension.html\" title=\"CREATE EXTENSION\"><code>CREATE EXTENSION</code></a> 安装，而不是手工调用其 SQL 脚本（Dimitri Fontaine、Tom Lane）</p>\n<p>要更新包含某 contrib 模块 9.0 版本的现有数据库，使用 <code>CREATE EXTENSION ... FROM unpackaged</code> 把现有 contrib 模块的对象包装成扩展。从 9.0 之前的版本更新时，先用旧的卸载脚本删除该 contrib 模块的对象，然后使用 <code>CREATE EXTENSION</code>。</p>", "text": "所有 contrib 模块现在都通过 CREATE EXTENSION 安装，而不是手工调用其 SQL 脚本（Dimitri Fontaine、Tom Lane） 要更新包含某 contrib 模块 9.0 版本的现有数据库，使用 CREATE EXTENSION ... FROM unpackaged 把现有 contrib 模块的对象包装成扩展。从 9.0 之前的版本更新时，先用旧的卸载脚本删除该 contrib 模块的对象，然后使用 CREATE EXTENSION。", "title": "所有 contrib 模块现在都通过 CREATE EXTENSION 安装，而不是手工调用其 SQL 脚本", "commits": [], "section": "附加模块", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.10", "source_hash": "a2b03473a511ef09dbda5ac26f3be90dad7900989173908a20f66c04e0087699", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "All contrib modules are now installed with CREATE EXTENSION rather than by manually invoking their SQL scripts (Dimitri Fontaine, Tom Lane) To update an existing database containing the 9.0 version of a contrib module, use CREATE EXTENSION ... FROM unpackaged to wrap the existing contrib module's objects into an extension. When updating from a pre-9.0 version, drop the contrib module's objects using its old uninstall script, then use CREATE EXTENSION.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/014", "db_id": "352181eef1f573c76edc9e7e3624b155", "patch_ids": [], "statement_hash": "569e2199539a041fcb41806c60983fd47a415311111204481247ac8e2c7fbb09", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-46d4e420654af028", "cves": [], "html": "<p>让 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"表 27.2. 统计访问函数\"><code>pg_stat_reset()</code></a> 重置所有数据库级统计信息（Tomas Vondra）</p>\n<p>一些 <code>pg_stat_database</code> 计数器此前没有被重置。</p>", "text": "让 pg_stat_reset() 重置所有数据库级统计信息（Tomas Vondra） 一些 pg_stat_database 计数器此前没有被重置。", "title": "让 pg_stat_reset() 重置所有数据库级统计信息", "commits": [], "section": "其他不兼容之处", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.11", "source_hash": "776e5248ac81118da7fc97bdf3a58a745a23b315c85621f9dccfa1e821443f03", "section_path": ["其他不兼容之处"], "commit_groups": [], "identity_text": "Make pg_stat_reset() reset all database-level statistics (Tomas Vondra) Some pg_stat_database counters were not being reset.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/015", "db_id": "2eea75a7b4492f6096701a5e667204e4", "patch_ids": [], "statement_hash": "14cfec72519becc75cab514cc0ef2780f5fdd5d69d0f3749b545e4dccb8eb54e", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d7a5f1b10a628bc8", "cves": [], "html": "<p>修正一些 <a href=\"/docs/9.1/infoschema-triggers.html\" title=\"34.52. triggers\"><code>information_schema.triggers</code></a> 列名，使其与新的 SQL 标准名称一致（Dean Rasheed）</p>", "text": "修正一些 information_schema.triggers 列名，使其与新的 SQL 标准名称一致（Dean Rasheed）", "title": "修正一些 information_schema.triggers 列名，使其与新的 SQL 标准名称一致", "commits": [], "section": "其他不兼容之处", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.11", "source_hash": "99fa26dd3febeec76f4e6474e95c53253b1b5eedcfe9adcd0c2e6c765aa56739", "section_path": ["其他不兼容之处"], "commit_groups": [], "identity_text": "Fix some information_schema.triggers column names to match the new SQL-standard names (Dean Rasheed)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/016", "db_id": "35d728531614663bd2a1c88df6f9087c", "patch_ids": [], "statement_hash": "26e7afd15c9c62ef5a52d6dab5411818c2c1c0eb6353504934cbb73a68b56278", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e4924272b2eedd77", "cves": [], "html": "<p>把 <span>ECPG</span> 游标名视为大小写不敏感（Zoltan Boszormenyi）</p>", "text": "把 ECPG 游标名视为大小写不敏感（Zoltan Boszormenyi）", "title": "把 ECPG 游标名视为大小写不敏感", "commits": [], "section": "其他不兼容之处", "category": "compatibility", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.4.11", "source_hash": "ab401c545e8ab4f3c85c101c4694e0b0c46f9154e8d043b9c336d0863facac24", "section_path": ["其他不兼容之处"], "commit_groups": [], "identity_text": "Treat ECPG cursor names as case-insensitive (Zoltan Boszormenyi)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/migration/017", "db_id": "5cf5a43db59ea2b515e2c4c75a4281cd", "patch_ids": [], "statement_hash": "7803d0c906f8fe4d38dd20570dab54cbcd28c7ced9943b9e4c37c5a833eced1a", "relations": [], "version": "9.1.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-cf53477956f73c91", "cves": [], "html": "<p>支持在 <a href=\"/docs/9.1/sql-createtable.html\" title=\"CREATE TABLE\"><code>CREATE TABLE</code></a> 中使用 <code>UNLOGGED</code> 选项的不记录日志的表（Robert Haas）</p>\n<p>这类表比常规表提供更好的更新性能，但不是崩溃安全的：服务器崩溃时其内容会被自动清除。其内容也不会传播到复制从库。</p>", "text": "支持在 CREATE TABLE 中使用 UNLOGGED 选项的不记录日志的表（Robert Haas） 这类表比常规表提供更好的更新性能，但不是崩溃安全的：服务器崩溃时其内容会被自动清除。其内容也不会传播到复制从库。", "title": "支持在 CREATE TABLE 中使用 UNLOGGED 选项的不记录日志的表", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "eca0760229aa47061028694ea2af17bdee828c60937e5b20d5d2890ed1f37711", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Support unlogged tables using the UNLOGGED option in CREATE TABLE (Robert Haas) Such tables provide better update performance than regular tables, but are not crash-safe: their contents are automatically cleared in case of a server crash. Their contents do not propagate to replication slaves, either.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/001", "db_id": "fd2e0d6106f52359592c6369a238390a", "patch_ids": [], "statement_hash": "93ce255485d37d1906224b507409f30390f3791c8fcfce40c196fa4527f60edd", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-28ad201613196e37", "cves": [], "html": "<p>允许把 <code>FULL OUTER JOIN</code> 实现为哈希连接，并允许对 <code>LEFT OUTER JOIN</code> 或 <code>RIGHT OUTER JOIN</code> 的任一侧做哈希（Tom Lane）</p>\n<p>此前 <code>FULL OUTER JOIN</code> 只能实现为合并连接，而 <code>LEFT OUTER JOIN</code> 和 <code>RIGHT OUTER JOIN</code> 只能对连接的可空侧做哈希。这些变更提供了额外的查询优化可能性。</p>", "text": "允许把 FULL OUTER JOIN 实现为哈希连接，并允许对 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 的任一侧做哈希（Tom Lane） 此前 FULL OUTER JOIN 只能实现为合并连接，而 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 只能对连接的可空侧做哈希。这些变更提供了额外的查询优化可能性。", "title": "允许把 FULL OUTER JOIN 实现为哈希连接，并允许对 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 的任一侧做哈希", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "f03558a85d3fbef769748f2102ec4261257178788f0d36fcb88e41235c63ba75", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Allow FULL OUTER JOIN to be implemented as a hash join, and allow either side of a LEFT OUTER JOIN or RIGHT OUTER JOIN to be hashed (Tom Lane) Previously FULL OUTER JOIN could only be implemented as a merge join, and LEFT OUTER JOIN and RIGHT OUTER JOIN could hash only the nullable side of the join. These changes provide additional query optimization possibilities.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/002", "db_id": "1b59d20c90cf2bc359ed5770652ade54", "patch_ids": [], "statement_hash": "6174ed17ace43a270d4b28836edaf9fab92f5844a0e3fd8a4964013738fbb6a1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5d150babc35e3eb8", "cves": [], "html": "<p>合并重复的 fsync 请求（Robert Haas、Greg Smith）</p>\n<p>这大幅改进了重写负载下的性能。</p>", "text": "合并重复的 fsync 请求（Robert Haas、Greg Smith） 这大幅改进了重写负载下的性能。", "title": "合并重复的 fsync 请求", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "c15f845c16ac133ae986ddc9f467513a4cc87daf8140b91b9a1fe96d9bf86655", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Merge duplicate fsync requests (Robert Haas, Greg Smith) This greatly improves performance under heavy write loads.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/003", "db_id": "6bcfcdc498c34cd89a7f5a27ca57ef70", "patch_ids": [], "statement_hash": "c55603b3e827968472d3eb1f56346871991f77152317ce2f3aae23a0de15eb00", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fb308d53051dadef", "cves": [], "html": "<p>改进 <a href=\"/docs/9.1/runtime-config-wal.html#GUC-COMMIT-SIBLINGS\"><code>commit_siblings</code></a> 的性能（Greg Smith）</p>\n<p>这使 <code>commit_siblings</code> 的使用开销更低。</p>", "text": "改进 commit_siblings 的性能（Greg Smith） 这使 commit_siblings 的使用开销更低。", "title": "改进 commit_siblings 的性能", "commits": [], "section": "服务器 / 性能", "category": "performance", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "cf3f82617f9761edb85c92dc17a5cf7b3e2e41dcaf1f02d1a99d56e0bc610d0d", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Improve performance of commit_siblings (Greg Smith) This allows the use of commit_siblings with less overhead.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/004", "db_id": "9a67168d3e4a4d602028e36d95160406", "patch_ids": [], "statement_hash": "90beac3fb987fa88e775722d75b2b1d133b4c9c77f38463f127aa2ab5701366e", "relations": [], "version": "9.1.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c449d6240b42c4a9", "cves": [], "html": "<p>降低大型 ispell 词典的内存需求（Pavel Stehule、Tom Lane）</p>", "text": "降低大型 ispell 词典的内存需求（Pavel Stehule、Tom Lane）", "title": "降低大型 ispell 词典的内存需求", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "3f2c22c8e8b689341ac8a4dd3a2764433e865b5183aa5d77d9ae9213d46fca5f", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Reduce the memory requirement for large ispell dictionaries (Pavel Stehule, Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/005", "db_id": "f755363c5dd32592ceadda90b4050f5a", "patch_ids": [], "statement_hash": "478dc59e0415dd291073dfa47d670279d0f360e2047559f0f7416d3ac45315c1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ed08d3eeab28ce07", "cves": [], "html": "<p>避免<span>“<span>盲写</span>”</span>之后数据文件保持打开（Alvaro Herrera）</p>\n<p>这修复了后端可能在文件被删除后很久仍持有其打开状态、阻止内核回收磁盘空间的场景。</p>", "text": "避免“盲写”之后数据文件保持打开（Alvaro Herrera） 这修复了后端可能在文件被删除后很久仍持有其打开状态、阻止内核回收磁盘空间的场景。", "title": "避免“盲写”之后数据文件保持打开", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.2", "source_hash": "9247a7b3de36640d123d1549b5b8c52f1cd0ac3fd4188cb9584dd9e5e0c702dd", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Avoid leaving data files open after blind writes (Alvaro Herrera) This fixes scenarios in which backends might hold files open long after they were deleted, preventing the kernel from reclaiming disk space.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/006", "db_id": "bce884e504cbe4a8aca87f5f3ad0c562", "patch_ids": [], "statement_hash": "78acb7563b0f0e294055b6b1804482dd3caacd3ba70d558c67bc9b3f0324388d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-cb3b3b03f256e0e1", "cves": [], "html": "<p>允许继承表扫描返回有意义的排序结果（Greg Stark、Hans-Jurgen Schonig、Robert Haas、Tom Lane）</p>\n<p>这允许对继承表上使用 <code>ORDER BY</code>、<code>LIMIT</code> 或 <code>MIN</code>/<code>MAX</code> 的查询做更好的优化。</p>", "text": "允许继承表扫描返回有意义的排序结果（Greg Stark、Hans-Jurgen Schonig、Robert Haas、Tom Lane） 这允许对继承表上使用 ORDER BY、LIMIT 或 MIN/MAX 的查询做更好的优化。", "title": "允许继承表扫描返回有意义的排序结果", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.3", "source_hash": "0fe23b83fd2bf7226b050f11535f884bc7294b3aa5d151f1eda5916fce9c21f1", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Allow inheritance table scans to return meaningfully-sorted results (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom Lane) This allows better optimization of queries that use ORDER BY, LIMIT, or MIN/MAX with inherited tables.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/007", "db_id": "ef5ade369462b29b5e346091c5a29aae", "patch_ids": [], "statement_hash": "429544f2ddceb18034428967456705c90860350f5515b4d61766e6d2fec3fa1e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-13190638360acdcb", "cves": [], "html": "<p>改进 GIN 索引扫描的代价估计（Teodor Sigaev）</p>", "text": "改进 GIN 索引扫描的代价估计（Teodor Sigaev）", "title": "改进 GIN 索引扫描的代价估计", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.3", "source_hash": "00202c6328ba9f04401ff77a2acbfa86c07938d183d482c188b9d764aeb9cea4", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Improve GIN index scan cost estimation (Teodor Sigaev)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/008", "db_id": "f17268b4639b3da8fd7ba4f33d1170c5", "patch_ids": [], "statement_hash": "eaeb2f9e2c9fd4986230068d1801c9bad812a7aadffd25044e444471122b0010", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-0db4f548afcc4ba3", "cves": [], "html": "<p>改进聚合和窗口函数的代价估计（Tom Lane）</p>", "text": "改进聚合和窗口函数的代价估计（Tom Lane）", "title": "改进聚合和窗口函数的代价估计", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.3", "source_hash": "2833f2651b30f3f1b062358c573106b5317bb8671722effd0680965b266779c8", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Improve cost estimation for aggregates and window functions (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/009", "db_id": "db0f7e5cdbf2694b3f69eeff02697fee", "patch_ids": [], "statement_hash": "c2989d9bd95976995dee253b3f78f5fcae21984c4cd1ceee21947cd7d63bce1a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-327f39d709e58686", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"><code>pg_hba.conf</code></a> 中支持主机名和主机后缀（例如 <code>.example.com</code>）（Peter Eisentraut）</p>\n<p>此前只支持主机 <acronym>IP</acronym> 地址和 <acronym>CIDR</acronym> 值。</p>", "text": "在 pg_hba.conf 中支持主机名和主机后缀（例如 .example.com）（Peter Eisentraut） 此前只支持主机 IP 地址和 CIDR 值。", "title": "在 pg_hba.conf 中支持主机名和主机后缀（例如 .example.com）", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "250e535a3b1af7eeaac8746763945a36bf66918590b1cdf82ed18e7776c71782", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Support host names and host suffixes (e.g. .example.com) in pg_hba.conf (Peter Eisentraut) Previously only host IP addresses and CIDR values were supported.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/010", "db_id": "49b5f3783a6162345dd2c1e93dfef520", "patch_ids": [], "statement_hash": "37d5ffb9a89a7bb3eb46383ccbc932d82ab35912f4b0b4f4b2043184b0cba12c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ea1b2b983dbedb34", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"><code>pg_hba.conf</code></a> 的 host 列中支持关键字 <code>all</code>（Peter Eisentraut）</p>\n<p>此前人们为此使用 <code>0.0.0.0/0</code> 或 <code>::/0</code>。</p>", "text": "在 pg_hba.conf 的 host 列中支持关键字 all（Peter Eisentraut） 此前人们为此使用 0.0.0.0/0 或 ::/0。", "title": "在 pg_hba.conf 的 host 列中支持关键字 all", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "4b23ad5ad18031087ae4276a10c378d563bce3b39656c13341e8282325227673", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Support the key word all in the host column of pg_hba.conf (Peter Eisentraut) Previously people used 0.0.0.0/0 or ::/0 for this.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/011", "db_id": "e3628e0896b6c873cdac0f7984f87dc2", "patch_ids": [], "statement_hash": "d99a71e43efed3b24059fc13263a6fdd7068b9990ef3ff018f010f77d6dd0d96", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-cb1dc8d4ca390a9c", "cves": [], "html": "<p>在不支持 Unix 套接字连接的平台上拒绝 <a href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"><code>pg_hba.conf</code></a> 中的 <code>local</code> 行（Magnus Hagander）</p>\n<p>此前这类行会被静默忽略，这可能令人意外。这使该行为更像其他不受支持的情况。</p>", "text": "在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的 local 行（Magnus Hagander） 此前这类行会被静默忽略，这可能令人意外。这使该行为更像其他不受支持的情况。", "title": "在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的 local 行", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "776473ca5264d053be06d0df090b35a551aff51f383e3edea0544680eed7fc6e", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Reject local lines in pg_hba.conf on platforms that don't support Unix-socket connections (Magnus Hagander) Formerly, such lines were silently ignored, which could be surprising. This makes the behavior more like other unsupported cases.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/012", "db_id": "a1d0cb979d3f658209b2eacd695bb57b", "patch_ids": [], "statement_hash": "70499d701b18466c321c0e4fbec14d9c93d3b2760c04d507fc74ab88814eac8c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-bf3e7cbf1c19a241", "cves": [], "html": "<p>允许使用 <a href=\"/docs/9.1/auth-methods.html#GSSAPI-AUTH\" title=\"19.3.3. GSSAPI 认证\"><acronym>GSSAPI</acronym></a> 通过 <a href=\"/docs/9.1/auth-methods.html#SSPI-AUTH\" title=\"19.3.4. SSPI 认证\"><acronym>SSPI</acronym></a> 向服务器认证（Christian Ullrich）</p>\n<p>具体而言，这允许基于 Unix 的 <acronym>GSSAPI</acronym> 客户端与 Windows 服务器进行 <acronym>SSPI</acronym> 认证。</p>", "text": "允许使用 GSSAPI 通过 SSPI 向服务器认证（Christian Ullrich） 具体而言，这允许基于 Unix 的 GSSAPI 客户端与 Windows 服务器进行 SSPI 认证。", "title": "允许使用 GSSAPI 通过 SSPI 向服务器认证", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "69db46bf98d3363ee5b7bde2d0611847e734d1ecac24c2d2626d80f3f43a7da9", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Allow GSSAPI to be used to authenticate to servers via SSPI (Christian Ullrich) Specifically this allows Unix-based GSSAPI clients to do SSPI authentication with Windows servers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/013", "db_id": "19e16173bb9578ac50f689efef68a489", "patch_ids": [], "statement_hash": "6f1f1749bfd2f0669093d75846d8d05923f92d625a252467ded7cd416acbe8cc", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-4317a84657b812fc", "cves": [], "html": "<p>本地套接字上的 <a href=\"/docs/9.1/auth-methods.html#AUTH-IDENT\" title=\"19.3.6. Ident 认证\"><code>ident</code></a> 认证现在称为 <a href=\"/docs/9.1/auth-methods.html#AUTH-PEER\" title=\"19.3.7. Peer 认证\"><code>peer</code></a>（Magnus Hagander）</p>\n<p>为了向后兼容仍接受旧名称，但由于这两种方法根本不同，为它们采用不同的名称似乎更好。</p>", "text": "本地套接字上的 ident 认证现在称为 peer（Magnus Hagander） 为了向后兼容仍接受旧名称，但由于这两种方法根本不同，为它们采用不同的名称似乎更好。", "title": "本地套接字上的 ident 认证现在称为 peer", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "2129725719472f75d69994bd49ec51a59c4fa395782679e59e3ecfd02f8a627c", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "ident authentication over local sockets is now known as peer (Magnus Hagander) The old term is still accepted for backward compatibility, but since the two methods are fundamentally different, it seemed better to adopt different names for them.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/014", "db_id": "b766d08cdd6e782b84560f05dcd56f9f", "patch_ids": [], "statement_hash": "22e6a03a46db422f3a0525ae9f99ff8c7f5125d6f07f19d7a0ff9bdb1f70a732", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-257189e35bcbc95b", "cves": [], "html": "<p>重写 <a href=\"/docs/9.1/auth-methods.html#AUTH-PEER\" title=\"19.3.7. Peer 认证\"><acronym>peer</acronym></a> 认证，避免使用凭据控制消息（Tom Lane）</p>\n<p>此变更使 peer 认证代码更简单、性能更好。但它要求平台提供 <code>getpeereid</code> 函数或等效的套接字操作。据我们所知，唯一此前 peer 认证可用而现在不可用的平台是 5.0 之前的 NetBSD。</p>", "text": "重写 peer 认证，避免使用凭据控制消息（Tom Lane） 此变更使 peer 认证代码更简单、性能更好。但它要求平台提供 getpeereid 函数或等效的套接字操作。据我们所知，唯一此前 peer 认证可用而现在不可用的平台是 5.0 之前的 NetBSD。", "title": "重写 peer 认证，避免使用凭据控制消息", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.4", "source_hash": "85f28f3d783b34d423038f38b01087edfa14a275bd2735a2f5ccdbe6dfc9add2", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Rewrite peer authentication to avoid use of credential control messages (Tom Lane) This change makes the peer authentication code simpler and better-performing. However, it requires the platform to provide the getpeereid function or an equivalent socket operation. So far as is known, the only platform for which peer authentication worked before and now will not is pre-5.0 NetBSD.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/015", "db_id": "6839168d42dafbceec1b537dce816cad", "patch_ids": [], "statement_hash": "8a33925b8b04de2b291c28a1d48f4cb9b941f0e5ee06c1f18b3a972f186565a7", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3e81d8a76bc7a951", "cves": [], "html": "<p>为重启点和检查点的日志记录添加细节，它由 <a href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-CHECKPOINTS\"><code>log_checkpoints</code></a> 控制（Fujii Masao、Greg Smith）</p>\n<p>新增细节包括 <acronym>WAL</acronym> 文件和同步活动。</p>", "text": "为重启点和检查点的日志记录添加细节，它由 log_checkpoints 控制（Fujii Masao、Greg Smith） 新增细节包括 WAL 文件和同步活动。", "title": "为重启点和检查点的日志记录添加细节，它由 log_checkpoints 控制", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.5", "source_hash": "d2f94b7f594b517d4aa9e707ebbbcfc9d25c1b403fe2e8cca57ab057ad7060bd", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Add details to the logging of restartpoints and checkpoints, which is controlled by log_checkpoints (Fujii Masao, Greg Smith) New details include WAL file and sync activity.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/016", "db_id": "92b6e90530b2d45fb9b55a96b3881314", "patch_ids": [], "statement_hash": "7837dd90a2bf97e7ec26b38a0b43386f0b767484a216e21139e5d4d5f014f837", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-10875641167a1e31", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-FILE-MODE\"><code>log_file_mode</code></a>，控制日志收集器创建的日志文件的权限（Martin Pihlak）</p>", "text": "新增 log_file_mode，控制日志收集器创建的日志文件的权限（Martin Pihlak）", "title": "新增 log_file_mode，控制日志收集器创建的日志文件的权限", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.5", "source_hash": "6c5f4394b9dae0844faa1c98a590de0bdc2feb45cb129964199aa502f8a5f7f9", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Add log_file_mode which controls the permissions on log files created by the logging collector (Martin Pihlak)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/017", "db_id": "ed0c3599f7ee751fca294f8cbbaf7897", "patch_ids": [], "statement_hash": "207003b61a5595b4ebde245173f6685380892c8d86cc65ce162f874ad7d40115", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1842c757427db855", "cves": [], "html": "<p>把 <span>syslog</span> 日志的默认最大行长降低到 900 字节加前缀（Noah Misch）</p>\n<p>这避免了在有 1KB（而非更常见的 2KB）长度限制的 syslog 实现上长日志行被截断。</p>", "text": "把 syslog 日志的默认最大行长降低到 900 字节加前缀（Noah Misch） 这避免了在有 1KB（而非更常见的 2KB）长度限制的 syslog 实现上长日志行被截断。", "title": "把 syslog 日志的默认最大行长降低到 900 字节加前缀", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.5", "source_hash": "35789d54a82be435bbe82937db99fcf132f9cd651ec1b9c3cf0f2f3b30928626", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Reduce the default maximum line length for syslog logging to 900 bytes plus prefixes (Noah Misch) This avoids truncation of long log lines on syslog implementations that have a 1KB length limit, rather than the more common 2KB.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/018", "db_id": "602a5c00cb0d0ea695362f947a264c9a", "patch_ids": [], "statement_hash": "a7a3209074e5a88433e5f2b5c661538c8b0498740ae6f288128623e2666a0123", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1dfa1347e5e9595a", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_activity</code></a> 新增 <code>client_hostname</code> 列（Peter Eisentraut）</p>\n<p>此前只报告客户端地址。</p>", "text": "为 pg_stat_activity 新增 client_hostname 列（Peter Eisentraut） 此前只报告客户端地址。", "title": "为 pg_stat_activity 新增 client_hostname 列", "commits": [], "section": "服务器 / 统计视图", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.6", "source_hash": "ffa8916c35d5cb2e18cbbd3e06c0a9643bc51c139d93a5535737c9122b21dd35", "section_path": ["服务器", "统计视图"], "commit_groups": [], "identity_text": "Add client_hostname column to pg_stat_activity (Peter Eisentraut) Previously only the client address was reported.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/019", "db_id": "5502325f13d2580814f81ddd1eb99951", "patch_ids": [], "statement_hash": "1299d872e9f36abfac7c1a2933c819c819e0b8331ab0f6d4f670e39dbd9240b6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a5168579565551bd", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_xact_*</code></a> 统计函数和视图（Joel Jacobson）</p>\n<p>它们类似于数据库范围的统计计数器视图，但只反映当前事务的计数。</p>", "text": "新增 pg_stat_xact_* 统计函数和视图（Joel Jacobson） 它们类似于数据库范围的统计计数器视图，但只反映当前事务的计数。", "title": "新增 pg_stat_xact_* 统计函数和视图", "commits": [], "section": "服务器 / 统计视图", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.6", "source_hash": "e274f03c3dd63775762765032ccdf263a9b65fd18d927940f341fff6e0149ac3", "section_path": ["服务器", "统计视图"], "commit_groups": [], "identity_text": "Add pg_stat_xact_* statistics functions and views (Joel Jacobson) These are like the database-wide statistics counter views, but reflect counts for only the current transaction.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/020", "db_id": "831696b911c2d7f03de31fccb3188209", "patch_ids": [], "statement_hash": "35e423f65aec2e27167aa6a4f04ff8b92e6225c2640cd5ca6e62871a11e28b5e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-16c0231daa5c8e23", "cves": [], "html": "<p>在数据库级和后台写入进程统计视图中新增上次重置时间（Tomas Vondra）</p>", "text": "在数据库级和后台写入进程统计视图中新增上次重置时间（Tomas Vondra）", "title": "在数据库级和后台写入进程统计视图中新增上次重置时间", "commits": [], "section": "服务器 / 统计视图", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.6", "source_hash": "cb09de37d865efdd760b3b02bb3dafa3b9e72198d4f45836428b13662ca7abf4", "section_path": ["服务器", "统计视图"], "commit_groups": [], "identity_text": "Add time of last reset in database-level and background writer statistics views (Tomas Vondra)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/021", "db_id": "95a3d8136672b9612db267001e96fa19", "patch_ids": [], "statement_hash": "bb7f33366edc90b6f09648e8b8f4ce6ad432b0c13afaaf392ba4803fced090e3", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-4661f349a9c5f375", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_*_tables</code></a> 视图中新增显示清理和分析操作次数的列（Magnus Hagander）</p>", "text": "在 pg_stat_*_tables 视图中新增显示清理和分析操作次数的列（Magnus Hagander）", "title": "在 pg_stat_*_tables 视图中新增显示清理和分析操作次数的列", "commits": [], "section": "服务器 / 统计视图", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.6", "source_hash": "e73d187fb8a4d39fb1de57372b2ea8846194dfc6c23edddf23f2b0cfa199f08d", "section_path": ["服务器", "统计视图"], "commit_groups": [], "identity_text": "Add columns showing the number of vacuum and analyze operations in pg_stat_*_tables views (Magnus Hagander)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/022", "db_id": "7bf504f3ecc5b8232c916cb469c6740a", "patch_ids": [], "statement_hash": "48f6007bdbde3195f99652bc458a2f6903e3950182fe25eac10d12915bf82376", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a7602f4560fa5173", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_bgwriter</code></a> 新增 <code>buffers_backend_fsync</code> 列（Greg Smith）</p>\n<p>这个新列统计后端对缓冲区执行 fsync 的次数。</p>", "text": "为 pg_stat_bgwriter 新增 buffers_backend_fsync 列（Greg Smith） 这个新列统计后端对缓冲区执行 fsync 的次数。", "title": "为 pg_stat_bgwriter 新增 buffers_backend_fsync 列", "commits": [], "section": "服务器 / 统计视图", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.6", "source_hash": "10c6e3d84953828de867e6db99c8bdb44a7bf96a91f12d3f2ae2477f955c14f6", "section_path": ["服务器", "统计视图"], "commit_groups": [], "identity_text": "Add buffers_backend_fsync column to pg_stat_bgwriter (Greg Smith) This new column counts the number of times a backend fsyncs a buffer.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/023", "db_id": "e0dbd96aac449ba0d6dc27fccb37c339", "patch_ids": [], "statement_hash": "8efc74066410a973de1ef7124540802046fe422f465a178e1a9bab8fecd280c2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-71b0932120874992", "cves": [], "html": "<p>提供 <a href=\"/docs/9.1/runtime-config-wal.html#GUC-WAL-BUFFERS\"><code>wal_buffers</code></a> 的自动调整（Greg Smith）</p>\n<p>默认情况下，<code>wal_buffers</code> 的值现在根据 <code>shared_buffers</code> 的值自动选择。</p>", "text": "提供 wal_buffers 的自动调整（Greg Smith） 默认情况下，wal_buffers 的值现在根据 shared_buffers 的值自动选择。", "title": "提供 wal_buffers 的自动调整", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.7", "source_hash": "34c26624c96b807736072650a6d37e5c0f6dfbfd35bb05d25799c30450b14b15", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Provide auto-tuning of wal_buffers (Greg Smith) By default, the value of wal_buffers is now chosen automatically based on the value of shared_buffers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/024", "db_id": "3c71b09507f36de30fed7f9cf2813961", "patch_ids": [], "statement_hash": "65a6572875e738aa90ced1d5680e3968b963dea56d48efc80ea03e70c269fca7", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-43863dd5254a484d", "cves": [], "html": "<p>提高 <a href=\"/docs/9.1/runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT\"><code>deadlock_timeout</code></a>、<a href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-MIN-DURATION-STATEMENT\"><code>log_min_duration_statement</code></a> 和 <a href=\"/docs/9.1/runtime-config-autovacuum.html#GUC-LOG-AUTOVACUUM-MIN-DURATION\"><code>log_autovacuum_min_duration</code></a> 的最大值（Peter Eisentraut）</p>\n<p>这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。</p>", "text": "提高 deadlock_timeout、log_min_duration_statement 和 log_autovacuum_min_duration 的最大值（Peter Eisentraut） 这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。", "title": "提高 deadlock_timeout、log_min_duration_statement 和 log_autovacuum_min_duration 的最大值", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.3.7", "source_hash": "233f80a5cbd061644a36fbc32b3b8423c9ecf50ace01f36f1aaf6ee020d375ca", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Increase the maximum values for deadlock_timeout, log_min_duration_statement, and log_autovacuum_min_duration (Peter Eisentraut) The maximum value for each of these parameters was previously only about 35 minutes. Much larger values are now allowed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/025", "db_id": "e7f28bf3d9cdb0908ec5c095ef06c18d", "patch_ids": [], "statement_hash": "0b9c8463da6731f60569ef9e4be6e1ef61650b0a48ef421288f7317cc94584ba", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2c323a16794a0dce", "cves": [], "html": "<p>允许<a href=\"/docs/9.1/warm-standby.html#SYNCHRONOUS-REPLICATION\" title=\"25.2.6. 同步复制\">同步复制</a>（Simon Riggs、Fujii Masao）</p>\n<p>这允许主服务器等待备库把事务信息写入磁盘后再确认提交。每次只有一个备库可以充当同步备库的角色，由 <a href=\"/docs/9.1/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES\"><code>synchronous_standby_names</code></a> 设置控制。可以使用 <a href=\"/docs/9.1/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\"><code>synchronous_commit</code></a> 设置按事务启用或禁用同步复制。</p>", "text": "允许同步复制（Simon Riggs、Fujii Masao） 这允许主服务器等待备库把事务信息写入磁盘后再确认提交。每次只有一个备库可以充当同步备库的角色，由 synchronous_standby_names 设置控制。可以使用 synchronous_commit 设置按事务启用或禁用同步复制。", "title": "允许同步复制", "commits": [], "section": "复制和恢复 / 流复制和连续归档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.2", "source_hash": "efcaa6fbce8e4198cd5be445d67ef8fa8fbd5faac7d51a3dbe22a9fe53cb0073", "section_path": ["复制和恢复", "流复制和连续归档"], "commit_groups": [], "identity_text": "Allow synchronous replication (Simon Riggs, Fujii Masao) This allows the primary server to wait for a standby to write a transaction's information to disk before acknowledging the commit. One standby at a time can take the role of the synchronous standby, as controlled by the synchronous_standby_names setting. Synchronous replication can be enabled or disabled on a per-transaction basis using the synchronous_commit setting.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/026", "db_id": "14ad55c95ece693d97e4778434dda205", "patch_ids": [], "statement_hash": "79789ba8984b2b380acdf9700dc52a873225ff7c5d79bba812c1f57d37970bef", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-92d1132ef4a38cbf", "cves": [], "html": "<p>新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份（Magnus Hagander、Heikki Linnakangas）</p>\n<p>这避免了搭建备库服务器时手工传输文件系统备份的要求。</p>", "text": "新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份（Magnus Hagander、Heikki Linnakangas） 这避免了搭建备库服务器时手工传输文件系统备份的要求。", "title": "新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份", "commits": [], "section": "复制和恢复 / 流复制和连续归档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.2", "source_hash": "a679a1558596fd08ed357db6270dffce68dc7c8d7d8af227c74440965e7f66a1", "section_path": ["复制和恢复", "流复制和连续归档"], "commit_groups": [], "identity_text": "Add protocol support for sending file system backups to standby servers using the streaming replication network connection (Magnus Hagander, Heikki Linnakangas) This avoids the requirement of manually transferring a file system backup when setting up a standby server.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/027", "db_id": "b052b49fa1ec3fb5b3bdc2854d20a3be", "patch_ids": [], "statement_hash": "3b3f0fb32560040010fcf5e12e9ce87caea89d34ca326e984e1c122c092744f8", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3a7f688638e26048", "cves": [], "html": "<p>新增 <code>replication_timeout</code> 设置（Fujii Masao、Heikki Linnakangas）</p>\n<p>空闲时间超过 <code>replication_timeout</code> 间隔的复制连接将被自动终止。此前，失败的连接通常要等到 TCP 超时才会被检测到，这在许多情况下长得不方便。</p>", "text": "新增 replication_timeout 设置（Fujii Masao、Heikki Linnakangas） 空闲时间超过 replication_timeout 间隔的复制连接将被自动终止。此前，失败的连接通常要等到 TCP 超时才会被检测到，这在许多情况下长得不方便。", "title": "新增 replication_timeout 设置", "commits": [], "section": "复制和恢复 / 流复制和连续归档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.2", "source_hash": "c50f2c92c1b7ea7dadcaa598c537e75ad5499de094f1636621a7b552582b56a8", "section_path": ["复制和恢复", "流复制和连续归档"], "commit_groups": [], "identity_text": "Add replication_timeout setting (Fujii Masao, Heikki Linnakangas) Replication connections that are idle for more than the replication_timeout interval will be terminated automatically. Formerly, a failed connection was typically not detected until the TCP timeout elapsed, which is inconveniently long in many situations.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/028", "db_id": "e6ffa77b09e9ec0428af00dd27604afb", "patch_ids": [], "statement_hash": "979eed5e0468b5913b10fde6629a9ee15ec8ae0eba12b2f807f0a5094132fd10", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-873a034adc09201f", "cves": [], "html": "<p>新增命令行工具<a href=\"/docs/9.1/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a>，用于创建新的备库服务器或数据库备份（Magnus Hagander）</p>", "text": "新增命令行工具pg_basebackup，用于创建新的备库服务器或数据库备份（Magnus Hagander）", "title": "新增命令行工具pg_basebackup，用于创建新的备库服务器或数据库备份", "commits": [], "section": "复制和恢复 / 流复制和连续归档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.2", "source_hash": "73ff1c3f4fdf503f11591afc9ce8b0bb2f5691e97abf86661648c0410cee70a1", "section_path": ["复制和恢复", "流复制和连续归档"], "commit_groups": [], "identity_text": "Add command-line tool pg_basebackup for creating a new standby server or database backup (Magnus Hagander)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/029", "db_id": "5135a718d4bcc0eba383ea84f46697e7", "patch_ids": [], "statement_hash": "434cff55dd84da0b266a442263b50738baf6d155bbc4d7b83d0a369bb94d994e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8b5925e9af8224d8", "cves": [], "html": "<p>为角色新增<a href=\"/docs/9.1/sql-createrole.html\" title=\"CREATE ROLE\">复制权限</a>（Magnus Hagander）</p>\n<p>这是一个用于流复制的只读权限。它允许非超级用户角色用于复制连接。此前只有超级用户可以发起复制连接；超级用户默认仍拥有此权限。</p>", "text": "为角色新增复制权限（Magnus Hagander） 这是一个用于流复制的只读权限。它允许非超级用户角色用于复制连接。此前只有超级用户可以发起复制连接；超级用户默认仍拥有此权限。", "title": "为角色新增复制权限", "commits": [], "section": "复制和恢复 / 流复制和连续归档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.2", "source_hash": "ea32c628b0a374bb15b3a172fdb29ff1841b868d3d972a898fe87463a4384d36", "section_path": ["复制和恢复", "流复制和连续归档"], "commit_groups": [], "identity_text": "Add a replication permission for roles (Magnus Hagander) This is a read-only permission used for streaming replication. It allows a non-superuser role to be used for replication connections. Previously only superusers could initiate replication connections; superusers still have this permission by default.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/030", "db_id": "5dafe2964380a5012d430835ec0e4e6f", "patch_ids": [], "statement_hash": "e1d563aee9a0089dfb6ab676ee0e6c8829eeec01e919232a08e7c80ba935592b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fa951fb54f152d62", "cves": [], "html": "<p>新增系统视图 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_replication</code></a>，显示 <acronym>WAL</acronym> 发送端进程的活动（Itagaki Takahiro、Simon Riggs）</p>\n<p>它报告所有已连接备库服务器的状态。</p>", "text": "新增系统视图 pg_stat_replication，显示 WAL 发送端进程的活动（Itagaki Takahiro、Simon Riggs） 它报告所有已连接备库服务器的状态。", "title": "新增系统视图 pg_stat_replication，显示 WAL 发送端进程的活动", "commits": [], "section": "复制和恢复 / 复制监控", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.3", "source_hash": "7f1f4edaceecee07ecd87463cd68eec51f4436769a6358bb19bac412ed512bd2", "section_path": ["复制和恢复", "复制监控"], "commit_groups": [], "identity_text": "Add system view pg_stat_replication which displays activity of WAL sender processes (Itagaki Takahiro, Simon Riggs) This reports the status of all connected standby servers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/031", "db_id": "84b73712c94a425211a1ffc8de9f1d68", "patch_ids": [], "statement_hash": "820a025232df8034c229d0c651d0db474723f4b94376d7ee297ecb98718b52ca", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f8fe5f14bcc0af3b", "cves": [], "html": "<p>新增监控函数 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE\" title=\"表 9.58. 恢复信息函数\"><code>pg_last_xact_replay_timestamp()</code></a>（Fujii Masao）</p>\n<p>它返回主库生成备库上已应用的最新的提交或中止记录的时间。</p>", "text": "新增监控函数 pg_last_xact_replay_timestamp()（Fujii Masao） 它返回主库生成备库上已应用的最新的提交或中止记录的时间。", "title": "新增监控函数 pg_last_xact_replay_timestamp()", "commits": [], "section": "复制和恢复 / 复制监控", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.3", "source_hash": "71166a5af6fd24e4e1acb323a2b24e09fb826381323cd6e8ffd3b8636a8c0c1e", "section_path": ["复制和恢复", "复制监控"], "commit_groups": [], "identity_text": "Add monitoring function pg_last_xact_replay_timestamp() (Fujii Masao) This returns the time at which the primary generated the most recent commit or abort record applied on the standby.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/032", "db_id": "e734548bca22bba73924cf6c04b48e8a", "patch_ids": [], "statement_hash": "2ac70c96a71ff41ce19c316d137fe95528a82b35214c32c2d32c3627635ccc17", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f5ac0f472c2baf40", "cves": [], "html": "<p>新增配置参数 <a href=\"/docs/9.1/runtime-config-replication.html#GUC-HOT-STANDBY-FEEDBACK\"><code>hot_standby_feedback</code></a>，使备库可以推迟主库上旧行版本的清理（Simon Riggs）</p>\n<p>这有助于避免取消备库上的长时间运行查询。</p>", "text": "新增配置参数 hot_standby_feedback，使备库可以推迟主库上旧行版本的清理（Simon Riggs） 这有助于避免取消备库上的长时间运行查询。", "title": "新增配置参数 hot_standby_feedback，使备库可以推迟主库上旧行版本的清理", "commits": [], "section": "复制和恢复 / 热备", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.4", "source_hash": "ab2121fc0a665fcacc116e86bc30e29731d4d84dd8257352f39f5e14fab152c6", "section_path": ["复制和恢复", "热备"], "commit_groups": [], "identity_text": "Add configuration parameter hot_standby_feedback to enable standbys to postpone cleanup of old row versions on the primary (Simon Riggs) This helps avoid canceling long-running queries on the standby.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/033", "db_id": "79662d23edfbd6471b5a45db7916a3c0", "patch_ids": [], "statement_hash": "85a87fb7b69e54dfb15489fbb509814986970b7deef28bc5d3b05efed4cce5ae", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-7f15c54b84cd2604", "cves": [], "html": "<p>新增系统视图 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_database_conflicts</code></a>，显示已被取消的查询及其原因（Magnus Hagander）</p>\n<p>取消可能因表空间被删除、锁超时、旧快照、被固定的缓冲区和死锁而发生。</p>", "text": "新增系统视图 pg_stat_database_conflicts，显示已被取消的查询及其原因（Magnus Hagander） 取消可能因表空间被删除、锁超时、旧快照、被固定的缓冲区和死锁而发生。", "title": "新增系统视图 pg_stat_database_conflicts，显示已被取消的查询及其原因", "commits": [], "section": "复制和恢复 / 热备", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.4", "source_hash": "b4ddb4376066415015ffa0c3c79e8d215e997ee92a92a492932c7266ff83f0d4", "section_path": ["复制和恢复", "热备"], "commit_groups": [], "identity_text": "Add the pg_stat_database_conflicts system view to show queries that have been canceled and the reason (Magnus Hagander) Cancellations can occur because of dropped tablespaces, lock timeouts, old snapshots, pinned buffers, and deadlocks.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/034", "db_id": "69b54c88fc7917aceface1400a905cca", "patch_ids": [], "statement_hash": "93faf8a1d86aa0cb1d4f03d581428e1146726e226d6e0082e4b2e98fa8dffe05", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f623de57d8e9a1fa", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"><code>pg_stat_database</code></a> 新增 <code>conflicts</code> 计数（Magnus Hagander）</p>\n<p>这是该数据库中发生的冲突数量。</p>", "text": "为 pg_stat_database 新增 conflicts 计数（Magnus Hagander） 这是该数据库中发生的冲突数量。", "title": "为 pg_stat_database 新增 conflicts 计数", "commits": [], "section": "复制和恢复 / 热备", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.4", "source_hash": "4824a7513d70f329b9dadd5a70a6b14527e7e2c15a033a7cbf2c018627e8793c", "section_path": ["复制和恢复", "热备"], "commit_groups": [], "identity_text": "Add a conflicts count to pg_stat_database (Magnus Hagander) This is the number of conflicts that occurred in the database.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/035", "db_id": "5384b09f324fe191e53226deb8413e16", "patch_ids": [], "statement_hash": "6a4fce9eb771501414ede1b58dfed7e3586d6796488038c68f02b972408c43e6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2d7d986a2245b252", "cves": [], "html": "<p>提高 <a href=\"/docs/9.1/runtime-config-replication.html#GUC-MAX-STANDBY-ARCHIVE-DELAY\"><code>max_standby_archive_delay</code></a> 和 <a href=\"/docs/9.1/runtime-config-replication.html#GUC-MAX-STANDBY-STREAMING-DELAY\"><code>max_standby_streaming_delay</code></a> 的最大值</p>\n<p>这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。</p>", "text": "提高 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值 这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。", "title": "提高 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值", "commits": [], "section": "复制和恢复 / 热备", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.4", "source_hash": "51c475054f07edee9ed7a14d2a1244ac0e306eab450719937d187620b168f4c5", "section_path": ["复制和恢复", "热备"], "commit_groups": [], "identity_text": "Increase the maximum values for max_standby_archive_delay and max_standby_streaming_delay The maximum value for each of these parameters was previously only about 35 minutes. Much larger values are now allowed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/036", "db_id": "a6a3d9cca9505127cd784c622b3d7de6", "patch_ids": [], "statement_hash": "b4f5fab2c6298a185ff6abae9f7ed469724d2ce171ec4cd57044d01dd792e529", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d251b105c2ac4c05", "cves": [], "html": "<p>新增错误码 <a href=\"/docs/9.1/errcodes-appendix.html#ERRCODES-TABLE\" title=\"表 A.1. PostgreSQL错误代码\"><code>ERRCODE_T_R_DATABASE_DROPPED</code></a>，用于报告因数据库被删除导致的恢复冲突（Tatsuo Ishii）</p>\n<p>这对连接池软件很有用。</p>", "text": "新增错误码 ERRCODE_T_R_DATABASE_DROPPED，用于报告因数据库被删除导致的恢复冲突（Tatsuo Ishii） 这对连接池软件很有用。", "title": "新增错误码 ERRCODE_T_R_DATABASE_DROPPED，用于报告因数据库被删除导致的恢复冲突", "commits": [], "section": "复制和恢复 / 热备", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.4", "source_hash": "9c107480998b4b66a10c89a8185dae5298697e94787c9fe33f831d32dcfe0251", "section_path": ["复制和恢复", "热备"], "commit_groups": [], "identity_text": "Add ERRCODE_T_R_DATABASE_DROPPED error code to report recovery conflicts due to dropped databases (Tatsuo Ishii) This is useful for connection pooling software.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/037", "db_id": "c2edc36efce725fe8c1686e858c6aaed", "patch_ids": [], "statement_hash": "d8f619f672c4ce8afc214e2ca4ffca3f915164bca0a1d2f8373ce37e648e39f6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a2ec27088a2018c1", "cves": [], "html": "<p>新增控制流复制重放的函数（Simon Riggs）</p>\n<p>新函数为 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"><code>pg_xlog_replay_pause()</code></a>、<a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"><code>pg_xlog_replay_resume()</code></a> 和状态函数 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"><code>pg_is_xlog_replay_paused()</code></a>。</p>", "text": "新增控制流复制重放的函数（Simon Riggs） 新函数为 pg_xlog_replay_pause()、pg_xlog_replay_resume() 和状态函数 pg_is_xlog_replay_paused()。", "title": "新增控制流复制重放的函数", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "443b69c60525f62beec160a94920a0bbc7872dd8c513f0140938b827fa3f7624", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Add functions to control streaming replication replay (Simon Riggs) The new functions are pg_xlog_replay_pause(), pg_xlog_replay_resume(), and the status function pg_is_xlog_replay_paused().", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/038", "db_id": "27b3b5e9e64e803e92a5eed6197e9bb9", "patch_ids": [], "statement_hash": "d7057eeb9f2c460b1b7f54454a6ef7dc35a345244422d545d95d0850448bae2e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-60ded08529617b76", "cves": [], "html": "<p>新增 <code>recovery.conf</code> 设置 <code>pause_at_recovery_target</code>，用于在目标处暂停恢复（Simon Riggs）</p>\n<p>这允许查询恢复服务器以检查恢复点是否是期望的那个。</p>", "text": "新增 recovery.conf 设置 pause_at_recovery_target，用于在目标处暂停恢复（Simon Riggs） 这允许查询恢复服务器以检查恢复点是否是期望的那个。", "title": "新增 recovery.conf 设置 pause_at_recovery_target，用于在目标处暂停恢复", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "f5882e280294aae60700e1004f483b1304229925d2aad372f52933f5b2bad11b", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Add recovery.conf setting pause_at_recovery_target to pause recovery at target (Simon Riggs) This allows a recovery server to be queried to check whether the recovery point is the one desired.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/039", "db_id": "a3f5b21e98b02fe9c22e2230f3c53770", "patch_ids": [], "statement_hash": "142a7af51fe42a226a2f2a823fa80a3b9c72e4f1b53bb9099106b5f5f4b23a76", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-52871215eeabef4b", "cves": [], "html": "<p>新增使用 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE\" title=\"表 9.57. 备份控制函数\"><code>pg_create_restore_point()</code></a> 创建命名还原点的能力（Jaime Casanova）</p>\n<p>这些命名还原点可以通过新的 <code>recovery.conf</code> 设置 <a href=\"/docs/9.1/recovery-target-settings.html#RECOVERY-TARGET-NAME\"><code>recovery_target_name</code></a> 指定为恢复目标。</p>", "text": "新增使用 pg_create_restore_point() 创建命名还原点的能力（Jaime Casanova） 这些命名还原点可以通过新的 recovery.conf 设置 recovery_target_name 指定为恢复目标。", "title": "新增使用 pg_create_restore_point() 创建命名还原点的能力", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "b344505afc397b0348e6364a2b291ecdb0672d9c6a772ce12ac9010aecd222e8", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Add the ability to create named restore points using pg_create_restore_point() (Jaime Casanova) These named restore points can be specified as recovery targets using the new recovery.conf setting recovery_target_name.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/040", "db_id": "c397f75bea58b1580f13e27dee8d4da6", "patch_ids": [], "statement_hash": "02444a45a9b412091f74d892c04d4140216dc95d89e0d508340cabd017eb7f8c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-dc42506318b3829a", "cves": [], "html": "<p>允许备库恢复自动切换到新时间线（Heikki Linnakangas）</p>\n<p>现在备库服务器会定期扫描归档目录以发现新时间线。</p>", "text": "允许备库恢复自动切换到新时间线（Heikki Linnakangas） 现在备库服务器会定期扫描归档目录以发现新时间线。", "title": "允许备库恢复自动切换到新时间线", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "43d1a0074272c3c916ff8b994e488a2111c1eff1cc30212aa08696523af6b26e", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Allow standby recovery to switch to a new timeline automatically (Heikki Linnakangas) Now standby servers scan the archive directory for new timelines periodically.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/041", "db_id": "fe049c3581653750f39b188a812a35a0", "patch_ids": [], "statement_hash": "5a979e5fcb89a652d895a19f7a6cc9486346c89c21dd260ed37996ef8e666042", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fd80bcfd28f4057d", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/runtime-config-error-handling.html#GUC-RESTART-AFTER-CRASH\"><code>restart_after_crash</code></a> 设置，用于在后端崩溃后禁用自动服务器重启（Robert Haas）</p>\n<p>这允许外部集簇管理软件控制数据库服务器是否重启。</p>", "text": "新增 restart_after_crash 设置，用于在后端崩溃后禁用自动服务器重启（Robert Haas） 这允许外部集簇管理软件控制数据库服务器是否重启。", "title": "新增 restart_after_crash 设置，用于在后端崩溃后禁用自动服务器重启", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "d507e2ad6906d63e441971a8fed520e07672b067ba3e8d68bbfdd8b264ed95f1", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Add restart_after_crash setting which disables automatic server restart after a backend crash (Robert Haas) This allows external cluster management software to control whether the database server restarts or not.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/042", "db_id": "762708d7103e2e123c8526e054a26b80", "patch_ids": [], "statement_hash": "47dadbbe5d341f09a16ddf1bd8ffcea67b37b091559c5f21f58805c6c48afc4b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f03717324a693a9e", "cves": [], "html": "<p>允许 <a href=\"/docs/9.1/recovery-config.html\" title=\"第 26 章 恢复配置\"><code>recovery.conf</code></a> 使用与 <code>postgresql.conf</code> 相同的引号行为（Dimitri Fontaine）</p>\n<p>此前所有值都必须加引号。</p>", "text": "允许 recovery.conf 使用与 postgresql.conf 相同的引号行为（Dimitri Fontaine） 此前所有值都必须加引号。", "title": "允许 recovery.conf 使用与 postgresql.conf 相同的引号行为", "commits": [], "section": "复制和恢复 / 恢复控制", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.4.5", "source_hash": "3a476c108c7d290b50d91a2427af0a6f8d66a905004b771210b28df37a43a5d7", "section_path": ["复制和恢复", "恢复控制"], "commit_groups": [], "identity_text": "Allow recovery.conf to use the same quoting behavior as postgresql.conf (Dimitri Fontaine) Previously all values had to be quoted.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/043", "db_id": "852f7f91ff501fb953e7b1bdcedeed37", "patch_ids": [], "statement_hash": "f1b088245f01dc2bdb6b09b45e104db4504a7d67202f074c59ea602865be468c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5ba2dc0f014d0f00", "cves": [], "html": "<p>新增真正的<a href=\"/docs/9.1/transaction-iso.html#XACT-SERIALIZABLE\" title=\"13.2.3. 可串行化隔离级别\">可序列化隔离级别</a>（Kevin Grittner、Dan Ports）</p>\n<p>此前，请求可序列化隔离只保证整个事务使用单个 MVCC 快照，这允许某些已记载的异常。旧的快照隔离行为仍可通过请求 <a href=\"/docs/9.1/transaction-iso.html#XACT-REPEATABLE-READ\" title=\"13.2.2. 可重复读隔离级别\"><code>REPEATABLE READ</code></a> 隔离级别获得。</p>", "text": "新增真正的可序列化隔离级别（Kevin Grittner、Dan Ports） 此前，请求可序列化隔离只保证整个事务使用单个 MVCC 快照，这允许某些已记载的异常。旧的快照隔离行为仍可通过请求 REPEATABLE READ 隔离级别获得。", "title": "新增真正的可序列化隔离级别", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "06eb0ce24d51646d8c84779963059490c3e721e916e7a4398a55206e69653bb3", "section_path": ["查询"], "commit_groups": [], "identity_text": "Add a true serializable isolation level (Kevin Grittner, Dan Ports) Previously, asking for serializable isolation guaranteed only that a single MVCC snapshot would be used for the entire transaction, which allowed certain documented anomalies. The old snapshot isolation behavior is still available by requesting the REPEATABLE READ isolation level.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/044", "db_id": "719394310c89fabecf01d919818149d5", "patch_ids": [], "statement_hash": "a393b8d562c1c6c9663f8f3f8852b953b5ee92a01226ff2e026faccf7b7cb09c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f9b8919e24427bba", "cves": [], "html": "<p>允许在 <a href=\"/docs/9.1/queries-with.html\" title=\"7.8. WITH查询（公共表表达式）\"><code>WITH</code></a> 子句中使用数据修改命令（<code>INSERT</code>/<code>UPDATE</code>/<code>DELETE</code>）（Marko Tiikkaja、Hitoshi Harada）</p>\n<p>这些命令可以使用 <code>RETURNING</code> 把数据传递给包含它们的查询。</p>", "text": "允许在 WITH 子句中使用数据修改命令（INSERT/UPDATE/DELETE）（Marko Tiikkaja、Hitoshi Harada） 这些命令可以使用 RETURNING 把数据传递给包含它们的查询。", "title": "允许在 WITH 子句中使用数据修改命令（INSERT/UPDATE/DELETE）", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "527a10e75d0300b8e199c7088bf5f2fe14294227653d1b30184c987b111d8f98", "section_path": ["查询"], "commit_groups": [], "identity_text": "Allow data-modification commands (INSERT/UPDATE/DELETE) in WITH clauses (Marko Tiikkaja, Hitoshi Harada) These commands can use RETURNING to pass data up to the containing query.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/045", "db_id": "917d23692d3acfa91e6c22c0c4e71f22", "patch_ids": [], "statement_hash": "f93c8b551be421a8a7a4e28c9cf4fc0f33677a0f2f56014c05f69451672787ca", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8a13a6bdace086cb", "cves": [], "html": "<p>允许把 <a href=\"/docs/9.1/queries-with.html\" title=\"7.8. WITH查询（公共表表达式）\"><code>WITH</code></a> 子句附加到 <code>INSERT</code>、<code>UPDATE</code>、<code>DELETE</code> 语句（Marko Tiikkaja、Hitoshi Harada）</p>", "text": "允许把 WITH 子句附加到 INSERT、UPDATE、DELETE 语句（Marko Tiikkaja、Hitoshi Harada）", "title": "允许把 WITH 子句附加到 INSERT、UPDATE、DELETE 语句", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "fa0d2a5e1c2832623b906eb66e1ea506108965306bedfcbebab6bbc05ee9400b", "section_path": ["查询"], "commit_groups": [], "identity_text": "Allow WITH clauses to be attached to INSERT, UPDATE, DELETE statements (Marko Tiikkaja, Hitoshi Harada)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/046", "db_id": "c672817816cd03574cebb693f4a6ce10", "patch_ids": [], "statement_hash": "0f044ee1959003adb4f09b69bf625e3a7d15254ea5e024215f51adb4cbc2b3e2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c8077d271e52a9b7", "cves": [], "html": "<p>当在 <code>GROUP BY</code> 子句中指定了主键时，允许查询目标列表中出现非 <a href=\"/docs/9.1/queries-table-expressions.html#QUERIES-GROUP\" title=\"7.2.3. GROUP BY和HAVING子句\"><code>GROUP BY</code></a> 列（Peter Eisentraut）</p>\n<p>SQL 标准允许这种行为，而且由于有主键，结果是无歧义的。</p>", "text": "当在 GROUP BY 子句中指定了主键时，允许查询目标列表中出现非 GROUP BY 列（Peter Eisentraut） SQL 标准允许这种行为，而且由于有主键，结果是无歧义的。", "title": "当在 GROUP BY 子句中指定了主键时，允许查询目标列表中出现非 GROUP BY 列", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "db46e0afce7d439f987543eaae1d976b05cad9a8b10402b420c6d479c69dfbbb", "section_path": ["查询"], "commit_groups": [], "identity_text": "Allow non-GROUP BY columns in the query target list when the primary key is specified in the GROUP BY clause (Peter Eisentraut) The SQL standard allows this behavior, and because of the primary key, the result is unambiguous.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/047", "db_id": "96dff4e80c15eddbfe1fd08d1b58f062", "patch_ids": [], "statement_hash": "4fbb8ab2e4b050a102fe22aa324b7c792357581fc91d8b5bd1c1816f1e96aeab", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9587f77a8f108e6e", "cves": [], "html": "<p>允许在 <a href=\"/docs/9.1/queries-union.html\" title=\"7.4. 组合查询\"><code>UNION</code>/<code>INTERSECT</code>/<code>EXCEPT</code></a> 子句中使用关键字 <code>DISTINCT</code>（Tom Lane）</p>\n<p><code>DISTINCT</code> 是默认行为，因此使用该关键字是冗余的，但 SQL 标准允许。</p>", "text": "允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT（Tom Lane） DISTINCT 是默认行为，因此使用该关键字是冗余的，但 SQL 标准允许。", "title": "允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "d8f76fd6f4a889af1ef9bc06cb705d49de7a5a68597eacb1f316eea4d1886532", "section_path": ["查询"], "commit_groups": [], "identity_text": "Allow use of the key word DISTINCT in UNION/INTERSECT/EXCEPT clauses (Tom Lane) DISTINCT is the default behavior so use of this key word is redundant, but the SQL standard allows it.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/048", "db_id": "e585f6807fee4f07a4c0ddf6d8e6c44f", "patch_ids": [], "statement_hash": "6ca9d148fd435b5b645807f361ca64676aa38e849b70e586795abdce73568423", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ef90f0cfd9397e75", "cves": [], "html": "<p>修复带规则的普通查询，使其使用与 <code>EXPLAIN ANALYZE</code> 相同的快照行为（Marko Tiikkaja）</p>\n<p>此前 <code>EXPLAIN ANALYZE</code> 对涉及规则的查询使用的快照时机略有不同。<code>EXPLAIN ANALYZE</code> 的行为被认为更合逻辑。</p>", "text": "修复带规则的普通查询，使其使用与 EXPLAIN ANALYZE 相同的快照行为（Marko Tiikkaja） 此前 EXPLAIN ANALYZE 对涉及规则的查询使用的快照时机略有不同。EXPLAIN ANALYZE 的行为被认为更合逻辑。", "title": "修复带规则的普通查询，使其使用与 EXPLAIN ANALYZE 相同的快照行为", "commits": [], "section": "查询", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5", "source_hash": "ee052172ee65fd5bfdcc7641f8a638d75c49cd49a0c410aae8d3b0b738c70ff7", "section_path": ["查询"], "commit_groups": [], "identity_text": "Fix ordinary queries with rules to use the same snapshot behavior as EXPLAIN ANALYZE (Marko Tiikkaja) Previously EXPLAIN ANALYZE used slightly different snapshot timing for queries involving rules. The EXPLAIN ANALYZE behavior was judged to be more logical.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/049", "db_id": "c6fd44b9abb35d43cd220cc6342f8af9", "patch_ids": [], "statement_hash": "64e380ae2b06c659039aafcd5bb0e3d1de03137cbeb197372a364da67f66c9b2", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b622be94e1aea03f", "cves": [], "html": "<p>新增逐列<a href=\"/docs/9.1/collation.html\" title=\"22.2. 排序规则支持\">排序规则</a>支持（Peter Eisentraut、Tom Lane）</p>\n<p>此前排序规则（文本字符串的排序顺序）只能在创建数据库时选择。现在可以通过 SQL 标准的 <code>COLLATE</code> 子句逐列、逐域、逐索引或逐表达式设置排序规则。</p>", "text": "新增逐列排序规则支持（Peter Eisentraut、Tom Lane） 此前排序规则（文本字符串的排序顺序）只能在创建数据库时选择。现在可以通过 SQL 标准的 COLLATE 子句逐列、逐域、逐索引或逐表达式设置排序规则。", "title": "新增逐列排序规则支持", "commits": [], "section": "查询 / 字符串", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.5.3", "source_hash": "0ba6162e2014dec6b9c5dd01e7237801b219231ae1e77a25ca937d1ad42664f3", "section_path": ["查询", "字符串"], "commit_groups": [], "identity_text": "Add per-column collation support (Peter Eisentraut, Tom Lane) Previously collation (the sort ordering of text strings) could only be chosen at database creation. Collation can now be set per column, domain, index, or expression, via the SQL-standard COLLATE clause.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/050", "db_id": "8e04130aa430cbfc39aa1812a9a14de5", "patch_ids": [], "statement_hash": "2e28c589c11f22ddb7fd4661b1889ae4a22a32963e9ad5423b9b2159186d2e67", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9ad05cfede26d294", "cves": [], "html": "<p>新增<a href=\"/docs/9.1/extend-extensions.html\" title=\"35.15. 将相关对象打包成扩展\">扩展</a>，简化 <span>PostgreSQL</span> 附加功能的打包（Dimitri Fontaine、Tom Lane）</p>\n<p>扩展由新的 <a href=\"/docs/9.1/sql-createextension.html\" title=\"CREATE EXTENSION\"><code>CREATE</code></a>/<a href=\"/docs/9.1/sql-alterextension.html\" title=\"ALTER EXTENSION\"><code>ALTER</code></a>/<a href=\"/docs/9.1/sql-dropextension.html\" title=\"DROP EXTENSION\"><code>DROP EXTENSION</code></a> 命令控制。这取代了对添加到 <span>PostgreSQL</span> 安装的对象进行分组的临时方法。</p>", "text": "新增扩展，简化 PostgreSQL 附加功能的打包（Dimitri Fontaine、Tom Lane） 扩展由新的 CREATE/ALTER/DROP EXTENSION 命令控制。这取代了对添加到 PostgreSQL 安装的对象进行分组的临时方法。", "title": "新增扩展，简化 PostgreSQL 附加功能的打包", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6", "source_hash": "f8029cabe7d1c3b148109b7e2c69196cf1f841ef584e1181352e4cbfeeb4113e", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Add extensions which simplify packaging of additions to PostgreSQL (Dimitri Fontaine, Tom Lane) Extensions are controlled by the new CREATE/ALTER/DROP EXTENSION commands. This replaces ad-hoc methods of grouping objects that are added to a PostgreSQL installation.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/051", "db_id": "cde2eb2f398bc04124d819a2dddf2317", "patch_ids": [], "statement_hash": "69886d573c856f102d6b995e9d0e479c20e32a5b4e7cf4d7044a259b7e6989d7", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-18891b0211c6d571", "cves": [], "html": "<p>新增对<a href=\"/docs/9.1/sql-createforeigntable.html\" title=\"CREATE FOREIGN TABLE\">外部表</a>的支持（Shigeru Hanada、Robert Haas、Jan Urbanski、Heikki Linnakangas）</p>\n<p>这允许像使用 <span>PostgreSQL</span> 原生存储的数据一样使用存储在数据库之外的数据。但外部表目前是只读的。</p>", "text": "新增对外部表的支持（Shigeru Hanada、Robert Haas、Jan Urbanski、Heikki Linnakangas） 这允许像使用 PostgreSQL 原生存储的数据一样使用存储在数据库之外的数据。但外部表目前是只读的。", "title": "新增对外部表的支持", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6", "source_hash": "a3a38a5c0bd7e8c6e20bcf272eb297c918e3e5fbe5d22e41fa92aee48f0d1e7f", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Add support for foreign tables (Shigeru Hanada, Robert Haas, Jan Urbanski, Heikki Linnakangas) This allows data stored outside the database to be used like native PostgreSQL-stored data. Foreign tables are currently read-only, however.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/052", "db_id": "eaaf750a5b6bcfea328b1d52d557600c", "patch_ids": [], "statement_hash": "45314b877fa280994a60a23621e96d5dd60b162ad002750c9791c05e2b80adbb", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a8e446aed8af8fd9", "cves": [], "html": "<p>允许通过 <a href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE</code></a> 向现有枚举类型添加新值（Andrew Dunstan）</p>", "text": "允许通过 ALTER TYPE 向现有枚举类型添加新值（Andrew Dunstan）", "title": "允许通过 ALTER TYPE 向现有枚举类型添加新值", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6", "source_hash": "526e4518ce32ac7bd9e131bf38175beb7e9947b629b76d42c5c758efa09abaf9", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Allow new values to be added to an existing enum type via ALTER TYPE (Andrew Dunstan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/053", "db_id": "deaedb0dceb157363c1017b3007ff236", "patch_ids": [], "statement_hash": "44e7524460c0884754138dd2074ae57adc8ad21ed583d12af3fdd0908ecc5628", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-42e5debf44bcefba", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE</code></a>（Peter Eisentraut）</p>\n<p>这允许修改组合类型。</p>", "text": "新增 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE（Peter Eisentraut） 这允许修改组合类型。", "title": "新增 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6", "source_hash": "ad083e898692663b5c700ee6bcad16e74127dc9565265772a6ffb683416e5241", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE (Peter Eisentraut) This allows modification of composite types.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/054", "db_id": "44f506bc1ee5bec530700498b4e66386", "patch_ids": [], "statement_hash": "98f4563361eb27b33e95913da5c40864b904cdc41c091d6059587c6dfd526ec5", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f4af28f28a2b98a9", "cves": [], "html": "<p>为类型化表上的 <a href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE</code></a> 操作新增 <code>RESTRICT</code>/<code>CASCADE</code>（Peter Eisentraut）</p>\n<p>这控制 <code>ADD</code>/<code>DROP</code>/<code>ALTER</code>/<code>RENAME ATTRIBUTE</code> 的级联行为。</p>", "text": "为类型化表上的 ALTER TYPE 操作新增 RESTRICT/CASCADE（Peter Eisentraut） 这控制 ADD/DROP/ALTER/RENAME ATTRIBUTE 的级联行为。", "title": "为类型化表上的 ALTER TYPE 操作新增 RESTRICT/CASCADE", "commits": [], "section": "对象操作 / ALTER Object", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.3", "source_hash": "0a3dcf24f8a9a6c89619d7b90aad9406ff84a57cef6e5217450817e9eb34585a", "section_path": ["对象操作", "ALTER Object"], "commit_groups": [], "identity_text": "Add RESTRICT/CASCADE to ALTER TYPE operations on typed tables (Peter Eisentraut) This controls ADD/DROP/ALTER/RENAME ATTRIBUTE cascading behavior.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/055", "db_id": "57605b90c24510c6bb8e80dff33dd8ab", "patch_ids": [], "statement_hash": "fc2c6c7bec9361ecc5224ca279e1fcd9d792396e2d14431dd515b3408d32d707", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-96cf99d8d6cefd97", "cves": [], "html": "<p>支持 <code>ALTER TABLE <em><code>name</code></em> {OF | NOT OF} <em><code>type</code></em></code>（Noah Misch）</p>\n<p>该语法允许把独立表变成类型化表，或把类型化表变成独立表。</p>", "text": "支持 ALTER TABLE name {OF | NOT OF} type（Noah Misch） 该语法允许把独立表变成类型化表，或把类型化表变成独立表。", "title": "支持 ALTER TABLE name {OF | NOT OF} type", "commits": [], "section": "对象操作 / ALTER Object", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.3", "source_hash": "32ce1fd86fbc1476154c2c3a07e0e98a8976e52308140e2ce754d44f95419b1c", "section_path": ["对象操作", "ALTER Object"], "commit_groups": [], "identity_text": "Support ALTER TABLE name {OF | NOT OF} type (Noah Misch) This syntax allows a standalone table to be made into a typed table, or a typed table to be made standalone.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/056", "db_id": "cd1393ea59d115df4604cee6729c9fd4", "patch_ids": [], "statement_hash": "7e3ade8df9afa0df14ab1084e4018b766d05249673c69fba3b838cf2cc99a301", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9b6521b45025ac63", "cves": [], "html": "<p>为 <code>ALTER ... SET SCHEMA</code> 命令中的更多对象类型新增支持（Dimitri Fontaine）</p>\n<p>该命令现在支持转换、操作符、操作符类、操作符族、文本搜索配置、文本搜索词典、文本搜索解析器和文本搜索模板。</p>", "text": "为 ALTER ... SET SCHEMA 命令中的更多对象类型新增支持（Dimitri Fontaine） 该命令现在支持转换、操作符、操作符类、操作符族、文本搜索配置、文本搜索词典、文本搜索解析器和文本搜索模板。", "title": "为 ALTER ... SET SCHEMA 命令中的更多对象类型新增支持", "commits": [], "section": "对象操作 / ALTER Object", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.3", "source_hash": "f1a1d415b785d8473ad554ccb6121273fb673fc35aecb008129b948068a4df90", "section_path": ["对象操作", "ALTER Object"], "commit_groups": [], "identity_text": "Add support for more object types in ALTER ... SET SCHEMA commands (Dimitri Fontaine) This command is now supported for conversions, operators, operator classes, operator families, text search configurations, text search dictionaries, text search parsers, and text search templates.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/057", "db_id": "ba996556fa48bc59a989c9f8371f5f16", "patch_ids": [], "statement_hash": "bcd09a44868d3fad8a505a12b3f30f4244389decb79502fd761ef2b72c471009", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2c4ab315edeb8dcc", "cves": [], "html": "<p>新增 <code>ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX</code>（Gurjeet Singh）</p>\n<p>这允许使用现有唯一索引（包括并发创建的唯一索引）来定义主键或唯一约束。</p>", "text": "新增 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX（Gurjeet Singh） 这允许使用现有唯一索引（包括并发创建的唯一索引）来定义主键或唯一约束。", "title": "新增 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX", "commits": [], "section": "对象操作 / CREATE/ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.4", "source_hash": "c136f97e79c9ab686b92c59603f9e1a3af1ae4625dae400d70139c524c233e55", "section_path": ["对象操作", "CREATE/ALTER TABLE"], "commit_groups": [], "identity_text": "Add ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX (Gurjeet Singh) This allows a primary key or unique constraint to be defined using an existing unique index, including a concurrently created unique index.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/058", "db_id": "6bf037c068ba70e5cfc9c8e6901dd4ea", "patch_ids": [], "statement_hash": "b74e4920298586d693333d4daa19c63ba34018c1504f5beeb375173e5ff9d105", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-78da041489c7a4b7", "cves": [], "html": "<p>允许 <code>ALTER TABLE</code> 添加未经验证的外键（Simon Riggs）</p>\n<p>新选项名为 <code>NOT VALID</code>。约束的状态之后可以改为 <code>VALIDATED</code> 并执行验证检查。这两者相结合，使你能够以对读写操作影响最小的方式添加外键。</p>", "text": "允许 ALTER TABLE 添加未经验证的外键（Simon Riggs） 新选项名为 NOT VALID。约束的状态之后可以改为 VALIDATED 并执行验证检查。这两者相结合，使你能够以对读写操作影响最小的方式添加外键。", "title": "允许 ALTER TABLE 添加未经验证的外键", "commits": [], "section": "对象操作 / CREATE/ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.4", "source_hash": "5c2e31487812ff26602aac7d0323003acbd12420b7f1cf2dc7e82feb7b211038", "section_path": ["对象操作", "CREATE/ALTER TABLE"], "commit_groups": [], "identity_text": "Allow ALTER TABLE to add foreign keys without validation (Simon Riggs) The new option is called NOT VALID. The constraint's state can later be modified to VALIDATED and validation checks performed. Together these allow you to add a foreign key with minimal impact on read and write operations.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/059", "db_id": "90f5fdad7fcef0777e8933470b8a330c", "patch_ids": [], "statement_hash": "768292ade0e1cc499ea7e5ffd4315ec4e92d68398f39bf87ab7c19f8a0836f7d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e3ac3e0a4e885ca2", "cves": [], "html": "<p>允许 <a href=\"/docs/9.1/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE ... SET DATA TYPE</code></a> 在适当情况下避免重写表（Noah Misch、Robert Haas）</p>\n<p>例如，把 <code>varchar</code> 列转换为 <code>text</code> 不再需要重写表。但增大 <code>varchar</code> 列的长度约束仍需要重写表。</p>", "text": "允许 ALTER TABLE ... SET DATA TYPE 在适当情况下避免重写表（Noah Misch、Robert Haas） 例如，把 varchar 列转换为 text 不再需要重写表。但增大 varchar 列的长度约束仍需要重写表。", "title": "允许 ALTER TABLE ... SET DATA TYPE 在适当情况下避免重写表", "commits": [], "section": "对象操作 / CREATE/ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.4", "source_hash": "af553984a879e9c3aacd219f154040cfd03c8596550c8ce7ec32c6e1890395dd", "section_path": ["对象操作", "CREATE/ALTER TABLE"], "commit_groups": [], "identity_text": "Allow ALTER TABLE ... SET DATA TYPE to avoid table rewrites in appropriate cases (Noah Misch, Robert Haas) For example, converting a varchar column to text no longer requires a rewrite of the table. However, increasing the length constraint on a varchar column still requires a table rewrite.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/060", "db_id": "05d9575c7910f5684f864308d622d6c1", "patch_ids": [], "statement_hash": "bdcc6ad63e05bcd3faa0be3fdd1ff3ae3b8601131beff86b58562ede4f519311", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-578cde314d1612bd", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/sql-createtable.html\" title=\"CREATE TABLE\"><code>CREATE TABLE IF NOT EXISTS</code></a> 语法（Robert Haas）</p>\n<p>这允许在表已存在时创建表而不报错。</p>", "text": "新增 CREATE TABLE IF NOT EXISTS 语法（Robert Haas） 这允许在表已存在时创建表而不报错。", "title": "新增 CREATE TABLE IF NOT EXISTS 语法", "commits": [], "section": "对象操作 / CREATE/ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.4", "source_hash": "7caf47776ac2ad24c0dee248af83c7b37cc8201546868c4569358fc21cdee809", "section_path": ["对象操作", "CREATE/ALTER TABLE"], "commit_groups": [], "identity_text": "Add CREATE TABLE IF NOT EXISTS syntax (Robert Haas) This allows table creation without causing an error if the table already exists.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/061", "db_id": "70cc18a9b37dc6696063de1b730d57b2", "patch_ids": [], "statement_hash": "73cb349154c94f22bbfffa650a3b9f826b667996649e1cb46bac01ce409e08b2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-749b74e2272371c4", "cves": [], "html": "<p>修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 <span>“<span>tuple concurrently updated</span>”</span> 错误（Robert Haas）</p>\n<p><a href=\"/docs/9.1/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE</code></a> 现在对父表持有更强的锁，使会话无法同时尝试更新它。</p>", "text": "修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误（Robert Haas） ALTER TABLE 现在对父表持有更强的锁，使会话无法同时尝试更新它。", "title": "修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误", "commits": [], "section": "对象操作 / CREATE/ALTER TABLE", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.4", "source_hash": "affc19afd0ed1731ca7bc84a5d7a28309a274df64698d99cbfd9190c6c5c9ce2", "section_path": ["对象操作", "CREATE/ALTER TABLE"], "commit_groups": [], "identity_text": "Fix possible tuple concurrently updated error when two backends attempt to add an inheritance child to the same table at the same time (Robert Haas) ALTER TABLE now takes a stronger lock on the parent table, so that the sessions cannot try to update it simultaneously.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/062", "db_id": "d6fc545730313733da591e028b214cd4", "patch_ids": [], "statement_hash": "828dae0348874dfd62b50af7480706c6f8cb3c37e005be27af9be52560279360", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-99950daa00f74d22", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/sql-security-label.html\" title=\"SECURITY LABEL\"><code>SECURITY LABEL</code></a> 命令（KaiGai Kohei）</p>\n<p>这允许为对象分配安全标签。</p>", "text": "新增 SECURITY LABEL 命令（KaiGai Kohei） 这允许为对象分配安全标签。", "title": "新增 SECURITY LABEL 命令", "commits": [], "section": "对象操作 / 对象权限", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.6.5", "source_hash": "bbe68cb60f4728cc673611557f2e26a6b54bdd04122294bebea90acdcf1775c8", "section_path": ["对象操作", "对象权限"], "commit_groups": [], "identity_text": "Add a SECURITY LABEL command (KaiGai Kohei) This allows security labels to be assigned to objects.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/063", "db_id": "0f37279c3ac16f4bd450f6e330363e5b", "patch_ids": [], "statement_hash": "41fee88f687a70bd78b9c15ac1b67fd5737487d7db46acb876349792405c0909", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-aa106cab55101f9f", "cves": [], "html": "<p>新增事务级<a href=\"/docs/9.1/explicit-locking.html#ADVISORY-LOCKS\" title=\"13.3.4. 咨询锁\">咨询锁</a>（Marko Tiikkaja）</p>\n<p>它们类似于现有的会话级咨询锁，但这类锁会在事务结束时自动释放。</p>", "text": "新增事务级咨询锁（Marko Tiikkaja） 它们类似于现有的会话级咨询锁，但这类锁会在事务结束时自动释放。", "title": "新增事务级咨询锁", "commits": [], "section": "工具操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7", "source_hash": "99a833af68f0e420447a76f29e1d8bbe931d1f2d9838848076bdbff1247ad7d1", "section_path": ["工具操作"], "commit_groups": [], "identity_text": "Add transaction-level advisory locks (Marko Tiikkaja) These are similar to the existing session-level advisory locks, but such locks are automatically released at transaction end.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/064", "db_id": "c10bef1dffde6d2ea95085258f53b86a", "patch_ids": [], "statement_hash": "82452b46c51065355397ffcaf34bd4353714f5fdfc9a8bbf2c17f49ef7f85bd7", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9eb64a4c5834452b", "cves": [], "html": "<p>让 <a href=\"/docs/9.1/sql-truncate.html\" title=\"TRUNCATE\"><code>TRUNCATE ... RESTART IDENTITY</code></a> 以事务方式重启序列（Steve Singer）</p>\n<p>此前，如果后端在提交时截断活动与提交完成之间崩溃，计数器可能失去同步。</p>", "text": "让 TRUNCATE ... RESTART IDENTITY 以事务方式重启序列（Steve Singer） 此前，如果后端在提交时截断活动与提交完成之间崩溃，计数器可能失去同步。", "title": "让 TRUNCATE ... RESTART IDENTITY 以事务方式重启序列", "commits": [], "section": "工具操作", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7", "source_hash": "0d28a43faa1214023a99ece4970fe3b34b84cc78d985986b57e66dac31880a8d", "section_path": ["工具操作"], "commit_groups": [], "identity_text": "Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally (Steve Singer) Previously the counter could have been left out of sync if a backend crashed between the on-commit truncation activity and commit completion.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/065", "db_id": "9262067602f970549d8aadd2564190c9", "patch_ids": [], "statement_hash": "28f2c45faaaeb17570ca1916d2583a0f8f9d9d7c9b9e90a53a72e9cdf8cc6b31", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-809698af721368bd", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/sql-copy.html\" title=\"COPY\"><code>COPY TO/FROM</code></a> 新增 <code>ENCODING</code> 选项（Hitoshi Harada、Itagaki Takahiro）</p>\n<p>这允许单独指定 <code>COPY</code> 文件的编码，而不是跟随客户端编码。</p>", "text": "为 COPY TO/FROM 新增 ENCODING 选项（Hitoshi Harada、Itagaki Takahiro） 这允许单独指定 COPY 文件的编码，而不是跟随客户端编码。", "title": "为 COPY TO/FROM 新增 ENCODING 选项", "commits": [], "section": "工具操作 / COPY", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.3", "source_hash": "5adc811e136486d79cba222cb1067ba5ed60bead461ab16c8ebc0d8929351883", "section_path": ["工具操作", "COPY"], "commit_groups": [], "identity_text": "Add ENCODING option to COPY TO/FROM (Hitoshi Harada, Itagaki Takahiro) This allows the encoding of the COPY file to be specified separately from client encoding.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/066", "db_id": "28c5240c9e20d59ddec17536451200ca", "patch_ids": [], "statement_hash": "f80030caed19424da2861f4a1c195d31cd803f5e89b0a38cd5e48125c3b1dc36", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-0d5d2b854b8d38bf", "cves": [], "html": "<p>新增双向 <a href=\"/docs/9.1/sql-copy.html\" title=\"COPY\"><code>COPY</code></a> 协议支持（Fujii Masao）</p>\n<p>这目前只被流复制使用。</p>", "text": "新增双向 COPY 协议支持（Fujii Masao） 这目前只被流复制使用。", "title": "新增双向 COPY 协议支持", "commits": [], "section": "工具操作 / COPY", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.3", "source_hash": "ca2849e714d01a90d24aa924f303cde85df4738f80047e5666a8eb768777f04f", "section_path": ["工具操作", "COPY"], "commit_groups": [], "identity_text": "Add bidirectional COPY protocol support (Fujii Masao) This is currently only used by streaming replication.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/067", "db_id": "965620e63e1c8d405d514e2d39a8c4ed", "patch_ids": [], "statement_hash": "d930216cbd24e6f505612bf99e0f1523ba52c1209e64815171c8e1591a8dc16f", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-466745a21086e977", "cves": [], "html": "<p>让 <code>EXPLAIN VERBOSE</code> 显示 <code>FunctionScan</code> 节点中的函数调用表达式（Tom Lane）</p>", "text": "让 EXPLAIN VERBOSE 显示 FunctionScan 节点中的函数调用表达式（Tom Lane）", "title": "让 EXPLAIN VERBOSE 显示 FunctionScan 节点中的函数调用表达式", "commits": [], "section": "工具操作 / EXPLAIN", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.4", "source_hash": "e6fab17c4c93ef14328104466c4cfd633fd0165aa1c3d6a35251b09ff3bb8441", "section_path": ["工具操作", "EXPLAIN"], "commit_groups": [], "identity_text": "Make EXPLAIN VERBOSE show the function call expression in a FunctionScan node (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/068", "db_id": "3046165fb2ae987fce3027c65dc818a9", "patch_ids": [], "statement_hash": "f3361ca89882bdaefdfedc56c3b11796fb8acb7f330f25d09c3a4c6f7a32f8bc", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a0766d3a68893c32", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/sql-vacuum.html\" title=\"VACUUM\"><code>VACUUM FULL VERBOSE</code></a> 和 <a href=\"/docs/9.1/sql-cluster.html\" title=\"CLUSTER\"><code>CLUSTER VERBOSE</code></a> 的输出添加更多细节（Itagaki Takahiro）</p>\n<p>新信息包括存活和死亡元组计数，以及 <code>CLUSTER</code> 是否使用索引重建。</p>", "text": "为 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多细节（Itagaki Takahiro） 新信息包括存活和死亡元组计数，以及 CLUSTER 是否使用索引重建。", "title": "为 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多细节", "commits": [], "section": "工具操作 / VACUUM", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.5", "source_hash": "686f01212bf5a0605654a99543bceeb7ba78847111b421a7e2c2baaea380be1a", "section_path": ["工具操作", "VACUUM"], "commit_groups": [], "identity_text": "Add additional details to the output of VACUUM FULL VERBOSE and CLUSTER VERBOSE (Itagaki Takahiro) New information includes the live and dead tuple count and whether CLUSTER is using an index to rebuild.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/069", "db_id": "21d3bc8b46fab1ce3fe4acadf356fc50", "patch_ids": [], "statement_hash": "ee209fb7c72d6cb32cc820cd1906d27b791cfbbda4530e55fa046e737d8f6c5b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b62c60926b2dc8fc", "cves": [], "html": "<p>防止<a href=\"/docs/9.1/maintenance.html#AUTOVACUUM\" title=\"23.1.5. 自动清理守护进程\">自动清理</a>在无法获得表锁时等待（Robert Haas）</p>\n<p>它会在稍后再次尝试清理该表。</p>", "text": "防止自动清理在无法获得表锁时等待（Robert Haas） 它会在稍后再次尝试清理该表。", "title": "防止自动清理在无法获得表锁时等待", "commits": [], "section": "工具操作 / VACUUM", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.5", "source_hash": "57f009135eb13f4d3cf50fb06aaa03a4d9a690134c7066a9dd5b98d4615358cc", "section_path": ["工具操作", "VACUUM"], "commit_groups": [], "identity_text": "Prevent autovacuum from waiting if it cannot acquire a table lock (Robert Haas) It will try to vacuum that table later.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/070", "db_id": "2b4f1e2f89ba47d474901f521c22ce76", "patch_ids": [], "statement_hash": "044d2632667e1c82748f33c5c3c3915e97946b7f0b1e12c1ed5a4059df661c8e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ccfd879b69ab9d19", "cves": [], "html": "<p>当看起来更廉价时，允许 <code>CLUSTER</code> 对表排序而不是扫描索引（Leonardo Francalanci）</p>", "text": "当看起来更廉价时，允许 CLUSTER 对表排序而不是扫描索引（Leonardo Francalanci）", "title": "当看起来更廉价时，允许 CLUSTER 对表排序而不是扫描索引", "commits": [], "section": "工具操作 / CLUSTER", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.6", "source_hash": "4a43d5159bf5ac038bb1624cdbce2fe7b16f9d4c49c35ef473aece18f5ad4b0f", "section_path": ["工具操作", "CLUSTER"], "commit_groups": [], "identity_text": "Allow CLUSTER to sort the table rather than scanning the index when it seems likely to be cheaper (Leonardo Francalanci)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/071", "db_id": "50c5b5eb1040d15966ca741c2460a8ae", "patch_ids": [], "statement_hash": "8514ead5e5950ae07a062f4994fc5d614d58e8482d94d60c33f86059f4f104f1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1ef41e488fc50806", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/gist.html\" title=\"第 53 章 GiST 索引\"><acronym>GiST</acronym> 索引</a>新增最近邻（按操作符排序）搜索（Teodor Sigaev、Tom Lane）</p>\n<p>这允许 <acronym>GiST</acronym> 索引在带 <code>LIMIT</code> 的查询中快速返回最接近的 <em><code>N</code></em> 个值。例如</p>\n<pre> SELECT * FROM places ORDER BY location &lt;-&gt; point '(101,456)' LIMIT 10;  \n</pre>\n<p>找出最接近给定目标点的十个地点。</p>", "text": "为 GiST 索引新增最近邻（按操作符排序）搜索（Teodor Sigaev、Tom Lane） 这允许 GiST 索引在带 LIMIT 的查询中快速返回最接近的 N 个值。例如 SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; 找出最接近给定目标点的十个地点。", "title": "为 GiST 索引新增最近邻（按操作符排序）搜索", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.7", "source_hash": "9a214cb10a8ee99ce750602fd5b7c1207ca9d3b48a3c857f293db6d9df9519db", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Add nearest-neighbor (order-by-operator) searching to GiST indexes (Teodor Sigaev, Tom Lane) This allows GiST indexes to quickly return the N closest values in a query with LIMIT. For example SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; finds the ten places closest to a given target point.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/072", "db_id": "3b9e645dcb29ee6426ca16f3433ceee8", "patch_ids": [], "statement_hash": "73c7724e4aaa42acc930fdfe34aab0c170ea86ea22c654cb7c4e9f8ebfc28ede", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1c83413c02a303fd", "cves": [], "html": "<p>允许 <a href=\"/docs/9.1/gin.html\" title=\"第 54 章 GIN 索引\"><acronym>GIN</acronym> 索引</a>索引空值和空字符串（Tom Lane）</p>\n<p>这允许完整的 <acronym>GIN</acronym> 索引扫描，并修复了 GIN 扫描会失败的各种极端情况。</p>", "text": "允许 GIN 索引索引空值和空字符串（Tom Lane） 这允许完整的 GIN 索引扫描，并修复了 GIN 扫描会失败的各种极端情况。", "title": "允许 GIN 索引索引空值和空字符串", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.7", "source_hash": "e7efde599b03d7f97e85f84e0430d8db54e1c9623d2c08952b987243072496ad", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Allow GIN indexes to index null and empty values (Tom Lane) This allows full GIN index scans, and fixes various corner cases in which GIN scans would fail.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/073", "db_id": "1753b71e1a86474e350593246bba395c", "patch_ids": [], "statement_hash": "69e5d0df010052be4b47043ca873ed00c64c96ae989facf91381fbfe5648c663", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b424f87e9649988c", "cves": [], "html": "<p>让 <a href=\"/docs/9.1/gin.html\" title=\"第 54 章 GIN 索引\"><acronym>GIN</acronym> 索引</a>更好地识别重复的搜索条目（Tom Lane）</p>\n<p>这降低了索引扫描的代价，尤其是在能避免不必要的全索引扫描的情况下。</p>", "text": "让 GIN 索引更好地识别重复的搜索条目（Tom Lane） 这降低了索引扫描的代价，尤其是在能避免不必要的全索引扫描的情况下。", "title": "让 GIN 索引更好地识别重复的搜索条目", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.7", "source_hash": "27d60985db39bcd045d2551d10ca8f1ffa97b0e26a56744b4ed893e7404dce9a", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Allow GIN indexes to better recognize duplicate search entries (Tom Lane) This reduces the cost of index scans, especially in cases where it avoids unnecessary full index scans.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/074", "db_id": "4004583679d1dafd6aa31b4ad7ff167e", "patch_ids": [], "statement_hash": "d4f80ad6f5b2b57781eb04083a791813d7fc58bb9f1ec1b64c1b3482f8554275", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5ef398f249e70369", "cves": [], "html": "<p>修复 <a href=\"/docs/9.1/gist.html\" title=\"第 53 章 GiST 索引\"><acronym>GiST</acronym> 索引</a>，使其完全崩溃安全（Heikki Linnakangas）</p>\n<p>此前有少数情况需要执行 <code>REINDEX</code>（你会被告知）。</p>", "text": "修复 GiST 索引，使其完全崩溃安全（Heikki Linnakangas） 此前有少数情况需要执行 REINDEX（你会被告知）。", "title": "修复 GiST 索引，使其完全崩溃安全", "commits": [], "section": "工具操作 / 索引", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.7.7", "source_hash": "db6d5ff051cf4c1e68aeb32dccd93902485d01a0a3a4a446d59220e2e557ecac", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Fix GiST indexes to be fully crash-safe (Heikki Linnakangas) Previously there were rare cases where a REINDEX would be required (you would be informed).", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/075", "db_id": "c00daf4e4e060e3bbadd8835ca877017", "patch_ids": [], "statement_hash": "d3c982631f5129180d4706e171dc96fe0943975cc104de1a676543c7aa6f5b86", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b756ba64a652481f", "cves": [], "html": "<p>允许 <code>numeric</code> 在常见情况下使用更紧凑的两字节头（Robert Haas）</p>\n<p>此前所有 <code>numeric</code> 值都使用四字节头；此变更节省了磁盘存储。</p>", "text": "允许 numeric 在常见情况下使用更紧凑的两字节头（Robert Haas） 此前所有 numeric 值都使用四字节头；此变更节省了磁盘存储。", "title": "允许 numeric 在常见情况下使用更紧凑的两字节头", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "cb2275a14535b64ed7df523788a19180d69c03d08a3d8afabb914febd97b60a4", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Allow numeric to use a more compact, two-byte header in common cases (Robert Haas) Previously all numeric values had four-byte headers; this change saves on disk storage.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/076", "db_id": "45c3a0a27b1fdd17ccc26297311b30ce", "patch_ids": [], "statement_hash": "4acee79c8fbf4cd1ad7214697a661a5ab485368d87286ad487d93707673925cb", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-84d81fbfdf6ab0e7", "cves": [], "html": "<p>新增 <code>money</code> 除以 <code>money</code> 的支持（Andy Balholm）</p>", "text": "新增 money 除以 money 的支持（Andy Balholm）", "title": "新增 money 除以 money 的支持", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "b7245829d5b06c3a3f759502a27ccd2ac35f82512fe429249427ce137afdef7b", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Add support for dividing money by money (Andy Balholm)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/077", "db_id": "0c2df16c01e41bcfc52df9b8334a0348", "patch_ids": [], "statement_hash": "79e92fee2138544a37715ef3824b3aece1e18366390f0c1e138d448e8f5c291c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fee3eae4794130b6", "cves": [], "html": "<p>允许 <code>void</code> 类型的二进制 I/O（Radoslaw Smogura）</p>", "text": "允许 void 类型的二进制 I/O（Radoslaw Smogura）", "title": "允许 void 类型的二进制 I/O", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "d423027f8dda6626c305fc9e05efd80427f4d1c1adcf71e3a167cc05cb8529bf", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Allow binary I/O on type void (Radoslaw Smogura)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/078", "db_id": "e143df5ba66149db0804bf4e9a7a5afd", "patch_ids": [], "statement_hash": "6819afcf9d83ec0275ca5ae78f8981696b3485287ff964d335e8b6f4ebf690b6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9230cb2dc0298e8d", "cves": [], "html": "<p>改进几何操作符的斜边计算（Paul Matthews）</p>\n<p>这避免了不必要的溢出，而且可能更精确。</p>", "text": "改进几何操作符的斜边计算（Paul Matthews） 这避免了不必要的溢出，而且可能更精确。", "title": "改进几何操作符的斜边计算", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "cdbd7f542b1d08985c0e59a61e355ba9c62fbe3b83469b80706fae4b693e33aa", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Improve hypotenuse calculations for geometric operators (Paul Matthews) This avoids unnecessary overflows, and may also be more accurate.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/079", "db_id": "3447c60514d93131662f342ad30f3ef5", "patch_ids": [], "statement_hash": "e6c5d50f9c26bfd2dcb878fa94e16be84bd91be2230880a346d45a4eb0686ac8", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d87d94f708b4db99", "cves": [], "html": "<p>支持对数组值做哈希（Tom Lane）</p>\n<p>这提供了额外的查询优化可能性。</p>", "text": "支持对数组值做哈希（Tom Lane） 这提供了额外的查询优化可能性。", "title": "支持对数组值做哈希", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "e945345015e2cc0f3a47f6365426ebc38b07cb39b980ef79814d2b6ee2e0581d", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Support hashing array values (Tom Lane) This provides additional query optimization possibilities.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/080", "db_id": "6cad7f66c2702645997e5bd78e9baf39", "patch_ids": [], "statement_hash": "26ac18011a030e0edcd27a6c120c6faba24e8199dd4e7daf53fd196ecd705cf3", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-45dce46638967824", "cves": [], "html": "<p>除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序（Tom Lane）</p>\n<p>如果查询可以在不排序的情况下实现，这避免了运行时可能出现的 <span>“<span>could not identify a comparison function</span>”</span> 失败。此外，<code>ANALYZE</code> 也不会尝试对这类组合类型的列使用不适当的统计收集方法。</p>", "text": "除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序（Tom Lane） 如果查询可以在不排序的情况下实现，这避免了运行时可能出现的 “could not identify a comparison function” 失败。此外，ANALYZE 也不会尝试对这类组合类型的列使用不适当的统计收集方法。", "title": "除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8", "source_hash": "40144b10f1c9c8e31baef3cd6e4a8bb0c985af8ddafc83599607126510d70d05", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Don't treat a composite type as sortable unless all its column types are sortable (Tom Lane) This avoids possible could not identify a comparison function failures at runtime, if it is possible to implement the query without sorting. Also, ANALYZE won't try to use inappropriate statistics-gathering methods for columns of such composite types.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/081", "db_id": "574a7bb0070453d2bfb13987658cc323", "patch_ids": [], "statement_hash": "d0bf2835b12df9fd12ebfb374dc7a2980b9d69ef503b1da10b2dd548c66bf2bb", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-31372590dbf93a35", "cves": [], "html": "<p>新增 <code>money</code> 与 <code>numeric</code> 之间转换的支持（Andy Balholm）</p>", "text": "新增 money 与 numeric 之间转换的支持（Andy Balholm）", "title": "新增 money 与 numeric 之间转换的支持", "commits": [], "section": "数据类型 / 类型转换", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8.3", "source_hash": "f0f4cae8863cade2bdf915855bbaf86be823819588d509671619f7f8bbdb8e01", "section_path": ["数据类型", "类型转换"], "commit_groups": [], "identity_text": "Add support for casting between money and numeric (Andy Balholm)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/082", "db_id": "f5670488c09a18c792cf132574ff0c27", "patch_ids": [], "statement_hash": "5e16b80d1597bbd79e0316f262dab990d0b6a3b462b1e780c3415e25efb25e26", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a91c35801ebede73", "cves": [], "html": "<p>新增从 <code>int4</code> 和 <code>int8</code> 到 <code>money</code> 转换的支持（Joey Adams）</p>", "text": "新增从 int4 和 int8 到 money 转换的支持（Joey Adams）", "title": "新增从 int4 和 int8 到 money 转换的支持", "commits": [], "section": "数据类型 / 类型转换", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8.3", "source_hash": "daebe7a137602378e92e43ca57c8113b3957322e5d889b99e9216d6817df6d45", "section_path": ["数据类型", "类型转换"], "commit_groups": [], "identity_text": "Add support for casting from int4 and int8 to money (Joey Adams)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/083", "db_id": "51f95ccfa742e4b98f8eb9de2000c8ab", "patch_ids": [], "statement_hash": "a41d2d4201562d83da70871f081ad36095a0547a1ad53847c1ba062be396340b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-95855211a944e8d1", "cves": [], "html": "<p>如果表是类型化表，允许把表的行类型转换为该表的超类型（Peter Eisentraut）</p>\n<p>这类似于允许把行类型转换为超表的行类型的现有机制。</p>", "text": "如果表是类型化表，允许把表的行类型转换为该表的超类型（Peter Eisentraut） 这类似于允许把行类型转换为超表的行类型的现有机制。", "title": "如果表是类型化表，允许把表的行类型转换为该表的超类型", "commits": [], "section": "数据类型 / 类型转换", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8.3", "source_hash": "a30c81ff703a486d3c27d6f1577e010bdc93bbd8ed7de1561ca3781d4b1ccee4", "section_path": ["数据类型", "类型转换"], "commit_groups": [], "identity_text": "Allow casting a table's row type to the table's supertype if it's a typed table (Peter Eisentraut) This is analogous to the existing facility that allows casting a row type to a supertable's row type.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/084", "db_id": "706980ff0e76f29ea0288fae5b9f08d7", "patch_ids": [], "statement_hash": "851f829efb85cf7e69103575562b55c33f87f864f9eb75c8c77b6bd5568f4a6a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2a5f0a86f674a9dd", "cves": [], "html": "<p>新增 <acronym>XML</acronym> 函数 <a href=\"/docs/9.1/functions-xml.html#XML-EXISTS\" title=\"9.14.2.2. XMLEXISTS\"><code>XMLEXISTS</code></a> 和 <a href=\"/docs/9.1/functions-xml.html#XML-EXISTS\" title=\"9.14.2.2. XMLEXISTS\"><code>xpath_exists()</code></a>（Mike Fowler）</p>\n<p>它们用于 XPath 匹配。</p>", "text": "新增 XML 函数 XMLEXISTS 和 xpath_exists()（Mike Fowler） 它们用于 XPath 匹配。", "title": "新增 XML 函数 XMLEXISTS 和 xpath_exists()", "commits": [], "section": "数据类型 / XML", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8.4", "source_hash": "14682a70f5b041199610dec583b5edfb777ce6726eb7a029bed8e6e2461462e3", "section_path": ["数据类型", "XML"], "commit_groups": [], "identity_text": "Add XML function XMLEXISTS and xpath_exists() functions (Mike Fowler) These are used for XPath matching.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/085", "db_id": "0a395033fcf8f29b5ef45e129bdad9a5", "patch_ids": [], "statement_hash": "5b70c9f7df94fa4fe4de0dbc8d91d6b6ebb3f0087947aed9d7308ea78cb384c2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5db20dac3b6b5afb", "cves": [], "html": "<p>新增 <acronym>XML</acronym> 函数 <a href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"><code>xml_is_well_formed()</code></a>、<a href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"><code>xml_is_well_formed_document()</code></a> 和 <a href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"><code>xml_is_well_formed_content()</code></a>（Mike Fowler）</p>\n<p>它们检查输入是否为格式正确的 <acronym>XML</acronym>。它们提供了此前只能在已弃用的 <code>contrib/xml2</code> 模块中使用的功能。</p>", "text": "新增 XML 函数 xml_is_well_formed()、xml_is_well_formed_document() 和 xml_is_well_formed_content()（Mike Fowler） 它们检查输入是否为格式正确的 XML。它们提供了此前只能在已弃用的 contrib/xml2 模块中使用的功能。", "title": "新增 XML 函数 xml_is_well_formed()、xml_is_well_formed_document() 和 xml_is_well_formed_content()", "commits": [], "section": "数据类型 / XML", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.8.4", "source_hash": "ba04b475afb7f9b24cd6fe7faa248d9328b148fbad92772fb12dc0a558f0e2b9", "section_path": ["数据类型", "XML"], "commit_groups": [], "identity_text": "Add XML functions xml_is_well_formed(), xml_is_well_formed_document(), xml_is_well_formed_content() (Mike Fowler) These check whether the input is properly-formed XML. They provide functionality that was previously available only in the deprecated contrib/xml2 module.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/086", "db_id": "a733d5efb379e8157e069bf3519dcc9e", "patch_ids": [], "statement_hash": "5b2c4e213860b248833962e519ca3cb327fe05350c1a2762e141b6b780177e7e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2b2621d2d7bc3c50", "cves": [], "html": "<p>新增 SQL 函数 <a href=\"/docs/9.1/functions-string.html#FORMAT\"><code>format(text, ...)</code></a>，其行为类似于 C 的 <code>printf()</code>（Pavel Stehule、Robert Haas）</p>\n<p>它目前支持字符串、SQL 字面量和 SQL 标识符的格式。</p>", "text": "新增 SQL 函数 format(text, ...)，其行为类似于 C 的 printf()（Pavel Stehule、Robert Haas） 它目前支持字符串、SQL 字面量和 SQL 标识符的格式。", "title": "新增 SQL 函数 format(text, ...)，其行为类似于 C 的 printf()", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9", "source_hash": "c1474d0931a7fdcaa12ad82fce29254a66c1c00ad7eca93746a126ced12355e8", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add SQL function format(text, ...), which behaves analogously to C's printf() (Pavel Stehule, Robert Haas) It currently supports formats for strings, SQL literals, and SQL identifiers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/087", "db_id": "1a00b8ec7a92f61778a22a97dff02b2a", "patch_ids": [], "statement_hash": "f88a5af8afd4eec99767d6c33a4eb1f11fccf8a684f5a70802191b22bdafe6a6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d8576850c43fb230", "cves": [], "html": "<p>新增字符串函数 <a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>concat()</code></a>、<a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>concat_ws()</code></a>、<a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>left()</code></a>、<a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>right()</code></a> 和 <a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>reverse()</code></a>（Pavel Stehule）</p>\n<p>这些改进了与其他数据库产品的兼容性。</p>", "text": "新增字符串函数 concat()、concat_ws()、left()、right() 和 reverse()（Pavel Stehule） 这些改进了与其他数据库产品的兼容性。", "title": "新增字符串函数 concat()、concat_ws()、left()、right() 和 reverse()", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9", "source_hash": "32566428dd0bd45e05f2e9b06c54f135805bd0ae3065378ce7d9cb9216b89846", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add string functions concat(), concat_ws(), left(), right(), and reverse() (Pavel Stehule) These improve compatibility with other database products.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/088", "db_id": "bd1b06fa69b33189a251e0cbfc56e22d", "patch_ids": [], "statement_hash": "2c8c68f39f91be0cb2ab1e1805032ff8f083ad4502feb6fe8ef75eac9f363d6c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-202fb0354c671d09", "cves": [], "html": "<p>新增用于读取二进制文件的函数 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-GENFILE\" title=\"表 9.62. 通用文件访问函数\"><code>pg_read_binary_file()</code></a>（Dimitri Fontaine、Itagaki Takahiro）</p>", "text": "新增用于读取二进制文件的函数 pg_read_binary_file()（Dimitri Fontaine、Itagaki Takahiro）", "title": "新增用于读取二进制文件的函数 pg_read_binary_file()", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9", "source_hash": "7db68794c9358ccb8ba059b8f33ad452bb25ba0455259526be6022a4ebbc96c7", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add function pg_read_binary_file() to read binary files (Dimitri Fontaine, Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/089", "db_id": "e67f109791f44d0da050f7e1b74a5f75", "patch_ids": [], "statement_hash": "1492420318684d84df77421de009c4fbc0dc1de8d98ddcd46a2095b4c484aac3", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-73523eccbf0043eb", "cves": [], "html": "<p>新增函数 <a href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-GENFILE\" title=\"表 9.62. 通用文件访问函数\"><code>pg_read_file()</code></a> 的单参数版本，用于读取整个文件（Dimitri Fontaine、Itagaki Takahiro）</p>", "text": "新增函数 pg_read_file() 的单参数版本，用于读取整个文件（Dimitri Fontaine、Itagaki Takahiro）", "title": "新增函数 pg_read_file() 的单参数版本，用于读取整个文件", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9", "source_hash": "0b0aed0c9d395080d3fabe68a7b19df820c23f261598622967795be9d88b2694", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add a single-parameter version of function pg_read_file() to read an entire file (Dimitri Fontaine, Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/090", "db_id": "f7d90f5108b38d52cc92e37b4bdf2660", "patch_ids": [], "statement_hash": "5c7dda494f268fb88591b8d8000070194b071492e4225b47bb5ba7847ce90ea2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-220d7c517efe33ac", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"><code>array_to_string()</code></a> 和 <a href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"><code>string_to_array()</code></a> 的三参数形式，用于控制空值处理（Pavel Stehule）</p>", "text": "新增 array_to_string() 和 string_to_array() 的三参数形式，用于控制空值处理（Pavel Stehule）", "title": "新增 array_to_string() 和 string_to_array() 的三参数形式，用于控制空值处理", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9", "source_hash": "d223639b7f595abbe2c376ba672c9bdcdec817f08d7fff7e0a991499a67366b2", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add three-parameter forms of array_to_string() and string_to_array() for null value processing control (Pavel Stehule)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/091", "db_id": "a4debb40f1001a28cc3ec851e7e01333", "patch_ids": [], "statement_hash": "3ecfebb6f6f230a6628e0a6df5949ca600d75b713b6c96e76e4d4b1016a1bec2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fe76f66b07be1f82", "cves": [], "html": "<p>新增函数 <a href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"><code>pg_describe_object()</code></a>（Alvaro Herrera）</p>\n<p>该函数用于根据 <a href=\"/docs/9.1/catalog-pg-class.html\" title=\"45.11. pg_class\"><code>pg_class</code></a> OID、对象 OID 和子对象 ID 获取描述对象的人类可读字符串。它可用于帮助解释 <a href=\"/docs/9.1/catalog-pg-depend.html\" title=\"45.18. pg_depend\"><code>pg_depend</code></a> 的内容。</p>", "text": "新增函数 pg_describe_object()（Alvaro Herrera） 该函数用于根据 pg_class OID、对象 OID 和子对象 ID 获取描述对象的人类可读字符串。它可用于帮助解释 pg_depend 的内容。", "title": "新增函数 pg_describe_object()", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.3", "source_hash": "96a2c39e4724af13d2b2c18237635bc012585aff0964cfc6440fa576f6fce39f", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Add the pg_describe_object() function (Alvaro Herrera) This function is used to obtain a human-readable string describing an object, based on the pg_class OID, object OID, and sub-object ID. It can be used to help interpret the contents of pg_depend.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/092", "db_id": "6154f90bba8b3f9b7fb50dfdcde04a20", "patch_ids": [], "statement_hash": "b16de5cdd0d68d611971430f7196cd133d89a3c9d46729c013710f4ced7ae8d1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-0dde867517272938", "cves": [], "html": "<p>更新内建操作符及其底层函数的注释（Tom Lane）</p>\n<p>旨在通过关联操作符使用的函数现在被这样注释。</p>", "text": "更新内建操作符及其底层函数的注释（Tom Lane） 旨在通过关联操作符使用的函数现在被这样注释。", "title": "更新内建操作符及其底层函数的注释", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.3", "source_hash": "054dc259cd11180ba368d34f0e187deb0006c0b3cb65559787b0826717f7779a", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Update comments for built-in operators and their underlying functions (Tom Lane) Functions that are meant to be used via an associated operator are now commented as such.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/093", "db_id": "c0e0b068b084b6da2536312e86030bd3", "patch_ids": [], "statement_hash": "3758706cb9bf45ef7142d1704a1cc6e07790c7aeb0c5ec92fb86b0356101bbaf", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-62102d33c2b1d134", "cves": [], "html": "<p>新增变量 <a href=\"/docs/9.1/runtime-config-compatible.html#GUC-QUOTE-ALL-IDENTIFIERS\"><code>quote_all_identifiers</code></a>，强制为 <code>EXPLAIN</code> 以及 <a href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"><code>pg_get_viewdef()</code></a> 等系统目录函数中的所有标识符加引号（Robert Haas）</p>\n<p>这使得把模式导出到具有不同引号规则的工具和其他数据库更加容易。</p>", "text": "新增变量 quote_all_identifiers，强制为 EXPLAIN 以及 pg_get_viewdef() 等系统目录函数中的所有标识符加引号（Robert Haas） 这使得把模式导出到具有不同引号规则的工具和其他数据库更加容易。", "title": "新增变量 quote_all_identifiers，强制为 EXPLAIN 以及 pg_get_viewdef() 等系统目录函数中的所有标识符加引号", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.3", "source_hash": "983a4ea09bfa8027758ed9cedc92800cf7184cdc81613e36349c045fc658882d", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Add variable quote_all_identifiers to force the quoting of all identifiers in EXPLAIN and in system catalog functions like pg_get_viewdef() (Robert Haas) This makes exporting schemas to tools and other databases with different quoting rules easier.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/094", "db_id": "c7d5d42c841e0ae8a59b0dc6ab030d0f", "patch_ids": [], "statement_hash": "9e962c1fe569799073b2fe0b7da5abc4d77dae4d6b04fe5ba2187af222551a74", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f5ba28d6e0ba68ef", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/infoschema-sequences.html\" title=\"34.40. sequences\"><code>information_schema.sequences</code></a> 系统视图新增列（Peter Eisentraut）</p>\n<p>此前虽然视图存在，但关于序列参数的列未实现。</p>", "text": "为 information_schema.sequences 系统视图新增列（Peter Eisentraut） 此前虽然视图存在，但关于序列参数的列未实现。", "title": "为 information_schema.sequences 系统视图新增列", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.3", "source_hash": "040d550616eac1837ae506a4fd98245cf99d3137835d1ca59de7d400e3fa5357", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Add columns to the information_schema.sequences system view (Peter Eisentraut) Previously, though the view existed, the columns about the sequence parameters were unimplemented.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/095", "db_id": "698f126bea4ae8b0bc1eab99727cae2e", "patch_ids": [], "statement_hash": "3e47cbab0c90dd2ac2de0c5c6ec595dcb137f9de0886d7f5734367aabbe6ecc9", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-7637695bd70d97b6", "cves": [], "html": "<p>允许在 <a href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-ACCESS-TABLE\" title=\"表 9.49. 访问权限查询函数\"><code>has_table_privilege()</code></a> 及相关函数中使用 <code>public</code> 作为伪角色名（Alvaro Herrera）</p>\n<p>这允许检查公共权限。</p>", "text": "允许在 has_table_privilege() 及相关函数中使用 public 作为伪角色名（Alvaro Herrera） 这允许检查公共权限。", "title": "允许在 has_table_privilege() 及相关函数中使用 public 作为伪角色名", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.3", "source_hash": "0dc410aa27e86074d23ae6de6c7eb711743a8be17ae35015daea4c227160c4a3", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Allow public as a pseudo-role name in has_table_privilege() and related functions (Alvaro Herrera) This allows checking for public permissions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/096", "db_id": "7cc1531ba3756e724e570eba814a6965", "patch_ids": [], "statement_hash": "a6a8aa5e796de1df74bdb54e7e227942848ce21c43ccea774bf0d623cb39a77f", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f29f05ea39259642", "cves": [], "html": "<p>支持视图上的 <a href=\"/docs/9.1/sql-createtrigger.html\" title=\"CREATE TRIGGER\"><code>INSTEAD OF</code></a> 触发器（Dean Rasheed）</p>\n<p>此特性可用于实现完全可更新的视图。</p>", "text": "支持视图上的 INSTEAD OF 触发器（Dean Rasheed） 此特性可用于实现完全可更新的视图。", "title": "支持视图上的 INSTEAD OF 触发器", "commits": [], "section": "函数 / 函数和触发器创建", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.9.4", "source_hash": "19335af76d00caee04bba7b3586cd94fb7c2f9b2c3ffc57e016614d002e3c89e", "section_path": ["函数", "函数和触发器创建"], "commit_groups": [], "identity_text": "Support INSTEAD OF triggers on views (Dean Rasheed) This feature can be used to implement fully updatable views.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/097", "db_id": "d552d2b953cb9c3c26d495c86069571d", "patch_ids": [], "statement_hash": "18851bda8fefd1006e5eaac95044adbf025e01df528dde82682ae847f6fe2dad", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-173f32519f1ba1f9", "cves": [], "html": "<p>为 PL/pgSQL 新增 <a href=\"/docs/9.1/plpgsql-control-structures.html#PLPGSQL-FOREACH-ARRAY\" title=\"39.6.5. 遍历数组\"><code>FOREACH IN ARRAY</code></a>（Pavel Stehule）</p>\n<p>这比此前遍历数组值元素的方法更高效也更易读。</p>", "text": "为 PL/pgSQL 新增 FOREACH IN ARRAY（Pavel Stehule） 这比此前遍历数组值元素的方法更高效也更易读。", "title": "为 PL/pgSQL 新增 FOREACH IN ARRAY", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.2", "source_hash": "f5a9ae918a5257030e8a3e3e407c7d804f7465c4cebc2a175e9098019500be64", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Add FOREACH IN ARRAY to PL/pgSQL (Pavel Stehule) This is more efficient and readable than previous methods of iterating through the elements of an array value.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/098", "db_id": "b8e61cc1057fd3248b3982c36b94e724", "patch_ids": [], "statement_hash": "c2bd472b3daa72ad0bce592d37f9de237989ccb11568c687cb597443e2b61d2a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8ac8bf030c600943", "cves": [], "html": "<p>允许在同一位置能够捕获 <code>RAISE ERROR</code> 的地方捕获无参数的 <code>RAISE</code>（Piyush Newe）</p>\n<p>先前的编码会从包含活动异常处理程序的块抛出错误。新行为与其他 DBMS 产品更一致。</p>", "text": "允许在同一位置能够捕获 RAISE ERROR 的地方捕获无参数的 RAISE（Piyush Newe） 先前的编码会从包含活动异常处理程序的块抛出错误。新行为与其他 DBMS 产品更一致。", "title": "允许在同一位置能够捕获 RAISE ERROR 的地方捕获无参数的 RAISE", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.2", "source_hash": "aca9c7a0756042291eb6f7edc989138efa766d86c904edbef9200ab9d1c339c5", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Allow RAISE without parameters to be caught in the same places that could catch a RAISE ERROR from the same location (Piyush Newe) The previous coding threw the error from the block containing the active exception handler. The new behavior is more consistent with other DBMS products.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/099", "db_id": "086b82c7a7e9b38fa3a2d2697c5b247f", "patch_ids": [], "statement_hash": "2cc337797c37381c1b7b50cd3b7c9e5eee58d12bb8ffd17d62940d3c5c644269", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-bb8bb765a1096dc9", "cves": [], "html": "<p>允许 PL/Perl 函数接受通用 record 参数（Andrew Dunstan）</p>\n<p>PL/Perl 函数现在可以声明为接受 <code>record</code> 类型。其行为与任何命名的组合类型相同。</p>", "text": "允许 PL/Perl 函数接受通用 record 参数（Andrew Dunstan） PL/Perl 函数现在可以声明为接受 record 类型。其行为与任何命名的组合类型相同。", "title": "允许 PL/Perl 函数接受通用 record 参数", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.3", "source_hash": "cf4fb1f93bc2ac7952110a6224a241a6cb90d18f5101e6f9c9d999189b33caa8", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Allow generic record arguments to PL/Perl functions (Andrew Dunstan) PL/Perl functions can now be declared to accept type record. The behavior is the same as for any named composite type.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/100", "db_id": "6d3bb73495936dffc36d31ae6597a2bf", "patch_ids": [], "statement_hash": "42268d055dc7546c5a22b37c1f8f2698fcabf315d425a7badd37ea6508c751aa", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f678679040e0ffbe", "cves": [], "html": "<p>把 PL/Perl 的数组参数转换为 Perl 数组（Alexey Klyukin、Alex Hunsaker）</p>\n<p>字符串表示仍然可用。</p>", "text": "把 PL/Perl 的数组参数转换为 Perl 数组（Alexey Klyukin、Alex Hunsaker） 字符串表示仍然可用。", "title": "把 PL/Perl 的数组参数转换为 Perl 数组", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.3", "source_hash": "a9a20ac558b683b35b05384ddcadb5d75d9a5d946201f29d4039475ae73c91a8", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Convert PL/Perl array arguments to Perl arrays (Alexey Klyukin, Alex Hunsaker) String representations are still available.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/101", "db_id": "d32eaebc904dc1760652e490998ed5a5", "patch_ids": [], "statement_hash": "a7f3c4fa3d513468f20dacf063184d71e1ecd825b6111e3a94758eecdf58f565", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f17e167243a4d07a", "cves": [], "html": "<p>把 PL/Perl 的组合类型参数转换为 Perl 哈希（Alexey Klyukin、Alex Hunsaker）</p>\n<p>字符串表示仍然可用。</p>", "text": "把 PL/Perl 的组合类型参数转换为 Perl 哈希（Alexey Klyukin、Alex Hunsaker） 字符串表示仍然可用。", "title": "把 PL/Perl 的组合类型参数转换为 Perl 哈希", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.3", "source_hash": "d0560de37ebff9d227d13e426c16175702a88a6723eb539be013479b484c3ca5", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Convert PL/Perl composite-type arguments to Perl hashes (Alexey Klyukin, Alex Hunsaker) String representations are still available.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/102", "db_id": "a830c8e03ee25aa62b5dc15fc2f1a178", "patch_ids": [], "statement_hash": "641d0aed3c281f06165fa7999aa58fbf3b0daa8fd5125fb8ad93b2eee7ef13bf", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8e089cb7e2b0488e", "cves": [], "html": "<p>为 PL/Python 新增表函数支持（Jan Urbanski）</p>\n<p>PL/Python 现在可以返回多个 <code>OUT</code> 参数和记录集。</p>", "text": "为 PL/Python 新增表函数支持（Jan Urbanski） PL/Python 现在可以返回多个 OUT 参数和记录集。", "title": "为 PL/Python 新增表函数支持", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "c91606dc89ccb789a9c9937fc35a3c842b2cbc9889cb433ca0cd4631dc87ca6f", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add table function support for PL/Python (Jan Urbanski) PL/Python can now return multiple OUT parameters and record sets.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/103", "db_id": "a026b05da4aac860f07b06258de239df", "patch_ids": [], "statement_hash": "c0de77fba5224e3c95ec50c8e1fa5d9fed804d1f1fc387502ad66247f7657cb2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ed28c9c82a1e8ded", "cves": [], "html": "<p>为 PL/Python 新增验证器（Jan Urbanski）</p>\n<p>这允许在创建函数时对 PL/Python 函数做语法检查。</p>", "text": "为 PL/Python 新增验证器（Jan Urbanski） 这允许在创建函数时对 PL/Python 函数做语法检查。", "title": "为 PL/Python 新增验证器", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "4c4c940df07f611f64dfe34b29f75772a142289057f348eeb0bd4fce67616f53", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add a validator to PL/Python (Jan Urbanski) This allows PL/Python functions to be syntax-checked at function creation time.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/104", "db_id": "5c6ad0cb8d354c7cbc9d3fe3f4c0b2d4", "patch_ids": [], "statement_hash": "d9ce8083d80313664977e2c2d326f608370d7672e2b599d060a205bf2e97f077", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f0d550d67d545341", "cves": [], "html": "<p>允许 PL/Python 中 SQL 查询的异常（Jan Urbanski）</p>\n<p>这允许从 PL/Python 异常块访问 SQL 生成的异常错误码。</p>", "text": "允许 PL/Python 中 SQL 查询的异常（Jan Urbanski） 这允许从 PL/Python 异常块访问 SQL 生成的异常错误码。", "title": "允许 PL/Python 中 SQL 查询的异常", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "9a3412b69589e7e5291f9a483a2fce8dfdd4feaac90c382b1d2004efca73fdb4", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Allow exceptions for SQL queries in PL/Python (Jan Urbanski) This allows access to SQL-generated exception error codes from PL/Python exception blocks.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/105", "db_id": "c316a7c9018468d9abc2f82747f4f92e", "patch_ids": [], "statement_hash": "36cc373cb23eff9afdffa39fa6f2f8b5a35a87fa964f3183b75775d0ed0569f1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-407720308de7dd23", "cves": [], "html": "<p>为 PL/Python 新增显式子事务（Jan Urbanski）</p>", "text": "为 PL/Python 新增显式子事务（Jan Urbanski）", "title": "为 PL/Python 新增显式子事务", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "fc1947df4219a4ae1bef1385207dad14af43bcbcc2573208ad061ba5423b9a30", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add explicit subtransactions to PL/Python (Jan Urbanski)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/106", "db_id": "5074328f12f0ec9ff7dcc79eef943cb2", "patch_ids": [], "statement_hash": "6e6cc6b4b2ddefb870d75e965bf995e210165110f55599dc2950376d0add6c8b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5d6e414e7453b55a", "cves": [], "html": "<p>为 PL/Python 新增字符串加引号函数（Jan Urbanski）</p>\n<p>这些函数是 <a href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"><code>plpy.quote_ident</code></a>、<a href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"><code>plpy.quote_literal</code></a> 和 <a href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"><code>plpy.quote_nullable</code></a>。</p>", "text": "为 PL/Python 新增字符串加引号函数（Jan Urbanski） 这些函数是 plpy.quote_ident、plpy.quote_literal 和 plpy.quote_nullable。", "title": "为 PL/Python 新增字符串加引号函数", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "3489b829037387cc8c942a1135a426c49aaec9ed7c81fe093ea302f987eac9f0", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add PL/Python functions for quoting strings (Jan Urbanski) These functions are plpy.quote_ident, plpy.quote_literal, and plpy.quote_nullable.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/107", "db_id": "f6bfc35b8ce5debceefee35c0cb148e1", "patch_ids": [], "statement_hash": "183ba6f8ffb39d79d22006c33175f78d5a603d8b28c63d6eca5ced7d607b1668", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8e5d29ce9c2da95a", "cves": [], "html": "<p>为 PL/Python 错误添加回溯信息（Jan Urbanski）</p>", "text": "为 PL/Python 错误添加回溯信息（Jan Urbanski）", "title": "为 PL/Python 错误添加回溯信息", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "09474958d407e65cf78512d379caa0464125ab89136b6426fea9c8a61f43b43b", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add traceback information to PL/Python errors (Jan Urbanski)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/108", "db_id": "83299d28b19643589dd78941e3814eaf", "patch_ids": [], "statement_hash": "c42a7e2795088ffa41d264ce1c0702e2180848bfa1e3eaa83ce1b0968ad80cd4", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-bcc9cbe2406462cf", "cves": [], "html": "<p>用 <code>PLy_elog</code> 报告迭代器的 PL/Python 错误（Jan Urbanski）</p>", "text": "用 PLy_elog 报告迭代器的 PL/Python 错误（Jan Urbanski）", "title": "用 PLy_elog 报告迭代器的 PL/Python 错误", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "3f5e1063940fd4ac154439d804c0923639e5743204a5659a876708b5256f0f92", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Report PL/Python errors from iterators with PLy_elog (Jan Urbanski)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/109", "db_id": "6f979069bb79a716b2fed8c3dab185a1", "patch_ids": [], "statement_hash": "cabdb7f0e5d7b42d44fbead5f6ea8fa3f0f9476f22acdc0b7f04c046d30b1fcb", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d520694f28c9dfdf", "cves": [], "html": "<p>修复 Python 3 的异常处理（Jan Urbanski）</p>\n<p>此前在 Python 3 下 <code>plpy</code> 中没有异常类。</p>", "text": "修复 Python 3 的异常处理（Jan Urbanski） 此前在 Python 3 下 plpy 中没有异常类。", "title": "修复 Python 3 的异常处理", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.10.4", "source_hash": "9e3c794a0e06c577a003fad4f641dbb9a3b337fe961994480390cd0fde68816d", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Fix exception handling with Python 3 (Jan Urbanski) Exception classes were previously not available in plpy under Python 3.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/110", "db_id": "79ab7adb1885f2e00d2e5e6a1e4caa67", "patch_ids": [], "statement_hash": "616e8ed3ae85ec6063f0a34df8e20a6efab76a0ad648889ddc062cb997406e97", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-43e1ef751f6c51b6", "cves": [], "html": "<p>由于<a href=\"/docs/9.1/app-createlang.html\" title=\"createlang\"><span>createlang</span></a>和<a href=\"/docs/9.1/app-droplang.html\" title=\"droplang\"><span>droplang</span></a>现在只是调用扩展命令，将其标记为已弃用（Tom Lane）</p>", "text": "由于createlang和droplang现在只是调用扩展命令，将其标记为已弃用（Tom Lane）", "title": "由于createlang和droplang现在只是调用扩展命令，将其标记为已弃用", "commits": [], "section": "客户端应用程序", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11", "source_hash": "727e40993ac05724528c17f116d5e592e83438eb7332fe4873213238e768ce50", "section_path": ["客户端应用程序"], "commit_groups": [], "identity_text": "Mark createlang and droplang as deprecated now that they just invoke extension commands (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/111", "db_id": "c148444570958b17e03d0a81e9b153e7", "patch_ids": [], "statement_hash": "81a7732d473af67c43f55ffa0cc6f3ec5d045630986a51e1b90c2379945e7ca6", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5a03a287a9542c30", "cves": [], "html": "<p>新增 <span>psql</span> 命令 <code>\\conninfo</code>，用于显示当前连接信息（David Christensen）</p>", "text": "新增 psql 命令 \\conninfo，用于显示当前连接信息（David Christensen）", "title": "新增 psql 命令 \\conninfo，用于显示当前连接信息", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "775fbce9796d2d265e9360556a2f75f04afce3bf8e6fde9097645080107c9a11", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Add psql command \\conninfo to show current connection information (David Christensen)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/112", "db_id": "3774a25a783460b1afb8ae0865e6aed6", "patch_ids": [], "statement_hash": "a09c862463b55f460f40098179face65fad83d85902e468390f119f507387560", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-31681b182fc997e7", "cves": [], "html": "<p>新增 <span>psql</span> 命令 <code>\\sf</code>，用于显示函数定义（Pavel Stehule）</p>", "text": "新增 psql 命令 \\sf，用于显示函数定义（Pavel Stehule）", "title": "新增 psql 命令 \\sf，用于显示函数定义", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "ebbb6a8cda976acbe866642c73f1a6202c3df2abbf3c7d982e613778a3303bb3", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Add psql command \\sf to show a function's definition (Pavel Stehule)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/113", "db_id": "2cb185957f8feb1230616e9398c2e1df", "patch_ids": [], "statement_hash": "aff1c75b0966cf312e9302219af4fbfe6b1882ea917e3e94dd4913e0afe3bd21", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-94425699e553bdbd", "cves": [], "html": "<p>新增 <span>psql</span> 命令 <code>\\dL</code>，用于列出语言（Fernando Ike）</p>", "text": "新增 psql 命令 \\dL，用于列出语言（Fernando Ike）", "title": "新增 psql 命令 \\dL，用于列出语言", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "7b243f49c02c1fadefdb90eaa03b11e2eb2cc9ab65d126c2768eccd0ad5bc8cd", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Add psql command \\dL to list languages (Fernando Ike)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/114", "db_id": "3a2190e88b7b26d0eff19a4e2a3036a9", "patch_ids": [], "statement_hash": "db033048f1c83411f41d47e82df65d3d914886aa012e0be42826cfc2c4e86987", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ae03be0b1a742257", "cves": [], "html": "<p>为 <span>psql</span> 的 <code>\\dn</code>（列出模式）命令新增 <code>S</code>（<span>“<span>system</span>”</span>）选项（Tom Lane）</p>\n<p>不带 <code>S</code> 的 <code>\\dn</code> 现在会隐藏系统模式。</p>", "text": "为 psql 的 \\dn（列出模式）命令新增 S（“system”）选项（Tom Lane） 不带 S 的 \\dn 现在会隐藏系统模式。", "title": "为 psql 的 \\dn（列出模式）命令新增 S（“system”）选项", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "2a85675fd72b511ef72c18a6dc305591a95bf68fa3d4231debc91d8d3ad1b7a5", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Add the S (system) option to psql's \\dn (list schemas) command (Tom Lane) \\dn without S now suppresses system schemas.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/115", "db_id": "ab98d33e31567c9a8b6f319e0900b500", "patch_ids": [], "statement_hash": "56a8209000f5228066fef2983c2cff7d853a4b2241355c03316afcce466cd28c", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-57c615465e04059b", "cves": [], "html": "<p>允许 <span>psql</span> 的 <code>\\e</code> 和 <code>\\ef</code> 命令接受行号以定位编辑器中的光标（Pavel Stehule）</p>\n<p>该行号根据 <code>PSQL_EDITOR_LINENUMBER_ARG</code> 环境变量传递给编辑器。</p>", "text": "允许 psql 的 \\e 和 \\ef 命令接受行号以定位编辑器中的光标（Pavel Stehule） 该行号根据 PSQL_EDITOR_LINENUMBER_ARG 环境变量传递给编辑器。", "title": "允许 psql 的 \\e 和 \\ef 命令接受行号以定位编辑器中的光标", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "a1ef474c71db9b5cdf576932dabec0d214289073a0ffacc4cae06d1f4f830f25", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Allow psql's \\e and \\ef commands to accept a line number to be used to position the cursor in the editor (Pavel Stehule) This is passed to the editor according to the PSQL_EDITOR_LINENUMBER_ARG environment variable.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/116", "db_id": "195584707d3b0b913e5bbd1b16e7585b", "patch_ids": [], "statement_hash": "485b0c56069d806bd1e12114be64b4f16ff5e3c2c8441fb070aa1e8ee78aa635", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-57c0cea433e45f1b", "cves": [], "html": "<p>让 <span>psql</span> 默认根据操作系统区域设置客户端编码（Heikki Linnakangas）</p>\n<p>这只在未设置 <code>PGCLIENTENCODING</code> 环境变量时发生。</p>", "text": "让 psql 默认根据操作系统区域设置客户端编码（Heikki Linnakangas） 这只在未设置 PGCLIENTENCODING 环境变量时发生。", "title": "让 psql 默认根据操作系统区域设置客户端编码", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "159b80e3ead5948e31dce5cf2bd59d7fc7970e10c52c58f3224a7629369ca636", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Have psql set the client encoding from the operating system locale by default (Heikki Linnakangas) This only happens if the PGCLIENTENCODING environment variable is not set.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/117", "db_id": "ecca4bfa0b24a39967485a0cd874edb5", "patch_ids": [], "statement_hash": "f4199ca0986712c26a772acfc974b3108b0428554788640317f478e970529b9b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fc07e13076de2e3d", "cves": [], "html": "<p>让 <code>\\d</code> 区分唯一索引和唯一约束（Josh Kupershmidt）</p>", "text": "让 \\d 区分唯一索引和唯一约束（Josh Kupershmidt）", "title": "让 \\d 区分唯一索引和唯一约束", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "c977eebc19f8e7d584232aab5a9086a3fdb865767b0dc6c8b2bc7e564443698d", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Make \\d distinguish between unique indexes and unique constraints (Josh Kupershmidt)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/118", "db_id": "3bb9d8ccba0b4c57268a4a44c6f96604", "patch_ids": [], "statement_hash": "77f85dc255f52d40dd836609aa61e5d3afd2036bfa8ace0c3871c7a45095f743", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-829080102428edf4", "cves": [], "html": "<p>让 <code>\\dt+</code> 在连接 9.0 或更高版本服务器时报告 <code>pg_table_size</code> 而不是 <code>pg_relation_size</code>（Bernd Helmle）</p>\n<p>这是更有用的表大小度量，但注意它与此前同一显示中报告的值并不相同。</p>", "text": "让 \\dt+ 在连接 9.0 或更高版本服务器时报告 pg_table_size 而不是 pg_relation_size（Bernd Helmle） 这是更有用的表大小度量，但注意它与此前同一显示中报告的值并不相同。", "title": "让 \\dt+ 在连接 9.0 或更高版本服务器时报告 pg_table_size 而不是 pg_relation_size", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "19360785d9bcad781ef52262cc03323bd017ccb9f3c310f351a9bad8dd1a67f6", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Make \\dt+ report pg_table_size instead of pg_relation_size when talking to 9.0 or later servers (Bernd Helmle) This is a more useful measure of table size, but note that it is not identical to what was previously reported in the same display.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/119", "db_id": "b8338438f03158c61ed0ffdc30ce77b8", "patch_ids": [], "statement_hash": "58001e80c4bd23a23299c69543f340896da5bb35e6584f1eb5bfe7fb3adcac40", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-21dc14cb45e4f309", "cves": [], "html": "<p>更多 Tab 补全支持（Itagaki Takahiro、Pavel Stehule、Andrey Popp、Christoph Berg、David Fetter、Josh Kupershmidt）</p>", "text": "更多 Tab 补全支持（Itagaki Takahiro、Pavel Stehule、Andrey Popp、Christoph Berg、David Fetter、Josh Kupershmidt）", "title": "更多 Tab 补全支持", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.3", "source_hash": "e8a6a6d943df5c04a902db29406a84e13370cd7b0ef41225d9eb879a3159cc0f", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Additional tab completion support (Itagaki Takahiro, Pavel Stehule, Andrey Popp, Christoph Berg, David Fetter, Josh Kupershmidt)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/120", "db_id": "a7a23a8092927dc7ed971e95718a92f6", "patch_ids": [], "statement_hash": "0ec2cb013b57ecacc8d9269c770280604b2bb9816372bf1447be79894d88dc28", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fcbbd132ee2092fe", "cves": [], "html": "<p>为<a href=\"/docs/9.1/app-pgdump.html\" title=\"pg_dump\"><span>pg_dump</span></a>和<a href=\"/docs/9.1/app-pg-dumpall.html\" title=\"pg_dumpall\"><span>pg_dumpall</span></a>新增选项 <code>--quote-all-identifiers</code>，强制为所有标识符加引号（Robert Haas）</p>", "text": "为pg_dump和pg_dumpall新增选项 --quote-all-identifiers，强制为所有标识符加引号（Robert Haas）", "title": "为pg_dump和pg_dumpall新增选项 --quote-all-identifiers，强制为所有标识符加引号", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.4", "source_hash": "09349ff8c0e7de427d57cf83723eccf7c80d8a1f2b187494f7df3cb80a5aa530", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Add pg_dump and pg_dumpall option --quote-all-identifiers to force quoting of all identifiers (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/121", "db_id": "9a0698c927e5db56a472db7e79d6fa2c", "patch_ids": [], "statement_hash": "6f021f44f43f815fa4a7812d9353ec887a8a1ccd01b5e217acecab84d3dbda98", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-4a346149bc90daae", "cves": [], "html": "<p>为 <span>pg_dump</span> 新增 <code>directory</code> 格式（Joachim Wieland、Heikki Linnakangas）</p>\n<p>它在内部类似于 <span>pg_dump</span> 的 <code>tar</code> 格式。</p>", "text": "为 pg_dump 新增 directory 格式（Joachim Wieland、Heikki Linnakangas） 它在内部类似于 pg_dump 的 tar 格式。", "title": "为 pg_dump 新增 directory 格式", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.4", "source_hash": "bf7fbeab8c64f430e36945445027512a0dcec253f3e52124a02409a1a7addd50", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Add directory format to pg_dump (Joachim Wieland, Heikki Linnakangas) This is internally similar to the tar pg_dump format.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/122", "db_id": "00a3557405e1d9bbdf46465415574192", "patch_ids": [], "statement_hash": "433d59b0ceec61fd3b21fcd9755b6dc942c0df8665efc3ee49e8f5a44bd957c2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-75d6c5b342e7ed2f", "cves": [], "html": "<p>修复 <span>pg_ctl</span>，使其不再错误地报告服务器未运行（Bruce Momjian）</p>\n<p>此前当服务器在运行但 <span>pg_ctl</span> 无法认证时可能发生这种情况。</p>", "text": "修复 pg_ctl，使其不再错误地报告服务器未运行（Bruce Momjian） 此前当服务器在运行但 pg_ctl 无法认证时可能发生这种情况。", "title": "修复 pg_ctl，使其不再错误地报告服务器未运行", "commits": [], "section": "客户端应用程序 / pg_ctl", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.5", "source_hash": "480c0f73233cb696f4c402fb27bfe9fb0ec28fa53e495f9325acc841c21617e5", "section_path": ["客户端应用程序", "pg_ctl"], "commit_groups": [], "identity_text": "Fix pg_ctl so it no longer incorrectly reports that the server is not running (Bruce Momjian) Previously this could happen if the server was running but pg_ctl could not authenticate.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/123", "db_id": "07c1f78ed3c055584fe760f448bd938e", "patch_ids": [], "statement_hash": "edf763aebf173d1acfac942d8b1875e71673cea0c64a72063eecee362c715592", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-38daddc118dbfe84", "cves": [], "html": "<p>改进 <span>pg_ctl</span> start 的<span>“<span>等待</span>”</span>（<code>-w</code>）选项（Bruce Momjian、Tom Lane）</p>\n<p>等待模式现在明显更健壮。它不会因非默认的 postmaster 端口号、非默认的 Unix 域套接字位置、权限问题或过期的 postmaster 锁文件而困惑。</p>", "text": "改进 pg_ctl start 的“等待”（-w）选项（Bruce Momjian、Tom Lane） 等待模式现在明显更健壮。它不会因非默认的 postmaster 端口号、非默认的 Unix 域套接字位置、权限问题或过期的 postmaster 锁文件而困惑。", "title": "改进 pg_ctl start 的“等待”（-w）选项", "commits": [], "section": "客户端应用程序 / pg_ctl", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.5", "source_hash": "5e936f6fd6d17bfbbbfe50957b2dab1010e67bbec5720d8892e9175201aa994f", "section_path": ["客户端应用程序", "pg_ctl"], "commit_groups": [], "identity_text": "Improve pg_ctl start's wait (-w) option (Bruce Momjian, Tom Lane) The wait mode is now significantly more robust. It will not get confused by non-default postmaster port numbers, non-default Unix-domain socket locations, permission problems, or stale postmaster lock files.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/124", "db_id": "976797f44eaa39c02dbd1295603a830e", "patch_ids": [], "statement_hash": "7f4b7ade95bcbf175b21f18eb72a1e0be27feffc0d495224e259b19d72ba7354", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-6ec743326f040b8a", "cves": [], "html": "<p>为 <span>pg_ctl</span> 新增 <code>promote</code> 选项，用于把备库切换为主库（Fujii Masao）</p>", "text": "为 pg_ctl 新增 promote 选项，用于把备库切换为主库（Fujii Masao）", "title": "为 pg_ctl 新增 promote 选项，用于把备库切换为主库", "commits": [], "section": "客户端应用程序 / pg_ctl", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.11.5", "source_hash": "84d13efb1a4b62f660013775047f3423f24c1a317bce93c3a1b6a065ce1f3048", "section_path": ["客户端应用程序", "pg_ctl"], "commit_groups": [], "identity_text": "Add promote option to pg_ctl to switch a standby server to primary (Fujii Masao)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/125", "db_id": "0c89aae9460e7ecb7bcedd4a3aad5935", "patch_ids": [], "statement_hash": "cee33d50958b625ff92801c8c0be12d9711a33ccdab636068c8b3452180d1889", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b32ae7e7fe561368", "cves": [], "html": "<p>新增 libpq 连接选项 <a href=\"/docs/9.1/libpq.html#LIBPQ-CONNECT-CLIENT-ENCODING\"><code>client_encoding</code></a>，其行为类似于 <code>PGCLIENTENCODING</code> 环境变量（Heikki Linnakangas）</p>\n<p>值 <code>auto</code> 根据操作系统区域设置客户端编码。</p>", "text": "新增 libpq 连接选项 client_encoding，其行为类似于 PGCLIENTENCODING 环境变量（Heikki Linnakangas） 值 auto 根据操作系统区域设置客户端编码。", "title": "新增 libpq 连接选项 client_encoding，其行为类似于 PGCLIENTENCODING 环境变量", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.2", "source_hash": "755bb5f13aa228e3bae1ee60e2916ce567fa3a7ffc9801afdfcde11c19fc5dea", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add a libpq connection option client_encoding which behaves like the PGCLIENTENCODING environment variable (Heikki Linnakangas) The value auto sets the client encoding based on the operating system locale.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/126", "db_id": "cbc7d96972a182cc875740851e97f7ac", "patch_ids": [], "statement_hash": "ed07e8e703d4ec6f905b05d8eb9b3511af8932691845401797b00e46e00ac2be", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-68b454b8026839b3", "cves": [], "html": "<p>新增函数 <a href=\"/docs/9.1/libpq-misc.html#LIBPQ-PQLIBVERSION\"><code>PQlibVersion()</code></a>，返回 libpq 库版本（Magnus Hagander）</p>\n<p>libpq 此前已有返回服务器版本的 <code>PQserverVersion()</code>。</p>", "text": "新增函数 PQlibVersion()，返回 libpq 库版本（Magnus Hagander） libpq 此前已有返回服务器版本的 PQserverVersion()。", "title": "新增函数 PQlibVersion()，返回 libpq 库版本", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.2", "source_hash": "7023fc3330c039df36089da49f8ce3702607b10a89849344b40324d0c288784d", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add PQlibVersion() function which returns the libpq library version (Magnus Hagander) libpq already had PQserverVersion() which returns the server version.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/127", "db_id": "a4525312867a9fe90a9e69e44928339a", "patch_ids": [], "statement_hash": "be84df203837d0144c2a377869531e52c9922a26e86fc3b6be4e5b557418ded2", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-02c1c7b830750cbb", "cves": [], "html": "<p>允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 <a href=\"/docs/9.1/libpq.html#LIBPQ-CONNECT-REQUIREPEER\"><code>requirepeer</code></a> 连接选项（Peter Eisentraut）</p>\n<p><span>PostgreSQL</span> 此前已允许服务器在通过 Unix 域套接字连接时检查客户端用户名。</p>", "text": "允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 requirepeer 连接选项（Peter Eisentraut） PostgreSQL 此前已允许服务器在通过 Unix 域套接字连接时检查客户端用户名。", "title": "允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 requirepeer 连接选项", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.2", "source_hash": "29e5bb7fd41c4edaebc5845871d471e23bbdcf1ccac54929692de7064c8ec5ba", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Allow libpq-using clients to check the user name of the server process when connecting via Unix-domain sockets, with the new requirepeer connection option (Peter Eisentraut) PostgreSQL already allowed servers to check the client user name when connecting via Unix-domain sockets.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/128", "db_id": "48d5728d20fa3d236742b65e22c2b91e", "patch_ids": [], "statement_hash": "ac8901e11203f09fe1acba97c0d5e7223dcf9d276ee8a4298a68b9333a40b5c5", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c42c22a81a81e1ff", "cves": [], "html": "<p>为 libpq 新增 <a href=\"/docs/9.1/libpq.html#LIBPQ-PQPING\"><code>PQping()</code></a> 和 <a href=\"/docs/9.1/libpq.html#LIBPQ-PQPINGPARAMS\"><code>PQpingParams()</code></a>（Bruce Momjian、Tom Lane）</p>\n<p>这些函数允许在不尝试打开新会话的情况下检测服务器状态。</p>", "text": "为 libpq 新增 PQping() 和 PQpingParams()（Bruce Momjian、Tom Lane） 这些函数允许在不尝试打开新会话的情况下检测服务器状态。", "title": "为 libpq 新增 PQping() 和 PQpingParams()", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.2", "source_hash": "5667eff5794ad0a879fdcf46a01f85eb06692e9ccd43fff2c049d2d5b41017b2", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add PQping() and PQpingParams() to libpq (Bruce Momjian, Tom Lane) These functions allow detection of the server's status without trying to open a new session.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/129", "db_id": "ab344a5afb2feb2f48772759b1d07739", "patch_ids": [], "statement_hash": "09bc678360b3d1699a5620d8d9953ea3448acca39a41f8acb3c52d08d59da08a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-92ee5f70c743f8c6", "cves": [], "html": "<p>允许 ECPG 即使在 <code>WHERE CURRENT OF</code> 子句中也接受动态游标名（Zoltan Boszormenyi）</p>", "text": "允许 ECPG 即使在 WHERE CURRENT OF 子句中也接受动态游标名（Zoltan Boszormenyi）", "title": "允许 ECPG 即使在 WHERE CURRENT OF 子句中也接受动态游标名", "commits": [], "section": "Development Tools / ECPG", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.3", "source_hash": "1c746fa272c4e49abec3f4d2e4c4dcbd3dcc449e674e5a89f19fbedb50f414cf", "section_path": ["Development Tools", "ECPG"], "commit_groups": [], "identity_text": "Allow ECPG to accept dynamic cursor names even in WHERE CURRENT OF clauses (Zoltan Boszormenyi)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/130", "db_id": "0a8c38feeb1a6aef53957985aa83215e", "patch_ids": [], "statement_hash": "b13f10fbedaa34aa33bdf677edb1817c0dd2e01c94abf20da351648b98c6ccb9", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-60c2b323b37fa515", "cves": [], "html": "<p>让 <span>ecpglib</span> 以 15 位精度写 <code>double</code> 值，而不是此前的 14 位（Akira Kurosawa）</p>", "text": "让 ecpglib 以 15 位精度写 double 值，而不是此前的 14 位（Akira Kurosawa）", "title": "让 ecpglib 以 15 位精度写 double 值，而不是此前的 14 位", "commits": [], "section": "Development Tools / ECPG", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.12.3", "source_hash": "8cbc39c7094761dd1b3a8b53f47ee767373324aee7efef695ae5d40347db17a9", "section_path": ["Development Tools", "ECPG"], "commit_groups": [], "identity_text": "Make ecpglib write double values with a precision of 15 digits, not 14 as formerly (Akira Kurosawa)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/131", "db_id": "a756f2f7e22bad18b34b0100652a98aa", "patch_ids": [], "statement_hash": "61ecbd190aefb5327060fbc465d1dd2111ae5186abb3fdc6777381d2ea54c3d0", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-b9d9bdf7669d5353", "cves": [], "html": "<p>对接受它的 HP-UX C 编译器使用 <code>+Olibmerrno</code> 编译标志（Ibrar Ahmed）</p>\n<p>这避免了较新 HP 平台上数学库调用可能的不当行为。</p>", "text": "对接受它的 HP-UX C 编译器使用 +Olibmerrno 编译标志（Ibrar Ahmed） 这避免了较新 HP 平台上数学库调用可能的不当行为。", "title": "对接受它的 HP-UX C 编译器使用 +Olibmerrno 编译标志", "commits": [], "section": "构建选项", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13", "source_hash": "12d36ab7bcbbc8ba9e70b5ef04820c971d5da0e1a459b06b5312c16cf3dce311", "section_path": ["构建选项"], "commit_groups": [], "identity_text": "Use +Olibmerrno compile flag with HP-UX C compilers that accept it (Ibrar Ahmed) This avoids possible misbehavior of math library calls on recent HP platforms.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/132", "db_id": "23544ae7cf22eef4a4cf8e8c95c93fae", "patch_ids": [], "statement_hash": "693ad5c796bfbf915b88068f78d795dbf78e51912cdd08d0285ef2613f0dc1dd", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a4f282ace9e10eda", "cves": [], "html": "<p>改进的并行 make 支持（Peter Eisentraut）</p>\n<p>这使编译更快。此外，<code>make -k</code> 现在工作得更一致。</p>", "text": "改进的并行 make 支持（Peter Eisentraut） 这使编译更快。此外，make -k 现在工作得更一致。", "title": "改进的并行 make 支持", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.3", "source_hash": "e8e37cb21401fdfc9c58e80fcb8f14041f85f580e540fd5cf9695eb4a3365966", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Improved parallel make support (Peter Eisentraut) This allows for faster compiles. Also, make -k now works more consistently.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/133", "db_id": "79b51d5ad81b6c511a38646c44bde07d", "patch_ids": [], "statement_hash": "d6c989f87fb7940683c836de8a83e3837c7e15dd06131550f3761217471ac005", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-125e6bc8c8806efd", "cves": [], "html": "<p>要求 <acronym>GNU</acronym> <a href=\"/docs/9.1/install-requirements.html\" title=\"15.2. 需求\"><span>make</span></a> 3.80 或更新版本（Peter Eisentraut）</p>\n<p>由于并行 make 的改进，这是必要的。</p>", "text": "要求 GNU make 3.80 或更新版本（Peter Eisentraut） 由于并行 make 的改进，这是必要的。", "title": "要求 GNU make 3.80 或更新版本", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.3", "source_hash": "78de2b2b9b4b160d51b1fb4457bbcafdc9abe70ebf35e2a59a25880e42624ed1", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Require GNU make 3.80 or newer (Peter Eisentraut) This is necessary because of the parallel-make improvements.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/134", "db_id": "1d919f3d25092be0f0f8741425f00d66", "patch_ids": [], "statement_hash": "75c9a1a0ebfecb7aebe9f5b10677907b993f4cd413a818ab8673a07f713f9be1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8ca3a8b46970a8fa", "cves": [], "html": "<p>新增 <code>make maintainer-check</code> 目标（Peter Eisentraut）</p>\n<p>该目标执行各种既不适合构建也不适合回归测试的源代码检查。目前包括：duplicate_oids、SGML 语法和制表符检查、NLS 语法检查。</p>", "text": "新增 make maintainer-check 目标（Peter Eisentraut） 该目标执行各种既不适合构建也不适合回归测试的源代码检查。目前包括：duplicate_oids、SGML 语法和制表符检查、NLS 语法检查。", "title": "新增 make maintainer-check 目标", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.3", "source_hash": "b10a3e7ede1f6b39e69308562e64158d8bfa441483a0f9d987125bbb4e354241", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Add make maintainer-check target (Peter Eisentraut) This target performs various source code checks that are not appropriate for either the build or the regression tests. Currently: duplicate_oids, SGML syntax and tabs check, NLS syntax check.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/135", "db_id": "a68b8ef27be32de12eaf00b40642a61a", "patch_ids": [], "statement_hash": "9d9fbaaeec3c0750113f3872e112cc73a119ea6b3059666af29726cee4a6f665", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2d97f3e20a7634bf", "cves": [], "html": "<p>在 <code>contrib</code> 中支持 <code>make check</code>（Peter Eisentraut）</p>\n<p>此前只有 <code>make installcheck</code> 可用，但现在支持在临时安装中测试。顶层的 <code>make check-world</code> 目标现在包括以这种方式测试 <code>contrib</code>。</p>", "text": "在 contrib 中支持 make check（Peter Eisentraut） 此前只有 make installcheck 可用，但现在支持在临时安装中测试。顶层的 make check-world 目标现在包括以这种方式测试 contrib。", "title": "在 contrib 中支持 make check", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.3", "source_hash": "88e03d1babd2b7cbaddc36e8b3e41163ff56f9b193e06b5f276147f71681d232", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Support make check in contrib (Peter Eisentraut) Formerly only make installcheck worked, but now there is support for testing in a temporary installation. The top-level make check-world target now includes testing contrib this way.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/136", "db_id": "c77a4126229b2d6458ed6546728fbd43", "patch_ids": [], "statement_hash": "067cf68f7583b3899588ff284ed60e1f5b0877202050b0c77ddc6c35ca9157ee", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3b39e7fdbf7f7e1f", "cves": [], "html": "<p>在 Windows 上，允许<a href=\"/docs/9.1/app-pg-ctl.html\" title=\"pg_ctl\"><span>pg_ctl</span></a>把服务注册为自动启动或按需启动（Quan Zongliang）</p>", "text": "在 Windows 上，允许pg_ctl把服务注册为自动启动或按需启动（Quan Zongliang）", "title": "在 Windows 上，允许pg_ctl把服务注册为自动启动或按需启动", "commits": [], "section": "构建选项 / Windows", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.4", "source_hash": "f3a75ae79d122fc35035dd2e8eaf8ee348e814f9d406655dcdfb965912747130", "section_path": ["构建选项", "Windows"], "commit_groups": [], "identity_text": "On Windows, allow pg_ctl to register the service as auto-start or start-on-demand (Quan Zongliang)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/137", "db_id": "3d5d42bfccee5b9263b95d56f6a30139", "patch_ids": [], "statement_hash": "7f3ea2850abeeb36e9ac63b3d8a91b41daf6f0e6cb4627cb586c47b2e8b0e9ad", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-908994ab32ae15fd", "cves": [], "html": "<p>新增在 Windows 上收集<a href=\"/docs/9.1/installation-platform-notes.html#WINDOWS-CRASH-DUMPS\" title=\"15.7.5.1. 在 Windows 上收集崩溃转储\">崩溃转储</a>的支持（Craig Ringer、Magnus Hagander）</p>\n<p>现在可以由非调试的 Windows 二进制生成 <span>minidumps</span>，并用标准调试工具分析。</p>", "text": "新增在 Windows 上收集崩溃转储的支持（Craig Ringer、Magnus Hagander） 现在可以由非调试的 Windows 二进制生成 minidumps，并用标准调试工具分析。", "title": "新增在 Windows 上收集崩溃转储的支持", "commits": [], "section": "构建选项 / Windows", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.4", "source_hash": "97d483e39c2a228c25e83753219e359686bebb9cae2d4862be5b77a877f00250", "section_path": ["构建选项", "Windows"], "commit_groups": [], "identity_text": "Add support for collecting crash dumps on Windows (Craig Ringer, Magnus Hagander) minidumps can now be generated by non-debug Windows binaries and analyzed by standard debugging tools.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/138", "db_id": "97159fbf049ff91b3047805c7fe67b57", "patch_ids": [], "statement_hash": "2355c0cfd404af7c6b09c5a553887d5f2752b5684d10310fd19c3cd2d341b0c5", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1297c57fe6b30d8a", "cves": [], "html": "<p>支持使用 MinGW64 编译器构建（Andrew Dunstan）</p>\n<p>这允许通过交叉编译即使在非 Windows 平台上也能构建 64 位 Windows 二进制。</p>", "text": "支持使用 MinGW64 编译器构建（Andrew Dunstan） 这允许通过交叉编译即使在非 Windows 平台上也能构建 64 位 Windows 二进制。", "title": "支持使用 MinGW64 编译器构建", "commits": [], "section": "构建选项 / Windows", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.13.4", "source_hash": "07ea3e20a5aceef8425aec0bc691da2aa8b5c196c3aea046a02bbc613c3ed872", "section_path": ["构建选项", "Windows"], "commit_groups": [], "identity_text": "Enable building with the MinGW64 compiler (Andrew Dunstan) This allows building 64-bit Windows binaries even on non-Windows platforms via cross-compiling.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/139", "db_id": "a408e70a99c9791596bd9e467425a301", "patch_ids": [], "statement_hash": "7abc28131973e11c63fe3e5d42f029aa346710e805a82109f061e75feb543816", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3834cf21f924dfd7", "cves": [], "html": "<p>修订 GUC 变量赋值钩子的 API（Tom Lane）</p>\n<p>此前赋值钩子的职能现在拆分到检查钩子和赋值钩子之间，前者可以失败而后者不应失败。此变更会影响定义自定义 GUC 参数的附加模块。</p>", "text": "修订 GUC 变量赋值钩子的 API（Tom Lane） 此前赋值钩子的职能现在拆分到检查钩子和赋值钩子之间，前者可以失败而后者不应失败。此变更会影响定义自定义 GUC 参数的附加模块。", "title": "修订 GUC 变量赋值钩子的 API", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "d2a5a8c9d2691639c3203652b48edc138bc263664b7aa213a7fef4c2239ec715", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Revise the API for GUC variable assign hooks (Tom Lane) The previous functions of assign hooks are now split between check hooks and assign hooks, where the former can fail but the latter shouldn't. This change will impact add-on modules that define custom GUC parameters.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/140", "db_id": "abdde0b68461c4e75e1fce0ed6a59149", "patch_ids": [], "statement_hash": "84c13ad079f89927f983b448d6d1efa37376dd315ffa9550cce6333f4df78c69", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5b2b9928138eebf0", "cves": [], "html": "<p>在源代码中新增闩锁以支持等待事件（Heikki Linnakangas）</p>", "text": "在源代码中新增闩锁以支持等待事件（Heikki Linnakangas）", "title": "在源代码中新增闩锁以支持等待事件", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "cb44c77fc4d861ad6be5d14974955c8659b107b391de0b6c9aa64add4d32460c", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add latches to the source code to support waiting for events (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/141", "db_id": "e963b4b0114a698bc985a96420e43f45", "patch_ids": [], "statement_hash": "e9c8847bd479d0636f154626d8d0100abc1d9413193d99bef3b4efd05f346396", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1c9ca7cfc872b05b", "cves": [], "html": "<p>集中化数据修改权限检查逻辑（KaiGai Kohei）</p>", "text": "集中化数据修改权限检查逻辑（KaiGai Kohei）", "title": "集中化数据修改权限检查逻辑", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "db3847ac3339d43e48304a8086023c87ae2a47490860d2be371d0ab55fdb8128", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Centralize data modification permissions-checking logic (KaiGai Kohei)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/142", "db_id": "a6e0b24cd6c856fbfbb79a45c073e576", "patch_ids": [], "statement_hash": "3635d2f1f414e954640b9d06e586c1a333a2f4e80f7bb1da4f2eebd4639cf812", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c1b32d2801ea625d", "cves": [], "html": "<p>为一致性补齐缺失的 <code>get_<em><code>object</code></em>_oid()</code> 函数（Robert Haas）</p>", "text": "为一致性补齐缺失的 get_object_oid() 函数（Robert Haas）", "title": "为一致性补齐缺失的 get_object_oid() 函数", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "2abdd091b0bd157a00ebd01b70fc484a61779caa295927189b1f2ec91323bbd0", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add missing get_object_oid() functions, for consistency (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/143", "db_id": "c88756c928519caabdd67a030a770c53", "patch_ids": [], "statement_hash": "da8b8febb38096c58312c16b1cd0cbe18e35acfb8542fafec5e2fce1f80f96ce", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-6f901aa01690b539", "cves": [], "html": "<p>通过移除冲突的关键字，改进使用 C++ 编译器<a href=\"/docs/9.1/xfunc-c.html\" title=\"35.9. C 语言函数\">编译附加模块</a>的能力（Tom Lane）</p>", "text": "通过移除冲突的关键字，改进使用 C++ 编译器编译附加模块的能力（Tom Lane）", "title": "通过移除冲突的关键字，改进使用 C++ 编译器编译附加模块的能力", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "43f13099e7dccb5adfca361ef685d2a5c216306d0e9160f4c95a190da11803fc", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve ability to use C++ compilers for compiling add-on modules by removing conflicting key words (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/144", "db_id": "ff68590397c11ecd5c30bb47f5b824ba", "patch_ids": [], "statement_hash": "2cd1f658105e88eb20400f121c6313a4ec7f5d9ddfb9a051c6e9f9431aeead19", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f0161a6145f6a304", "cves": [], "html": "<p>新增对 DragonFly <acronym>BSD</acronym> 的支持（Rumko）</p>", "text": "新增对 DragonFly BSD 的支持（Rumko）", "title": "新增对 DragonFly BSD 的支持", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "26bc3a385f6af21c1d61c93153ac49550097898fb09ab68a8cad7f1599ce5080", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add support for DragonFly BSD (Rumko)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/145", "db_id": "374043264a4688c6ace732fd4c532e6e", "patch_ids": [], "statement_hash": "7906ed25f822249a69262a2d0828a211d1b224191366c3ff2a9b023baac486ee", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d61ce4934702f1c8", "cves": [], "html": "<p>为后端使用公开 <code>quote_literal_cstr()</code>（Robert Haas）</p>", "text": "为后端使用公开 quote_literal_cstr()（Robert Haas）", "title": "为后端使用公开 quote_literal_cstr()", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "f8e82279be5c74a601fc81bb600547bf9979c5ed844a25271df7bf61819e989b", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Expose quote_literal_cstr() for backend use (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/146", "db_id": "c608634aac6a08b9275c17a56b37f26e", "patch_ids": [], "statement_hash": "410684c0f871667952cb3a65b549e6ed9412bc357a100d86375cca9e90d86c9d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1e801b7d7af077d6", "cves": [], "html": "<p>以默认编码运行<a href=\"/docs/9.1/install-procedure.html#BUILD\" title=\"构建\">回归测试</a>（Peter Eisentraut）</p>\n<p>回归测试此前总是以 <code>SQL_ASCII</code> 编码运行。</p>", "text": "以默认编码运行回归测试（Peter Eisentraut） 回归测试此前总是以 SQL_ASCII 编码运行。", "title": "以默认编码运行回归测试", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "6e6fdd6eaf5c20f263d2d4d6ba6cb30955829edb32894b55c6012ca8e152e94b", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Run regression tests in the default encoding (Peter Eisentraut) Regression tests were previously always run with SQL_ASCII encoding.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/147", "db_id": "8b724a6854f616263487a1f6dc9408a1", "patch_ids": [], "statement_hash": "7957d8dd6af758ae9f27da692e1c9c8237b94c7157ab57e1f8ba8b93d61010d5", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-a03d72b3cda13688", "cves": [], "html": "<p>新增 <span>src/tools/git_changelog</span> 以取代 <span>cvs2cl</span> 和 <span>pgcvslog</span>（Robert Haas、Tom Lane）</p>", "text": "新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog（Robert Haas、Tom Lane）", "title": "新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "82d29652a6eb2227bfb3a7724be6da31f39ab79adf80dc588a84e59398783ff7", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add src/tools/git_changelog to replace cvs2cl and pgcvslog (Robert Haas, Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/148", "db_id": "3fe80ae466f3478378790a7943839bf7", "patch_ids": [], "statement_hash": "9aa210689ffce7d5456a517c088ceafc735323ea47fb2462a0e76a50b62369dc", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-24e20dd3e2743954", "cves": [], "html": "<p>向 <code>src/tools</code> 添加 <span>git-external-diff</span> 脚本（Bruce Momjian）</p>\n<p>它用于从 git 生成上下文差异。</p>", "text": "向 src/tools 添加 git-external-diff 脚本（Bruce Momjian） 它用于从 git 生成上下文差异。", "title": "向 src/tools 添加 git-external-diff 脚本", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "e331cdeb430dac8b8e953eaf651636e1868235c0a8d3a22aed8061dc65b72244", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add git-external-diff script to src/tools (Bruce Momjian) This is used to generate context diffs from git.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/149", "db_id": "68db8fc532c257e6acb7bcbaee67cfc2", "patch_ids": [], "statement_hash": "7afd04e80391c46b7f2fc78bae2690aae8b2ec4923f00b12e41b7ebff46fabe1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1eab2c518218aeae", "cves": [], "html": "<p>改进对使用 <span>Clang</span> 构建的支持（Peter Eisentraut）</p>", "text": "改进对使用 Clang 构建的支持（Peter Eisentraut）", "title": "改进对使用 Clang 构建的支持", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14", "source_hash": "6b03b5f7908cd8ada4adabc221dfaa1ce7a45498c31c12179979874804ce020d", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve support for building with Clang (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/150", "db_id": "b836a69b91feffe321d306ca14067a6f", "patch_ids": [], "statement_hash": "2875d2ee48722150fbdd201dd0becf5e2036ebdd62dfd479f22738d478937bec", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-32530d727c2969f1", "cves": [], "html": "<p>新增用于检查权限的源代码钩子（Robert Haas、Stephen Frost）</p>", "text": "新增用于检查权限的源代码钩子（Robert Haas、Stephen Frost）", "title": "新增用于检查权限的源代码钩子", "commits": [], "section": "源代码 / 服务器钩子", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14.3", "source_hash": "5343e8425e16fc8f0ea49c7cf6be1602e1bedc1e42dc736f6d581cf00aadd3ba", "section_path": ["源代码", "服务器钩子"], "commit_groups": [], "identity_text": "Add source code hooks to check permissions (Robert Haas, Stephen Frost)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/151", "db_id": "928f9df79560d96ff196439468afc2b3", "patch_ids": [], "statement_hash": "cce626524fd8ef41d88b10e7716a84bf216da15ca7f66b7dd5c036cf157e21f4", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5564df46a95c48eb", "cves": [], "html": "<p>新增供安全框架使用的对象创建后函数钩子（KaiGai Kohei）</p>", "text": "新增供安全框架使用的对象创建后函数钩子（KaiGai Kohei）", "title": "新增供安全框架使用的对象创建后函数钩子", "commits": [], "section": "源代码 / 服务器钩子", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14.3", "source_hash": "4fa23d0b2ae712b4de786685f27f52a8d40806928532687c49e751032d5fb68f", "section_path": ["源代码", "服务器钩子"], "commit_groups": [], "identity_text": "Add post-object-creation function hooks for use by security frameworks (KaiGai Kohei)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/152", "db_id": "b73992aa0b550ecee458f36b69ce410f", "patch_ids": [], "statement_hash": "6f6ac2eeeaca82ec44450db87f00f949610d37ef1535dc6b829b703c64feeccb", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c3113b8224137e82", "cves": [], "html": "<p>新增客户端认证钩子（KaiGai Kohei）</p>", "text": "新增客户端认证钩子（KaiGai Kohei）", "title": "新增客户端认证钩子", "commits": [], "section": "源代码 / 服务器钩子", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.14.3", "source_hash": "b4db43a7745a0396f0a550c36581c4731f1a8e396e9bafa122dbce99c52e12af", "section_path": ["源代码", "服务器钩子"], "commit_groups": [], "identity_text": "Add a client authentication hook (KaiGai Kohei)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/153", "db_id": "f25032ba732a5bcb068de1762706f23e", "patch_ids": [], "statement_hash": "ed526884a54a79d15fdd6681f140ea719709e81f2bdd38eeb0f749a8242586de", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e143a3e964d2fb95", "cves": [], "html": "<p>修改 <code>contrib</code> 模块和过程语言，使其通过新的<a href=\"/docs/9.1/extend-extensions.html\" title=\"35.15. 将相关对象打包成扩展\">扩展</a>机制安装（Tom Lane、Dimitri Fontaine）</p>", "text": "修改 contrib 模块和过程语言，使其通过新的扩展机制安装（Tom Lane、Dimitri Fontaine）", "title": "修改 contrib 模块和过程语言，使其通过新的扩展机制安装", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "3a6ef66826782639a5fca3aed416ade36c4582b7eb04c5b72dfa9439ec795706", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Modify contrib modules and procedural languages to install via the new extension mechanism (Tom Lane, Dimitri Fontaine)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/154", "db_id": "4daa64fc121c85a99097a297b1fd0db1", "patch_ids": [], "statement_hash": "4454423993a4aee92dd99836a3ea325356ba88dcc0f467e569bca054fed1f5d1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3a8d9e62806aff1f", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/file-fdw.html\" title=\"F.14. file_fdw\"><code>contrib/file_fdw</code></a> 外部数据包装器（Shigeru Hanada）</p>\n<p>使用这个外部数据包装器的外部表可以以非常类似于 <code>COPY</code> 的方式读取平面文件。</p>", "text": "新增 contrib/file_fdw 外部数据包装器（Shigeru Hanada） 使用这个外部数据包装器的外部表可以以非常类似于 COPY 的方式读取平面文件。", "title": "新增 contrib/file_fdw 外部数据包装器", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "b54f81c75792fd7888cabe718b4c0cbc4a6e87741a7fbc67bbe9224e8463a2fd", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add contrib/file_fdw foreign-data wrapper (Shigeru Hanada) Foreign tables using this foreign data wrapper can read flat files in a manner very similar to COPY.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/155", "db_id": "c988248ac035c8a8681e7abf9d2f6ad0", "patch_ids": [], "statement_hash": "ac07b9a361885ca4a9a7a8a70253fcfe7ac5de5928f3e18592e0fefc06af88ef", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f4bf4783ad1d8a78", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/pgtrgm.html\" title=\"F.35. pg_trgm\"><code>contrib/pg_trgm</code></a> 和 <a href=\"/docs/9.1/btree-gist.html\" title=\"F.5. btree_gist\"><code>contrib/btree_gist</code></a> 新增最近邻搜索支持（Teodor Sigaev）</p>", "text": "为 contrib/pg_trgm 和 contrib/btree_gist 新增最近邻搜索支持（Teodor Sigaev）", "title": "为 contrib/pg_trgm 和 contrib/btree_gist 新增最近邻搜索支持", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "bc13b7b47aebdd4dd91f12fdd364106f52d37a9a5671f1b443f5e6d0cf8575ee", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add nearest-neighbor search support to contrib/pg_trgm and contrib/btree_gist (Teodor Sigaev)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/156", "db_id": "726fb5f7c000b9010429d43bd40d1418", "patch_ids": [], "statement_hash": "ae2fba67a892d6a322775785bbbd8869c0eb120a097a5fda984ecd45e3a8c63f", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-da2a9e8db52aaf2e", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/btree-gist.html\" title=\"F.5. btree_gist\"><code>contrib/btree_gist</code></a> 新增不相等搜索支持（Jeff Davis）</p>", "text": "为 contrib/btree_gist 新增不相等搜索支持（Jeff Davis）", "title": "为 contrib/btree_gist 新增不相等搜索支持", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "47865c58795211607ccd3c20d9c51e029a63b715b9d60292e7157cbb28daf45e", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add contrib/btree_gist support for searching on not-equals (Jeff Davis)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/157", "db_id": "c3a425f1409da0fe6a3447dd4981d812", "patch_ids": [], "statement_hash": "f350aa16f3d4d8df37dec2bb41aa4ce371b2c6a047f558866a7ccc2a57252c6a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-25429a59b242ee3a", "cves": [], "html": "<p>修复 <a href=\"/docs/9.1/fuzzystrmatch.html\" title=\"F.15. fuzzystrmatch — 确定字符串的相似性和距离\"><code>contrib/fuzzystrmatch</code></a> 的 <code>levenshtein()</code> 函数，使其处理多字节字符（Alexander Korotkov）</p>", "text": "修复 contrib/fuzzystrmatch 的 levenshtein() 函数，使其处理多字节字符（Alexander Korotkov）", "title": "修复 contrib/fuzzystrmatch 的 levenshtein() 函数，使其处理多字节字符", "commits": [], "section": "附加模块", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "662b5dc6888245a843fad624b7bf57b69f03358207e1fb566c5de66fa464c068", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Fix contrib/fuzzystrmatch's levenshtein() function to handle multibyte characters (Alexander Korotkov)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/158", "db_id": "00592fedf4e904c9885e70048349077d", "patch_ids": [], "statement_hash": "e3053864f258c5df2aa26550b04890005a440ec50df5e6123d5f312f3eabad05", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5185dd1dd0604eba", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/sslinfo.html\" title=\"F.40. sslinfo\"><code>contrib/sslinfo</code></a> 新增 <code>ssl_cipher()</code> 和 <code>ssl_version()</code> 函数（Robert Haas）</p>", "text": "为 contrib/sslinfo 新增 ssl_cipher() 和 ssl_version() 函数（Robert Haas）", "title": "为 contrib/sslinfo 新增 ssl_cipher() 和 ssl_version() 函数", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "a795e97e24e7f8139b714fc43c6ca8be40344c58f4543da496f1cb13c9d3f204", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add ssl_cipher() and ssl_version() functions to contrib/sslinfo (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/159", "db_id": "3ab10e50f1f125f98b3eb485ab8127ff", "patch_ids": [], "statement_hash": "74ea7aae0429042dce7e71cad0ed1b4fc1aa583f0ad7e10160def9726b05954a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c50c7a146e345436", "cves": [], "html": "<p>修复 <a href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"><code>contrib/intarray</code></a> 和 <a href=\"/docs/9.1/hstore.html\" title=\"F.16. hstore\"><code>contrib/hstore</code></a>，使其对索引的空数组给出一致结果（Tom Lane）</p>\n<p>此前使用索引的空数组查询可能返回与使用顺序扫描不同的结果。</p>", "text": "修复 contrib/intarray 和 contrib/hstore，使其对索引的空数组给出一致结果（Tom Lane） 此前使用索引的空数组查询可能返回与使用顺序扫描不同的结果。", "title": "修复 contrib/intarray 和 contrib/hstore，使其对索引的空数组给出一致结果", "commits": [], "section": "附加模块", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "8ae1d6b57e73cdf4f74287b47fce19757e8510c93f9e891da7ee78c14aa951e4", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Fix contrib/intarray and contrib/hstore to give consistent results with indexed empty arrays (Tom Lane) Previously an empty-array query that used an index might return different results from one that used a sequential scan.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/160", "db_id": "b0337827ce458c7f56ec95dccbef8370", "patch_ids": [], "statement_hash": "4f4c5637f0c89f7be943c0ff4f20405101bb948c374212d64d7d5d94fd428769", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d8122d2a218f31a1", "cves": [], "html": "<p>让 <a href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"><code>contrib/intarray</code></a> 在多维数组上正确工作（Tom Lane）</p>", "text": "让 contrib/intarray 在多维数组上正确工作（Tom Lane）", "title": "让 contrib/intarray 在多维数组上正确工作", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "4847e6e87ec1a1429ab9bf53f643579aed477b1c681017ccfe468779be62d6ba", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Allow contrib/intarray to work properly on multidimensional arrays (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/161", "db_id": "3fc0895988398bb38d6b3ae25a4e6ebc", "patch_ids": [], "statement_hash": "fd43ec46dc6d8783d52cd447efed2d38f5a0c2c8d0d092d2c75a3122d5fefc2d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5c93b075131cd06a", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"><code>contrib/intarray</code></a> 中，避免在实际不存在空值的场合报错抱怨存在空值（Tom Lane）</p>", "text": "在 contrib/intarray 中，避免在实际不存在空值的场合报错抱怨存在空值（Tom Lane）", "title": "在 contrib/intarray 中，避免在实际不存在空值的场合报错抱怨存在空值", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "3869729aee8d508b1bedeb797a5943f988c85c431078dff335ef7b874beefeaa", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "In contrib/intarray, avoid errors complaining about the presence of nulls in cases where no nulls are actually present (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/162", "db_id": "ae7f10f6bf08fdebfd6617e1b397e0c4", "patch_ids": [], "statement_hash": "09a397653e95c4198521c888296ef1a1d4c3ffdee22d060746238fb1109ae6c9", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-70d0d4aeb42c7656", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"><code>contrib/intarray</code></a> 中，修复包含操作符对空数组的行为（Tom Lane）</p>\n<p>空数组现在被正确地视为包含于任何其他数组。</p>", "text": "在 contrib/intarray 中，修复包含操作符对空数组的行为（Tom Lane） 空数组现在被正确地视为包含于任何其他数组。", "title": "在 contrib/intarray 中，修复包含操作符对空数组的行为", "commits": [], "section": "附加模块", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "cff4240144333896994d5d5f3d6e9a6503380d0bff34e9149971c623b200cadf", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "In contrib/intarray, fix behavior of containment operators with respect to empty arrays (Tom Lane) Empty arrays are now correctly considered to be contained in any other array.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/163", "db_id": "357dccba5128864c07f26567151d120c", "patch_ids": [], "statement_hash": "8dbab05ab0f39ad81b376a4a5aae7f9e9bf2a8ab603f237a950351b7b96a2f74", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9afefcb56768f44b", "cves": [], "html": "<p>移除 <a href=\"/docs/9.1/xml2.html\" title=\"F.47. xml2\"><code>contrib/xml2</code></a> 对 <code>xslt_process()</code> 可处理的 <em><code>parameter</code></em>=<em><code>value</code></em> 对数量的任意限制（Pavel Stehule）</p>\n<p>此前的限制是 10。</p>", "text": "移除 contrib/xml2 对 xslt_process() 可处理的 parameter=value 对数量的任意限制（Pavel Stehule） 此前的限制是 10。", "title": "移除 contrib/xml2 对 xslt_process() 可处理的 parameter=value 对数量的任意限制", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "efcd197e40888a60330cbc40fe7766c464c3889e9d9ed9dbbb7a4e3792d3b811", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Remove contrib/xml2's arbitrary limit on the number of parameter=value pairs that can be handled by xslt_process() (Pavel Stehule) The previous limit was 10.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/164", "db_id": "e16f8acb2345181c5329bee0420a4da5", "patch_ids": [], "statement_hash": "d0dfef7d18ad09d0a0450cc2d58cb38ba8b6d9c643eb16b809507559f1b435d9", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d8e0d9f2d7b757fc", "cves": [], "html": "<p>在 <a href=\"/docs/9.1/pageinspect.html\" title=\"F.23. pageinspect\"><code>contrib/pageinspect</code></a> 中，修复 heap_page_item 以 32 位值返回 infomask（Alvaro Herrera）</p>\n<p>这避免了返回负值（那令人困惑）。底层值是 16 位无符号整数。</p>", "text": "在 contrib/pageinspect 中，修复 heap_page_item 以 32 位值返回 infomask（Alvaro Herrera） 这避免了返回负值（那令人困惑）。底层值是 16 位无符号整数。", "title": "在 contrib/pageinspect 中，修复 heap_page_item 以 32 位值返回 infomask", "commits": [], "section": "附加模块", "category": "bugfix", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15", "source_hash": "2a5c0f674797da8aa2f5ac17a640d5b2d1ba42662ae1f89dfc2c86723580aad3", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "In contrib/pageinspect, fix heap_page_item to return infomasks as 32-bit values (Alvaro Herrera) This avoids returning negative values, which was confusing. The underlying value is a 16-bit unsigned integer.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/165", "db_id": "22db832f2442ff64b095d494c6740619", "patch_ids": [], "statement_hash": "b847590d0c39bfe195061218349fe61298ee837194049b2763bcd7a461956655", "relations": [], "version": "9.1.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-8818864891e150ad", "cves": [], "html": "<p>新增 <a href=\"/docs/9.1/sepgsql.html\" title=\"F.38. sepgsql — 基于 SELinux 标签的强制访问控制（MAC）安全模块\"><code>contrib/sepgsql</code></a>，使权限检查与 <acronym>SELinux</acronym> 接口（KaiGai Kohei）</p>\n<p>它使用新的 <a href=\"/docs/9.1/sql-security-label.html\" title=\"SECURITY LABEL\"><code>SECURITY LABEL</code></a> 机制。</p>", "text": "新增 contrib/sepgsql，使权限检查与 SELinux 接口（KaiGai Kohei） 它使用新的 SECURITY LABEL 机制。", "title": "新增 contrib/sepgsql，使权限检查与 SELinux 接口", "commits": [], "section": "附加模块 / 安全", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.3", "source_hash": "f3d3060ffef43892c84ba9c4ac9d5e6d33135ba71da46134c2fb900cb4c4f765", "section_path": ["附加模块", "安全"], "commit_groups": [], "identity_text": "Add contrib/sepgsql to interface permission checks with SELinux (KaiGai Kohei) This uses the new SECURITY LABEL facility.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/166", "db_id": "a45498be26af5d75218bdd0e39d44da9", "patch_ids": [], "statement_hash": "33096d9cf68db602397635153e2416d3c0be3b17c0f96edcff16201e7382181d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e4ecef2ed44e8116", "cves": [], "html": "<p>新增 contrib 模块 <a href=\"/docs/9.1/auth-delay.html\" title=\"F.2. auth_delay\"><code>auth_delay</code></a>（KaiGai Kohei）</p>\n<p>它使服务器在返回认证失败前暂停；其设计目的是加大暴力破解口令攻击的难度。</p>", "text": "新增 contrib 模块 auth_delay（KaiGai Kohei） 它使服务器在返回认证失败前暂停；其设计目的是加大暴力破解口令攻击的难度。", "title": "新增 contrib 模块 auth_delay", "commits": [], "section": "附加模块 / 安全", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.3", "source_hash": "e913ebf6b1ac3972e90de0185e3235b513f36d3211d5f892ebcbdb375b060229", "section_path": ["附加模块", "安全"], "commit_groups": [], "identity_text": "Add contrib module auth_delay (KaiGai Kohei) This causes the server to pause before returning authentication failure; it is designed to make brute force password attacks more difficult.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/167", "db_id": "54e2f6acf565cd10053df8c52987d77c", "patch_ids": [], "statement_hash": "0cffcd566352e064fc9af52faef96b49eca6a3a5d7b6ff3dc499fe168bea250a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-3675901773e4eb3e", "cves": [], "html": "<p>新增 <code>dummy_seclabel</code> contrib 模块（KaiGai Kohei）</p>\n<p>它用于权限回归测试。</p>", "text": "新增 dummy_seclabel contrib 模块（KaiGai Kohei） 它用于权限回归测试。", "title": "新增 dummy_seclabel contrib 模块", "commits": [], "section": "附加模块 / 安全", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.3", "source_hash": "542c45437f9384a8401da91619e90b61552c8de86f64bddaa6fb5d34fe276180", "section_path": ["附加模块", "安全"], "commit_groups": [], "identity_text": "Add dummy_seclabel contrib module (KaiGai Kohei) This is used for permission regression testing.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/168", "db_id": "97ef46d5166ea1d5b8d49b087ef32ad6", "patch_ids": [], "statement_hash": "95c0cf85857cb7d317b950fb4fbfa27de5643aa3d1ee9108c12adcea0cd1cd4f", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-c0e0d5554c5a09ad", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/pgtrgm.html\" title=\"F.35. pg_trgm\"><code>contrib/pg_trgm</code></a> 新增 <code>LIKE</code> 和 <code>ILIKE</code> 索引搜索支持（Alexander Korotkov）</p>", "text": "为 contrib/pg_trgm 新增 LIKE 和 ILIKE 索引搜索支持（Alexander Korotkov）", "title": "为 contrib/pg_trgm 新增 LIKE 和 ILIKE 索引搜索支持", "commits": [], "section": "附加模块 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.4", "source_hash": "1df7b2a2969909b4da8abc7a4951a6020c0a830ce3a9f4e3f537be7703b03e02", "section_path": ["附加模块", "性能"], "commit_groups": [], "identity_text": "Add support for LIKE and ILIKE index searches to contrib/pg_trgm (Alexander Korotkov)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/169", "db_id": "9eb2f533b91464cd7948102f61dffb97", "patch_ids": [], "statement_hash": "d96aa6dd6eef71f76a265fc7a8cdfc8c1645b4434147c2d3c923dceaa9cc4ece", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f6808617b41ffad4", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/fuzzystrmatch.html\" title=\"F.15. fuzzystrmatch — 确定字符串的相似性和距离\"><code>contrib/fuzzystrmatch</code></a> 新增针对小距离优化的函数 <code>levenshtein_less_equal()</code>（Alexander Korotkov）</p>", "text": "为 contrib/fuzzystrmatch 新增针对小距离优化的函数 levenshtein_less_equal()（Alexander Korotkov）", "title": "为 contrib/fuzzystrmatch 新增针对小距离优化的函数 levenshtein_less_equal()", "commits": [], "section": "附加模块 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.4", "source_hash": "07c20ad1b77bc563021959138c0bf36e0c4fa8323980504492af411b321a09a5", "section_path": ["附加模块", "性能"], "commit_groups": [], "identity_text": "Add levenshtein_less_equal() function to contrib/fuzzystrmatch, which is optimized for small distances (Alexander Korotkov)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/170", "db_id": "1a7200edcb58d2cdee33d98ac7c3bfe2", "patch_ids": [], "statement_hash": "2c95f7c3e3573cc1376da34934c1e96c931b9ec7ae870f33184ace3a5ed40591", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-1b3acd16207edcbd", "cves": [], "html": "<p>改进 <a href=\"/docs/9.1/seg.html\" title=\"F.37. seg — 用于线段或浮点区间的数据类型\"><code>contrib/seg</code></a> 列上索引查找的性能（Alexander Korotkov）</p>", "text": "改进 contrib/seg 列上索引查找的性能（Alexander Korotkov）", "title": "改进 contrib/seg 列上索引查找的性能", "commits": [], "section": "附加模块 / 性能", "category": "performance", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.4", "source_hash": "7601fb7728e72cfeb25edb189ae90bffb6adbea26653ec62bc492d5b57c0dbb8", "section_path": ["附加模块", "性能"], "commit_groups": [], "identity_text": "Improve performance of index lookups on contrib/seg columns (Alexander Korotkov)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/171", "db_id": "2e64851202d6f34eb25e2f723f22d76f", "patch_ids": [], "statement_hash": "90e35b415cfebecc249a2f3809f77df6bff3e0bf54bb5d17ddf7d205b4684615", "relations": [], "version": "9.1.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-60def48429f4722a", "cves": [], "html": "<p>改进<a href=\"/docs/9.1/pgupgrade.html\" title=\"F.36. pg_upgrade\"><span>pg_upgrade</span></a>在多关系数据库下的性能（Bruce Momjian）</p>", "text": "改进pg_upgrade在多关系数据库下的性能（Bruce Momjian）", "title": "改进pg_upgrade在多关系数据库下的性能", "commits": [], "section": "附加模块 / 性能", "category": "performance", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.4", "source_hash": "253000f2594d24fec329fa76705021e1fc410266c3917963bb0ad74734b14207", "section_path": ["附加模块", "性能"], "commit_groups": [], "identity_text": "Improve performance of pg_upgrade for databases with many relations (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/172", "db_id": "723a020ff3519621f4479557476d513e", "patch_ids": [], "statement_hash": "5e07bbae836f992c81285c61b43b71a5f02f59c1f07d1019e8e3172dc64a7bcc", "relations": [], "version": "9.1.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-43e3e89df1f560c6", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/pgbench.html\" title=\"F.26. pgbench\"><code>contrib/pgbench</code></a> 新增报告逐语句延迟的标志（Florian Pflug）</p>", "text": "为 contrib/pgbench 新增报告逐语句延迟的标志（Florian Pflug）", "title": "为 contrib/pgbench 新增报告逐语句延迟的标志", "commits": [], "section": "附加模块 / 性能", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.4", "source_hash": "5cea30e8ed9c8498e407a40ac255738f95e5e5336f681e5e7812789c3aa4c78c", "section_path": ["附加模块", "性能"], "commit_groups": [], "identity_text": "Add flag to contrib/pgbench to report per-statement latencies (Florian Pflug)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/173", "db_id": "4b18e0276a03e49d7cf142b931da7f8a", "patch_ids": [], "statement_hash": "24361f325cf51c224ccf21cf8da3b14cce6b3e76611ed44663d5891acf9513da", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-d4a06e4bf3d337d2", "cves": [], "html": "<p>把 <code>src/tools/test_fsync</code> 移到 <a href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"><code>contrib/pg_test_fsync</code></a>（Bruce Momjian、Tom Lane）</p>", "text": "把 src/tools/test_fsync 移到 contrib/pg_test_fsync（Bruce Momjian、Tom Lane）", "title": "把 src/tools/test_fsync 移到 contrib/pg_test_fsync", "commits": [], "section": "附加模块 / fsync 测试", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.5", "source_hash": "3dc63ab71ac77d708e7830c5cfa32cffb31f10f3aae54aa5af97e594390d99e5", "section_path": ["附加模块", "fsync 测试"], "commit_groups": [], "identity_text": "Move src/tools/test_fsync to contrib/pg_test_fsync (Bruce Momjian, Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/174", "db_id": "a4be0d62359cd399fe6953f5fdce923d", "patch_ids": [], "statement_hash": "c76b7d34dab8492f9404f48260125c8693d1f355c8264a4430ebcbb0033bfd3b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ed517e9005f0240d", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"><code>contrib/pg_test_fsync</code></a> 新增 <code>O_DIRECT</code> 支持（Bruce Momjian）</p>\n<p>这与 <a href=\"/docs/9.1/runtime-config-wal.html#GUC-WAL-SYNC-METHOD\"><code>wal_sync_method</code></a> 对 <code>O_DIRECT</code> 的使用相匹配。</p>", "text": "为 contrib/pg_test_fsync 新增 O_DIRECT 支持（Bruce Momjian） 这与 wal_sync_method 对 O_DIRECT 的使用相匹配。", "title": "为 contrib/pg_test_fsync 新增 O_DIRECT 支持", "commits": [], "section": "附加模块 / fsync 测试", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.5", "source_hash": "63bc666e4cc6cef8ae298166431b7badb9342be3e78cfa9f3762ad8c8c4f0bfb", "section_path": ["附加模块", "fsync 测试"], "commit_groups": [], "identity_text": "Add O_DIRECT support to contrib/pg_test_fsync (Bruce Momjian) This matches the use of O_DIRECT by wal_sync_method.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/175", "db_id": "294f109e503feefd69faf23788785d82", "patch_ids": [], "statement_hash": "38fddab47b80263a7118264822b0d1f9eccae3ba9e8ab2f2b9bae238493295b1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-5c9ddd06466f178e", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"><code>contrib/pg_test_fsync</code></a> 新增新测试（Bruce Momjian）</p>", "text": "为 contrib/pg_test_fsync 新增新测试（Bruce Momjian）", "title": "为 contrib/pg_test_fsync 新增新测试", "commits": [], "section": "附加模块 / fsync 测试", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.15.5", "source_hash": "6368959108c820353db34b1c010242276427b73149a969d07c799b4cb188411a", "section_path": ["附加模块", "fsync 测试"], "commit_groups": [], "identity_text": "Add new tests to contrib/pg_test_fsync (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/176", "db_id": "2d6e6a08abb64b129fca9e75e0b3e283", "patch_ids": [], "statement_hash": "876e40eef95a97efddf26c5fb711b739cdb05523cf0f1d20455cd6b71a6cc65b", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-9194a81982a84a7e", "cves": [], "html": "<p>广泛的<a href=\"/docs/9.1/ecpg.html\" title=\"第 33 章 ECPG - C 中的嵌入式 SQL\"><span>ECPG</span></a>文档改进（Satoshi Nagayasu）</p>", "text": "广泛的ECPG文档改进（Satoshi Nagayasu）", "title": "广泛的ECPG文档改进", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "9c0bcff9221aa1037a435ce056801b9539d2e465bbd6f8b4ef31572bba52a29b", "section_path": ["文档"], "commit_groups": [], "identity_text": "Extensive ECPG documentation improvements (Satoshi Nagayasu)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/177", "db_id": "16ce551734664c729c2feefe31d20205", "patch_ids": [], "statement_hash": "1ae30df10362bfd7339ad94cd5004e576255ea0d200746720c434ba9db2be128", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-2ac16eab6a1b6186", "cves": [], "html": "<p>广泛的校对和文档改进（Thom Brown、Josh Kupershmidt、Susanne Ebrecht）</p>", "text": "广泛的校对和文档改进（Thom Brown、Josh Kupershmidt、Susanne Ebrecht）", "title": "广泛的校对和文档改进", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "c6f207b793290c1e8b0b23c7c870b1c04418b1ff841f77be0a2531d796ff5137", "section_path": ["文档"], "commit_groups": [], "identity_text": "Extensive proofreading and documentation improvements (Thom Brown, Josh Kupershmidt, Susanne Ebrecht)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/178", "db_id": "a814417e94aa0f08e0b7905e9781e4a3", "patch_ids": [], "statement_hash": "4cf06260eb48ded764c172c31a3e8235e717c14d14923a3ff20bda5420f3b54d", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-e79eba8f52c15eb5", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/runtime-config-error-handling.html#GUC-EXIT-ON-ERROR\"><code>exit_on_error</code></a> 添加文档（Robert Haas）</p>\n<p>该参数使会话在任何错误时退出。</p>", "text": "为 exit_on_error 添加文档（Robert Haas） 该参数使会话在任何错误时退出。", "title": "为 exit_on_error 添加文档", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "539b54f7832cac997bc077d01695246973c0ae3a1615f2b603d12e4463aacb0a", "section_path": ["文档"], "commit_groups": [], "identity_text": "Add documentation for exit_on_error (Robert Haas) This parameter causes sessions to exit on any error.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/179", "db_id": "908bdbfedb4c022a191f27c71d8f6b60", "patch_ids": [], "statement_hash": "bd4164dcc71a35fab37aebdb11967acf818c967aaab8d8f047ec44d8d0a2266a", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-eaabae809cb40d8f", "cves": [], "html": "<p>为 <a href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"><code>pg_options_to_table()</code></a> 添加文档（Josh Berkus）</p>\n<p>该函数以可读的形式显示表存储选项。</p>", "text": "为 pg_options_to_table() 添加文档（Josh Berkus） 该函数以可读的形式显示表存储选项。", "title": "为 pg_options_to_table() 添加文档", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "b928f7055e0fcc5c0f84a2d091282d006105b24705039a0c69e77b946117c1b5", "section_path": ["文档"], "commit_groups": [], "identity_text": "Add documentation for pg_options_to_table() (Josh Berkus) This function shows table storage options in a readable form.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/180", "db_id": "ae096b4778d3cddbf18c080d0bd938f5", "patch_ids": [], "statement_hash": "d4c3bcb638bae2c1f6c6ece2142be1651960fa46cb36b8fe4db110179a84dc5e", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-fe300449c9255ac1", "cves": [], "html": "<p>记录可以使用 <a href=\"/docs/9.1/sql-expressions.html#FIELD-SELECTION\" title=\"4.2.4. 字段选择\"><code>(compositeval).*</code></a> 语法访问所有组合类型字段（Peter Eisentraut）</p>", "text": "记录可以使用 (compositeval).* 语法访问所有组合类型字段（Peter Eisentraut）", "title": "记录可以使用 (compositeval).* 语法访问所有组合类型字段", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "7229661185246e885f9d45e9179d1c382f0b7226e59f12ab6e38d0b46b9c014f", "section_path": ["文档"], "commit_groups": [], "identity_text": "Document that it is possible to access all composite type fields using (compositeval).* syntax (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/181", "db_id": "4b74701eee4ef0314f6efa638500fa55", "patch_ids": [], "statement_hash": "aec0038d98d34478981e90f1c307344527bdb3dbc3e1840561ca76eadb04c1a1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-93426c2502745a3e", "cves": [], "html": "<p>记录 <a href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"><code>translate()</code></a> 会删除 <code>from</code> 中没有对应 <code>to</code> 字符的字符（Josh Kupershmidt）</p>", "text": "记录 translate() 会删除 from 中没有对应 to 字符的字符（Josh Kupershmidt）", "title": "记录 translate() 会删除 from 中没有对应 to 字符的字符", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "57c37559c7e4d33144b1636bebae9179ca8ebb6caf0a97924b6234cd2f0471e0", "section_path": ["文档"], "commit_groups": [], "identity_text": "Document that translate() removes characters in from that don't have a corresponding to character (Josh Kupershmidt)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/182", "db_id": "845a7164db65c22b109e477f104fa0b3", "patch_ids": [], "statement_hash": "2a1c5cecdfc3a12a16ccaa4fe821439b97c003ca782435dd992f3dfeb500fad0", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-714885e5e21476ed", "cves": [], "html": "<p>合并 <code>CREATE CONSTRAINT TRIGGER</code> 和 <a href=\"/docs/9.1/sql-createtrigger.html\" title=\"CREATE TRIGGER\"><code>CREATE TRIGGER</code></a> 的文档（Alvaro Herrera）</p>", "text": "合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档（Alvaro Herrera）", "title": "合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "c1fe16c0dcace7a20dcaff1a5515aa1033f277f82c8fec1aa390a0b57396d530", "section_path": ["文档"], "commit_groups": [], "identity_text": "Merge documentation for CREATE CONSTRAINT TRIGGER and CREATE TRIGGER (Alvaro Herrera)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/183", "db_id": "9b65966eb48d3937804405a8e9eccdc1", "patch_ids": [], "statement_hash": "a85c50a550052585e0e6d84e9ab7fb8901af8a502b8e50b015a085352e9f32c8", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-0d2c5d796f15f12a", "cves": [], "html": "<p>集中化<a href=\"/docs/9.1/ddl-priv.html\" title=\"5.6. 权限\">权限</a>和<a href=\"/docs/9.1/upgrading.html\" title=\"17.6. 升级 PostgreSQL 集簇\">升级</a>文档（Bruce Momjian）</p>", "text": "集中化权限和升级文档（Bruce Momjian）", "title": "集中化权限和升级文档", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "3792f4bcae9ce684ab831cc2411378f6da52f8938bd2c5aa9025367db31ab8fc", "section_path": ["文档"], "commit_groups": [], "identity_text": "Centralize permission and upgrade documentation (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/184", "db_id": "f16388cda195e93435cfd2a5ffdbd276", "patch_ids": [], "statement_hash": "951e3b24e7276d070d8cfe55628dcbb3310509da8e32e6b4b81b53f339ce6da4", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-f067f4c4764af751", "cves": [], "html": "<p>为 Solaris 10 添加<a href=\"/docs/9.1/kernel-resources.html#SYSVIPC-PARAMETERS\" title=\"表 17.1. System V IPC参数\">内核调优文档</a>（Josh Berkus）</p>\n<p>此前只记录了 Solaris 9 的内核调优。</p>", "text": "为 Solaris 10 添加内核调优文档（Josh Berkus） 此前只记录了 Solaris 9 的内核调优。", "title": "为 Solaris 10 添加内核调优文档", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "ebb5edcac79590376a717782ec747b3a75c37f404235e7f12d64f86a745c5d6b", "section_path": ["文档"], "commit_groups": [], "identity_text": "Add kernel tuning documentation for Solaris 10 (Josh Berkus) Previously only Solaris 9 kernel tuning was documented.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/185", "db_id": "f4be28c5bfde0cfa12139ed564f44e9f", "patch_ids": [], "statement_hash": "d039fc2eb3c3aa0de8b5231bdf03a0817c2bc8f2963294f1c8be1a01645c3942", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.0-ca3bd4401feb764c", "cves": [], "html": "<p>在 <code>HISTORY</code> 文件中一致地处理非 ASCII 字符（Peter Eisentraut）</p>\n<p>虽然 <code>HISTORY</code> 文件是英文的，但我们必须处理贡献者姓名中的非 ASCII 字母。这些现在被音译，以便在不假设字符集的情况下也相当易读。</p>", "text": "在 HISTORY 文件中一致地处理非 ASCII 字符（Peter Eisentraut） 虽然 HISTORY 文件是英文的，但我们必须处理贡献者姓名中的非 ASCII 字母。这些现在被音译，以便在不假设字符集的情况下也相当易读。", "title": "在 HISTORY 文件中一致地处理非 ASCII 字符", "commits": [], "section": "文档", "category": "feature", "source_url": "/docs/release/9.1.0/#id-1.11.6.29.5.16", "source_hash": "825e3d33374947870ceccee72c8da01ef8ea4c2616aa26036ed8ea82fc5d8462", "section_path": ["文档"], "commit_groups": [], "identity_text": "Handle non-ASCII characters consistently in HISTORY file (Peter Eisentraut) While the HISTORY file is in English, we do have to deal with non-ASCII letters in contributor names. These are now transliterated so that they are reasonably legible without assumptions about character set.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.0/changes/186", "db_id": "090df20881d3760c0f891a3043aa6389", "patch_ids": [], "statement_hash": "35267e5e1da6883a5d165aa71acf2aef01c29f5e00b886e93bc2f369c1d953c1", "relations": [], "version": "9.1.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}]}], "stats": [{"key": "all", "label": "全部变更", "count": 203}, {"key": "feature", "label": "新功能", "count": 174}, {"key": "bugfix", "label": "BUG 修复", "count": 9}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 3}, {"key": "compatibility", "label": "兼容性变化", "count": 17}, {"key": "improvement", "label": "其他改进", "count": 0}], "total": 203, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 203, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}