{"already_in_source_count":0,"candidate_count":203,"cross_major":false,"cve_available":true,"cve_count":0,"cves":[],"duplicate_count":0,"excluded_count":0,"exclusions":[],"from_release":null,"groups":[{"age_days":5508,"build":"9.1.0","changes_count":186,"compatibility_count":17,"content_hash":"249aa96626415dd32a4be984132701732f764b429aba0c735a8d8535646169a2","date":"2011-09-12","date_text":"2011-09-12","doc_git":"","doc_loaded_at":"2026-09-26T02:56:47.783417","entries":[{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"68491f69c5375056ddd6bb75f172e864","html":"\u003cp\u003e把 \u003ca href=\"/docs/9.1/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS\"\u003e\u003ccode\u003estandard_conforming_strings\u003c/code\u003e\u003c/a\u003e 的默认值改为 on（Robert Haas）\u003c/p\u003e\n\u003cp\u003e默认情况下，反斜杠现在是字符串字面量中的普通字符，而不是转义字符。此变更消除了一个与 SQL 标准长期存在的不兼容。\u003ca href=\"/docs/9.1/runtime-config-compatible.html#GUC-ESCAPE-STRING-WARNING\"\u003e\u003ccode\u003eescape_string_warning\u003c/code\u003e\u003c/a\u003e 多年来一直对这种用法发出警告。\u003ccode\u003eE''\u003c/code\u003e 字符串是在字符串中嵌入反斜杠转义的正确方式，不受此变更影响。\u003c/p\u003e\n\u003cdiv\u003e\n\n警告\n\u003cp\u003e此变更可能破坏未预料到它并按旧规则自行做字符串转义的应用。后果可能严重到引入 SQL 注入安全漏洞。务必测试暴露于不可信输入的应用，确保它们正确处理文本字符串中的单引号和反斜杠。\u003c/p\u003e\n\u003c/div\u003e","id":"9.1.0-3d14c7b18af21e63","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"字符串","section_path":["字符串"],"source_commits":[],"source_entry_id":"9.1.0/migration/001","source_hash":"db22180001979e6c5b3e9f1877cc72992c8c1474e73491e9441c5fa05e4dcd69","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.4","statement_hash":"dedad57c5cdbceef18439ac1ff57be80d1490f34f1700a9ef6b438351cbd4fe0","text":"把 standard_conforming_strings 的默认值改为 on（Robert Haas） 默认情况下，反斜杠现在是字符串字面量中的普通字符，而不是转义字符。此变更消除了一个与 SQL 标准长期存在的不兼容。escape_string_warning 多年来一直对这种用法发出警告。E'' 字符串是在字符串中嵌入反斜杠转义的正确方式，不受此变更影响。 警告 此变更可能破坏未预料到它并按旧规则自行做字符串转义的应用。后果可能严重到引入 SQL 注入安全漏洞。务必测试暴露于不可信输入的应用，确保它们正确处理文本字符串中的单引号和反斜杠。","title":"把 standard_conforming_strings 的默认值改为 on","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6fc4b0b92171fa85b8a8c82a80c56651","html":"\u003cp\u003e禁止对组合类型使用函数式和属性式数据类型转换（Tom Lane）\u003c/p\u003e\n\u003cp\u003e例如，禁止 \u003ccode\u003e\u003cem\u003e\u003ccode\u003ecomposite_value\u003c/code\u003e\u003c/em\u003e.text\u003c/code\u003e 和 \u003ccode\u003etext(\u003cem\u003e\u003ccode\u003ecomposite_value\u003c/code\u003e\u003c/em\u003e)\u003c/code\u003e。无意中使用这种语法常常导致缺陷报告；虽然这不是缺陷，但回到拒绝这类表达式似乎更好。当确实想要转换整个组合值时，\u003ccode\u003eCAST\u003c/code\u003e 和 \u003ccode\u003e::\u003c/code\u003e 语法仍然可用。\u003c/p\u003e","id":"9.1.0-e267d5c16d016b1c","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"类型转换","section_path":["类型转换"],"source_commits":[],"source_entry_id":"9.1.0/migration/002","source_hash":"e0d2e7ff9f4672f2df2b988aeb76dcd5a92c1f2eb94ac3b9c966e6ee8b6d83e8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.5","statement_hash":"ba97fcb0b8091bd9ca810da3db24e44a76b12cad701cf33cfed36b106098795c","text":"禁止对组合类型使用函数式和属性式数据类型转换（Tom Lane） 例如，禁止 composite_value.text 和 text(composite_value)。无意中使用这种语法常常导致缺陷报告；虽然这不是缺陷，但回到拒绝这类表达式似乎更好。当确实想要转换整个组合值时，CAST 和 :: 语法仍然可用。","title":"禁止对组合类型使用函数式和属性式数据类型转换","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2fba586e5b74ae4d1ada4875101bc2fb","html":"\u003cp\u003e收紧对基于数组的域的转换检查（Tom Lane）\u003c/p\u003e\n\u003cp\u003e当域基于数组类型时，允许\u003cspan\u003e“\u003cspan\u003e透过\u003c/span\u003e”\u003c/span\u003e域类型访问数组元素，包括对域值做下标操作来获取或赋值元素。对这种域值的元素赋值（例如通过 \u003ccode\u003eUPDATE ... SET domaincol[5] = ...\u003c/code\u003e）现在会重新检查域类型的约束，而此前会跳过检查。\u003c/p\u003e","id":"9.1.0-2d66033b0554bc02","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"类型转换","section_path":["类型转换"],"source_commits":[],"source_entry_id":"9.1.0/migration/003","source_hash":"af3f29388ff961d2c058092273bcbfb56e5abe5ecbfba9474ffd730bdd3486db","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.5","statement_hash":"f9bbb727d12fb13939ada6dbb1cc06229b03ba51f455937d211cb7b6ec91b7e8","text":"收紧对基于数组的域的转换检查（Tom Lane） 当域基于数组类型时，允许“透过”域类型访问数组元素，包括对域值做下标操作来获取或赋值元素。对这种域值的元素赋值（例如通过 UPDATE ... SET domaincol[5] = ...）现在会重新检查域类型的约束，而此前会跳过检查。","title":"收紧对基于数组的域的转换检查","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"d6085f706243e932e033aef5acd6d6ef","html":"\u003cp\u003e更改 \u003ca href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"\u003e\u003ccode\u003estring_to_array()\u003c/code\u003e\u003c/a\u003e，使其对零长度字符串返回空数组（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e此前这返回空值。\u003c/p\u003e","id":"9.1.0-7462e03ecedb56c4","identity_text":"Change string_to_array() to return an empty array for a zero-length string (Pavel Stehule) Previously this returned a null value.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"数组","section_path":["数组"],"source_commits":[],"source_entry_id":"9.1.0/migration/004","source_hash":"07f4b51e9f98b2677848e6abffdc4eca08abc625f17c99ec67e6dc8ca04e913a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.6","statement_hash":"fd10b25633772be8238c9cee0ccb02d11b8ca2113ba908d7ee28d94da254999a","text":"更改 string_to_array()，使其对零长度字符串返回空数组（Pavel Stehule） 此前这返回空值。","title":"更改 string_to_array()，使其对零长度字符串返回空数组","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"43a870b4fa526e1a53d3fd14894f99b9","html":"\u003cp\u003e更改 \u003ca href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"\u003e\u003ccode\u003estring_to_array()\u003c/code\u003e\u003c/a\u003e，使 \u003ccode\u003eNULL\u003c/code\u003e 分隔符把字符串拆分为字符（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e此前这返回空值。\u003c/p\u003e","id":"9.1.0-a8c84c381410ce55","identity_text":"Change string_to_array() so a NULL separator splits the string into characters (Pavel Stehule) Previously this returned a null value.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"数组","section_path":["数组"],"source_commits":[],"source_entry_id":"9.1.0/migration/005","source_hash":"93993a34714c5da33a0f1c440f61e7d05c947dfd73a26eb63f08b3f360b24b48","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.6","statement_hash":"4ed96b20ce3ca09d55c9fc4f1b1f39ee598ee8df130da4c113869173113b9212","text":"更改 string_to_array()，使 NULL 分隔符把字符串拆分为字符（Pavel Stehule） 此前这返回空值。","title":"更改 string_to_array()，使 NULL 分隔符把字符串拆分为字符","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"46b7f3e31ae6d9672cb39af9a4049773","html":"\u003cp\u003e修复对 BEFORE/AFTER 触发器的不当检查（Tom Lane）\u003c/p\u003e\n\u003cp\u003e触发器现在可以在三种情况下触发：某动作的 \u003ccode\u003eBEFORE\u003c/code\u003e、\u003ccode\u003eAFTER\u003c/code\u003e 或 \u003ccode\u003eINSTEAD OF\u003c/code\u003e。触发器函数作者应验证其逻辑在三种情况下都表现正常。\u003c/p\u003e","id":"9.1.0-aa32af9c0004b415","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"对象修改","section_path":["对象修改"],"source_commits":[],"source_entry_id":"9.1.0/migration/006","source_hash":"0541a5678494de5ecf75d96a41ca361213b9eb45d23dbc81d9a811147569d776","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.7","statement_hash":"858f0f1c3e59320c1945d036307046d0e0c9fc6c086532781ab82f80ea6dada1","text":"修复对 BEFORE/AFTER 触发器的不当检查（Tom Lane） 触发器现在可以在三种情况下触发：某动作的 BEFORE、AFTER 或 INSTEAD OF。触发器函数作者应验证其逻辑在三种情况下都表现正常。","title":"修复对 BEFORE/AFTER 触发器的不当检查","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"d77dff75bf305a4e139b51c6c2bbed43","html":"\u003cp\u003e要求超级用户或 \u003ccode\u003eCREATEROLE\u003c/code\u003e 权限才能为角色设置注释（Tom Lane）\u003c/p\u003e","id":"9.1.0-c536c3b461885e5a","identity_text":"Require superuser or CREATEROLE permissions in order to set comments on roles (Tom Lane)","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"对象修改","section_path":["对象修改"],"source_commits":[],"source_entry_id":"9.1.0/migration/007","source_hash":"f806de15eebf0a495dcb7e598ad558e451dfb9af2f09434891e70d9e2d41ee4e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.7","statement_hash":"dbb1329e2c5fa79dee40ff4e9810763c7b1d010fc973e0afd2e40a228121ec9e","text":"要求超级用户或 CREATEROLE 权限才能为角色设置注释（Tom Lane）","title":"要求超级用户或 CREATEROLE 权限才能为角色设置注释","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"8f708943a2553a135344292dd9986123","html":"\u003cp\u003e更改 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE\" title=\"表 9.58. 恢复信息函数\"\u003e\u003ccode\u003epg_last_xlog_receive_location()\u003c/code\u003e\u003c/a\u003e，使其永不倒退（Fujii Masao）\u003c/p\u003e\n\u003cp\u003e此前，当流复制重启时，\u003ccode\u003epg_last_xlog_receive_location()\u003c/code\u003e 的值可能倒退。\u003c/p\u003e","id":"9.1.0-08415aa85e05c659","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器设置","section_path":["服务器设置"],"source_commits":[],"source_entry_id":"9.1.0/migration/008","source_hash":"b6be4a486bac29f310a3069edd4ba30218a3d248af28a84a8a8b1a6d466f9f9c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.8","statement_hash":"da98334f86c0e376f1dcd4795ef6607cd85dbac0d8db70d860177c0bc817f57f","text":"更改 pg_last_xlog_receive_location()，使其永不倒退（Fujii Masao） 此前，当流复制重启时，pg_last_xlog_receive_location() 的值可能倒退。","title":"更改 pg_last_xlog_receive_location()，使其永不倒退","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"61b6483661383d3f8411f8e9eaef268a","html":"\u003cp\u003e让复制连接的日志记录遵循 \u003ca href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-CONNECTIONS\"\u003e\u003ccode\u003elog_connections\u003c/code\u003e\u003c/a\u003e（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e此前复制连接总是被记录。\u003c/p\u003e","id":"9.1.0-ce948f07c79c6890","identity_text":"Have logging of replication connections honor log_connections (Magnus Hagander) Previously, replication connections were always logged.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器设置","section_path":["服务器设置"],"source_commits":[],"source_entry_id":"9.1.0/migration/009","source_hash":"64e305724782dcf952a30ccf21668f9439b4b79a59cf69873274596780bb43d9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.8","statement_hash":"e3dfe4b84c2aef836ea74766ecd9787b78d2b5a9f661f2c591c0fb52801e7108","text":"让复制连接的日志记录遵循 log_connections（Magnus Hagander） 此前复制连接总是被记录。","title":"让复制连接的日志记录遵循 log_connections","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b2c151634d90ef72c135ea462ed2e7c6","html":"\u003cp\u003e更改 PL/pgSQL 的无参数 \u003ccode\u003eRAISE\u003c/code\u003e 命令，使其可被所附加的异常块捕获（Piyush Newe）\u003c/p\u003e\n\u003cp\u003e此前代码块中的 \u003ccode\u003eRAISE\u003c/code\u003e 总是作用于所附加的异常块，因此在同一作用域内无法捕获。\u003c/p\u003e","id":"9.1.0-2518df69e663492e","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"PL/pgSQL Server-Side Language","section_path":["PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/migration/010","source_hash":"8793c19faac87fa49a6e14018769f24169c41cf97271356cfc601b9311d64c83","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.9","statement_hash":"750001173b7a34a313ffecf0c28e3f3177a78130b3c755f3d7bf7f44bcf0aad0","text":"更改 PL/pgSQL 的无参数 RAISE 命令，使其可被所附加的异常块捕获（Piyush Newe） 此前代码块中的 RAISE 总是作用于所附加的异常块，因此在同一作用域内无法捕获。","title":"更改 PL/pgSQL 的无参数 RAISE 命令，使其可被所附加的异常块捕获","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3f41a73d8787104a66bd7adbb09e6c06","html":"\u003cp\u003e调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e此前 PL/pgSQL 会忽略（不计数）函数体开头的空行。由于这与其他所有语言不一致，该特殊情况已被移除。\u003c/p\u003e","id":"9.1.0-a494fe3a56f16978","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"PL/pgSQL Server-Side Language","section_path":["PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/migration/011","source_hash":"86516254ffbf1e8b6c1f7073719a4b9286a9bae0ee3c49444ada16cfcd3e52e2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.9","statement_hash":"464ceca932b2916468c5709a00169c10bbcc2e9a59e29df069afb8267c5ee940","text":"调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致（Pavel Stehule） 此前 PL/pgSQL 会忽略（不计数）函数体开头的空行。由于这与其他所有语言不一致，该特殊情况已被移除。","title":"调整 PL/pgSQL 的错误行号代码，使其与其他过程语言一致","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"de936feb3dff05e890f6a274bbd15809","html":"\u003cp\u003e让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错（Tom Lane）\u003c/p\u003e\n\u003cp\u003e此前不会检测冲突，该名称会静默地只指向 OUT 参数。\u003c/p\u003e","id":"9.1.0-550e4aaf08bee2ce","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"PL/pgSQL Server-Side Language","section_path":["PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/migration/012","source_hash":"482a6ea25f29fd5ed6f496d694b251a3e38e328c05ab3799aafa8eb390c95acc","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.9","statement_hash":"f8bdcc738dcfb8503ce2718148143a36df1fcac3e509cbb8bfab33eca92fed78","text":"让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错（Tom Lane） 此前不会检测冲突，该名称会静默地只指向 OUT 参数。","title":"让 PL/pgSQL 对 IN 和 OUT 参数名冲突报错","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"fbb635a3b0b777063ef8c990772a2265","html":"\u003cp\u003ePL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见（Tom Lane）\u003c/p\u003e\n\u003cp\u003e附加到 PL/pgSQL 变量的类型修饰符（如 varchar 长度限制）此前只在赋值期间强制执行，其他用途一律忽略。这类变量现在的行为将更像是用相同修饰符声明的表列。预计在大多数情况下这不会造成可见差异，但可能给 PL/pgSQL 函数发出的某些 SQL 命令带来细微变化。\u003c/p\u003e","id":"9.1.0-b064ba2139ef02de","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"PL/pgSQL Server-Side Language","section_path":["PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/migration/013","source_hash":"7bbbffd5d0a3576e7b6d55468126ade4719ac7762d29c80612ae4cc76b209dd7","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.9","statement_hash":"2645b50c9280a1dd40e4dca7ea974be7cbb8bc32441b03b2ad9dfdadea61c48b","text":"PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见（Tom Lane） 附加到 PL/pgSQL 变量的类型修饰符（如 varchar 长度限制）此前只在赋值期间强制执行，其他用途一律忽略。这类变量现在的行为将更像是用相同修饰符声明的表列。预计在大多数情况下这不会造成可见差异，但可能给 PL/pgSQL 函数发出的某些 SQL 命令带来细微变化。","title":"PL/pgSQL 变量的类型修饰符现在对 SQL 解析器可见","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"352181eef1f573c76edc9e7e3624b155","html":"\u003cp\u003e所有 contrib 模块现在都通过 \u003ca href=\"/docs/9.1/sql-createextension.html\" title=\"CREATE EXTENSION\"\u003e\u003ccode\u003eCREATE EXTENSION\u003c/code\u003e\u003c/a\u003e 安装，而不是手工调用其 SQL 脚本（Dimitri Fontaine、Tom Lane）\u003c/p\u003e\n\u003cp\u003e要更新包含某 contrib 模块 9.0 版本的现有数据库，使用 \u003ccode\u003eCREATE EXTENSION ... FROM unpackaged\u003c/code\u003e 把现有 contrib 模块的对象包装成扩展。从 9.0 之前的版本更新时，先用旧的卸载脚本删除该 contrib 模块的对象，然后使用 \u003ccode\u003eCREATE EXTENSION\u003c/code\u003e。\u003c/p\u003e","id":"9.1.0-e14061bb4402811f","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.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/migration/014","source_hash":"a2b03473a511ef09dbda5ac26f3be90dad7900989173908a20f66c04e0087699","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.10","statement_hash":"569e2199539a041fcb41806c60983fd47a415311111204481247ac8e2c7fbb09","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 脚本","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2eea75a7b4492f6096701a5e667204e4","html":"\u003cp\u003e让 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"表 27.2. 统计访问函数\"\u003e\u003ccode\u003epg_stat_reset()\u003c/code\u003e\u003c/a\u003e 重置所有数据库级统计信息（Tomas Vondra）\u003c/p\u003e\n\u003cp\u003e一些 \u003ccode\u003epg_stat_database\u003c/code\u003e 计数器此前没有被重置。\u003c/p\u003e","id":"9.1.0-46d4e420654af028","identity_text":"Make pg_stat_reset() reset all database-level statistics (Tomas Vondra) Some pg_stat_database counters were not being reset.","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"其他不兼容之处","section_path":["其他不兼容之处"],"source_commits":[],"source_entry_id":"9.1.0/migration/015","source_hash":"776e5248ac81118da7fc97bdf3a58a745a23b315c85621f9dccfa1e821443f03","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.11","statement_hash":"14cfec72519becc75cab514cc0ef2780f5fdd5d69d0f3749b545e4dccb8eb54e","text":"让 pg_stat_reset() 重置所有数据库级统计信息（Tomas Vondra） 一些 pg_stat_database 计数器此前没有被重置。","title":"让 pg_stat_reset() 重置所有数据库级统计信息","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"35d728531614663bd2a1c88df6f9087c","html":"\u003cp\u003e修正一些 \u003ca href=\"/docs/9.1/infoschema-triggers.html\" title=\"34.52. triggers\"\u003e\u003ccode\u003einformation_schema.triggers\u003c/code\u003e\u003c/a\u003e 列名，使其与新的 SQL 标准名称一致（Dean Rasheed）\u003c/p\u003e","id":"9.1.0-d7a5f1b10a628bc8","identity_text":"Fix some information_schema.triggers column names to match the new SQL-standard names (Dean Rasheed)","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"其他不兼容之处","section_path":["其他不兼容之处"],"source_commits":[],"source_entry_id":"9.1.0/migration/016","source_hash":"99fa26dd3febeec76f4e6474e95c53253b1b5eedcfe9adcd0c2e6c765aa56739","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.11","statement_hash":"26e7afd15c9c62ef5a52d6dab5411818c2c1c0eb6353504934cbb73a68b56278","text":"修正一些 information_schema.triggers 列名，使其与新的 SQL 标准名称一致（Dean Rasheed）","title":"修正一些 information_schema.triggers 列名，使其与新的 SQL 标准名称一致","variants":[],"version":"9.1.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5cf5a43db59ea2b515e2c4c75a4281cd","html":"\u003cp\u003e把 \u003cspan\u003eECPG\u003c/span\u003e 游标名视为大小写不敏感（Zoltan Boszormenyi）\u003c/p\u003e","id":"9.1.0-e4924272b2eedd77","identity_text":"Treat ECPG cursor names as case-insensitive (Zoltan Boszormenyi)","part":"migration","patch_ids":[],"related_changes":[],"relations":[],"section":"其他不兼容之处","section_path":["其他不兼容之处"],"source_commits":[],"source_entry_id":"9.1.0/migration/017","source_hash":"ab401c545e8ab4f3c85c101c4694e0b0c46f9154e8d043b9c336d0863facac24","source_url":"/docs/release/9.1.0/#id-1.11.6.29.4.11","statement_hash":"7803d0c906f8fe4d38dd20570dab54cbcd28c7ced9943b9e4c37c5a833eced1a","text":"把 ECPG 游标名视为大小写不敏感（Zoltan Boszormenyi）","title":"把 ECPG 游标名视为大小写不敏感","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"fd2e0d6106f52359592c6369a238390a","html":"\u003cp\u003e支持在 \u003ca href=\"/docs/9.1/sql-createtable.html\" title=\"CREATE TABLE\"\u003e\u003ccode\u003eCREATE TABLE\u003c/code\u003e\u003c/a\u003e 中使用 \u003ccode\u003eUNLOGGED\u003c/code\u003e 选项的不记录日志的表（Robert Haas）\u003c/p\u003e\n\u003cp\u003e这类表比常规表提供更好的更新性能，但不是崩溃安全的：服务器崩溃时其内容会被自动清除。其内容也不会传播到复制从库。\u003c/p\u003e","id":"9.1.0-cf53477956f73c91","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/001","source_hash":"eca0760229aa47061028694ea2af17bdee828c60937e5b20d5d2890ed1f37711","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"93ce255485d37d1906224b507409f30390f3791c8fcfce40c196fa4527f60edd","text":"支持在 CREATE TABLE 中使用 UNLOGGED 选项的不记录日志的表（Robert Haas） 这类表比常规表提供更好的更新性能，但不是崩溃安全的：服务器崩溃时其内容会被自动清除。其内容也不会传播到复制从库。","title":"支持在 CREATE TABLE 中使用 UNLOGGED 选项的不记录日志的表","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"1b59d20c90cf2bc359ed5770652ade54","html":"\u003cp\u003e允许把 \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e 实现为哈希连接，并允许对 \u003ccode\u003eLEFT OUTER JOIN\u003c/code\u003e 或 \u003ccode\u003eRIGHT OUTER JOIN\u003c/code\u003e 的任一侧做哈希（Tom Lane）\u003c/p\u003e\n\u003cp\u003e此前 \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e 只能实现为合并连接，而 \u003ccode\u003eLEFT OUTER JOIN\u003c/code\u003e 和 \u003ccode\u003eRIGHT OUTER JOIN\u003c/code\u003e 只能对连接的可空侧做哈希。这些变更提供了额外的查询优化可能性。\u003c/p\u003e","id":"9.1.0-28ad201613196e37","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/002","source_hash":"f03558a85d3fbef769748f2102ec4261257178788f0d36fcb88e41235c63ba75","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"6174ed17ace43a270d4b28836edaf9fab92f5844a0e3fd8a4964013738fbb6a1","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 的任一侧做哈希","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6bcfcdc498c34cd89a7f5a27ca57ef70","html":"\u003cp\u003e合并重复的 fsync 请求（Robert Haas、Greg Smith）\u003c/p\u003e\n\u003cp\u003e这大幅改进了重写负载下的性能。\u003c/p\u003e","id":"9.1.0-5d150babc35e3eb8","identity_text":"Merge duplicate fsync requests (Robert Haas, Greg Smith) This greatly improves performance under heavy write loads.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/003","source_hash":"c15f845c16ac133ae986ddc9f467513a4cc87daf8140b91b9a1fe96d9bf86655","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"c55603b3e827968472d3eb1f56346871991f77152317ce2f3aae23a0de15eb00","text":"合并重复的 fsync 请求（Robert Haas、Greg Smith） 这大幅改进了重写负载下的性能。","title":"合并重复的 fsync 请求","variants":[],"version":"9.1.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"9a67168d3e4a4d602028e36d95160406","html":"\u003cp\u003e改进 \u003ca href=\"/docs/9.1/runtime-config-wal.html#GUC-COMMIT-SIBLINGS\"\u003e\u003ccode\u003ecommit_siblings\u003c/code\u003e\u003c/a\u003e 的性能（Greg Smith）\u003c/p\u003e\n\u003cp\u003e这使 \u003ccode\u003ecommit_siblings\u003c/code\u003e 的使用开销更低。\u003c/p\u003e","id":"9.1.0-fb308d53051dadef","identity_text":"Improve performance of commit_siblings (Greg Smith) This allows the use of commit_siblings with less overhead.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/004","source_hash":"cf3f82617f9761edb85c92dc17a5cf7b3e2e41dcaf1f02d1a99d56e0bc610d0d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"90beac3fb987fa88e775722d75b2b1d133b4c9c77f38463f127aa2ab5701366e","text":"改进 commit_siblings 的性能（Greg Smith） 这使 commit_siblings 的使用开销更低。","title":"改进 commit_siblings 的性能","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f755363c5dd32592ceadda90b4050f5a","html":"\u003cp\u003e降低大型 ispell 词典的内存需求（Pavel Stehule、Tom Lane）\u003c/p\u003e","id":"9.1.0-c449d6240b42c4a9","identity_text":"Reduce the memory requirement for large ispell dictionaries (Pavel Stehule, Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/005","source_hash":"3f2c22c8e8b689341ac8a4dd3a2764433e865b5183aa5d77d9ae9213d46fca5f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"478dc59e0415dd291073dfa47d670279d0f360e2047559f0f7416d3ac45315c1","text":"降低大型 ispell 词典的内存需求（Pavel Stehule、Tom Lane）","title":"降低大型 ispell 词典的内存需求","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"bce884e504cbe4a8aca87f5f3ad0c562","html":"\u003cp\u003e避免\u003cspan\u003e“\u003cspan\u003e盲写\u003c/span\u003e”\u003c/span\u003e之后数据文件保持打开（Alvaro Herrera）\u003c/p\u003e\n\u003cp\u003e这修复了后端可能在文件被删除后很久仍持有其打开状态、阻止内核回收磁盘空间的场景。\u003c/p\u003e","id":"9.1.0-ed08d3eeab28ce07","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 性能","section_path":["服务器","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/006","source_hash":"9247a7b3de36640d123d1549b5b8c52f1cd0ac3fd4188cb9584dd9e5e0c702dd","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.2","statement_hash":"78acb7563b0f0e294055b6b1804482dd3caacd3ba70d558c67bc9b3f0324388d","text":"避免“盲写”之后数据文件保持打开（Alvaro Herrera） 这修复了后端可能在文件被删除后很久仍持有其打开状态、阻止内核回收磁盘空间的场景。","title":"避免“盲写”之后数据文件保持打开","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ef5ade369462b29b5e346091c5a29aae","html":"\u003cp\u003e允许继承表扫描返回有意义的排序结果（Greg Stark、Hans-Jurgen Schonig、Robert Haas、Tom Lane）\u003c/p\u003e\n\u003cp\u003e这允许对继承表上使用 \u003ccode\u003eORDER BY\u003c/code\u003e、\u003ccode\u003eLIMIT\u003c/code\u003e 或 \u003ccode\u003eMIN\u003c/code\u003e/\u003ccode\u003eMAX\u003c/code\u003e 的查询做更好的优化。\u003c/p\u003e","id":"9.1.0-cb3b3b03f256e0e1","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":[],"source_entry_id":"9.1.0/changes/007","source_hash":"0fe23b83fd2bf7226b050f11535f884bc7294b3aa5d151f1eda5916fce9c21f1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.3","statement_hash":"429544f2ddceb18034428967456705c90860350f5515b4d61766e6d2fec3fa1e","text":"允许继承表扫描返回有意义的排序结果（Greg Stark、Hans-Jurgen Schonig、Robert Haas、Tom Lane） 这允许对继承表上使用 ORDER BY、LIMIT 或 MIN/MAX 的查询做更好的优化。","title":"允许继承表扫描返回有意义的排序结果","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f17268b4639b3da8fd7ba4f33d1170c5","html":"\u003cp\u003e改进 GIN 索引扫描的代价估计（Teodor Sigaev）\u003c/p\u003e","id":"9.1.0-13190638360acdcb","identity_text":"Improve GIN index scan cost estimation (Teodor Sigaev)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":[],"source_entry_id":"9.1.0/changes/008","source_hash":"00202c6328ba9f04401ff77a2acbfa86c07938d183d482c188b9d764aeb9cea4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.3","statement_hash":"eaeb2f9e2c9fd4986230068d1801c9bad812a7aadffd25044e444471122b0010","text":"改进 GIN 索引扫描的代价估计（Teodor Sigaev）","title":"改进 GIN 索引扫描的代价估计","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"db0f7e5cdbf2694b3f69eeff02697fee","html":"\u003cp\u003e改进聚合和窗口函数的代价估计（Tom Lane）\u003c/p\u003e","id":"9.1.0-0db4f548afcc4ba3","identity_text":"Improve cost estimation for aggregates and window functions (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":[],"source_entry_id":"9.1.0/changes/009","source_hash":"2833f2651b30f3f1b062358c573106b5317bb8671722effd0680965b266779c8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.3","statement_hash":"c2989d9bd95976995dee253b3f78f5fcae21984c4cd1ceee21947cd7d63bce1a","text":"改进聚合和窗口函数的代价估计（Tom Lane）","title":"改进聚合和窗口函数的代价估计","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"49b5f3783a6162345dd2c1e93dfef520","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"\u003e\u003ccode\u003epg_hba.conf\u003c/code\u003e\u003c/a\u003e 中支持主机名和主机后缀（例如 \u003ccode\u003e.example.com\u003c/code\u003e）（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e此前只支持主机 \u003cacronym\u003eIP\u003c/acronym\u003e 地址和 \u003cacronym\u003eCIDR\u003c/acronym\u003e 值。\u003c/p\u003e","id":"9.1.0-327f39d709e58686","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/010","source_hash":"250e535a3b1af7eeaac8746763945a36bf66918590b1cdf82ed18e7776c71782","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"37d5ffb9a89a7bb3eb46383ccbc932d82ab35912f4b0b4f4b2043184b0cba12c","text":"在 pg_hba.conf 中支持主机名和主机后缀（例如 .example.com）（Peter Eisentraut） 此前只支持主机 IP 地址和 CIDR 值。","title":"在 pg_hba.conf 中支持主机名和主机后缀（例如 .example.com）","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e3628e0896b6c873cdac0f7984f87dc2","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"\u003e\u003ccode\u003epg_hba.conf\u003c/code\u003e\u003c/a\u003e 的 host 列中支持关键字 \u003ccode\u003eall\u003c/code\u003e（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e此前人们为此使用 \u003ccode\u003e0.0.0.0/0\u003c/code\u003e 或 \u003ccode\u003e::/0\u003c/code\u003e。\u003c/p\u003e","id":"9.1.0-ea1b2b983dbedb34","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/011","source_hash":"4b23ad5ad18031087ae4276a10c378d563bce3b39656c13341e8282325227673","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"d99a71e43efed3b24059fc13263a6fdd7068b9990ef3ff018f010f77d6dd0d96","text":"在 pg_hba.conf 的 host 列中支持关键字 all（Peter Eisentraut） 此前人们为此使用 0.0.0.0/0 或 ::/0。","title":"在 pg_hba.conf 的 host 列中支持关键字 all","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a1d0cb979d3f658209b2eacd695bb57b","html":"\u003cp\u003e在不支持 Unix 套接字连接的平台上拒绝 \u003ca href=\"/docs/9.1/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. pg_hba.conf 文件\"\u003e\u003ccode\u003epg_hba.conf\u003c/code\u003e\u003c/a\u003e 中的 \u003ccode\u003elocal\u003c/code\u003e 行（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e此前这类行会被静默忽略，这可能令人意外。这使该行为更像其他不受支持的情况。\u003c/p\u003e","id":"9.1.0-cb1dc8d4ca390a9c","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/012","source_hash":"776473ca5264d053be06d0df090b35a551aff51f383e3edea0544680eed7fc6e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"70499d701b18466c321c0e4fbec14d9c93d3b2760c04d507fc74ab88814eac8c","text":"在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的 local 行（Magnus Hagander） 此前这类行会被静默忽略，这可能令人意外。这使该行为更像其他不受支持的情况。","title":"在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的 local 行","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"19e16173bb9578ac50f689efef68a489","html":"\u003cp\u003e允许使用 \u003ca href=\"/docs/9.1/auth-methods.html#GSSAPI-AUTH\" title=\"19.3.3. GSSAPI 认证\"\u003e\u003cacronym\u003eGSSAPI\u003c/acronym\u003e\u003c/a\u003e 通过 \u003ca href=\"/docs/9.1/auth-methods.html#SSPI-AUTH\" title=\"19.3.4. SSPI 认证\"\u003e\u003cacronym\u003eSSPI\u003c/acronym\u003e\u003c/a\u003e 向服务器认证（Christian Ullrich）\u003c/p\u003e\n\u003cp\u003e具体而言，这允许基于 Unix 的 \u003cacronym\u003eGSSAPI\u003c/acronym\u003e 客户端与 Windows 服务器进行 \u003cacronym\u003eSSPI\u003c/acronym\u003e 认证。\u003c/p\u003e","id":"9.1.0-bf3e7cbf1c19a241","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/013","source_hash":"69db46bf98d3363ee5b7bde2d0611847e734d1ecac24c2d2626d80f3f43a7da9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"6f1f1749bfd2f0669093d75846d8d05923f92d625a252467ded7cd416acbe8cc","text":"允许使用 GSSAPI 通过 SSPI 向服务器认证（Christian Ullrich） 具体而言，这允许基于 Unix 的 GSSAPI 客户端与 Windows 服务器进行 SSPI 认证。","title":"允许使用 GSSAPI 通过 SSPI 向服务器认证","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b766d08cdd6e782b84560f05dcd56f9f","html":"\u003cp\u003e本地套接字上的 \u003ca href=\"/docs/9.1/auth-methods.html#AUTH-IDENT\" title=\"19.3.6. Ident 认证\"\u003e\u003ccode\u003eident\u003c/code\u003e\u003c/a\u003e 认证现在称为 \u003ca href=\"/docs/9.1/auth-methods.html#AUTH-PEER\" title=\"19.3.7. Peer 认证\"\u003e\u003ccode\u003epeer\u003c/code\u003e\u003c/a\u003e（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e为了向后兼容仍接受旧名称，但由于这两种方法根本不同，为它们采用不同的名称似乎更好。\u003c/p\u003e","id":"9.1.0-4317a84657b812fc","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/014","source_hash":"2129725719472f75d69994bd49ec51a59c4fa395782679e59e3ecfd02f8a627c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"22e6a03a46db422f3a0525ae9f99ff8c7f5125d6f07f19d7a0ff9bdb1f70a732","text":"本地套接字上的 ident 认证现在称为 peer（Magnus Hagander） 为了向后兼容仍接受旧名称，但由于这两种方法根本不同，为它们采用不同的名称似乎更好。","title":"本地套接字上的 ident 认证现在称为 peer","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6839168d42dafbceec1b537dce816cad","html":"\u003cp\u003e重写 \u003ca href=\"/docs/9.1/auth-methods.html#AUTH-PEER\" title=\"19.3.7. Peer 认证\"\u003e\u003cacronym\u003epeer\u003c/acronym\u003e\u003c/a\u003e 认证，避免使用凭据控制消息（Tom Lane）\u003c/p\u003e\n\u003cp\u003e此变更使 peer 认证代码更简单、性能更好。但它要求平台提供 \u003ccode\u003egetpeereid\u003c/code\u003e 函数或等效的套接字操作。据我们所知，唯一此前 peer 认证可用而现在不可用的平台是 5.0 之前的 NetBSD。\u003c/p\u003e","id":"9.1.0-257189e35bcbc95b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 认证","section_path":["服务器","认证"],"source_commits":[],"source_entry_id":"9.1.0/changes/015","source_hash":"85f28f3d783b34d423038f38b01087edfa14a275bd2735a2f5ccdbe6dfc9add2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.4","statement_hash":"8a33925b8b04de2b291c28a1d48f4cb9b941f0e5ee06c1f18b3a972f186565a7","text":"重写 peer 认证，避免使用凭据控制消息（Tom Lane） 此变更使 peer 认证代码更简单、性能更好。但它要求平台提供 getpeereid 函数或等效的套接字操作。据我们所知，唯一此前 peer 认证可用而现在不可用的平台是 5.0 之前的 NetBSD。","title":"重写 peer 认证，避免使用凭据控制消息","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"92b6e90530b2d45fb9b55a96b3881314","html":"\u003cp\u003e为重启点和检查点的日志记录添加细节，它由 \u003ca href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-CHECKPOINTS\"\u003e\u003ccode\u003elog_checkpoints\u003c/code\u003e\u003c/a\u003e 控制（Fujii Masao、Greg Smith）\u003c/p\u003e\n\u003cp\u003e新增细节包括 \u003cacronym\u003eWAL\u003c/acronym\u003e 文件和同步活动。\u003c/p\u003e","id":"9.1.0-3e81d8a76bc7a951","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":[],"source_entry_id":"9.1.0/changes/016","source_hash":"d2f94b7f594b517d4aa9e707ebbbcfc9d25c1b403fe2e8cca57ab057ad7060bd","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.5","statement_hash":"7837dd90a2bf97e7ec26b38a0b43386f0b767484a216e21139e5d4d5f014f837","text":"为重启点和检查点的日志记录添加细节，它由 log_checkpoints 控制（Fujii Masao、Greg Smith） 新增细节包括 WAL 文件和同步活动。","title":"为重启点和检查点的日志记录添加细节，它由 log_checkpoints 控制","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ed0c3599f7ee751fca294f8cbbaf7897","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-FILE-MODE\"\u003e\u003ccode\u003elog_file_mode\u003c/code\u003e\u003c/a\u003e，控制日志收集器创建的日志文件的权限（Martin Pihlak）\u003c/p\u003e","id":"9.1.0-10875641167a1e31","identity_text":"Add log_file_mode which controls the permissions on log files created by the logging collector (Martin Pihlak)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":[],"source_entry_id":"9.1.0/changes/017","source_hash":"6c5f4394b9dae0844faa1c98a590de0bdc2feb45cb129964199aa502f8a5f7f9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.5","statement_hash":"207003b61a5595b4ebde245173f6685380892c8d86cc65ce162f874ad7d40115","text":"新增 log_file_mode，控制日志收集器创建的日志文件的权限（Martin Pihlak）","title":"新增 log_file_mode，控制日志收集器创建的日志文件的权限","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"602a5c00cb0d0ea695362f947a264c9a","html":"\u003cp\u003e把 \u003cspan\u003esyslog\u003c/span\u003e 日志的默认最大行长降低到 900 字节加前缀（Noah Misch）\u003c/p\u003e\n\u003cp\u003e这避免了在有 1KB（而非更常见的 2KB）长度限制的 syslog 实现上长日志行被截断。\u003c/p\u003e","id":"9.1.0-1842c757427db855","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":[],"source_entry_id":"9.1.0/changes/018","source_hash":"35789d54a82be435bbe82937db99fcf132f9cd651ec1b9c3cf0f2f3b30928626","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.5","statement_hash":"a7a3209074e5a88433e5f2b5c661538c8b0498740ae6f288128623e2666a0123","text":"把 syslog 日志的默认最大行长降低到 900 字节加前缀（Noah Misch） 这避免了在有 1KB（而非更常见的 2KB）长度限制的 syslog 实现上长日志行被截断。","title":"把 syslog 日志的默认最大行长降低到 900 字节加前缀","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5502325f13d2580814f81ddd1eb99951","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_activity\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003eclient_hostname\u003c/code\u003e 列（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e此前只报告客户端地址。\u003c/p\u003e","id":"9.1.0-1dfa1347e5e9595a","identity_text":"Add client_hostname column to pg_stat_activity (Peter Eisentraut) Previously only the client address was reported.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 统计视图","section_path":["服务器","统计视图"],"source_commits":[],"source_entry_id":"9.1.0/changes/019","source_hash":"ffa8916c35d5cb2e18cbbd3e06c0a9643bc51c139d93a5535737c9122b21dd35","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.6","statement_hash":"1299d872e9f36abfac7c1a2933c819c819e0b8331ab0f6d4f670e39dbd9240b6","text":"为 pg_stat_activity 新增 client_hostname 列（Peter Eisentraut） 此前只报告客户端地址。","title":"为 pg_stat_activity 新增 client_hostname 列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"831696b911c2d7f03de31fccb3188209","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_xact_*\u003c/code\u003e\u003c/a\u003e 统计函数和视图（Joel Jacobson）\u003c/p\u003e\n\u003cp\u003e它们类似于数据库范围的统计计数器视图，但只反映当前事务的计数。\u003c/p\u003e","id":"9.1.0-a5168579565551bd","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 统计视图","section_path":["服务器","统计视图"],"source_commits":[],"source_entry_id":"9.1.0/changes/020","source_hash":"e274f03c3dd63775762765032ccdf263a9b65fd18d927940f341fff6e0149ac3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.6","statement_hash":"35e423f65aec2e27167aa6a4f04ff8b92e6225c2640cd5ca6e62871a11e28b5e","text":"新增 pg_stat_xact_* 统计函数和视图（Joel Jacobson） 它们类似于数据库范围的统计计数器视图，但只反映当前事务的计数。","title":"新增 pg_stat_xact_* 统计函数和视图","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"95a3d8136672b9612db267001e96fa19","html":"\u003cp\u003e在数据库级和后台写入进程统计视图中新增上次重置时间（Tomas Vondra）\u003c/p\u003e","id":"9.1.0-16c0231daa5c8e23","identity_text":"Add time of last reset in database-level and background writer statistics views (Tomas Vondra)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 统计视图","section_path":["服务器","统计视图"],"source_commits":[],"source_entry_id":"9.1.0/changes/021","source_hash":"cb09de37d865efdd760b3b02bb3dafa3b9e72198d4f45836428b13662ca7abf4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.6","statement_hash":"bb7f33366edc90b6f09648e8b8f4ce6ad432b0c13afaaf392ba4803fced090e3","text":"在数据库级和后台写入进程统计视图中新增上次重置时间（Tomas Vondra）","title":"在数据库级和后台写入进程统计视图中新增上次重置时间","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"7bf504f3ecc5b8232c916cb469c6740a","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_*_tables\u003c/code\u003e\u003c/a\u003e 视图中新增显示清理和分析操作次数的列（Magnus Hagander）\u003c/p\u003e","id":"9.1.0-4661f349a9c5f375","identity_text":"Add columns showing the number of vacuum and analyze operations in pg_stat_*_tables views (Magnus Hagander)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 统计视图","section_path":["服务器","统计视图"],"source_commits":[],"source_entry_id":"9.1.0/changes/022","source_hash":"e73d187fb8a4d39fb1de57372b2ea8846194dfc6c23edddf23f2b0cfa199f08d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.6","statement_hash":"48f6007bdbde3195f99652bc458a2f6903e3950182fe25eac10d12915bf82376","text":"在 pg_stat_*_tables 视图中新增显示清理和分析操作次数的列（Magnus Hagander）","title":"在 pg_stat_*_tables 视图中新增显示清理和分析操作次数的列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e0dbd96aac449ba0d6dc27fccb37c339","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_bgwriter\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003ebuffers_backend_fsync\u003c/code\u003e 列（Greg Smith）\u003c/p\u003e\n\u003cp\u003e这个新列统计后端对缓冲区执行 fsync 的次数。\u003c/p\u003e","id":"9.1.0-a7602f4560fa5173","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 统计视图","section_path":["服务器","统计视图"],"source_commits":[],"source_entry_id":"9.1.0/changes/023","source_hash":"10c6e3d84953828de867e6db99c8bdb44a7bf96a91f12d3f2ae2477f955c14f6","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.6","statement_hash":"8efc74066410a973de1ef7124540802046fe422f465a178e1a9bab8fecd280c2","text":"为 pg_stat_bgwriter 新增 buffers_backend_fsync 列（Greg Smith） 这个新列统计后端对缓冲区执行 fsync 的次数。","title":"为 pg_stat_bgwriter 新增 buffers_backend_fsync 列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3c71b09507f36de30fed7f9cf2813961","html":"\u003cp\u003e提供 \u003ca href=\"/docs/9.1/runtime-config-wal.html#GUC-WAL-BUFFERS\"\u003e\u003ccode\u003ewal_buffers\u003c/code\u003e\u003c/a\u003e 的自动调整（Greg Smith）\u003c/p\u003e\n\u003cp\u003e默认情况下，\u003ccode\u003ewal_buffers\u003c/code\u003e 的值现在根据 \u003ccode\u003eshared_buffers\u003c/code\u003e 的值自动选择。\u003c/p\u003e","id":"9.1.0-71b0932120874992","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 服务器设置","section_path":["服务器","服务器设置"],"source_commits":[],"source_entry_id":"9.1.0/changes/024","source_hash":"34c26624c96b807736072650a6d37e5c0f6dfbfd35bb05d25799c30450b14b15","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.7","statement_hash":"65a6572875e738aa90ced1d5680e3968b963dea56d48efc80ea03e70c269fca7","text":"提供 wal_buffers 的自动调整（Greg Smith） 默认情况下，wal_buffers 的值现在根据 shared_buffers 的值自动选择。","title":"提供 wal_buffers 的自动调整","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e7f28bf3d9cdb0908ec5c095ef06c18d","html":"\u003cp\u003e提高 \u003ca href=\"/docs/9.1/runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT\"\u003e\u003ccode\u003edeadlock_timeout\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/runtime-config-logging.html#GUC-LOG-MIN-DURATION-STATEMENT\"\u003e\u003ccode\u003elog_min_duration_statement\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/runtime-config-autovacuum.html#GUC-LOG-AUTOVACUUM-MIN-DURATION\"\u003e\u003ccode\u003elog_autovacuum_min_duration\u003c/code\u003e\u003c/a\u003e 的最大值（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。\u003c/p\u003e","id":"9.1.0-43863dd5254a484d","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器 / 服务器设置","section_path":["服务器","服务器设置"],"source_commits":[],"source_entry_id":"9.1.0/changes/025","source_hash":"233f80a5cbd061644a36fbc32b3b8423c9ecf50ace01f36f1aaf6ee020d375ca","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.3.7","statement_hash":"0b9c8463da6731f60569ef9e4be6e1ef61650b0a48ef421288f7317cc94584ba","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 的最大值","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"14ad55c95ece693d97e4778434dda205","html":"\u003cp\u003e允许\u003ca href=\"/docs/9.1/warm-standby.html#SYNCHRONOUS-REPLICATION\" title=\"25.2.6. 同步复制\"\u003e同步复制\u003c/a\u003e（Simon Riggs、Fujii Masao）\u003c/p\u003e\n\u003cp\u003e这允许主服务器等待备库把事务信息写入磁盘后再确认提交。每次只有一个备库可以充当同步备库的角色，由 \u003ca href=\"/docs/9.1/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES\"\u003e\u003ccode\u003esynchronous_standby_names\u003c/code\u003e\u003c/a\u003e 设置控制。可以使用 \u003ca href=\"/docs/9.1/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\"\u003e\u003ccode\u003esynchronous_commit\u003c/code\u003e\u003c/a\u003e 设置按事务启用或禁用同步复制。\u003c/p\u003e","id":"9.1.0-2c323a16794a0dce","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 流复制和连续归档","section_path":["复制和恢复","流复制和连续归档"],"source_commits":[],"source_entry_id":"9.1.0/changes/026","source_hash":"efcaa6fbce8e4198cd5be445d67ef8fa8fbd5faac7d51a3dbe22a9fe53cb0073","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.2","statement_hash":"79789ba8984b2b380acdf9700dc52a873225ff7c5d79bba812c1f57d37970bef","text":"允许同步复制（Simon Riggs、Fujii Masao） 这允许主服务器等待备库把事务信息写入磁盘后再确认提交。每次只有一个备库可以充当同步备库的角色，由 synchronous_standby_names 设置控制。可以使用 synchronous_commit 设置按事务启用或禁用同步复制。","title":"允许同步复制","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b052b49fa1ec3fb5b3bdc2854d20a3be","html":"\u003cp\u003e新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份（Magnus Hagander、Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e这避免了搭建备库服务器时手工传输文件系统备份的要求。\u003c/p\u003e","id":"9.1.0-92d1132ef4a38cbf","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 流复制和连续归档","section_path":["复制和恢复","流复制和连续归档"],"source_commits":[],"source_entry_id":"9.1.0/changes/027","source_hash":"a679a1558596fd08ed357db6270dffce68dc7c8d7d8af227c74440965e7f66a1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.2","statement_hash":"3b3f0fb32560040010fcf5e12e9ce87caea89d34ca326e984e1c122c092744f8","text":"新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份（Magnus Hagander、Heikki Linnakangas） 这避免了搭建备库服务器时手工传输文件系统备份的要求。","title":"新增协议支持，使用流复制网络连接向备库服务器发送文件系统备份","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e6ffa77b09e9ec0428af00dd27604afb","html":"\u003cp\u003e新增 \u003ccode\u003ereplication_timeout\u003c/code\u003e 设置（Fujii Masao、Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e空闲时间超过 \u003ccode\u003ereplication_timeout\u003c/code\u003e 间隔的复制连接将被自动终止。此前，失败的连接通常要等到 TCP 超时才会被检测到，这在许多情况下长得不方便。\u003c/p\u003e","id":"9.1.0-3a7f688638e26048","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 流复制和连续归档","section_path":["复制和恢复","流复制和连续归档"],"source_commits":[],"source_entry_id":"9.1.0/changes/028","source_hash":"c50f2c92c1b7ea7dadcaa598c537e75ad5499de094f1636621a7b552582b56a8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.2","statement_hash":"979eed5e0468b5913b10fde6629a9ee15ec8ae0eba12b2f807f0a5094132fd10","text":"新增 replication_timeout 设置（Fujii Masao、Heikki Linnakangas） 空闲时间超过 replication_timeout 间隔的复制连接将被自动终止。此前，失败的连接通常要等到 TCP 超时才会被检测到，这在许多情况下长得不方便。","title":"新增 replication_timeout 设置","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5135a718d4bcc0eba383ea84f46697e7","html":"\u003cp\u003e新增命令行工具\u003ca href=\"/docs/9.1/app-pgbasebackup.html\" title=\"pg_basebackup\"\u003e\u003cspan\u003epg_basebackup\u003c/span\u003e\u003c/a\u003e，用于创建新的备库服务器或数据库备份（Magnus Hagander）\u003c/p\u003e","id":"9.1.0-873a034adc09201f","identity_text":"Add command-line tool pg_basebackup for creating a new standby server or database backup (Magnus Hagander)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 流复制和连续归档","section_path":["复制和恢复","流复制和连续归档"],"source_commits":[],"source_entry_id":"9.1.0/changes/029","source_hash":"73ff1c3f4fdf503f11591afc9ce8b0bb2f5691e97abf86661648c0410cee70a1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.2","statement_hash":"434cff55dd84da0b266a442263b50738baf6d155bbc4d7b83d0a369bb94d994e","text":"新增命令行工具pg_basebackup，用于创建新的备库服务器或数据库备份（Magnus Hagander）","title":"新增命令行工具pg_basebackup，用于创建新的备库服务器或数据库备份","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5dafe2964380a5012d430835ec0e4e6f","html":"\u003cp\u003e为角色新增\u003ca href=\"/docs/9.1/sql-createrole.html\" title=\"CREATE ROLE\"\u003e复制权限\u003c/a\u003e（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e这是一个用于流复制的只读权限。它允许非超级用户角色用于复制连接。此前只有超级用户可以发起复制连接；超级用户默认仍拥有此权限。\u003c/p\u003e","id":"9.1.0-8b5925e9af8224d8","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 流复制和连续归档","section_path":["复制和恢复","流复制和连续归档"],"source_commits":[],"source_entry_id":"9.1.0/changes/030","source_hash":"ea32c628b0a374bb15b3a172fdb29ff1841b868d3d972a898fe87463a4384d36","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.2","statement_hash":"e1d563aee9a0089dfb6ab676ee0e6c8829eeec01e919232a08e7c80ba935592b","text":"为角色新增复制权限（Magnus Hagander） 这是一个用于流复制的只读权限。它允许非超级用户角色用于复制连接。此前只有超级用户可以发起复制连接；超级用户默认仍拥有此权限。","title":"为角色新增复制权限","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"84b73712c94a425211a1ffc8de9f1d68","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_replication\u003c/code\u003e\u003c/a\u003e，显示 \u003cacronym\u003eWAL\u003c/acronym\u003e 发送端进程的活动（Itagaki Takahiro、Simon Riggs）\u003c/p\u003e\n\u003cp\u003e它报告所有已连接备库服务器的状态。\u003c/p\u003e","id":"9.1.0-fa951fb54f152d62","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 复制监控","section_path":["复制和恢复","复制监控"],"source_commits":[],"source_entry_id":"9.1.0/changes/031","source_hash":"7f1f4edaceecee07ecd87463cd68eec51f4436769a6358bb19bac412ed512bd2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.3","statement_hash":"820a025232df8034c229d0c651d0db474723f4b94376d7ee297ecb98718b52ca","text":"新增系统视图 pg_stat_replication，显示 WAL 发送端进程的活动（Itagaki Takahiro、Simon Riggs） 它报告所有已连接备库服务器的状态。","title":"新增系统视图 pg_stat_replication，显示 WAL 发送端进程的活动","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e734548bca22bba73924cf6c04b48e8a","html":"\u003cp\u003e新增监控函数 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE\" title=\"表 9.58. 恢复信息函数\"\u003e\u003ccode\u003epg_last_xact_replay_timestamp()\u003c/code\u003e\u003c/a\u003e（Fujii Masao）\u003c/p\u003e\n\u003cp\u003e它返回主库生成备库上已应用的最新的提交或中止记录的时间。\u003c/p\u003e","id":"9.1.0-f8fe5f14bcc0af3b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 复制监控","section_path":["复制和恢复","复制监控"],"source_commits":[],"source_entry_id":"9.1.0/changes/032","source_hash":"71166a5af6fd24e4e1acb323a2b24e09fb826381323cd6e8ffd3b8636a8c0c1e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.3","statement_hash":"2ac70c96a71ff41ce19c316d137fe95528a82b35214c32c2d32c3627635ccc17","text":"新增监控函数 pg_last_xact_replay_timestamp()（Fujii Masao） 它返回主库生成备库上已应用的最新的提交或中止记录的时间。","title":"新增监控函数 pg_last_xact_replay_timestamp()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"79662d23edfbd6471b5a45db7916a3c0","html":"\u003cp\u003e新增配置参数 \u003ca href=\"/docs/9.1/runtime-config-replication.html#GUC-HOT-STANDBY-FEEDBACK\"\u003e\u003ccode\u003ehot_standby_feedback\u003c/code\u003e\u003c/a\u003e，使备库可以推迟主库上旧行版本的清理（Simon Riggs）\u003c/p\u003e\n\u003cp\u003e这有助于避免取消备库上的长时间运行查询。\u003c/p\u003e","id":"9.1.0-f5ac0f472c2baf40","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 热备","section_path":["复制和恢复","热备"],"source_commits":[],"source_entry_id":"9.1.0/changes/033","source_hash":"ab2121fc0a665fcacc116e86bc30e29731d4d84dd8257352f39f5e14fab152c6","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.4","statement_hash":"85a87fb7b69e54dfb15489fbb509814986970b7deef28bc5d3b05efed4cce5ae","text":"新增配置参数 hot_standby_feedback，使备库可以推迟主库上旧行版本的清理（Simon Riggs） 这有助于避免取消备库上的长时间运行查询。","title":"新增配置参数 hot_standby_feedback，使备库可以推迟主库上旧行版本的清理","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"69b54c88fc7917aceface1400a905cca","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_database_conflicts\u003c/code\u003e\u003c/a\u003e，显示已被取消的查询及其原因（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e取消可能因表空间被删除、锁超时、旧快照、被固定的缓冲区和死锁而发生。\u003c/p\u003e","id":"9.1.0-7f15c54b84cd2604","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 热备","section_path":["复制和恢复","热备"],"source_commits":[],"source_entry_id":"9.1.0/changes/034","source_hash":"b4ddb4376066415015ffa0c3c79e8d215e997ee92a92a492932c7266ff83f0d4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.4","statement_hash":"93faf8a1d86aa0cb1d4f03d581428e1146726e226d6e0082e4b2e98fa8dffe05","text":"新增系统视图 pg_stat_database_conflicts，显示已被取消的查询及其原因（Magnus Hagander） 取消可能因表空间被删除、锁超时、旧快照、被固定的缓冲区和死锁而发生。","title":"新增系统视图 pg_stat_database_conflicts，显示已被取消的查询及其原因","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5384b09f324fe191e53226deb8413e16","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE\" title=\"表 27.1. 标准统计视图\"\u003e\u003ccode\u003epg_stat_database\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003econflicts\u003c/code\u003e 计数（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e这是该数据库中发生的冲突数量。\u003c/p\u003e","id":"9.1.0-f623de57d8e9a1fa","identity_text":"Add a conflicts count to pg_stat_database (Magnus Hagander) This is the number of conflicts that occurred in the database.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 热备","section_path":["复制和恢复","热备"],"source_commits":[],"source_entry_id":"9.1.0/changes/035","source_hash":"4824a7513d70f329b9dadd5a70a6b14527e7e2c15a033a7cbf2c018627e8793c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.4","statement_hash":"6a4fce9eb771501414ede1b58dfed7e3586d6796488038c68f02b972408c43e6","text":"为 pg_stat_database 新增 conflicts 计数（Magnus Hagander） 这是该数据库中发生的冲突数量。","title":"为 pg_stat_database 新增 conflicts 计数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a6a3d9cca9505127cd784c622b3d7de6","html":"\u003cp\u003e提高 \u003ca href=\"/docs/9.1/runtime-config-replication.html#GUC-MAX-STANDBY-ARCHIVE-DELAY\"\u003e\u003ccode\u003emax_standby_archive_delay\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/runtime-config-replication.html#GUC-MAX-STANDBY-STREAMING-DELAY\"\u003e\u003ccode\u003emax_standby_streaming_delay\u003c/code\u003e\u003c/a\u003e 的最大值\u003c/p\u003e\n\u003cp\u003e这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。\u003c/p\u003e","id":"9.1.0-2d7d986a2245b252","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 热备","section_path":["复制和恢复","热备"],"source_commits":[],"source_entry_id":"9.1.0/changes/036","source_hash":"51c475054f07edee9ed7a14d2a1244ac0e306eab450719937d187620b168f4c5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.4","statement_hash":"b4f5fab2c6298a185ff6abae9f7ed469724d2ce171ec4cd57044d01dd792e529","text":"提高 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值 这些参数此前的最大值都只有约 35 分钟。现在允许大得多的值。","title":"提高 max_standby_archive_delay 和 max_standby_streaming_delay 的最大值","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c2edc36efce725fe8c1686e858c6aaed","html":"\u003cp\u003e新增错误码 \u003ca href=\"/docs/9.1/errcodes-appendix.html#ERRCODES-TABLE\" title=\"表 A.1. PostgreSQL错误代码\"\u003e\u003ccode\u003eERRCODE_T_R_DATABASE_DROPPED\u003c/code\u003e\u003c/a\u003e，用于报告因数据库被删除导致的恢复冲突（Tatsuo Ishii）\u003c/p\u003e\n\u003cp\u003e这对连接池软件很有用。\u003c/p\u003e","id":"9.1.0-d251b105c2ac4c05","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 热备","section_path":["复制和恢复","热备"],"source_commits":[],"source_entry_id":"9.1.0/changes/037","source_hash":"9c107480998b4b66a10c89a8185dae5298697e94787c9fe33f831d32dcfe0251","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.4","statement_hash":"d8f619f672c4ce8afc214e2ca4ffca3f915164bca0a1d2f8373ce37e648e39f6","text":"新增错误码 ERRCODE_T_R_DATABASE_DROPPED，用于报告因数据库被删除导致的恢复冲突（Tatsuo Ishii） 这对连接池软件很有用。","title":"新增错误码 ERRCODE_T_R_DATABASE_DROPPED，用于报告因数据库被删除导致的恢复冲突","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"27b3b5e9e64e803e92a5eed6197e9bb9","html":"\u003cp\u003e新增控制流复制重放的函数（Simon Riggs）\u003c/p\u003e\n\u003cp\u003e新函数为 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"\u003e\u003ccode\u003epg_xlog_replay_pause()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"\u003e\u003ccode\u003epg_xlog_replay_resume()\u003c/code\u003e\u003c/a\u003e 和状态函数 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE\" title=\"表 9.59. 恢复控制函数\"\u003e\u003ccode\u003epg_is_xlog_replay_paused()\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"9.1.0-a2ec27088a2018c1","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().","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/038","source_hash":"443b69c60525f62beec160a94920a0bbc7872dd8c513f0140938b827fa3f7624","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"d7057eeb9f2c460b1b7f54454a6ef7dc35a345244422d545d95d0850448bae2e","text":"新增控制流复制重放的函数（Simon Riggs） 新函数为 pg_xlog_replay_pause()、pg_xlog_replay_resume() 和状态函数 pg_is_xlog_replay_paused()。","title":"新增控制流复制重放的函数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a3f5b21e98b02fe9c22e2230f3c53770","html":"\u003cp\u003e新增 \u003ccode\u003erecovery.conf\u003c/code\u003e 设置 \u003ccode\u003epause_at_recovery_target\u003c/code\u003e，用于在目标处暂停恢复（Simon Riggs）\u003c/p\u003e\n\u003cp\u003e这允许查询恢复服务器以检查恢复点是否是期望的那个。\u003c/p\u003e","id":"9.1.0-60ded08529617b76","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/039","source_hash":"f5882e280294aae60700e1004f483b1304229925d2aad372f52933f5b2bad11b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"142a7af51fe42a226a2f2a823fa80a3b9c72e4f1b53bb9099106b5f5f4b23a76","text":"新增 recovery.conf 设置 pause_at_recovery_target，用于在目标处暂停恢复（Simon Riggs） 这允许查询恢复服务器以检查恢复点是否是期望的那个。","title":"新增 recovery.conf 设置 pause_at_recovery_target，用于在目标处暂停恢复","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c397f75bea58b1580f13e27dee8d4da6","html":"\u003cp\u003e新增使用 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE\" title=\"表 9.57. 备份控制函数\"\u003e\u003ccode\u003epg_create_restore_point()\u003c/code\u003e\u003c/a\u003e 创建命名还原点的能力（Jaime Casanova）\u003c/p\u003e\n\u003cp\u003e这些命名还原点可以通过新的 \u003ccode\u003erecovery.conf\u003c/code\u003e 设置 \u003ca href=\"/docs/9.1/recovery-target-settings.html#RECOVERY-TARGET-NAME\"\u003e\u003ccode\u003erecovery_target_name\u003c/code\u003e\u003c/a\u003e 指定为恢复目标。\u003c/p\u003e","id":"9.1.0-52871215eeabef4b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/040","source_hash":"b344505afc397b0348e6364a2b291ecdb0672d9c6a772ce12ac9010aecd222e8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"02444a45a9b412091f74d892c04d4140216dc95d89e0d508340cabd017eb7f8c","text":"新增使用 pg_create_restore_point() 创建命名还原点的能力（Jaime Casanova） 这些命名还原点可以通过新的 recovery.conf 设置 recovery_target_name 指定为恢复目标。","title":"新增使用 pg_create_restore_point() 创建命名还原点的能力","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"fe049c3581653750f39b188a812a35a0","html":"\u003cp\u003e允许备库恢复自动切换到新时间线（Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e现在备库服务器会定期扫描归档目录以发现新时间线。\u003c/p\u003e","id":"9.1.0-dc42506318b3829a","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/041","source_hash":"43d1a0074272c3c916ff8b994e488a2111c1eff1cc30212aa08696523af6b26e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"5a979e5fcb89a652d895a19f7a6cc9486346c89c21dd260ed37996ef8e666042","text":"允许备库恢复自动切换到新时间线（Heikki Linnakangas） 现在备库服务器会定期扫描归档目录以发现新时间线。","title":"允许备库恢复自动切换到新时间线","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"762708d7103e2e123c8526e054a26b80","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/runtime-config-error-handling.html#GUC-RESTART-AFTER-CRASH\"\u003e\u003ccode\u003erestart_after_crash\u003c/code\u003e\u003c/a\u003e 设置，用于在后端崩溃后禁用自动服务器重启（Robert Haas）\u003c/p\u003e\n\u003cp\u003e这允许外部集簇管理软件控制数据库服务器是否重启。\u003c/p\u003e","id":"9.1.0-fd80bcfd28f4057d","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/042","source_hash":"d507e2ad6906d63e441971a8fed520e07672b067ba3e8d68bbfdd8b264ed95f1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"47dadbbe5d341f09a16ddf1bd8ffcea67b37b091559c5f21f58805c6c48afc4b","text":"新增 restart_after_crash 设置，用于在后端崩溃后禁用自动服务器重启（Robert Haas） 这允许外部集簇管理软件控制数据库服务器是否重启。","title":"新增 restart_after_crash 设置，用于在后端崩溃后禁用自动服务器重启","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"852f7f91ff501fb953e7b1bdcedeed37","html":"\u003cp\u003e允许 \u003ca href=\"/docs/9.1/recovery-config.html\" title=\"第 26 章 恢复配置\"\u003e\u003ccode\u003erecovery.conf\u003c/code\u003e\u003c/a\u003e 使用与 \u003ccode\u003epostgresql.conf\u003c/code\u003e 相同的引号行为（Dimitri Fontaine）\u003c/p\u003e\n\u003cp\u003e此前所有值都必须加引号。\u003c/p\u003e","id":"9.1.0-f03717324a693a9e","identity_text":"Allow recovery.conf to use the same quoting behavior as postgresql.conf (Dimitri Fontaine) Previously all values had to be quoted.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"复制和恢复 / 恢复控制","section_path":["复制和恢复","恢复控制"],"source_commits":[],"source_entry_id":"9.1.0/changes/043","source_hash":"3a476c108c7d290b50d91a2427af0a6f8d66a905004b771210b28df37a43a5d7","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.4.5","statement_hash":"f1b088245f01dc2bdb6b09b45e104db4504a7d67202f074c59ea602865be468c","text":"允许 recovery.conf 使用与 postgresql.conf 相同的引号行为（Dimitri Fontaine） 此前所有值都必须加引号。","title":"允许 recovery.conf 使用与 postgresql.conf 相同的引号行为","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"719394310c89fabecf01d919818149d5","html":"\u003cp\u003e新增真正的\u003ca href=\"/docs/9.1/transaction-iso.html#XACT-SERIALIZABLE\" title=\"13.2.3. 可串行化隔离级别\"\u003e可序列化隔离级别\u003c/a\u003e（Kevin Grittner、Dan Ports）\u003c/p\u003e\n\u003cp\u003e此前，请求可序列化隔离只保证整个事务使用单个 MVCC 快照，这允许某些已记载的异常。旧的快照隔离行为仍可通过请求 \u003ca href=\"/docs/9.1/transaction-iso.html#XACT-REPEATABLE-READ\" title=\"13.2.2. 可重复读隔离级别\"\u003e\u003ccode\u003eREPEATABLE READ\u003c/code\u003e\u003c/a\u003e 隔离级别获得。\u003c/p\u003e","id":"9.1.0-5ba2dc0f014d0f00","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/044","source_hash":"06eb0ce24d51646d8c84779963059490c3e721e916e7a4398a55206e69653bb3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"a393b8d562c1c6c9663f8f3f8852b953b5ee92a01226ff2e026faccf7b7cb09c","text":"新增真正的可序列化隔离级别（Kevin Grittner、Dan Ports） 此前，请求可序列化隔离只保证整个事务使用单个 MVCC 快照，这允许某些已记载的异常。旧的快照隔离行为仍可通过请求 REPEATABLE READ 隔离级别获得。","title":"新增真正的可序列化隔离级别","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"917d23692d3acfa91e6c22c0c4e71f22","html":"\u003cp\u003e允许在 \u003ca href=\"/docs/9.1/queries-with.html\" title=\"7.8. WITH查询（公共表表达式）\"\u003e\u003ccode\u003eWITH\u003c/code\u003e\u003c/a\u003e 子句中使用数据修改命令（\u003ccode\u003eINSERT\u003c/code\u003e/\u003ccode\u003eUPDATE\u003c/code\u003e/\u003ccode\u003eDELETE\u003c/code\u003e）（Marko Tiikkaja、Hitoshi Harada）\u003c/p\u003e\n\u003cp\u003e这些命令可以使用 \u003ccode\u003eRETURNING\u003c/code\u003e 把数据传递给包含它们的查询。\u003c/p\u003e","id":"9.1.0-f9b8919e24427bba","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/045","source_hash":"527a10e75d0300b8e199c7088bf5f2fe14294227653d1b30184c987b111d8f98","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"f93c8b551be421a8a7a4e28c9cf4fc0f33677a0f2f56014c05f69451672787ca","text":"允许在 WITH 子句中使用数据修改命令（INSERT/UPDATE/DELETE）（Marko Tiikkaja、Hitoshi Harada） 这些命令可以使用 RETURNING 把数据传递给包含它们的查询。","title":"允许在 WITH 子句中使用数据修改命令（INSERT/UPDATE/DELETE）","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c672817816cd03574cebb693f4a6ce10","html":"\u003cp\u003e允许把 \u003ca href=\"/docs/9.1/queries-with.html\" title=\"7.8. WITH查询（公共表表达式）\"\u003e\u003ccode\u003eWITH\u003c/code\u003e\u003c/a\u003e 子句附加到 \u003ccode\u003eINSERT\u003c/code\u003e、\u003ccode\u003eUPDATE\u003c/code\u003e、\u003ccode\u003eDELETE\u003c/code\u003e 语句（Marko Tiikkaja、Hitoshi Harada）\u003c/p\u003e","id":"9.1.0-8a13a6bdace086cb","identity_text":"Allow WITH clauses to be attached to INSERT, UPDATE, DELETE statements (Marko Tiikkaja, Hitoshi Harada)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/046","source_hash":"fa0d2a5e1c2832623b906eb66e1ea506108965306bedfcbebab6bbc05ee9400b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"0f044ee1959003adb4f09b69bf625e3a7d15254ea5e024215f51adb4cbc2b3e2","text":"允许把 WITH 子句附加到 INSERT、UPDATE、DELETE 语句（Marko Tiikkaja、Hitoshi Harada）","title":"允许把 WITH 子句附加到 INSERT、UPDATE、DELETE 语句","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"96dff4e80c15eddbfe1fd08d1b58f062","html":"\u003cp\u003e当在 \u003ccode\u003eGROUP BY\u003c/code\u003e 子句中指定了主键时，允许查询目标列表中出现非 \u003ca href=\"/docs/9.1/queries-table-expressions.html#QUERIES-GROUP\" title=\"7.2.3. GROUP BY和HAVING子句\"\u003e\u003ccode\u003eGROUP BY\u003c/code\u003e\u003c/a\u003e 列（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003eSQL 标准允许这种行为，而且由于有主键，结果是无歧义的。\u003c/p\u003e","id":"9.1.0-c8077d271e52a9b7","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/047","source_hash":"db46e0afce7d439f987543eaae1d976b05cad9a8b10402b420c6d479c69dfbbb","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"4fbb8ab2e4b050a102fe22aa324b7c792357581fc91d8b5bd1c1816f1e96aeab","text":"当在 GROUP BY 子句中指定了主键时，允许查询目标列表中出现非 GROUP BY 列（Peter Eisentraut） SQL 标准允许这种行为，而且由于有主键，结果是无歧义的。","title":"当在 GROUP BY 子句中指定了主键时，允许查询目标列表中出现非 GROUP BY 列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e585f6807fee4f07a4c0ddf6d8e6c44f","html":"\u003cp\u003e允许在 \u003ca href=\"/docs/9.1/queries-union.html\" title=\"7.4. 组合查询\"\u003e\u003ccode\u003eUNION\u003c/code\u003e/\u003ccode\u003eINTERSECT\u003c/code\u003e/\u003ccode\u003eEXCEPT\u003c/code\u003e\u003c/a\u003e 子句中使用关键字 \u003ccode\u003eDISTINCT\u003c/code\u003e（Tom Lane）\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eDISTINCT\u003c/code\u003e 是默认行为，因此使用该关键字是冗余的，但 SQL 标准允许。\u003c/p\u003e","id":"9.1.0-9587f77a8f108e6e","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/048","source_hash":"d8f76fd6f4a889af1ef9bc06cb705d49de7a5a68597eacb1f316eea4d1886532","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"6ca9d148fd435b5b645807f361ca64676aa38e849b70e586795abdce73568423","text":"允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT（Tom Lane） DISTINCT 是默认行为，因此使用该关键字是冗余的，但 SQL 标准允许。","title":"允许在 UNION/INTERSECT/EXCEPT 子句中使用关键字 DISTINCT","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c6fd44b9abb35d43cd220cc6342f8af9","html":"\u003cp\u003e修复带规则的普通查询，使其使用与 \u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e 相同的快照行为（Marko Tiikkaja）\u003c/p\u003e\n\u003cp\u003e此前 \u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e 对涉及规则的查询使用的快照时机略有不同。\u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e 的行为被认为更合逻辑。\u003c/p\u003e","id":"9.1.0-ef90f0cfd9397e75","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询","section_path":["查询"],"source_commits":[],"source_entry_id":"9.1.0/changes/049","source_hash":"ee052172ee65fd5bfdcc7641f8a638d75c49cd49a0c410aae8d3b0b738c70ff7","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5","statement_hash":"64e380ae2b06c659039aafcd5bb0e3d1de03137cbeb197372a364da67f66c9b2","text":"修复带规则的普通查询，使其使用与 EXPLAIN ANALYZE 相同的快照行为（Marko Tiikkaja） 此前 EXPLAIN ANALYZE 对涉及规则的查询使用的快照时机略有不同。EXPLAIN ANALYZE 的行为被认为更合逻辑。","title":"修复带规则的普通查询，使其使用与 EXPLAIN ANALYZE 相同的快照行为","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"8e04130aa430cbfc39aa1812a9a14de5","html":"\u003cp\u003e新增逐列\u003ca href=\"/docs/9.1/collation.html\" title=\"22.2. 排序规则支持\"\u003e排序规则\u003c/a\u003e支持（Peter Eisentraut、Tom Lane）\u003c/p\u003e\n\u003cp\u003e此前排序规则（文本字符串的排序顺序）只能在创建数据库时选择。现在可以通过 SQL 标准的 \u003ccode\u003eCOLLATE\u003c/code\u003e 子句逐列、逐域、逐索引或逐表达式设置排序规则。\u003c/p\u003e","id":"9.1.0-b622be94e1aea03f","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"查询 / 字符串","section_path":["查询","字符串"],"source_commits":[],"source_entry_id":"9.1.0/changes/050","source_hash":"0ba6162e2014dec6b9c5dd01e7237801b219231ae1e77a25ca937d1ad42664f3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.5.3","statement_hash":"2e28c589c11f22ddb7fd4661b1889ae4a22a32963e9ad5423b9b2159186d2e67","text":"新增逐列排序规则支持（Peter Eisentraut、Tom Lane） 此前排序规则（文本字符串的排序顺序）只能在创建数据库时选择。现在可以通过 SQL 标准的 COLLATE 子句逐列、逐域、逐索引或逐表达式设置排序规则。","title":"新增逐列排序规则支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"cde2eb2f398bc04124d819a2dddf2317","html":"\u003cp\u003e新增\u003ca href=\"/docs/9.1/extend-extensions.html\" title=\"35.15. 将相关对象打包成扩展\"\u003e扩展\u003c/a\u003e，简化 \u003cspan\u003ePostgreSQL\u003c/span\u003e 附加功能的打包（Dimitri Fontaine、Tom Lane）\u003c/p\u003e\n\u003cp\u003e扩展由新的 \u003ca href=\"/docs/9.1/sql-createextension.html\" title=\"CREATE EXTENSION\"\u003e\u003ccode\u003eCREATE\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/9.1/sql-alterextension.html\" title=\"ALTER EXTENSION\"\u003e\u003ccode\u003eALTER\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/9.1/sql-dropextension.html\" title=\"DROP EXTENSION\"\u003e\u003ccode\u003eDROP EXTENSION\u003c/code\u003e\u003c/a\u003e 命令控制。这取代了对添加到 \u003cspan\u003ePostgreSQL\u003c/span\u003e 安装的对象进行分组的临时方法。\u003c/p\u003e","id":"9.1.0-9ad05cfede26d294","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作","section_path":["对象操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/051","source_hash":"f8029cabe7d1c3b148109b7e2c69196cf1f841ef584e1181352e4cbfeeb4113e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6","statement_hash":"69886d573c856f102d6b995e9d0e479c20e32a5b4e7cf4d7044a259b7e6989d7","text":"新增扩展，简化 PostgreSQL 附加功能的打包（Dimitri Fontaine、Tom Lane） 扩展由新的 CREATE/ALTER/DROP EXTENSION 命令控制。这取代了对添加到 PostgreSQL 安装的对象进行分组的临时方法。","title":"新增扩展，简化 PostgreSQL 附加功能的打包","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"eaaf750a5b6bcfea328b1d52d557600c","html":"\u003cp\u003e新增对\u003ca href=\"/docs/9.1/sql-createforeigntable.html\" title=\"CREATE FOREIGN TABLE\"\u003e外部表\u003c/a\u003e的支持（Shigeru Hanada、Robert Haas、Jan Urbanski、Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e这允许像使用 \u003cspan\u003ePostgreSQL\u003c/span\u003e 原生存储的数据一样使用存储在数据库之外的数据。但外部表目前是只读的。\u003c/p\u003e","id":"9.1.0-18891b0211c6d571","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作","section_path":["对象操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/052","source_hash":"a3a38a5c0bd7e8c6e20bcf272eb297c918e3e5fbe5d22e41fa92aee48f0d1e7f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6","statement_hash":"45314b877fa280994a60a23621e96d5dd60b162ad002750c9791c05e2b80adbb","text":"新增对外部表的支持（Shigeru Hanada、Robert Haas、Jan Urbanski、Heikki Linnakangas） 这允许像使用 PostgreSQL 原生存储的数据一样使用存储在数据库之外的数据。但外部表目前是只读的。","title":"新增对外部表的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"deaedb0dceb157363c1017b3007ff236","html":"\u003cp\u003e允许通过 \u003ca href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"\u003e\u003ccode\u003eALTER TYPE\u003c/code\u003e\u003c/a\u003e 向现有枚举类型添加新值（Andrew Dunstan）\u003c/p\u003e","id":"9.1.0-a8e446aed8af8fd9","identity_text":"Allow new values to be added to an existing enum type via ALTER TYPE (Andrew Dunstan)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作","section_path":["对象操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/053","source_hash":"526e4518ce32ac7bd9e131bf38175beb7e9947b629b76d42c5c758efa09abaf9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6","statement_hash":"44e7524460c0884754138dd2074ae57adc8ad21ed583d12af3fdd0908ecc5628","text":"允许通过 ALTER TYPE 向现有枚举类型添加新值（Andrew Dunstan）","title":"允许通过 ALTER TYPE 向现有枚举类型添加新值","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"44f506bc1ee5bec530700498b4e66386","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"\u003e\u003ccode\u003eALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE\u003c/code\u003e\u003c/a\u003e（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e这允许修改组合类型。\u003c/p\u003e","id":"9.1.0-42e5debf44bcefba","identity_text":"Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE (Peter Eisentraut) This allows modification of composite types.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作","section_path":["对象操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/054","source_hash":"ad083e898692663b5c700ee6bcad16e74127dc9565265772a6ffb683416e5241","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6","statement_hash":"98f4563361eb27b33e95913da5c40864b904cdc41c091d6059587c6dfd526ec5","text":"新增 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE（Peter Eisentraut） 这允许修改组合类型。","title":"新增 ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"57605b90c24510c6bb8e80dff33dd8ab","html":"\u003cp\u003e为类型化表上的 \u003ca href=\"/docs/9.1/sql-altertype.html\" title=\"ALTER TYPE\"\u003e\u003ccode\u003eALTER TYPE\u003c/code\u003e\u003c/a\u003e 操作新增 \u003ccode\u003eRESTRICT\u003c/code\u003e/\u003ccode\u003eCASCADE\u003c/code\u003e（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e这控制 \u003ccode\u003eADD\u003c/code\u003e/\u003ccode\u003eDROP\u003c/code\u003e/\u003ccode\u003eALTER\u003c/code\u003e/\u003ccode\u003eRENAME ATTRIBUTE\u003c/code\u003e 的级联行为。\u003c/p\u003e","id":"9.1.0-f4af28f28a2b98a9","identity_text":"Add RESTRICT/CASCADE to ALTER TYPE operations on typed tables (Peter Eisentraut) This controls ADD/DROP/ALTER/RENAME ATTRIBUTE cascading behavior.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / ALTER Object","section_path":["对象操作","ALTER Object"],"source_commits":[],"source_entry_id":"9.1.0/changes/055","source_hash":"0a3dcf24f8a9a6c89619d7b90aad9406ff84a57cef6e5217450817e9eb34585a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.3","statement_hash":"fc2c6c7bec9361ecc5224ca279e1fcd9d792396e2d14431dd515b3408d32d707","text":"为类型化表上的 ALTER TYPE 操作新增 RESTRICT/CASCADE（Peter Eisentraut） 这控制 ADD/DROP/ALTER/RENAME ATTRIBUTE 的级联行为。","title":"为类型化表上的 ALTER TYPE 操作新增 RESTRICT/CASCADE","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"cd1393ea59d115df4604cee6729c9fd4","html":"\u003cp\u003e支持 \u003ccode\u003eALTER TABLE \u003cem\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e {OF | NOT OF} \u003cem\u003e\u003ccode\u003etype\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e（Noah Misch）\u003c/p\u003e\n\u003cp\u003e该语法允许把独立表变成类型化表，或把类型化表变成独立表。\u003c/p\u003e","id":"9.1.0-96cf99d8d6cefd97","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / ALTER Object","section_path":["对象操作","ALTER Object"],"source_commits":[],"source_entry_id":"9.1.0/changes/056","source_hash":"32ce1fd86fbc1476154c2c3a07e0e98a8976e52308140e2ce754d44f95419b1c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.3","statement_hash":"7e3ade8df9afa0df14ab1084e4018b766d05249673c69fba3b838cf2cc99a301","text":"支持 ALTER TABLE name {OF | NOT OF} type（Noah Misch） 该语法允许把独立表变成类型化表，或把类型化表变成独立表。","title":"支持 ALTER TABLE name {OF | NOT OF} type","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ba996556fa48bc59a989c9f8371f5f16","html":"\u003cp\u003e为 \u003ccode\u003eALTER ... SET SCHEMA\u003c/code\u003e 命令中的更多对象类型新增支持（Dimitri Fontaine）\u003c/p\u003e\n\u003cp\u003e该命令现在支持转换、操作符、操作符类、操作符族、文本搜索配置、文本搜索词典、文本搜索解析器和文本搜索模板。\u003c/p\u003e","id":"9.1.0-9b6521b45025ac63","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / ALTER Object","section_path":["对象操作","ALTER Object"],"source_commits":[],"source_entry_id":"9.1.0/changes/057","source_hash":"f1a1d415b785d8473ad554ccb6121273fb673fc35aecb008129b948068a4df90","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.3","statement_hash":"bcd09a44868d3fad8a505a12b3f30f4244389decb79502fd761ef2b72c471009","text":"为 ALTER ... SET SCHEMA 命令中的更多对象类型新增支持（Dimitri Fontaine） 该命令现在支持转换、操作符、操作符类、操作符族、文本搜索配置、文本搜索词典、文本搜索解析器和文本搜索模板。","title":"为 ALTER ... SET SCHEMA 命令中的更多对象类型新增支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6bf037c068ba70e5cfc9c8e6901dd4ea","html":"\u003cp\u003e新增 \u003ccode\u003eALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX\u003c/code\u003e（Gurjeet Singh）\u003c/p\u003e\n\u003cp\u003e这允许使用现有唯一索引（包括并发创建的唯一索引）来定义主键或唯一约束。\u003c/p\u003e","id":"9.1.0-2c4ab315edeb8dcc","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / CREATE/ALTER TABLE","section_path":["对象操作","CREATE/ALTER TABLE"],"source_commits":[],"source_entry_id":"9.1.0/changes/058","source_hash":"c136f97e79c9ab686b92c59603f9e1a3af1ae4625dae400d70139c524c233e55","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.4","statement_hash":"b74e4920298586d693333d4daa19c63ba34018c1504f5beeb375173e5ff9d105","text":"新增 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX（Gurjeet Singh） 这允许使用现有唯一索引（包括并发创建的唯一索引）来定义主键或唯一约束。","title":"新增 ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"90f5fdad7fcef0777e8933470b8a330c","html":"\u003cp\u003e允许 \u003ccode\u003eALTER TABLE\u003c/code\u003e 添加未经验证的外键（Simon Riggs）\u003c/p\u003e\n\u003cp\u003e新选项名为 \u003ccode\u003eNOT VALID\u003c/code\u003e。约束的状态之后可以改为 \u003ccode\u003eVALIDATED\u003c/code\u003e 并执行验证检查。这两者相结合，使你能够以对读写操作影响最小的方式添加外键。\u003c/p\u003e","id":"9.1.0-78da041489c7a4b7","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / CREATE/ALTER TABLE","section_path":["对象操作","CREATE/ALTER TABLE"],"source_commits":[],"source_entry_id":"9.1.0/changes/059","source_hash":"5c2e31487812ff26602aac7d0323003acbd12420b7f1cf2dc7e82feb7b211038","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.4","statement_hash":"768292ade0e1cc499ea7e5ffd4315ec4e92d68398f39bf87ab7c19f8a0836f7d","text":"允许 ALTER TABLE 添加未经验证的外键（Simon Riggs） 新选项名为 NOT VALID。约束的状态之后可以改为 VALIDATED 并执行验证检查。这两者相结合，使你能够以对读写操作影响最小的方式添加外键。","title":"允许 ALTER TABLE 添加未经验证的外键","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"05d9575c7910f5684f864308d622d6c1","html":"\u003cp\u003e允许 \u003ca href=\"/docs/9.1/sql-altertable.html\" title=\"ALTER TABLE\"\u003e\u003ccode\u003eALTER TABLE ... SET DATA TYPE\u003c/code\u003e\u003c/a\u003e 在适当情况下避免重写表（Noah Misch、Robert Haas）\u003c/p\u003e\n\u003cp\u003e例如，把 \u003ccode\u003evarchar\u003c/code\u003e 列转换为 \u003ccode\u003etext\u003c/code\u003e 不再需要重写表。但增大 \u003ccode\u003evarchar\u003c/code\u003e 列的长度约束仍需要重写表。\u003c/p\u003e","id":"9.1.0-e3ac3e0a4e885ca2","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / CREATE/ALTER TABLE","section_path":["对象操作","CREATE/ALTER TABLE"],"source_commits":[],"source_entry_id":"9.1.0/changes/060","source_hash":"af553984a879e9c3aacd219f154040cfd03c8596550c8ce7ec32c6e1890395dd","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.4","statement_hash":"bdcc6ad63e05bcd3faa0be3fdd1ff3ae3b8601131beff86b58562ede4f519311","text":"允许 ALTER TABLE ... SET DATA TYPE 在适当情况下避免重写表（Noah Misch、Robert Haas） 例如，把 varchar 列转换为 text 不再需要重写表。但增大 varchar 列的长度约束仍需要重写表。","title":"允许 ALTER TABLE ... SET DATA TYPE 在适当情况下避免重写表","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"70cc18a9b37dc6696063de1b730d57b2","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/sql-createtable.html\" title=\"CREATE TABLE\"\u003e\u003ccode\u003eCREATE TABLE IF NOT EXISTS\u003c/code\u003e\u003c/a\u003e 语法（Robert Haas）\u003c/p\u003e\n\u003cp\u003e这允许在表已存在时创建表而不报错。\u003c/p\u003e","id":"9.1.0-578cde314d1612bd","identity_text":"Add CREATE TABLE IF NOT EXISTS syntax (Robert Haas) This allows table creation without causing an error if the table already exists.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / CREATE/ALTER TABLE","section_path":["对象操作","CREATE/ALTER TABLE"],"source_commits":[],"source_entry_id":"9.1.0/changes/061","source_hash":"7caf47776ac2ad24c0dee248af83c7b37cc8201546868c4569358fc21cdee809","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.4","statement_hash":"73cb349154c94f22bbfffa650a3b9f826b667996649e1cb46bac01ce409e08b2","text":"新增 CREATE TABLE IF NOT EXISTS 语法（Robert Haas） 这允许在表已存在时创建表而不报错。","title":"新增 CREATE TABLE IF NOT EXISTS 语法","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"d6fc545730313733da591e028b214cd4","html":"\u003cp\u003e修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 \u003cspan\u003e“\u003cspan\u003etuple concurrently updated\u003c/span\u003e”\u003c/span\u003e 错误（Robert Haas）\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/docs/9.1/sql-altertable.html\" title=\"ALTER TABLE\"\u003e\u003ccode\u003eALTER TABLE\u003c/code\u003e\u003c/a\u003e 现在对父表持有更强的锁，使会话无法同时尝试更新它。\u003c/p\u003e","id":"9.1.0-749b74e2272371c4","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / CREATE/ALTER TABLE","section_path":["对象操作","CREATE/ALTER TABLE"],"source_commits":[],"source_entry_id":"9.1.0/changes/062","source_hash":"affc19afd0ed1731ca7bc84a5d7a28309a274df64698d99cbfd9190c6c5c9ce2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.4","statement_hash":"828dae0348874dfd62b50af7480706c6f8cb3c37e005be27af9be52560279360","text":"修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误（Robert Haas） ALTER TABLE 现在对父表持有更强的锁，使会话无法同时尝试更新它。","title":"修复当两个后端同时尝试向同一个表添加继承子表时可能出现的 “tuple concurrently updated” 错误","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"0f37279c3ac16f4bd450f6e330363e5b","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/sql-security-label.html\" title=\"SECURITY LABEL\"\u003e\u003ccode\u003eSECURITY LABEL\u003c/code\u003e\u003c/a\u003e 命令（KaiGai Kohei）\u003c/p\u003e\n\u003cp\u003e这允许为对象分配安全标签。\u003c/p\u003e","id":"9.1.0-99950daa00f74d22","identity_text":"Add a SECURITY LABEL command (KaiGai Kohei) This allows security labels to be assigned to objects.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"对象操作 / 对象权限","section_path":["对象操作","对象权限"],"source_commits":[],"source_entry_id":"9.1.0/changes/063","source_hash":"bbe68cb60f4728cc673611557f2e26a6b54bdd04122294bebea90acdcf1775c8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.6.5","statement_hash":"41fee88f687a70bd78b9c15ac1b67fd5737487d7db46acb876349792405c0909","text":"新增 SECURITY LABEL 命令（KaiGai Kohei） 这允许为对象分配安全标签。","title":"新增 SECURITY LABEL 命令","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c10bef1dffde6d2ea95085258f53b86a","html":"\u003cp\u003e新增事务级\u003ca href=\"/docs/9.1/explicit-locking.html#ADVISORY-LOCKS\" title=\"13.3.4. 咨询锁\"\u003e咨询锁\u003c/a\u003e（Marko Tiikkaja）\u003c/p\u003e\n\u003cp\u003e它们类似于现有的会话级咨询锁，但这类锁会在事务结束时自动释放。\u003c/p\u003e","id":"9.1.0-aa106cab55101f9f","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作","section_path":["工具操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/064","source_hash":"99a833af68f0e420447a76f29e1d8bbe931d1f2d9838848076bdbff1247ad7d1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7","statement_hash":"82452b46c51065355397ffcaf34bd4353714f5fdfc9a8bbf2c17f49ef7f85bd7","text":"新增事务级咨询锁（Marko Tiikkaja） 它们类似于现有的会话级咨询锁，但这类锁会在事务结束时自动释放。","title":"新增事务级咨询锁","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"9262067602f970549d8aadd2564190c9","html":"\u003cp\u003e让 \u003ca href=\"/docs/9.1/sql-truncate.html\" title=\"TRUNCATE\"\u003e\u003ccode\u003eTRUNCATE ... RESTART IDENTITY\u003c/code\u003e\u003c/a\u003e 以事务方式重启序列（Steve Singer）\u003c/p\u003e\n\u003cp\u003e此前，如果后端在提交时截断活动与提交完成之间崩溃，计数器可能失去同步。\u003c/p\u003e","id":"9.1.0-9eb64a4c5834452b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作","section_path":["工具操作"],"source_commits":[],"source_entry_id":"9.1.0/changes/065","source_hash":"0d28a43faa1214023a99ece4970fe3b34b84cc78d985986b57e66dac31880a8d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7","statement_hash":"28f2c45faaaeb17570ca1916d2583a0f8f9d9d7c9b9e90a53a72e9cdf8cc6b31","text":"让 TRUNCATE ... RESTART IDENTITY 以事务方式重启序列（Steve Singer） 此前，如果后端在提交时截断活动与提交完成之间崩溃，计数器可能失去同步。","title":"让 TRUNCATE ... RESTART IDENTITY 以事务方式重启序列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"28c5240c9e20d59ddec17536451200ca","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY TO/FROM\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003eENCODING\u003c/code\u003e 选项（Hitoshi Harada、Itagaki Takahiro）\u003c/p\u003e\n\u003cp\u003e这允许单独指定 \u003ccode\u003eCOPY\u003c/code\u003e 文件的编码，而不是跟随客户端编码。\u003c/p\u003e","id":"9.1.0-809698af721368bd","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / COPY","section_path":["工具操作","COPY"],"source_commits":[],"source_entry_id":"9.1.0/changes/066","source_hash":"5adc811e136486d79cba222cb1067ba5ed60bead461ab16c8ebc0d8929351883","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.3","statement_hash":"f80030caed19424da2861f4a1c195d31cd803f5e89b0a38cd5e48125c3b1dc36","text":"为 COPY TO/FROM 新增 ENCODING 选项（Hitoshi Harada、Itagaki Takahiro） 这允许单独指定 COPY 文件的编码，而不是跟随客户端编码。","title":"为 COPY TO/FROM 新增 ENCODING 选项","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"965620e63e1c8d405d514e2d39a8c4ed","html":"\u003cp\u003e新增双向 \u003ca href=\"/docs/9.1/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY\u003c/code\u003e\u003c/a\u003e 协议支持（Fujii Masao）\u003c/p\u003e\n\u003cp\u003e这目前只被流复制使用。\u003c/p\u003e","id":"9.1.0-0d5d2b854b8d38bf","identity_text":"Add bidirectional COPY protocol support (Fujii Masao) This is currently only used by streaming replication.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / COPY","section_path":["工具操作","COPY"],"source_commits":[],"source_entry_id":"9.1.0/changes/067","source_hash":"ca2849e714d01a90d24aa924f303cde85df4738f80047e5666a8eb768777f04f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.3","statement_hash":"d930216cbd24e6f505612bf99e0f1523ba52c1209e64815171c8e1591a8dc16f","text":"新增双向 COPY 协议支持（Fujii Masao） 这目前只被流复制使用。","title":"新增双向 COPY 协议支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3046165fb2ae987fce3027c65dc818a9","html":"\u003cp\u003e让 \u003ccode\u003eEXPLAIN VERBOSE\u003c/code\u003e 显示 \u003ccode\u003eFunctionScan\u003c/code\u003e 节点中的函数调用表达式（Tom Lane）\u003c/p\u003e","id":"9.1.0-466745a21086e977","identity_text":"Make EXPLAIN VERBOSE show the function call expression in a FunctionScan node (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / EXPLAIN","section_path":["工具操作","EXPLAIN"],"source_commits":[],"source_entry_id":"9.1.0/changes/068","source_hash":"e6fab17c4c93ef14328104466c4cfd633fd0165aa1c3d6a35251b09ff3bb8441","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.4","statement_hash":"f3361ca89882bdaefdfedc56c3b11796fb8acb7f330f25d09c3a4c6f7a32f8bc","text":"让 EXPLAIN VERBOSE 显示 FunctionScan 节点中的函数调用表达式（Tom Lane）","title":"让 EXPLAIN VERBOSE 显示 FunctionScan 节点中的函数调用表达式","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"21d3bc8b46fab1ce3fe4acadf356fc50","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003ccode\u003eVACUUM FULL VERBOSE\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/sql-cluster.html\" title=\"CLUSTER\"\u003e\u003ccode\u003eCLUSTER VERBOSE\u003c/code\u003e\u003c/a\u003e 的输出添加更多细节（Itagaki Takahiro）\u003c/p\u003e\n\u003cp\u003e新信息包括存活和死亡元组计数，以及 \u003ccode\u003eCLUSTER\u003c/code\u003e 是否使用索引重建。\u003c/p\u003e","id":"9.1.0-a0766d3a68893c32","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / VACUUM","section_path":["工具操作","VACUUM"],"source_commits":[],"source_entry_id":"9.1.0/changes/069","source_hash":"686f01212bf5a0605654a99543bceeb7ba78847111b421a7e2c2baaea380be1a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.5","statement_hash":"ee209fb7c72d6cb32cc820cd1906d27b791cfbbda4530e55fa046e737d8f6c5b","text":"为 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多细节（Itagaki Takahiro） 新信息包括存活和死亡元组计数，以及 CLUSTER 是否使用索引重建。","title":"为 VACUUM FULL VERBOSE 和 CLUSTER VERBOSE 的输出添加更多细节","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2b4f1e2f89ba47d474901f521c22ce76","html":"\u003cp\u003e防止\u003ca href=\"/docs/9.1/maintenance.html#AUTOVACUUM\" title=\"23.1.5. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e在无法获得表锁时等待（Robert Haas）\u003c/p\u003e\n\u003cp\u003e它会在稍后再次尝试清理该表。\u003c/p\u003e","id":"9.1.0-b62c60926b2dc8fc","identity_text":"Prevent autovacuum from waiting if it cannot acquire a table lock (Robert Haas) It will try to vacuum that table later.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / VACUUM","section_path":["工具操作","VACUUM"],"source_commits":[],"source_entry_id":"9.1.0/changes/070","source_hash":"57f009135eb13f4d3cf50fb06aaa03a4d9a690134c7066a9dd5b98d4615358cc","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.5","statement_hash":"044d2632667e1c82748f33c5c3c3915e97946b7f0b1e12c1ed5a4059df661c8e","text":"防止自动清理在无法获得表锁时等待（Robert Haas） 它会在稍后再次尝试清理该表。","title":"防止自动清理在无法获得表锁时等待","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"50c5b5eb1040d15966ca741c2460a8ae","html":"\u003cp\u003e当看起来更廉价时，允许 \u003ccode\u003eCLUSTER\u003c/code\u003e 对表排序而不是扫描索引（Leonardo Francalanci）\u003c/p\u003e","id":"9.1.0-ccfd879b69ab9d19","identity_text":"Allow CLUSTER to sort the table rather than scanning the index when it seems likely to be cheaper (Leonardo Francalanci)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / CLUSTER","section_path":["工具操作","CLUSTER"],"source_commits":[],"source_entry_id":"9.1.0/changes/071","source_hash":"4a43d5159bf5ac038bb1624cdbce2fe7b16f9d4c49c35ef473aece18f5ad4b0f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.6","statement_hash":"8514ead5e5950ae07a062f4994fc5d614d58e8482d94d60c33f86059f4f104f1","text":"当看起来更廉价时，允许 CLUSTER 对表排序而不是扫描索引（Leonardo Francalanci）","title":"当看起来更廉价时，允许 CLUSTER 对表排序而不是扫描索引","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3b9e645dcb29ee6426ca16f3433ceee8","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/gist.html\" title=\"第 53 章 GiST 索引\"\u003e\u003cacronym\u003eGiST\u003c/acronym\u003e 索引\u003c/a\u003e新增最近邻（按操作符排序）搜索（Teodor Sigaev、Tom Lane）\u003c/p\u003e\n\u003cp\u003e这允许 \u003cacronym\u003eGiST\u003c/acronym\u003e 索引在带 \u003ccode\u003eLIMIT\u003c/code\u003e 的查询中快速返回最接近的 \u003cem\u003e\u003ccode\u003eN\u003c/code\u003e\u003c/em\u003e 个值。例如\u003c/p\u003e\n\u003cpre\u003e SELECT * FROM places ORDER BY location \u0026lt;-\u0026gt; point '(101,456)' LIMIT 10;  \n\u003c/pre\u003e\n\u003cp\u003e找出最接近给定目标点的十个地点。\u003c/p\u003e","id":"9.1.0-1ef41e488fc50806","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 \u003c-\u003e point '(101,456)' LIMIT 10; finds the ten places closest to a given target point.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / 索引","section_path":["工具操作","索引"],"source_commits":[],"source_entry_id":"9.1.0/changes/072","source_hash":"9a214cb10a8ee99ce750602fd5b7c1207ca9d3b48a3c857f293db6d9df9519db","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.7","statement_hash":"73c7724e4aaa42acc930fdfe34aab0c170ea86ea22c654cb7c4e9f8ebfc28ede","text":"为 GiST 索引新增最近邻（按操作符排序）搜索（Teodor Sigaev、Tom Lane） 这允许 GiST 索引在带 LIMIT 的查询中快速返回最接近的 N 个值。例如 SELECT * FROM places ORDER BY location \u003c-\u003e point '(101,456)' LIMIT 10; 找出最接近给定目标点的十个地点。","title":"为 GiST 索引新增最近邻（按操作符排序）搜索","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"1753b71e1a86474e350593246bba395c","html":"\u003cp\u003e允许 \u003ca href=\"/docs/9.1/gin.html\" title=\"第 54 章 GIN 索引\"\u003e\u003cacronym\u003eGIN\u003c/acronym\u003e 索引\u003c/a\u003e索引空值和空字符串（Tom Lane）\u003c/p\u003e\n\u003cp\u003e这允许完整的 \u003cacronym\u003eGIN\u003c/acronym\u003e 索引扫描，并修复了 GIN 扫描会失败的各种极端情况。\u003c/p\u003e","id":"9.1.0-1c83413c02a303fd","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / 索引","section_path":["工具操作","索引"],"source_commits":[],"source_entry_id":"9.1.0/changes/073","source_hash":"e7efde599b03d7f97e85f84e0430d8db54e1c9623d2c08952b987243072496ad","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.7","statement_hash":"69e5d0df010052be4b47043ca873ed00c64c96ae989facf91381fbfe5648c663","text":"允许 GIN 索引索引空值和空字符串（Tom Lane） 这允许完整的 GIN 索引扫描，并修复了 GIN 扫描会失败的各种极端情况。","title":"允许 GIN 索引索引空值和空字符串","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"4004583679d1dafd6aa31b4ad7ff167e","html":"\u003cp\u003e让 \u003ca href=\"/docs/9.1/gin.html\" title=\"第 54 章 GIN 索引\"\u003e\u003cacronym\u003eGIN\u003c/acronym\u003e 索引\u003c/a\u003e更好地识别重复的搜索条目（Tom Lane）\u003c/p\u003e\n\u003cp\u003e这降低了索引扫描的代价，尤其是在能避免不必要的全索引扫描的情况下。\u003c/p\u003e","id":"9.1.0-b424f87e9649988c","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / 索引","section_path":["工具操作","索引"],"source_commits":[],"source_entry_id":"9.1.0/changes/074","source_hash":"27d60985db39bcd045d2551d10ca8f1ffa97b0e26a56744b4ed893e7404dce9a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.7","statement_hash":"d4f80ad6f5b2b57781eb04083a791813d7fc58bb9f1ec1b64c1b3482f8554275","text":"让 GIN 索引更好地识别重复的搜索条目（Tom Lane） 这降低了索引扫描的代价，尤其是在能避免不必要的全索引扫描的情况下。","title":"让 GIN 索引更好地识别重复的搜索条目","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c00daf4e4e060e3bbadd8835ca877017","html":"\u003cp\u003e修复 \u003ca href=\"/docs/9.1/gist.html\" title=\"第 53 章 GiST 索引\"\u003e\u003cacronym\u003eGiST\u003c/acronym\u003e 索引\u003c/a\u003e，使其完全崩溃安全（Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e此前有少数情况需要执行 \u003ccode\u003eREINDEX\u003c/code\u003e（你会被告知）。\u003c/p\u003e","id":"9.1.0-5ef398f249e70369","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).","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"工具操作 / 索引","section_path":["工具操作","索引"],"source_commits":[],"source_entry_id":"9.1.0/changes/075","source_hash":"db6d5ff051cf4c1e68aeb32dccd93902485d01a0a3a4a446d59220e2e557ecac","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.7.7","statement_hash":"d3c982631f5129180d4706e171dc96fe0943975cc104de1a676543c7aa6f5b86","text":"修复 GiST 索引，使其完全崩溃安全（Heikki Linnakangas） 此前有少数情况需要执行 REINDEX（你会被告知）。","title":"修复 GiST 索引，使其完全崩溃安全","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"45c3a0a27b1fdd17ccc26297311b30ce","html":"\u003cp\u003e允许 \u003ccode\u003enumeric\u003c/code\u003e 在常见情况下使用更紧凑的两字节头（Robert Haas）\u003c/p\u003e\n\u003cp\u003e此前所有 \u003ccode\u003enumeric\u003c/code\u003e 值都使用四字节头；此变更节省了磁盘存储。\u003c/p\u003e","id":"9.1.0-b756ba64a652481f","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/076","source_hash":"cb2275a14535b64ed7df523788a19180d69c03d08a3d8afabb914febd97b60a4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"4acee79c8fbf4cd1ad7214697a661a5ab485368d87286ad487d93707673925cb","text":"允许 numeric 在常见情况下使用更紧凑的两字节头（Robert Haas） 此前所有 numeric 值都使用四字节头；此变更节省了磁盘存储。","title":"允许 numeric 在常见情况下使用更紧凑的两字节头","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"0c2df16c01e41bcfc52df9b8334a0348","html":"\u003cp\u003e新增 \u003ccode\u003emoney\u003c/code\u003e 除以 \u003ccode\u003emoney\u003c/code\u003e 的支持（Andy Balholm）\u003c/p\u003e","id":"9.1.0-84d81fbfdf6ab0e7","identity_text":"Add support for dividing money by money (Andy Balholm)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/077","source_hash":"b7245829d5b06c3a3f759502a27ccd2ac35f82512fe429249427ce137afdef7b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"79e92fee2138544a37715ef3824b3aece1e18366390f0c1e138d448e8f5c291c","text":"新增 money 除以 money 的支持（Andy Balholm）","title":"新增 money 除以 money 的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e143df5ba66149db0804bf4e9a7a5afd","html":"\u003cp\u003e允许 \u003ccode\u003evoid\u003c/code\u003e 类型的二进制 I/O（Radoslaw Smogura）\u003c/p\u003e","id":"9.1.0-fee3eae4794130b6","identity_text":"Allow binary I/O on type void (Radoslaw Smogura)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/078","source_hash":"d423027f8dda6626c305fc9e05efd80427f4d1c1adcf71e3a167cc05cb8529bf","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"6819afcf9d83ec0275ca5ae78f8981696b3485287ff964d335e8b6f4ebf690b6","text":"允许 void 类型的二进制 I/O（Radoslaw Smogura）","title":"允许 void 类型的二进制 I/O","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3447c60514d93131662f342ad30f3ef5","html":"\u003cp\u003e改进几何操作符的斜边计算（Paul Matthews）\u003c/p\u003e\n\u003cp\u003e这避免了不必要的溢出，而且可能更精确。\u003c/p\u003e","id":"9.1.0-9230cb2dc0298e8d","identity_text":"Improve hypotenuse calculations for geometric operators (Paul Matthews) This avoids unnecessary overflows, and may also be more accurate.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/079","source_hash":"cdbd7f542b1d08985c0e59a61e355ba9c62fbe3b83469b80706fae4b693e33aa","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"e6c5d50f9c26bfd2dcb878fa94e16be84bd91be2230880a346d45a4eb0686ac8","text":"改进几何操作符的斜边计算（Paul Matthews） 这避免了不必要的溢出，而且可能更精确。","title":"改进几何操作符的斜边计算","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6cad7f66c2702645997e5bd78e9baf39","html":"\u003cp\u003e支持对数组值做哈希（Tom Lane）\u003c/p\u003e\n\u003cp\u003e这提供了额外的查询优化可能性。\u003c/p\u003e","id":"9.1.0-d87d94f708b4db99","identity_text":"Support hashing array values (Tom Lane) This provides additional query optimization possibilities.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/080","source_hash":"e945345015e2cc0f3a47f6365426ebc38b07cb39b980ef79814d2b6ee2e0581d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"26ac18011a030e0edcd27a6c120c6faba24e8199dd4e7daf53fd196ecd705cf3","text":"支持对数组值做哈希（Tom Lane） 这提供了额外的查询优化可能性。","title":"支持对数组值做哈希","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"574a7bb0070453d2bfb13987658cc323","html":"\u003cp\u003e除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序（Tom Lane）\u003c/p\u003e\n\u003cp\u003e如果查询可以在不排序的情况下实现，这避免了运行时可能出现的 \u003cspan\u003e“\u003cspan\u003ecould not identify a comparison function\u003c/span\u003e”\u003c/span\u003e 失败。此外，\u003ccode\u003eANALYZE\u003c/code\u003e 也不会尝试对这类组合类型的列使用不适当的统计收集方法。\u003c/p\u003e","id":"9.1.0-45dce46638967824","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":[],"source_entry_id":"9.1.0/changes/081","source_hash":"40144b10f1c9c8e31baef3cd6e4a8bb0c985af8ddafc83599607126510d70d05","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8","statement_hash":"d0bf2835b12df9fd12ebfb374dc7a2980b9d69ef503b1da10b2dd548c66bf2bb","text":"除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序（Tom Lane） 如果查询可以在不排序的情况下实现，这避免了运行时可能出现的 “could not identify a comparison function” 失败。此外，ANALYZE 也不会尝试对这类组合类型的列使用不适当的统计收集方法。","title":"除非组合类型的所有列类型都可排序，否则不把该组合类型视为可排序","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f5670488c09a18c792cf132574ff0c27","html":"\u003cp\u003e新增 \u003ccode\u003emoney\u003c/code\u003e 与 \u003ccode\u003enumeric\u003c/code\u003e 之间转换的支持（Andy Balholm）\u003c/p\u003e","id":"9.1.0-31372590dbf93a35","identity_text":"Add support for casting between money and numeric (Andy Balholm)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型 / 类型转换","section_path":["数据类型","类型转换"],"source_commits":[],"source_entry_id":"9.1.0/changes/082","source_hash":"f0f4cae8863cade2bdf915855bbaf86be823819588d509671619f7f8bbdb8e01","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8.3","statement_hash":"5e16b80d1597bbd79e0316f262dab990d0b6a3b462b1e780c3415e25efb25e26","text":"新增 money 与 numeric 之间转换的支持（Andy Balholm）","title":"新增 money 与 numeric 之间转换的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"51f95ccfa742e4b98f8eb9de2000c8ab","html":"\u003cp\u003e新增从 \u003ccode\u003eint4\u003c/code\u003e 和 \u003ccode\u003eint8\u003c/code\u003e 到 \u003ccode\u003emoney\u003c/code\u003e 转换的支持（Joey Adams）\u003c/p\u003e","id":"9.1.0-a91c35801ebede73","identity_text":"Add support for casting from int4 and int8 to money (Joey Adams)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型 / 类型转换","section_path":["数据类型","类型转换"],"source_commits":[],"source_entry_id":"9.1.0/changes/083","source_hash":"daebe7a137602378e92e43ca57c8113b3957322e5d889b99e9216d6817df6d45","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8.3","statement_hash":"a41d2d4201562d83da70871f081ad36095a0547a1ad53847c1ba062be396340b","text":"新增从 int4 和 int8 到 money 转换的支持（Joey Adams）","title":"新增从 int4 和 int8 到 money 转换的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"706980ff0e76f29ea0288fae5b9f08d7","html":"\u003cp\u003e如果表是类型化表，允许把表的行类型转换为该表的超类型（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e这类似于允许把行类型转换为超表的行类型的现有机制。\u003c/p\u003e","id":"9.1.0-95855211a944e8d1","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型 / 类型转换","section_path":["数据类型","类型转换"],"source_commits":[],"source_entry_id":"9.1.0/changes/084","source_hash":"a30c81ff703a486d3c27d6f1577e010bdc93bbd8ed7de1561ca3781d4b1ccee4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8.3","statement_hash":"851f829efb85cf7e69103575562b55c33f87f864f9eb75c8c77b6bd5568f4a6a","text":"如果表是类型化表，允许把表的行类型转换为该表的超类型（Peter Eisentraut） 这类似于允许把行类型转换为超表的行类型的现有机制。","title":"如果表是类型化表，允许把表的行类型转换为该表的超类型","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"0a395033fcf8f29b5ef45e129bdad9a5","html":"\u003cp\u003e新增 \u003cacronym\u003eXML\u003c/acronym\u003e 函数 \u003ca href=\"/docs/9.1/functions-xml.html#XML-EXISTS\" title=\"9.14.2.2. XMLEXISTS\"\u003e\u003ccode\u003eXMLEXISTS\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/functions-xml.html#XML-EXISTS\" title=\"9.14.2.2. XMLEXISTS\"\u003e\u003ccode\u003expath_exists()\u003c/code\u003e\u003c/a\u003e（Mike Fowler）\u003c/p\u003e\n\u003cp\u003e它们用于 XPath 匹配。\u003c/p\u003e","id":"9.1.0-2a5f0a86f674a9dd","identity_text":"Add XML function XMLEXISTS and xpath_exists() functions (Mike Fowler) These are used for XPath matching.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型 / XML","section_path":["数据类型","XML"],"source_commits":[],"source_entry_id":"9.1.0/changes/085","source_hash":"14682a70f5b041199610dec583b5edfb777ce6726eb7a029bed8e6e2461462e3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8.4","statement_hash":"5b70c9f7df94fa4fe4de0dbc8d91d6b6ebb3f0087947aed9d7308ea78cb384c2","text":"新增 XML 函数 XMLEXISTS 和 xpath_exists()（Mike Fowler） 它们用于 XPath 匹配。","title":"新增 XML 函数 XMLEXISTS 和 xpath_exists()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a733d5efb379e8157e069bf3519dcc9e","html":"\u003cp\u003e新增 \u003cacronym\u003eXML\u003c/acronym\u003e 函数 \u003ca href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"\u003e\u003ccode\u003exml_is_well_formed()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"\u003e\u003ccode\u003exml_is_well_formed_document()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/functions-xml.html#XML-IS-WELL-FORMED\" title=\"9.14.2.3. xml_is_well_formed\"\u003e\u003ccode\u003exml_is_well_formed_content()\u003c/code\u003e\u003c/a\u003e（Mike Fowler）\u003c/p\u003e\n\u003cp\u003e它们检查输入是否为格式正确的 \u003cacronym\u003eXML\u003c/acronym\u003e。它们提供了此前只能在已弃用的 \u003ccode\u003econtrib/xml2\u003c/code\u003e 模块中使用的功能。\u003c/p\u003e","id":"9.1.0-5db20dac3b6b5afb","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"数据类型 / XML","section_path":["数据类型","XML"],"source_commits":[],"source_entry_id":"9.1.0/changes/086","source_hash":"ba04b475afb7f9b24cd6fe7faa248d9328b148fbad92772fb12dc0a558f0e2b9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.8.4","statement_hash":"5b2c4e213860b248833962e519ca3cb327fe05350c1a2762e141b6b780177e7e","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()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"1a00b8ec7a92f61778a22a97dff02b2a","html":"\u003cp\u003e新增 SQL 函数 \u003ca href=\"/docs/9.1/functions-string.html#FORMAT\"\u003e\u003ccode\u003eformat(text, ...)\u003c/code\u003e\u003c/a\u003e，其行为类似于 C 的 \u003ccode\u003eprintf()\u003c/code\u003e（Pavel Stehule、Robert Haas）\u003c/p\u003e\n\u003cp\u003e它目前支持字符串、SQL 字面量和 SQL 标识符的格式。\u003c/p\u003e","id":"9.1.0-2b2621d2d7bc3c50","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/087","source_hash":"c1474d0931a7fdcaa12ad82fce29254a66c1c00ad7eca93746a126ced12355e8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9","statement_hash":"f88a5af8afd4eec99767d6c33a4eb1f11fccf8a684f5a70802191b22bdafe6a6","text":"新增 SQL 函数 format(text, ...)，其行为类似于 C 的 printf()（Pavel Stehule、Robert Haas） 它目前支持字符串、SQL 字面量和 SQL 标识符的格式。","title":"新增 SQL 函数 format(text, ...)，其行为类似于 C 的 printf()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"bd1b06fa69b33189a251e0cbfc56e22d","html":"\u003cp\u003e新增字符串函数 \u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003econcat()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003econcat_ws()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003eleft()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003eright()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003ereverse()\u003c/code\u003e\u003c/a\u003e（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e这些改进了与其他数据库产品的兼容性。\u003c/p\u003e","id":"9.1.0-d8576850c43fb230","identity_text":"Add string functions concat(), concat_ws(), left(), right(), and reverse() (Pavel Stehule) These improve compatibility with other database products.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/088","source_hash":"32566428dd0bd45e05f2e9b06c54f135805bd0ae3065378ce7d9cb9216b89846","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9","statement_hash":"2c8c68f39f91be0cb2ab1e1805032ff8f083ad4502feb6fe8ef75eac9f363d6c","text":"新增字符串函数 concat()、concat_ws()、left()、right() 和 reverse()（Pavel Stehule） 这些改进了与其他数据库产品的兼容性。","title":"新增字符串函数 concat()、concat_ws()、left()、right() 和 reverse()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e67f109791f44d0da050f7e1b74a5f75","html":"\u003cp\u003e新增用于读取二进制文件的函数 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-GENFILE\" title=\"表 9.62. 通用文件访问函数\"\u003e\u003ccode\u003epg_read_binary_file()\u003c/code\u003e\u003c/a\u003e（Dimitri Fontaine、Itagaki Takahiro）\u003c/p\u003e","id":"9.1.0-202fb0354c671d09","identity_text":"Add function pg_read_binary_file() to read binary files (Dimitri Fontaine, Itagaki Takahiro)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/089","source_hash":"7db68794c9358ccb8ba059b8f33ad452bb25ba0455259526be6022a4ebbc96c7","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9","statement_hash":"1492420318684d84df77421de009c4fbc0dc1de8d98ddcd46a2095b4c484aac3","text":"新增用于读取二进制文件的函数 pg_read_binary_file()（Dimitri Fontaine、Itagaki Takahiro）","title":"新增用于读取二进制文件的函数 pg_read_binary_file()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f7d90f5108b38d52cc92e37b4bdf2660","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/9.1/functions-admin.html#FUNCTIONS-ADMIN-GENFILE\" title=\"表 9.62. 通用文件访问函数\"\u003e\u003ccode\u003epg_read_file()\u003c/code\u003e\u003c/a\u003e 的单参数版本，用于读取整个文件（Dimitri Fontaine、Itagaki Takahiro）\u003c/p\u003e","id":"9.1.0-73523eccbf0043eb","identity_text":"Add a single-parameter version of function pg_read_file() to read an entire file (Dimitri Fontaine, Itagaki Takahiro)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/090","source_hash":"0b0aed0c9d395080d3fabe68a7b19df820c23f261598622967795be9d88b2694","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9","statement_hash":"5c7dda494f268fb88591b8d8000070194b071492e4225b47bb5ba7847ce90ea2","text":"新增函数 pg_read_file() 的单参数版本，用于读取整个文件（Dimitri Fontaine、Itagaki Takahiro）","title":"新增函数 pg_read_file() 的单参数版本，用于读取整个文件","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a4debb40f1001a28cc3ec851e7e01333","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"\u003e\u003ccode\u003earray_to_string()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/functions-array.html#ARRAY-FUNCTIONS-TABLE\" title=\"表 9.42. 数组函数\"\u003e\u003ccode\u003estring_to_array()\u003c/code\u003e\u003c/a\u003e 的三参数形式，用于控制空值处理（Pavel Stehule）\u003c/p\u003e","id":"9.1.0-220d7c517efe33ac","identity_text":"Add three-parameter forms of array_to_string() and string_to_array() for null value processing control (Pavel Stehule)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/091","source_hash":"d223639b7f595abbe2c376ba672c9bdcdec817f08d7fff7e0a991499a67366b2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9","statement_hash":"3ecfebb6f6f230a6628e0a6df5949ca600d75b713b6c96e76e4d4b1016a1bec2","text":"新增 array_to_string() 和 string_to_array() 的三参数形式，用于控制空值处理（Pavel Stehule）","title":"新增 array_to_string() 和 string_to_array() 的三参数形式，用于控制空值处理","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6154f90bba8b3f9b7fb50dfdcde04a20","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"\u003e\u003ccode\u003epg_describe_object()\u003c/code\u003e\u003c/a\u003e（Alvaro Herrera）\u003c/p\u003e\n\u003cp\u003e该函数用于根据 \u003ca href=\"/docs/9.1/catalog-pg-class.html\" title=\"45.11. pg_class\"\u003e\u003ccode\u003epg_class\u003c/code\u003e\u003c/a\u003e OID、对象 OID 和子对象 ID 获取描述对象的人类可读字符串。它可用于帮助解释 \u003ca href=\"/docs/9.1/catalog-pg-depend.html\" title=\"45.18. pg_depend\"\u003e\u003ccode\u003epg_depend\u003c/code\u003e\u003c/a\u003e 的内容。\u003c/p\u003e","id":"9.1.0-fe76f66b07be1f82","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 对象信息函数","section_path":["函数","对象信息函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/092","source_hash":"96a2c39e4724af13d2b2c18237635bc012585aff0964cfc6440fa576f6fce39f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.3","statement_hash":"b16de5cdd0d68d611971430f7196cd133d89a3c9d46729c013710f4ced7ae8d1","text":"新增函数 pg_describe_object()（Alvaro Herrera） 该函数用于根据 pg_class OID、对象 OID 和子对象 ID 获取描述对象的人类可读字符串。它可用于帮助解释 pg_depend 的内容。","title":"新增函数 pg_describe_object()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c0e0b068b084b6da2536312e86030bd3","html":"\u003cp\u003e更新内建操作符及其底层函数的注释（Tom Lane）\u003c/p\u003e\n\u003cp\u003e旨在通过关联操作符使用的函数现在被这样注释。\u003c/p\u003e","id":"9.1.0-0dde867517272938","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 对象信息函数","section_path":["函数","对象信息函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/093","source_hash":"054dc259cd11180ba368d34f0e187deb0006c0b3cb65559787b0826717f7779a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.3","statement_hash":"3758706cb9bf45ef7142d1704a1cc6e07790c7aeb0c5ec92fb86b0356101bbaf","text":"更新内建操作符及其底层函数的注释（Tom Lane） 旨在通过关联操作符使用的函数现在被这样注释。","title":"更新内建操作符及其底层函数的注释","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c7d5d42c841e0ae8a59b0dc6ab030d0f","html":"\u003cp\u003e新增变量 \u003ca href=\"/docs/9.1/runtime-config-compatible.html#GUC-QUOTE-ALL-IDENTIFIERS\"\u003e\u003ccode\u003equote_all_identifiers\u003c/code\u003e\u003c/a\u003e，强制为 \u003ccode\u003eEXPLAIN\u003c/code\u003e 以及 \u003ca href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"\u003e\u003ccode\u003epg_get_viewdef()\u003c/code\u003e\u003c/a\u003e 等系统目录函数中的所有标识符加引号（Robert Haas）\u003c/p\u003e\n\u003cp\u003e这使得把模式导出到具有不同引号规则的工具和其他数据库更加容易。\u003c/p\u003e","id":"9.1.0-62102d33c2b1d134","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 对象信息函数","section_path":["函数","对象信息函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/094","source_hash":"983a4ea09bfa8027758ed9cedc92800cf7184cdc81613e36349c045fc658882d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.3","statement_hash":"9e962c1fe569799073b2fe0b7da5abc4d77dae4d6b04fe5ba2187af222551a74","text":"新增变量 quote_all_identifiers，强制为 EXPLAIN 以及 pg_get_viewdef() 等系统目录函数中的所有标识符加引号（Robert Haas） 这使得把模式导出到具有不同引号规则的工具和其他数据库更加容易。","title":"新增变量 quote_all_identifiers，强制为 EXPLAIN 以及 pg_get_viewdef() 等系统目录函数中的所有标识符加引号","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"698f126bea4ae8b0bc1eab99727cae2e","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/infoschema-sequences.html\" title=\"34.40. sequences\"\u003e\u003ccode\u003einformation_schema.sequences\u003c/code\u003e\u003c/a\u003e 系统视图新增列（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e此前虽然视图存在，但关于序列参数的列未实现。\u003c/p\u003e","id":"9.1.0-f5ba28d6e0ba68ef","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 对象信息函数","section_path":["函数","对象信息函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/095","source_hash":"040d550616eac1837ae506a4fd98245cf99d3137835d1ca59de7d400e3fa5357","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.3","statement_hash":"3e47cbab0c90dd2ac2de0c5c6ec595dcb137f9de0886d7f5734367aabbe6ecc9","text":"为 information_schema.sequences 系统视图新增列（Peter Eisentraut） 此前虽然视图存在，但关于序列参数的列未实现。","title":"为 information_schema.sequences 系统视图新增列","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"7cc1531ba3756e724e570eba814a6965","html":"\u003cp\u003e允许在 \u003ca href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-ACCESS-TABLE\" title=\"表 9.49. 访问权限查询函数\"\u003e\u003ccode\u003ehas_table_privilege()\u003c/code\u003e\u003c/a\u003e 及相关函数中使用 \u003ccode\u003epublic\u003c/code\u003e 作为伪角色名（Alvaro Herrera）\u003c/p\u003e\n\u003cp\u003e这允许检查公共权限。\u003c/p\u003e","id":"9.1.0-7637695bd70d97b6","identity_text":"Allow public as a pseudo-role name in has_table_privilege() and related functions (Alvaro Herrera) This allows checking for public permissions.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 对象信息函数","section_path":["函数","对象信息函数"],"source_commits":[],"source_entry_id":"9.1.0/changes/096","source_hash":"0dc410aa27e86074d23ae6de6c7eb711743a8be17ae35015daea4c227160c4a3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.3","statement_hash":"a6a8aa5e796de1df74bdb54e7e227942848ce21c43ccea774bf0d623cb39a77f","text":"允许在 has_table_privilege() 及相关函数中使用 public 作为伪角色名（Alvaro Herrera） 这允许检查公共权限。","title":"允许在 has_table_privilege() 及相关函数中使用 public 作为伪角色名","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"d552d2b953cb9c3c26d495c86069571d","html":"\u003cp\u003e支持视图上的 \u003ca href=\"/docs/9.1/sql-createtrigger.html\" title=\"CREATE TRIGGER\"\u003e\u003ccode\u003eINSTEAD OF\u003c/code\u003e\u003c/a\u003e 触发器（Dean Rasheed）\u003c/p\u003e\n\u003cp\u003e此特性可用于实现完全可更新的视图。\u003c/p\u003e","id":"9.1.0-f29f05ea39259642","identity_text":"Support INSTEAD OF triggers on views (Dean Rasheed) This feature can be used to implement fully updatable views.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"函数 / 函数和触发器创建","section_path":["函数","函数和触发器创建"],"source_commits":[],"source_entry_id":"9.1.0/changes/097","source_hash":"19335af76d00caee04bba7b3586cd94fb7c2f9b2c3ffc57e016614d002e3c89e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.9.4","statement_hash":"18851bda8fefd1006e5eaac95044adbf025e01df528dde82682ae847f6fe2dad","text":"支持视图上的 INSTEAD OF 触发器（Dean Rasheed） 此特性可用于实现完全可更新的视图。","title":"支持视图上的 INSTEAD OF 触发器","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b8e61cc1057fd3248b3982c36b94e724","html":"\u003cp\u003e为 PL/pgSQL 新增 \u003ca href=\"/docs/9.1/plpgsql-control-structures.html#PLPGSQL-FOREACH-ARRAY\" title=\"39.6.5. 遍历数组\"\u003e\u003ccode\u003eFOREACH IN ARRAY\u003c/code\u003e\u003c/a\u003e（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e这比此前遍历数组值元素的方法更高效也更易读。\u003c/p\u003e","id":"9.1.0-173f32519f1ba1f9","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/pgSQL Server-Side Language","section_path":["服务器端语言","PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/098","source_hash":"f5a9ae918a5257030e8a3e3e407c7d804f7465c4cebc2a175e9098019500be64","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.2","statement_hash":"c2bd472b3daa72ad0bce592d37f9de237989ccb11568c687cb597443e2b61d2a","text":"为 PL/pgSQL 新增 FOREACH IN ARRAY（Pavel Stehule） 这比此前遍历数组值元素的方法更高效也更易读。","title":"为 PL/pgSQL 新增 FOREACH IN ARRAY","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"086b82c7a7e9b38fa3a2d2697c5b247f","html":"\u003cp\u003e允许在同一位置能够捕获 \u003ccode\u003eRAISE ERROR\u003c/code\u003e 的地方捕获无参数的 \u003ccode\u003eRAISE\u003c/code\u003e（Piyush Newe）\u003c/p\u003e\n\u003cp\u003e先前的编码会从包含活动异常处理程序的块抛出错误。新行为与其他 DBMS 产品更一致。\u003c/p\u003e","id":"9.1.0-8ac8bf030c600943","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/pgSQL Server-Side Language","section_path":["服务器端语言","PL/pgSQL Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/099","source_hash":"aca9c7a0756042291eb6f7edc989138efa766d86c904edbef9200ab9d1c339c5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.2","statement_hash":"2cc337797c37381c1b7b50cd3b7c9e5eee58d12bb8ffd17d62940d3c5c644269","text":"允许在同一位置能够捕获 RAISE ERROR 的地方捕获无参数的 RAISE（Piyush Newe） 先前的编码会从包含活动异常处理程序的块抛出错误。新行为与其他 DBMS 产品更一致。","title":"允许在同一位置能够捕获 RAISE ERROR 的地方捕获无参数的 RAISE","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6d3bb73495936dffc36d31ae6597a2bf","html":"\u003cp\u003e允许 PL/Perl 函数接受通用 record 参数（Andrew Dunstan）\u003c/p\u003e\n\u003cp\u003ePL/Perl 函数现在可以声明为接受 \u003ccode\u003erecord\u003c/code\u003e 类型。其行为与任何命名的组合类型相同。\u003c/p\u003e","id":"9.1.0-bb8bb765a1096dc9","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Perl Server-Side Language","section_path":["服务器端语言","PL/Perl Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/100","source_hash":"cf4fb1f93bc2ac7952110a6224a241a6cb90d18f5101e6f9c9d999189b33caa8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.3","statement_hash":"42268d055dc7546c5a22b37c1f8f2698fcabf315d425a7badd37ea6508c751aa","text":"允许 PL/Perl 函数接受通用 record 参数（Andrew Dunstan） PL/Perl 函数现在可以声明为接受 record 类型。其行为与任何命名的组合类型相同。","title":"允许 PL/Perl 函数接受通用 record 参数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"d32eaebc904dc1760652e490998ed5a5","html":"\u003cp\u003e把 PL/Perl 的数组参数转换为 Perl 数组（Alexey Klyukin、Alex Hunsaker）\u003c/p\u003e\n\u003cp\u003e字符串表示仍然可用。\u003c/p\u003e","id":"9.1.0-f678679040e0ffbe","identity_text":"Convert PL/Perl array arguments to Perl arrays (Alexey Klyukin, Alex Hunsaker) String representations are still available.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Perl Server-Side Language","section_path":["服务器端语言","PL/Perl Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/101","source_hash":"a9a20ac558b683b35b05384ddcadb5d75d9a5d946201f29d4039475ae73c91a8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.3","statement_hash":"a7f3c4fa3d513468f20dacf063184d71e1ecd825b6111e3a94758eecdf58f565","text":"把 PL/Perl 的数组参数转换为 Perl 数组（Alexey Klyukin、Alex Hunsaker） 字符串表示仍然可用。","title":"把 PL/Perl 的数组参数转换为 Perl 数组","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a830c8e03ee25aa62b5dc15fc2f1a178","html":"\u003cp\u003e把 PL/Perl 的组合类型参数转换为 Perl 哈希（Alexey Klyukin、Alex Hunsaker）\u003c/p\u003e\n\u003cp\u003e字符串表示仍然可用。\u003c/p\u003e","id":"9.1.0-f17e167243a4d07a","identity_text":"Convert PL/Perl composite-type arguments to Perl hashes (Alexey Klyukin, Alex Hunsaker) String representations are still available.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Perl Server-Side Language","section_path":["服务器端语言","PL/Perl Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/102","source_hash":"d0560de37ebff9d227d13e426c16175702a88a6723eb539be013479b484c3ca5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.3","statement_hash":"641d0aed3c281f06165fa7999aa58fbf3b0daa8fd5125fb8ad93b2eee7ef13bf","text":"把 PL/Perl 的组合类型参数转换为 Perl 哈希（Alexey Klyukin、Alex Hunsaker） 字符串表示仍然可用。","title":"把 PL/Perl 的组合类型参数转换为 Perl 哈希","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a026b05da4aac860f07b06258de239df","html":"\u003cp\u003e为 PL/Python 新增表函数支持（Jan Urbanski）\u003c/p\u003e\n\u003cp\u003ePL/Python 现在可以返回多个 \u003ccode\u003eOUT\u003c/code\u003e 参数和记录集。\u003c/p\u003e","id":"9.1.0-8e089cb7e2b0488e","identity_text":"Add table function support for PL/Python (Jan Urbanski) PL/Python can now return multiple OUT parameters and record sets.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/103","source_hash":"c91606dc89ccb789a9c9937fc35a3c842b2cbc9889cb433ca0cd4631dc87ca6f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"c0de77fba5224e3c95ec50c8e1fa5d9fed804d1f1fc387502ad66247f7657cb2","text":"为 PL/Python 新增表函数支持（Jan Urbanski） PL/Python 现在可以返回多个 OUT 参数和记录集。","title":"为 PL/Python 新增表函数支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5c6ad0cb8d354c7cbc9d3fe3f4c0b2d4","html":"\u003cp\u003e为 PL/Python 新增验证器（Jan Urbanski）\u003c/p\u003e\n\u003cp\u003e这允许在创建函数时对 PL/Python 函数做语法检查。\u003c/p\u003e","id":"9.1.0-ed28c9c82a1e8ded","identity_text":"Add a validator to PL/Python (Jan Urbanski) This allows PL/Python functions to be syntax-checked at function creation time.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/104","source_hash":"4c4c940df07f611f64dfe34b29f75772a142289057f348eeb0bd4fce67616f53","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"d9ce8083d80313664977e2c2d326f608370d7672e2b599d060a205bf2e97f077","text":"为 PL/Python 新增验证器（Jan Urbanski） 这允许在创建函数时对 PL/Python 函数做语法检查。","title":"为 PL/Python 新增验证器","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c316a7c9018468d9abc2f82747f4f92e","html":"\u003cp\u003e允许 PL/Python 中 SQL 查询的异常（Jan Urbanski）\u003c/p\u003e\n\u003cp\u003e这允许从 PL/Python 异常块访问 SQL 生成的异常错误码。\u003c/p\u003e","id":"9.1.0-f0d550d67d545341","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/105","source_hash":"9a3412b69589e7e5291f9a483a2fce8dfdd4feaac90c382b1d2004efca73fdb4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"36cc373cb23eff9afdffa39fa6f2f8b5a35a87fa964f3183b75775d0ed0569f1","text":"允许 PL/Python 中 SQL 查询的异常（Jan Urbanski） 这允许从 PL/Python 异常块访问 SQL 生成的异常错误码。","title":"允许 PL/Python 中 SQL 查询的异常","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"5074328f12f0ec9ff7dcc79eef943cb2","html":"\u003cp\u003e为 PL/Python 新增显式子事务（Jan Urbanski）\u003c/p\u003e","id":"9.1.0-407720308de7dd23","identity_text":"Add explicit subtransactions to PL/Python (Jan Urbanski)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/106","source_hash":"fc1947df4219a4ae1bef1385207dad14af43bcbcc2573208ad061ba5423b9a30","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"6e6cc6b4b2ddefb870d75e965bf995e210165110f55599dc2950376d0add6c8b","text":"为 PL/Python 新增显式子事务（Jan Urbanski）","title":"为 PL/Python 新增显式子事务","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f6bfc35b8ce5debceefee35c0cb148e1","html":"\u003cp\u003e为 PL/Python 新增字符串加引号函数（Jan Urbanski）\u003c/p\u003e\n\u003cp\u003e这些函数是 \u003ca href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"\u003e\u003ccode\u003eplpy.quote_ident\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"\u003e\u003ccode\u003eplpy.quote_literal\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/plpython-util.html\" title=\"42.9. 辅助函数\"\u003e\u003ccode\u003eplpy.quote_nullable\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"9.1.0-5d6e414e7453b55a","identity_text":"Add PL/Python functions for quoting strings (Jan Urbanski) These functions are plpy.quote_ident, plpy.quote_literal, and plpy.quote_nullable.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/107","source_hash":"3489b829037387cc8c942a1135a426c49aaec9ed7c81fe093ea302f987eac9f0","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"183ba6f8ffb39d79d22006c33175f78d5a603d8b28c63d6eca5ced7d607b1668","text":"为 PL/Python 新增字符串加引号函数（Jan Urbanski） 这些函数是 plpy.quote_ident、plpy.quote_literal 和 plpy.quote_nullable。","title":"为 PL/Python 新增字符串加引号函数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"83299d28b19643589dd78941e3814eaf","html":"\u003cp\u003e为 PL/Python 错误添加回溯信息（Jan Urbanski）\u003c/p\u003e","id":"9.1.0-8e5d29ce9c2da95a","identity_text":"Add traceback information to PL/Python errors (Jan Urbanski)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/108","source_hash":"09474958d407e65cf78512d379caa0464125ab89136b6426fea9c8a61f43b43b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"c42a7e2795088ffa41d264ce1c0702e2180848bfa1e3eaa83ce1b0968ad80cd4","text":"为 PL/Python 错误添加回溯信息（Jan Urbanski）","title":"为 PL/Python 错误添加回溯信息","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"6f979069bb79a716b2fed8c3dab185a1","html":"\u003cp\u003e用 \u003ccode\u003ePLy_elog\u003c/code\u003e 报告迭代器的 PL/Python 错误（Jan Urbanski）\u003c/p\u003e","id":"9.1.0-bcc9cbe2406462cf","identity_text":"Report PL/Python errors from iterators with PLy_elog (Jan Urbanski)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/109","source_hash":"3f5e1063940fd4ac154439d804c0923639e5743204a5659a876708b5256f0f92","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"cabdb7f0e5d7b42d44fbead5f6ea8fa3f0f9476f22acdc0b7f04c046d30b1fcb","text":"用 PLy_elog 报告迭代器的 PL/Python 错误（Jan Urbanski）","title":"用 PLy_elog 报告迭代器的 PL/Python 错误","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"79ab7adb1885f2e00d2e5e6a1e4caa67","html":"\u003cp\u003e修复 Python 3 的异常处理（Jan Urbanski）\u003c/p\u003e\n\u003cp\u003e此前在 Python 3 下 \u003ccode\u003eplpy\u003c/code\u003e 中没有异常类。\u003c/p\u003e","id":"9.1.0-d520694f28c9dfdf","identity_text":"Fix exception handling with Python 3 (Jan Urbanski) Exception classes were previously not available in plpy under Python 3.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"服务器端语言 / PL/Python Server-Side Language","section_path":["服务器端语言","PL/Python Server-Side Language"],"source_commits":[],"source_entry_id":"9.1.0/changes/110","source_hash":"9e3c794a0e06c577a003fad4f641dbb9a3b337fe961994480390cd0fde68816d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.10.4","statement_hash":"616e8ed3ae85ec6063f0a34df8e20a6efab76a0ad648889ddc062cb997406e97","text":"修复 Python 3 的异常处理（Jan Urbanski） 此前在 Python 3 下 plpy 中没有异常类。","title":"修复 Python 3 的异常处理","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c148444570958b17e03d0a81e9b153e7","html":"\u003cp\u003e由于\u003ca href=\"/docs/9.1/app-createlang.html\" title=\"createlang\"\u003e\u003cspan\u003ecreatelang\u003c/span\u003e\u003c/a\u003e和\u003ca href=\"/docs/9.1/app-droplang.html\" title=\"droplang\"\u003e\u003cspan\u003edroplang\u003c/span\u003e\u003c/a\u003e现在只是调用扩展命令，将其标记为已弃用（Tom Lane）\u003c/p\u003e","id":"9.1.0-43e1ef751f6c51b6","identity_text":"Mark createlang and droplang as deprecated now that they just invoke extension commands (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序","section_path":["客户端应用程序"],"source_commits":[],"source_entry_id":"9.1.0/changes/111","source_hash":"727e40993ac05724528c17f116d5e592e83438eb7332fe4873213238e768ce50","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11","statement_hash":"81a7732d473af67c43f55ffa0cc6f3ec5d045630986a51e1b90c2379945e7ca6","text":"由于createlang和droplang现在只是调用扩展命令，将其标记为已弃用（Tom Lane）","title":"由于createlang和droplang现在只是调用扩展命令，将其标记为已弃用","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3774a25a783460b1afb8ae0865e6aed6","html":"\u003cp\u003e新增 \u003cspan\u003epsql\u003c/span\u003e 命令 \u003ccode\u003e\\conninfo\u003c/code\u003e，用于显示当前连接信息（David Christensen）\u003c/p\u003e","id":"9.1.0-5a03a287a9542c30","identity_text":"Add psql command \\conninfo to show current connection information (David Christensen)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/112","source_hash":"775fbce9796d2d265e9360556a2f75f04afce3bf8e6fde9097645080107c9a11","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"a09c862463b55f460f40098179face65fad83d85902e468390f119f507387560","text":"新增 psql 命令 \\conninfo，用于显示当前连接信息（David Christensen）","title":"新增 psql 命令 \\conninfo，用于显示当前连接信息","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2cb185957f8feb1230616e9398c2e1df","html":"\u003cp\u003e新增 \u003cspan\u003epsql\u003c/span\u003e 命令 \u003ccode\u003e\\sf\u003c/code\u003e，用于显示函数定义（Pavel Stehule）\u003c/p\u003e","id":"9.1.0-31681b182fc997e7","identity_text":"Add psql command \\sf to show a function's definition (Pavel Stehule)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/113","source_hash":"ebbb6a8cda976acbe866642c73f1a6202c3df2abbf3c7d982e613778a3303bb3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"aff1c75b0966cf312e9302219af4fbfe6b1882ea917e3e94dd4913e0afe3bd21","text":"新增 psql 命令 \\sf，用于显示函数定义（Pavel Stehule）","title":"新增 psql 命令 \\sf，用于显示函数定义","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3a2190e88b7b26d0eff19a4e2a3036a9","html":"\u003cp\u003e新增 \u003cspan\u003epsql\u003c/span\u003e 命令 \u003ccode\u003e\\dL\u003c/code\u003e，用于列出语言（Fernando Ike）\u003c/p\u003e","id":"9.1.0-94425699e553bdbd","identity_text":"Add psql command \\dL to list languages (Fernando Ike)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/114","source_hash":"7b243f49c02c1fadefdb90eaa03b11e2eb2cc9ab65d126c2768eccd0ad5bc8cd","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"db033048f1c83411f41d47e82df65d3d914886aa012e0be42826cfc2c4e86987","text":"新增 psql 命令 \\dL，用于列出语言（Fernando Ike）","title":"新增 psql 命令 \\dL，用于列出语言","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ab98d33e31567c9a8b6f319e0900b500","html":"\u003cp\u003e为 \u003cspan\u003epsql\u003c/span\u003e 的 \u003ccode\u003e\\dn\u003c/code\u003e（列出模式）命令新增 \u003ccode\u003eS\u003c/code\u003e（\u003cspan\u003e“\u003cspan\u003esystem\u003c/span\u003e”\u003c/span\u003e）选项（Tom Lane）\u003c/p\u003e\n\u003cp\u003e不带 \u003ccode\u003eS\u003c/code\u003e 的 \u003ccode\u003e\\dn\u003c/code\u003e 现在会隐藏系统模式。\u003c/p\u003e","id":"9.1.0-ae03be0b1a742257","identity_text":"Add the S (system) option to psql's \\dn (list schemas) command (Tom Lane) \\dn without S now suppresses system schemas.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/115","source_hash":"2a85675fd72b511ef72c18a6dc305591a95bf68fa3d4231debc91d8d3ad1b7a5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"56a8209000f5228066fef2983c2cff7d853a4b2241355c03316afcce466cd28c","text":"为 psql 的 \\dn（列出模式）命令新增 S（“system”）选项（Tom Lane） 不带 S 的 \\dn 现在会隐藏系统模式。","title":"为 psql 的 \\dn（列出模式）命令新增 S（“system”）选项","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"195584707d3b0b913e5bbd1b16e7585b","html":"\u003cp\u003e允许 \u003cspan\u003epsql\u003c/span\u003e 的 \u003ccode\u003e\\e\u003c/code\u003e 和 \u003ccode\u003e\\ef\u003c/code\u003e 命令接受行号以定位编辑器中的光标（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e该行号根据 \u003ccode\u003ePSQL_EDITOR_LINENUMBER_ARG\u003c/code\u003e 环境变量传递给编辑器。\u003c/p\u003e","id":"9.1.0-57c615465e04059b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/116","source_hash":"a1ef474c71db9b5cdf576932dabec0d214289073a0ffacc4cae06d1f4f830f25","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"485b0c56069d806bd1e12114be64b4f16ff5e3c2c8441fb070aa1e8ee78aa635","text":"允许 psql 的 \\e 和 \\ef 命令接受行号以定位编辑器中的光标（Pavel Stehule） 该行号根据 PSQL_EDITOR_LINENUMBER_ARG 环境变量传递给编辑器。","title":"允许 psql 的 \\e 和 \\ef 命令接受行号以定位编辑器中的光标","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ecca4bfa0b24a39967485a0cd874edb5","html":"\u003cp\u003e让 \u003cspan\u003epsql\u003c/span\u003e 默认根据操作系统区域设置客户端编码（Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e这只在未设置 \u003ccode\u003ePGCLIENTENCODING\u003c/code\u003e 环境变量时发生。\u003c/p\u003e","id":"9.1.0-57c0cea433e45f1b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/117","source_hash":"159b80e3ead5948e31dce5cf2bd59d7fc7970e10c52c58f3224a7629369ca636","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"f4199ca0986712c26a772acfc974b3108b0428554788640317f478e970529b9b","text":"让 psql 默认根据操作系统区域设置客户端编码（Heikki Linnakangas） 这只在未设置 PGCLIENTENCODING 环境变量时发生。","title":"让 psql 默认根据操作系统区域设置客户端编码","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3bb9d8ccba0b4c57268a4a44c6f96604","html":"\u003cp\u003e让 \u003ccode\u003e\\d\u003c/code\u003e 区分唯一索引和唯一约束（Josh Kupershmidt）\u003c/p\u003e","id":"9.1.0-fc07e13076de2e3d","identity_text":"Make \\d distinguish between unique indexes and unique constraints (Josh Kupershmidt)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/118","source_hash":"c977eebc19f8e7d584232aab5a9086a3fdb865767b0dc6c8b2bc7e564443698d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"77f85dc255f52d40dd836609aa61e5d3afd2036bfa8ace0c3871c7a45095f743","text":"让 \\d 区分唯一索引和唯一约束（Josh Kupershmidt）","title":"让 \\d 区分唯一索引和唯一约束","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b8338438f03158c61ed0ffdc30ce77b8","html":"\u003cp\u003e让 \u003ccode\u003e\\dt+\u003c/code\u003e 在连接 9.0 或更高版本服务器时报告 \u003ccode\u003epg_table_size\u003c/code\u003e 而不是 \u003ccode\u003epg_relation_size\u003c/code\u003e（Bernd Helmle）\u003c/p\u003e\n\u003cp\u003e这是更有用的表大小度量，但注意它与此前同一显示中报告的值并不相同。\u003c/p\u003e","id":"9.1.0-829080102428edf4","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/119","source_hash":"19360785d9bcad781ef52262cc03323bd017ccb9f3c310f351a9bad8dd1a67f6","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"58001e80c4bd23a23299c69543f340896da5bb35e6584f1eb5bfe7fb3adcac40","text":"让 \\dt+ 在连接 9.0 或更高版本服务器时报告 pg_table_size 而不是 pg_relation_size（Bernd Helmle） 这是更有用的表大小度量，但注意它与此前同一显示中报告的值并不相同。","title":"让 \\dt+ 在连接 9.0 或更高版本服务器时报告 pg_table_size 而不是 pg_relation_size","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a7a23a8092927dc7ed971e95718a92f6","html":"\u003cp\u003e更多 Tab 补全支持（Itagaki Takahiro、Pavel Stehule、Andrey Popp、Christoph Berg、David Fetter、Josh Kupershmidt）\u003c/p\u003e","id":"9.1.0-21dc14cb45e4f309","identity_text":"Additional tab completion support (Itagaki Takahiro, Pavel Stehule, Andrey Popp, Christoph Berg, David Fetter, Josh Kupershmidt)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / psql","section_path":["客户端应用程序","psql"],"source_commits":[],"source_entry_id":"9.1.0/changes/120","source_hash":"e8a6a6d943df5c04a902db29406a84e13370cd7b0ef41225d9eb879a3159cc0f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.3","statement_hash":"0ec2cb013b57ecacc8d9269c770280604b2bb9816372bf1447be79894d88dc28","text":"更多 Tab 补全支持（Itagaki Takahiro、Pavel Stehule、Andrey Popp、Christoph Berg、David Fetter、Josh Kupershmidt）","title":"更多 Tab 补全支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"9a0698c927e5db56a472db7e79d6fa2c","html":"\u003cp\u003e为\u003ca href=\"/docs/9.1/app-pgdump.html\" title=\"pg_dump\"\u003e\u003cspan\u003epg_dump\u003c/span\u003e\u003c/a\u003e和\u003ca href=\"/docs/9.1/app-pg-dumpall.html\" title=\"pg_dumpall\"\u003e\u003cspan\u003epg_dumpall\u003c/span\u003e\u003c/a\u003e新增选项 \u003ccode\u003e--quote-all-identifiers\u003c/code\u003e，强制为所有标识符加引号（Robert Haas）\u003c/p\u003e","id":"9.1.0-fcbbd132ee2092fe","identity_text":"Add pg_dump and pg_dumpall option --quote-all-identifiers to force quoting of all identifiers (Robert Haas)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / pg_dump","section_path":["客户端应用程序","pg_dump"],"source_commits":[],"source_entry_id":"9.1.0/changes/121","source_hash":"09349ff8c0e7de427d57cf83723eccf7c80d8a1f2b187494f7df3cb80a5aa530","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.4","statement_hash":"6f021f44f43f815fa4a7812d9353ec887a8a1ccd01b5e217acecab84d3dbda98","text":"为pg_dump和pg_dumpall新增选项 --quote-all-identifiers，强制为所有标识符加引号（Robert Haas）","title":"为pg_dump和pg_dumpall新增选项 --quote-all-identifiers，强制为所有标识符加引号","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"00a3557405e1d9bbdf46465415574192","html":"\u003cp\u003e为 \u003cspan\u003epg_dump\u003c/span\u003e 新增 \u003ccode\u003edirectory\u003c/code\u003e 格式（Joachim Wieland、Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e它在内部类似于 \u003cspan\u003epg_dump\u003c/span\u003e 的 \u003ccode\u003etar\u003c/code\u003e 格式。\u003c/p\u003e","id":"9.1.0-4a346149bc90daae","identity_text":"Add directory format to pg_dump (Joachim Wieland, Heikki Linnakangas) This is internally similar to the tar pg_dump format.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / pg_dump","section_path":["客户端应用程序","pg_dump"],"source_commits":[],"source_entry_id":"9.1.0/changes/122","source_hash":"bf7fbeab8c64f430e36945445027512a0dcec253f3e52124a02409a1a7addd50","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.4","statement_hash":"433d59b0ceec61fd3b21fcd9755b6dc942c0df8665efc3ee49e8f5a44bd957c2","text":"为 pg_dump 新增 directory 格式（Joachim Wieland、Heikki Linnakangas） 它在内部类似于 pg_dump 的 tar 格式。","title":"为 pg_dump 新增 directory 格式","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"07c1f78ed3c055584fe760f448bd938e","html":"\u003cp\u003e修复 \u003cspan\u003epg_ctl\u003c/span\u003e，使其不再错误地报告服务器未运行（Bruce Momjian）\u003c/p\u003e\n\u003cp\u003e此前当服务器在运行但 \u003cspan\u003epg_ctl\u003c/span\u003e 无法认证时可能发生这种情况。\u003c/p\u003e","id":"9.1.0-75d6c5b342e7ed2f","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / pg_ctl","section_path":["客户端应用程序","pg_ctl"],"source_commits":[],"source_entry_id":"9.1.0/changes/123","source_hash":"480c0f73233cb696f4c402fb27bfe9fb0ec28fa53e495f9325acc841c21617e5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.5","statement_hash":"edf763aebf173d1acfac942d8b1875e71673cea0c64a72063eecee362c715592","text":"修复 pg_ctl，使其不再错误地报告服务器未运行（Bruce Momjian） 此前当服务器在运行但 pg_ctl 无法认证时可能发生这种情况。","title":"修复 pg_ctl，使其不再错误地报告服务器未运行","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"976797f44eaa39c02dbd1295603a830e","html":"\u003cp\u003e改进 \u003cspan\u003epg_ctl\u003c/span\u003e start 的\u003cspan\u003e“\u003cspan\u003e等待\u003c/span\u003e”\u003c/span\u003e（\u003ccode\u003e-w\u003c/code\u003e）选项（Bruce Momjian、Tom Lane）\u003c/p\u003e\n\u003cp\u003e等待模式现在明显更健壮。它不会因非默认的 postmaster 端口号、非默认的 Unix 域套接字位置、权限问题或过期的 postmaster 锁文件而困惑。\u003c/p\u003e","id":"9.1.0-38daddc118dbfe84","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / pg_ctl","section_path":["客户端应用程序","pg_ctl"],"source_commits":[],"source_entry_id":"9.1.0/changes/124","source_hash":"5e936f6fd6d17bfbbbfe50957b2dab1010e67bbec5720d8892e9175201aa994f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.5","statement_hash":"7f4b7ade95bcbf175b21f18eb72a1e0be27feffc0d495224e259b19d72ba7354","text":"改进 pg_ctl start 的“等待”（-w）选项（Bruce Momjian、Tom Lane） 等待模式现在明显更健壮。它不会因非默认的 postmaster 端口号、非默认的 Unix 域套接字位置、权限问题或过期的 postmaster 锁文件而困惑。","title":"改进 pg_ctl start 的“等待”（-w）选项","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"0c89aae9460e7ecb7bcedd4a3aad5935","html":"\u003cp\u003e为 \u003cspan\u003epg_ctl\u003c/span\u003e 新增 \u003ccode\u003epromote\u003c/code\u003e 选项，用于把备库切换为主库（Fujii Masao）\u003c/p\u003e","id":"9.1.0-6ec743326f040b8a","identity_text":"Add promote option to pg_ctl to switch a standby server to primary (Fujii Masao)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"客户端应用程序 / pg_ctl","section_path":["客户端应用程序","pg_ctl"],"source_commits":[],"source_entry_id":"9.1.0/changes/125","source_hash":"84d13efb1a4b62f660013775047f3423f24c1a317bce93c3a1b6a065ce1f3048","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.11.5","statement_hash":"cee33d50958b625ff92801c8c0be12d9711a33ccdab636068c8b3452180d1889","text":"为 pg_ctl 新增 promote 选项，用于把备库切换为主库（Fujii Masao）","title":"为 pg_ctl 新增 promote 选项，用于把备库切换为主库","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"cbc7d96972a182cc875740851e97f7ac","html":"\u003cp\u003e新增 libpq 连接选项 \u003ca href=\"/docs/9.1/libpq.html#LIBPQ-CONNECT-CLIENT-ENCODING\"\u003e\u003ccode\u003eclient_encoding\u003c/code\u003e\u003c/a\u003e，其行为类似于 \u003ccode\u003ePGCLIENTENCODING\u003c/code\u003e 环境变量（Heikki Linnakangas）\u003c/p\u003e\n\u003cp\u003e值 \u003ccode\u003eauto\u003c/code\u003e 根据操作系统区域设置客户端编码。\u003c/p\u003e","id":"9.1.0-b32ae7e7fe561368","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / libpq","section_path":["Development Tools","libpq"],"source_commits":[],"source_entry_id":"9.1.0/changes/126","source_hash":"755bb5f13aa228e3bae1ee60e2916ce567fa3a7ffc9801afdfcde11c19fc5dea","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.2","statement_hash":"ed07e8e703d4ec6f905b05d8eb9b3511af8932691845401797b00e46e00ac2be","text":"新增 libpq 连接选项 client_encoding，其行为类似于 PGCLIENTENCODING 环境变量（Heikki Linnakangas） 值 auto 根据操作系统区域设置客户端编码。","title":"新增 libpq 连接选项 client_encoding，其行为类似于 PGCLIENTENCODING 环境变量","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a4525312867a9fe90a9e69e44928339a","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/9.1/libpq-misc.html#LIBPQ-PQLIBVERSION\"\u003e\u003ccode\u003ePQlibVersion()\u003c/code\u003e\u003c/a\u003e，返回 libpq 库版本（Magnus Hagander）\u003c/p\u003e\n\u003cp\u003elibpq 此前已有返回服务器版本的 \u003ccode\u003ePQserverVersion()\u003c/code\u003e。\u003c/p\u003e","id":"9.1.0-68b454b8026839b3","identity_text":"Add PQlibVersion() function which returns the libpq library version (Magnus Hagander) libpq already had PQserverVersion() which returns the server version.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / libpq","section_path":["Development Tools","libpq"],"source_commits":[],"source_entry_id":"9.1.0/changes/127","source_hash":"7023fc3330c039df36089da49f8ce3702607b10a89849344b40324d0c288784d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.2","statement_hash":"be84df203837d0144c2a377869531e52c9922a26e86fc3b6be4e5b557418ded2","text":"新增函数 PQlibVersion()，返回 libpq 库版本（Magnus Hagander） libpq 此前已有返回服务器版本的 PQserverVersion()。","title":"新增函数 PQlibVersion()，返回 libpq 库版本","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"48d5728d20fa3d236742b65e22c2b91e","html":"\u003cp\u003e允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 \u003ca href=\"/docs/9.1/libpq.html#LIBPQ-CONNECT-REQUIREPEER\"\u003e\u003ccode\u003erequirepeer\u003c/code\u003e\u003c/a\u003e 连接选项（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e\u003cspan\u003ePostgreSQL\u003c/span\u003e 此前已允许服务器在通过 Unix 域套接字连接时检查客户端用户名。\u003c/p\u003e","id":"9.1.0-02c1c7b830750cbb","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / libpq","section_path":["Development Tools","libpq"],"source_commits":[],"source_entry_id":"9.1.0/changes/128","source_hash":"29e5bb7fd41c4edaebc5845871d471e23bbdcf1ccac54929692de7064c8ec5ba","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.2","statement_hash":"ac8901e11203f09fe1acba97c0d5e7223dcf9d276ee8a4298a68b9333a40b5c5","text":"允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 requirepeer 连接选项（Peter Eisentraut） PostgreSQL 此前已允许服务器在通过 Unix 域套接字连接时检查客户端用户名。","title":"允许使用 libpq 的客户端在通过 Unix 域套接字连接时检查服务器进程的用户名，使用新的 requirepeer 连接选项","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ab344a5afb2feb2f48772759b1d07739","html":"\u003cp\u003e为 libpq 新增 \u003ca href=\"/docs/9.1/libpq.html#LIBPQ-PQPING\"\u003e\u003ccode\u003ePQping()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/libpq.html#LIBPQ-PQPINGPARAMS\"\u003e\u003ccode\u003ePQpingParams()\u003c/code\u003e\u003c/a\u003e（Bruce Momjian、Tom Lane）\u003c/p\u003e\n\u003cp\u003e这些函数允许在不尝试打开新会话的情况下检测服务器状态。\u003c/p\u003e","id":"9.1.0-c42c22a81a81e1ff","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / libpq","section_path":["Development Tools","libpq"],"source_commits":[],"source_entry_id":"9.1.0/changes/129","source_hash":"5667eff5794ad0a879fdcf46a01f85eb06692e9ccd43fff2c049d2d5b41017b2","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.2","statement_hash":"09bc678360b3d1699a5620d8d9953ea3448acca39a41f8acb3c52d08d59da08a","text":"为 libpq 新增 PQping() 和 PQpingParams()（Bruce Momjian、Tom Lane） 这些函数允许在不尝试打开新会话的情况下检测服务器状态。","title":"为 libpq 新增 PQping() 和 PQpingParams()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"0a8c38feeb1a6aef53957985aa83215e","html":"\u003cp\u003e允许 ECPG 即使在 \u003ccode\u003eWHERE CURRENT OF\u003c/code\u003e 子句中也接受动态游标名（Zoltan Boszormenyi）\u003c/p\u003e","id":"9.1.0-92ee5f70c743f8c6","identity_text":"Allow ECPG to accept dynamic cursor names even in WHERE CURRENT OF clauses (Zoltan Boszormenyi)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / ECPG","section_path":["Development Tools","ECPG"],"source_commits":[],"source_entry_id":"9.1.0/changes/130","source_hash":"1c746fa272c4e49abec3f4d2e4c4dcbd3dcc449e674e5a89f19fbedb50f414cf","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.3","statement_hash":"b13f10fbedaa34aa33bdf677edb1817c0dd2e01c94abf20da351648b98c6ccb9","text":"允许 ECPG 即使在 WHERE CURRENT OF 子句中也接受动态游标名（Zoltan Boszormenyi）","title":"允许 ECPG 即使在 WHERE CURRENT OF 子句中也接受动态游标名","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a756f2f7e22bad18b34b0100652a98aa","html":"\u003cp\u003e让 \u003cspan\u003eecpglib\u003c/span\u003e 以 15 位精度写 \u003ccode\u003edouble\u003c/code\u003e 值，而不是此前的 14 位（Akira Kurosawa）\u003c/p\u003e","id":"9.1.0-60c2b323b37fa515","identity_text":"Make ecpglib write double values with a precision of 15 digits, not 14 as formerly (Akira Kurosawa)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"Development Tools / ECPG","section_path":["Development Tools","ECPG"],"source_commits":[],"source_entry_id":"9.1.0/changes/131","source_hash":"8cbc39c7094761dd1b3a8b53f47ee767373324aee7efef695ae5d40347db17a9","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.12.3","statement_hash":"61ecbd190aefb5327060fbc465d1dd2111ae5186abb3fdc6777381d2ea54c3d0","text":"让 ecpglib 以 15 位精度写 double 值，而不是此前的 14 位（Akira Kurosawa）","title":"让 ecpglib 以 15 位精度写 double 值，而不是此前的 14 位","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"23544ae7cf22eef4a4cf8e8c95c93fae","html":"\u003cp\u003e对接受它的 HP-UX C 编译器使用 \u003ccode\u003e+Olibmerrno\u003c/code\u003e 编译标志（Ibrar Ahmed）\u003c/p\u003e\n\u003cp\u003e这避免了较新 HP 平台上数学库调用可能的不当行为。\u003c/p\u003e","id":"9.1.0-b9d9bdf7669d5353","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项","section_path":["构建选项"],"source_commits":[],"source_entry_id":"9.1.0/changes/132","source_hash":"12d36ab7bcbbc8ba9e70b5ef04820c971d5da0e1a459b06b5312c16cf3dce311","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13","statement_hash":"693ad5c796bfbf915b88068f78d795dbf78e51912cdd08d0285ef2613f0dc1dd","text":"对接受它的 HP-UX C 编译器使用 +Olibmerrno 编译标志（Ibrar Ahmed） 这避免了较新 HP 平台上数学库调用可能的不当行为。","title":"对接受它的 HP-UX C 编译器使用 +Olibmerrno 编译标志","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"79b51d5ad81b6c511a38646c44bde07d","html":"\u003cp\u003e改进的并行 make 支持（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e这使编译更快。此外，\u003ccode\u003emake -k\u003c/code\u003e 现在工作得更一致。\u003c/p\u003e","id":"9.1.0-a4f282ace9e10eda","identity_text":"Improved parallel make support (Peter Eisentraut) This allows for faster compiles. Also, make -k now works more consistently.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Makefile","section_path":["构建选项","Makefile"],"source_commits":[],"source_entry_id":"9.1.0/changes/133","source_hash":"e8e37cb21401fdfc9c58e80fcb8f14041f85f580e540fd5cf9695eb4a3365966","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.3","statement_hash":"d6c989f87fb7940683c836de8a83e3837c7e15dd06131550f3761217471ac005","text":"改进的并行 make 支持（Peter Eisentraut） 这使编译更快。此外，make -k 现在工作得更一致。","title":"改进的并行 make 支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"1d919f3d25092be0f0f8741425f00d66","html":"\u003cp\u003e要求 \u003cacronym\u003eGNU\u003c/acronym\u003e \u003ca href=\"/docs/9.1/install-requirements.html\" title=\"15.2. 需求\"\u003e\u003cspan\u003emake\u003c/span\u003e\u003c/a\u003e 3.80 或更新版本（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e由于并行 make 的改进，这是必要的。\u003c/p\u003e","id":"9.1.0-125e6bc8c8806efd","identity_text":"Require GNU make 3.80 or newer (Peter Eisentraut) This is necessary because of the parallel-make improvements.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Makefile","section_path":["构建选项","Makefile"],"source_commits":[],"source_entry_id":"9.1.0/changes/134","source_hash":"78de2b2b9b4b160d51b1fb4457bbcafdc9abe70ebf35e2a59a25880e42624ed1","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.3","statement_hash":"75c9a1a0ebfecb7aebe9f5b10677907b993f4cd413a818ab8673a07f713f9be1","text":"要求 GNU make 3.80 或更新版本（Peter Eisentraut） 由于并行 make 的改进，这是必要的。","title":"要求 GNU make 3.80 或更新版本","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a68b8ef27be32de12eaf00b40642a61a","html":"\u003cp\u003e新增 \u003ccode\u003emake maintainer-check\u003c/code\u003e 目标（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e该目标执行各种既不适合构建也不适合回归测试的源代码检查。目前包括：duplicate_oids、SGML 语法和制表符检查、NLS 语法检查。\u003c/p\u003e","id":"9.1.0-8ca3a8b46970a8fa","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Makefile","section_path":["构建选项","Makefile"],"source_commits":[],"source_entry_id":"9.1.0/changes/135","source_hash":"b10a3e7ede1f6b39e69308562e64158d8bfa441483a0f9d987125bbb4e354241","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.3","statement_hash":"9d9fbaaeec3c0750113f3872e112cc73a119ea6b3059666af29726cee4a6f665","text":"新增 make maintainer-check 目标（Peter Eisentraut） 该目标执行各种既不适合构建也不适合回归测试的源代码检查。目前包括：duplicate_oids、SGML 语法和制表符检查、NLS 语法检查。","title":"新增 make maintainer-check 目标","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c77a4126229b2d6458ed6546728fbd43","html":"\u003cp\u003e在 \u003ccode\u003econtrib\u003c/code\u003e 中支持 \u003ccode\u003emake check\u003c/code\u003e（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e此前只有 \u003ccode\u003emake installcheck\u003c/code\u003e 可用，但现在支持在临时安装中测试。顶层的 \u003ccode\u003emake check-world\u003c/code\u003e 目标现在包括以这种方式测试 \u003ccode\u003econtrib\u003c/code\u003e。\u003c/p\u003e","id":"9.1.0-2d97f3e20a7634bf","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Makefile","section_path":["构建选项","Makefile"],"source_commits":[],"source_entry_id":"9.1.0/changes/136","source_hash":"88e03d1babd2b7cbaddc36e8b3e41163ff56f9b193e06b5f276147f71681d232","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.3","statement_hash":"067cf68f7583b3899588ff284ed60e1f5b0877202050b0c77ddc6c35ca9157ee","text":"在 contrib 中支持 make check（Peter Eisentraut） 此前只有 make installcheck 可用，但现在支持在临时安装中测试。顶层的 make check-world 目标现在包括以这种方式测试 contrib。","title":"在 contrib 中支持 make check","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3d5d42bfccee5b9263b95d56f6a30139","html":"\u003cp\u003e在 Windows 上，允许\u003ca href=\"/docs/9.1/app-pg-ctl.html\" title=\"pg_ctl\"\u003e\u003cspan\u003epg_ctl\u003c/span\u003e\u003c/a\u003e把服务注册为自动启动或按需启动（Quan Zongliang）\u003c/p\u003e","id":"9.1.0-3b39e7fdbf7f7e1f","identity_text":"On Windows, allow pg_ctl to register the service as auto-start or start-on-demand (Quan Zongliang)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Windows","section_path":["构建选项","Windows"],"source_commits":[],"source_entry_id":"9.1.0/changes/137","source_hash":"f3a75ae79d122fc35035dd2e8eaf8ee348e814f9d406655dcdfb965912747130","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.4","statement_hash":"7f3ea2850abeeb36e9ac63b3d8a91b41daf6f0e6cb4627cb586c47b2e8b0e9ad","text":"在 Windows 上，允许pg_ctl把服务注册为自动启动或按需启动（Quan Zongliang）","title":"在 Windows 上，允许pg_ctl把服务注册为自动启动或按需启动","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"97159fbf049ff91b3047805c7fe67b57","html":"\u003cp\u003e新增在 Windows 上收集\u003ca href=\"/docs/9.1/installation-platform-notes.html#WINDOWS-CRASH-DUMPS\" title=\"15.7.5.1. 在 Windows 上收集崩溃转储\"\u003e崩溃转储\u003c/a\u003e的支持（Craig Ringer、Magnus Hagander）\u003c/p\u003e\n\u003cp\u003e现在可以由非调试的 Windows 二进制生成 \u003cspan\u003eminidumps\u003c/span\u003e，并用标准调试工具分析。\u003c/p\u003e","id":"9.1.0-908994ab32ae15fd","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Windows","section_path":["构建选项","Windows"],"source_commits":[],"source_entry_id":"9.1.0/changes/138","source_hash":"97d483e39c2a228c25e83753219e359686bebb9cae2d4862be5b77a877f00250","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.4","statement_hash":"2355c0cfd404af7c6b09c5a553887d5f2752b5684d10310fd19c3cd2d341b0c5","text":"新增在 Windows 上收集崩溃转储的支持（Craig Ringer、Magnus Hagander） 现在可以由非调试的 Windows 二进制生成 minidumps，并用标准调试工具分析。","title":"新增在 Windows 上收集崩溃转储的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a408e70a99c9791596bd9e467425a301","html":"\u003cp\u003e支持使用 MinGW64 编译器构建（Andrew Dunstan）\u003c/p\u003e\n\u003cp\u003e这允许通过交叉编译即使在非 Windows 平台上也能构建 64 位 Windows 二进制。\u003c/p\u003e","id":"9.1.0-1297c57fe6b30d8a","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"构建选项 / Windows","section_path":["构建选项","Windows"],"source_commits":[],"source_entry_id":"9.1.0/changes/139","source_hash":"07ea3e20a5aceef8425aec0bc691da2aa8b5c196c3aea046a02bbc613c3ed872","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.13.4","statement_hash":"7abc28131973e11c63fe3e5d42f029aa346710e805a82109f061e75feb543816","text":"支持使用 MinGW64 编译器构建（Andrew Dunstan） 这允许通过交叉编译即使在非 Windows 平台上也能构建 64 位 Windows 二进制。","title":"支持使用 MinGW64 编译器构建","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"abdde0b68461c4e75e1fce0ed6a59149","html":"\u003cp\u003e修订 GUC 变量赋值钩子的 API（Tom Lane）\u003c/p\u003e\n\u003cp\u003e此前赋值钩子的职能现在拆分到检查钩子和赋值钩子之间，前者可以失败而后者不应失败。此变更会影响定义自定义 GUC 参数的附加模块。\u003c/p\u003e","id":"9.1.0-3834cf21f924dfd7","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/140","source_hash":"d2a5a8c9d2691639c3203652b48edc138bc263664b7aa213a7fef4c2239ec715","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"84c13ad079f89927f983b448d6d1efa37376dd315ffa9550cce6333f4df78c69","text":"修订 GUC 变量赋值钩子的 API（Tom Lane） 此前赋值钩子的职能现在拆分到检查钩子和赋值钩子之间，前者可以失败而后者不应失败。此变更会影响定义自定义 GUC 参数的附加模块。","title":"修订 GUC 变量赋值钩子的 API","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e963b4b0114a698bc985a96420e43f45","html":"\u003cp\u003e在源代码中新增闩锁以支持等待事件（Heikki Linnakangas）\u003c/p\u003e","id":"9.1.0-5b2b9928138eebf0","identity_text":"Add latches to the source code to support waiting for events (Heikki Linnakangas)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/141","source_hash":"cb44c77fc4d861ad6be5d14974955c8659b107b391de0b6c9aa64add4d32460c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"e9c8847bd479d0636f154626d8d0100abc1d9413193d99bef3b4efd05f346396","text":"在源代码中新增闩锁以支持等待事件（Heikki Linnakangas）","title":"在源代码中新增闩锁以支持等待事件","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a6e0b24cd6c856fbfbb79a45c073e576","html":"\u003cp\u003e集中化数据修改权限检查逻辑（KaiGai Kohei）\u003c/p\u003e","id":"9.1.0-1c9ca7cfc872b05b","identity_text":"Centralize data modification permissions-checking logic (KaiGai Kohei)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/142","source_hash":"db3847ac3339d43e48304a8086023c87ae2a47490860d2be371d0ab55fdb8128","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"3635d2f1f414e954640b9d06e586c1a333a2f4e80f7bb1da4f2eebd4639cf812","text":"集中化数据修改权限检查逻辑（KaiGai Kohei）","title":"集中化数据修改权限检查逻辑","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c88756c928519caabdd67a030a770c53","html":"\u003cp\u003e为一致性补齐缺失的 \u003ccode\u003eget_\u003cem\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/em\u003e_oid()\u003c/code\u003e 函数（Robert Haas）\u003c/p\u003e","id":"9.1.0-c1b32d2801ea625d","identity_text":"Add missing get_object_oid() functions, for consistency (Robert Haas)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/143","source_hash":"2abdd091b0bd157a00ebd01b70fc484a61779caa295927189b1f2ec91323bbd0","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"da8b8febb38096c58312c16b1cd0cbe18e35acfb8542fafec5e2fce1f80f96ce","text":"为一致性补齐缺失的 get_object_oid() 函数（Robert Haas）","title":"为一致性补齐缺失的 get_object_oid() 函数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ff68590397c11ecd5c30bb47f5b824ba","html":"\u003cp\u003e通过移除冲突的关键字，改进使用 C++ 编译器\u003ca href=\"/docs/9.1/xfunc-c.html\" title=\"35.9. C 语言函数\"\u003e编译附加模块\u003c/a\u003e的能力（Tom Lane）\u003c/p\u003e","id":"9.1.0-6f901aa01690b539","identity_text":"Improve ability to use C++ compilers for compiling add-on modules by removing conflicting key words (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/144","source_hash":"43f13099e7dccb5adfca361ef685d2a5c216306d0e9160f4c95a190da11803fc","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"2cd1f658105e88eb20400f121c6313a4ec7f5d9ddfb9a051c6e9f9431aeead19","text":"通过移除冲突的关键字，改进使用 C++ 编译器编译附加模块的能力（Tom Lane）","title":"通过移除冲突的关键字，改进使用 C++ 编译器编译附加模块的能力","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"374043264a4688c6ace732fd4c532e6e","html":"\u003cp\u003e新增对 DragonFly \u003cacronym\u003eBSD\u003c/acronym\u003e 的支持（Rumko）\u003c/p\u003e","id":"9.1.0-f0161a6145f6a304","identity_text":"Add support for DragonFly BSD (Rumko)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/145","source_hash":"26bc3a385f6af21c1d61c93153ac49550097898fb09ab68a8cad7f1599ce5080","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"7906ed25f822249a69262a2d0828a211d1b224191366c3ff2a9b023baac486ee","text":"新增对 DragonFly BSD 的支持（Rumko）","title":"新增对 DragonFly BSD 的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c608634aac6a08b9275c17a56b37f26e","html":"\u003cp\u003e为后端使用公开 \u003ccode\u003equote_literal_cstr()\u003c/code\u003e（Robert Haas）\u003c/p\u003e","id":"9.1.0-d61ce4934702f1c8","identity_text":"Expose quote_literal_cstr() for backend use (Robert Haas)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/146","source_hash":"f8e82279be5c74a601fc81bb600547bf9979c5ed844a25271df7bf61819e989b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"410684c0f871667952cb3a65b549e6ed9412bc357a100d86375cca9e90d86c9d","text":"为后端使用公开 quote_literal_cstr()（Robert Haas）","title":"为后端使用公开 quote_literal_cstr()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"8b724a6854f616263487a1f6dc9408a1","html":"\u003cp\u003e以默认编码运行\u003ca href=\"/docs/9.1/install-procedure.html#BUILD\" title=\"构建\"\u003e回归测试\u003c/a\u003e（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e回归测试此前总是以 \u003ccode\u003eSQL_ASCII\u003c/code\u003e 编码运行。\u003c/p\u003e","id":"9.1.0-1e801b7d7af077d6","identity_text":"Run regression tests in the default encoding (Peter Eisentraut) Regression tests were previously always run with SQL_ASCII encoding.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/147","source_hash":"6e6fdd6eaf5c20f263d2d4d6ba6cb30955829edb32894b55c6012ca8e152e94b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"7957d8dd6af758ae9f27da692e1c9c8237b94c7157ab57e1f8ba8b93d61010d5","text":"以默认编码运行回归测试（Peter Eisentraut） 回归测试此前总是以 SQL_ASCII 编码运行。","title":"以默认编码运行回归测试","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3fe80ae466f3478378790a7943839bf7","html":"\u003cp\u003e新增 \u003cspan\u003esrc/tools/git_changelog\u003c/span\u003e 以取代 \u003cspan\u003ecvs2cl\u003c/span\u003e 和 \u003cspan\u003epgcvslog\u003c/span\u003e（Robert Haas、Tom Lane）\u003c/p\u003e","id":"9.1.0-a03d72b3cda13688","identity_text":"Add src/tools/git_changelog to replace cvs2cl and pgcvslog (Robert Haas, Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/148","source_hash":"82d29652a6eb2227bfb3a7724be6da31f39ab79adf80dc588a84e59398783ff7","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"9aa210689ffce7d5456a517c088ceafc735323ea47fb2462a0e76a50b62369dc","text":"新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog（Robert Haas、Tom Lane）","title":"新增 src/tools/git_changelog 以取代 cvs2cl 和 pgcvslog","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"68db8fc532c257e6acb7bcbaee67cfc2","html":"\u003cp\u003e向 \u003ccode\u003esrc/tools\u003c/code\u003e 添加 \u003cspan\u003egit-external-diff\u003c/span\u003e 脚本（Bruce Momjian）\u003c/p\u003e\n\u003cp\u003e它用于从 git 生成上下文差异。\u003c/p\u003e","id":"9.1.0-24e20dd3e2743954","identity_text":"Add git-external-diff script to src/tools (Bruce Momjian) This is used to generate context diffs from git.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/149","source_hash":"e331cdeb430dac8b8e953eaf651636e1868235c0a8d3a22aed8061dc65b72244","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"7afd04e80391c46b7f2fc78bae2690aae8b2ec4923f00b12e41b7ebff46fabe1","text":"向 src/tools 添加 git-external-diff 脚本（Bruce Momjian） 它用于从 git 生成上下文差异。","title":"向 src/tools 添加 git-external-diff 脚本","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b836a69b91feffe321d306ca14067a6f","html":"\u003cp\u003e改进对使用 \u003cspan\u003eClang\u003c/span\u003e 构建的支持（Peter Eisentraut）\u003c/p\u003e","id":"9.1.0-1eab2c518218aeae","identity_text":"Improve support for building with Clang (Peter Eisentraut)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":[],"source_entry_id":"9.1.0/changes/150","source_hash":"6b03b5f7908cd8ada4adabc221dfaa1ce7a45498c31c12179979874804ce020d","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14","statement_hash":"2875d2ee48722150fbdd201dd0becf5e2036ebdd62dfd479f22738d478937bec","text":"改进对使用 Clang 构建的支持（Peter Eisentraut）","title":"改进对使用 Clang 构建的支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"928f9df79560d96ff196439468afc2b3","html":"\u003cp\u003e新增用于检查权限的源代码钩子（Robert Haas、Stephen Frost）\u003c/p\u003e","id":"9.1.0-32530d727c2969f1","identity_text":"Add source code hooks to check permissions (Robert Haas, Stephen Frost)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码 / 服务器钩子","section_path":["源代码","服务器钩子"],"source_commits":[],"source_entry_id":"9.1.0/changes/151","source_hash":"5343e8425e16fc8f0ea49c7cf6be1602e1bedc1e42dc736f6d581cf00aadd3ba","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14.3","statement_hash":"cce626524fd8ef41d88b10e7716a84bf216da15ca7f66b7dd5c036cf157e21f4","text":"新增用于检查权限的源代码钩子（Robert Haas、Stephen Frost）","title":"新增用于检查权限的源代码钩子","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b73992aa0b550ecee458f36b69ce410f","html":"\u003cp\u003e新增供安全框架使用的对象创建后函数钩子（KaiGai Kohei）\u003c/p\u003e","id":"9.1.0-5564df46a95c48eb","identity_text":"Add post-object-creation function hooks for use by security frameworks (KaiGai Kohei)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码 / 服务器钩子","section_path":["源代码","服务器钩子"],"source_commits":[],"source_entry_id":"9.1.0/changes/152","source_hash":"4fa23d0b2ae712b4de786685f27f52a8d40806928532687c49e751032d5fb68f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14.3","statement_hash":"6f6ac2eeeaca82ec44450db87f00f949610d37ef1535dc6b829b703c64feeccb","text":"新增供安全框架使用的对象创建后函数钩子（KaiGai Kohei）","title":"新增供安全框架使用的对象创建后函数钩子","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f25032ba732a5bcb068de1762706f23e","html":"\u003cp\u003e新增客户端认证钩子（KaiGai Kohei）\u003c/p\u003e","id":"9.1.0-c3113b8224137e82","identity_text":"Add a client authentication hook (KaiGai Kohei)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"源代码 / 服务器钩子","section_path":["源代码","服务器钩子"],"source_commits":[],"source_entry_id":"9.1.0/changes/153","source_hash":"b4db43a7745a0396f0a550c36581c4731f1a8e396e9bafa122dbce99c52e12af","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.14.3","statement_hash":"ed526884a54a79d15fdd6681f140ea719709e81f2bdd38eeb0f749a8242586de","text":"新增客户端认证钩子（KaiGai Kohei）","title":"新增客户端认证钩子","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"4daa64fc121c85a99097a297b1fd0db1","html":"\u003cp\u003e修改 \u003ccode\u003econtrib\u003c/code\u003e 模块和过程语言，使其通过新的\u003ca href=\"/docs/9.1/extend-extensions.html\" title=\"35.15. 将相关对象打包成扩展\"\u003e扩展\u003c/a\u003e机制安装（Tom Lane、Dimitri Fontaine）\u003c/p\u003e","id":"9.1.0-e143a3e964d2fb95","identity_text":"Modify contrib modules and procedural languages to install via the new extension mechanism (Tom Lane, Dimitri Fontaine)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/154","source_hash":"3a6ef66826782639a5fca3aed416ade36c4582b7eb04c5b72dfa9439ec795706","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"4454423993a4aee92dd99836a3ea325356ba88dcc0f467e569bca054fed1f5d1","text":"修改 contrib 模块和过程语言，使其通过新的扩展机制安装（Tom Lane、Dimitri Fontaine）","title":"修改 contrib 模块和过程语言，使其通过新的扩展机制安装","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c988248ac035c8a8681e7abf9d2f6ad0","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/file-fdw.html\" title=\"F.14. file_fdw\"\u003e\u003ccode\u003econtrib/file_fdw\u003c/code\u003e\u003c/a\u003e 外部数据包装器（Shigeru Hanada）\u003c/p\u003e\n\u003cp\u003e使用这个外部数据包装器的外部表可以以非常类似于 \u003ccode\u003eCOPY\u003c/code\u003e 的方式读取平面文件。\u003c/p\u003e","id":"9.1.0-3a8d9e62806aff1f","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/155","source_hash":"b54f81c75792fd7888cabe718b4c0cbc4a6e87741a7fbc67bbe9224e8463a2fd","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"ac07b9a361885ca4a9a7a8a70253fcfe7ac5de5928f3e18592e0fefc06af88ef","text":"新增 contrib/file_fdw 外部数据包装器（Shigeru Hanada） 使用这个外部数据包装器的外部表可以以非常类似于 COPY 的方式读取平面文件。","title":"新增 contrib/file_fdw 外部数据包装器","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"726fb5f7c000b9010429d43bd40d1418","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/pgtrgm.html\" title=\"F.35. pg_trgm\"\u003e\u003ccode\u003econtrib/pg_trgm\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/btree-gist.html\" title=\"F.5. btree_gist\"\u003e\u003ccode\u003econtrib/btree_gist\u003c/code\u003e\u003c/a\u003e 新增最近邻搜索支持（Teodor Sigaev）\u003c/p\u003e","id":"9.1.0-f4bf4783ad1d8a78","identity_text":"Add nearest-neighbor search support to contrib/pg_trgm and contrib/btree_gist (Teodor Sigaev)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/156","source_hash":"bc13b7b47aebdd4dd91f12fdd364106f52d37a9a5671f1b443f5e6d0cf8575ee","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"ae2fba67a892d6a322775785bbbd8869c0eb120a097a5fda984ecd45e3a8c63f","text":"为 contrib/pg_trgm 和 contrib/btree_gist 新增最近邻搜索支持（Teodor Sigaev）","title":"为 contrib/pg_trgm 和 contrib/btree_gist 新增最近邻搜索支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"c3a425f1409da0fe6a3447dd4981d812","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/btree-gist.html\" title=\"F.5. btree_gist\"\u003e\u003ccode\u003econtrib/btree_gist\u003c/code\u003e\u003c/a\u003e 新增不相等搜索支持（Jeff Davis）\u003c/p\u003e","id":"9.1.0-da2a9e8db52aaf2e","identity_text":"Add contrib/btree_gist support for searching on not-equals (Jeff Davis)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/157","source_hash":"47865c58795211607ccd3c20d9c51e029a63b715b9d60292e7157cbb28daf45e","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"f350aa16f3d4d8df37dec2bb41aa4ce371b2c6a047f558866a7ccc2a57252c6a","text":"为 contrib/btree_gist 新增不相等搜索支持（Jeff Davis）","title":"为 contrib/btree_gist 新增不相等搜索支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"00592fedf4e904c9885e70048349077d","html":"\u003cp\u003e修复 \u003ca href=\"/docs/9.1/fuzzystrmatch.html\" title=\"F.15. fuzzystrmatch — 确定字符串的相似性和距离\"\u003e\u003ccode\u003econtrib/fuzzystrmatch\u003c/code\u003e\u003c/a\u003e 的 \u003ccode\u003elevenshtein()\u003c/code\u003e 函数，使其处理多字节字符（Alexander Korotkov）\u003c/p\u003e","id":"9.1.0-25429a59b242ee3a","identity_text":"Fix contrib/fuzzystrmatch's levenshtein() function to handle multibyte characters (Alexander Korotkov)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/158","source_hash":"662b5dc6888245a843fad624b7bf57b69f03358207e1fb566c5de66fa464c068","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"e3053864f258c5df2aa26550b04890005a440ec50df5e6123d5f312f3eabad05","text":"修复 contrib/fuzzystrmatch 的 levenshtein() 函数，使其处理多字节字符（Alexander Korotkov）","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 函数，使其处理多字节字符","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3ab10e50f1f125f98b3eb485ab8127ff","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/sslinfo.html\" title=\"F.40. sslinfo\"\u003e\u003ccode\u003econtrib/sslinfo\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003essl_cipher()\u003c/code\u003e 和 \u003ccode\u003essl_version()\u003c/code\u003e 函数（Robert Haas）\u003c/p\u003e","id":"9.1.0-5185dd1dd0604eba","identity_text":"Add ssl_cipher() and ssl_version() functions to contrib/sslinfo (Robert Haas)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/159","source_hash":"a795e97e24e7f8139b714fc43c6ca8be40344c58f4543da496f1cb13c9d3f204","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"74ea7aae0429042dce7e71cad0ed1b4fc1aa583f0ad7e10160def9726b05954a","text":"为 contrib/sslinfo 新增 ssl_cipher() 和 ssl_version() 函数（Robert Haas）","title":"为 contrib/sslinfo 新增 ssl_cipher() 和 ssl_version() 函数","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"b0337827ce458c7f56ec95dccbef8370","html":"\u003cp\u003e修复 \u003ca href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"\u003e\u003ccode\u003econtrib/intarray\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/9.1/hstore.html\" title=\"F.16. hstore\"\u003e\u003ccode\u003econtrib/hstore\u003c/code\u003e\u003c/a\u003e，使其对索引的空数组给出一致结果（Tom Lane）\u003c/p\u003e\n\u003cp\u003e此前使用索引的空数组查询可能返回与使用顺序扫描不同的结果。\u003c/p\u003e","id":"9.1.0-c50c7a146e345436","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/160","source_hash":"8ae1d6b57e73cdf4f74287b47fce19757e8510c93f9e891da7ee78c14aa951e4","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"4f4c5637f0c89f7be943c0ff4f20405101bb948c374212d64d7d5d94fd428769","text":"修复 contrib/intarray 和 contrib/hstore，使其对索引的空数组给出一致结果（Tom Lane） 此前使用索引的空数组查询可能返回与使用顺序扫描不同的结果。","title":"修复 contrib/intarray 和 contrib/hstore，使其对索引的空数组给出一致结果","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"3fc0895988398bb38d6b3ae25a4e6ebc","html":"\u003cp\u003e让 \u003ca href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"\u003e\u003ccode\u003econtrib/intarray\u003c/code\u003e\u003c/a\u003e 在多维数组上正确工作（Tom Lane）\u003c/p\u003e","id":"9.1.0-d8122d2a218f31a1","identity_text":"Allow contrib/intarray to work properly on multidimensional arrays (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/161","source_hash":"4847e6e87ec1a1429ab9bf53f643579aed477b1c681017ccfe468779be62d6ba","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"fd43ec46dc6d8783d52cd447efed2d38f5a0c2c8d0d092d2c75a3122d5fefc2d","text":"让 contrib/intarray 在多维数组上正确工作（Tom Lane）","title":"让 contrib/intarray 在多维数组上正确工作","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ae7f10f6bf08fdebfd6617e1b397e0c4","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"\u003e\u003ccode\u003econtrib/intarray\u003c/code\u003e\u003c/a\u003e 中，避免在实际不存在空值的场合报错抱怨存在空值（Tom Lane）\u003c/p\u003e","id":"9.1.0-5c93b075131cd06a","identity_text":"In contrib/intarray, avoid errors complaining about the presence of nulls in cases where no nulls are actually present (Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/162","source_hash":"3869729aee8d508b1bedeb797a5943f988c85c431078dff335ef7b874beefeaa","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"09a397653e95c4198521c888296ef1a1d4c3ffdee22d060746238fb1109ae6c9","text":"在 contrib/intarray 中，避免在实际不存在空值的场合报错抱怨存在空值（Tom Lane）","title":"在 contrib/intarray 中，避免在实际不存在空值的场合报错抱怨存在空值","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"357dccba5128864c07f26567151d120c","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/intarray.html\" title=\"F.18. intarray\"\u003e\u003ccode\u003econtrib/intarray\u003c/code\u003e\u003c/a\u003e 中，修复包含操作符对空数组的行为（Tom Lane）\u003c/p\u003e\n\u003cp\u003e空数组现在被正确地视为包含于任何其他数组。\u003c/p\u003e","id":"9.1.0-70d0d4aeb42c7656","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/163","source_hash":"cff4240144333896994d5d5f3d6e9a6503380d0bff34e9149971c623b200cadf","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"8dbab05ab0f39ad81b376a4a5aae7f9e9bf2a8ab603f237a950351b7b96a2f74","text":"在 contrib/intarray 中，修复包含操作符对空数组的行为（Tom Lane） 空数组现在被正确地视为包含于任何其他数组。","title":"在 contrib/intarray 中，修复包含操作符对空数组的行为","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"e16f8acb2345181c5329bee0420a4da5","html":"\u003cp\u003e移除 \u003ca href=\"/docs/9.1/xml2.html\" title=\"F.47. xml2\"\u003e\u003ccode\u003econtrib/xml2\u003c/code\u003e\u003c/a\u003e 对 \u003ccode\u003exslt_process()\u003c/code\u003e 可处理的 \u003cem\u003e\u003ccode\u003eparameter\u003c/code\u003e\u003c/em\u003e=\u003cem\u003e\u003ccode\u003evalue\u003c/code\u003e\u003c/em\u003e 对数量的任意限制（Pavel Stehule）\u003c/p\u003e\n\u003cp\u003e此前的限制是 10。\u003c/p\u003e","id":"9.1.0-9afefcb56768f44b","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/164","source_hash":"efcd197e40888a60330cbc40fe7766c464c3889e9d9ed9dbbb7a4e3792d3b811","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"d0dfef7d18ad09d0a0450cc2d58cb38ba8b6d9c643eb16b809507559f1b435d9","text":"移除 contrib/xml2 对 xslt_process() 可处理的 parameter=value 对数量的任意限制（Pavel Stehule） 此前的限制是 10。","title":"移除 contrib/xml2 对 xslt_process() 可处理的 parameter=value 对数量的任意限制","variants":[],"version":"9.1.0"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"22db832f2442ff64b095d494c6740619","html":"\u003cp\u003e在 \u003ca href=\"/docs/9.1/pageinspect.html\" title=\"F.23. pageinspect\"\u003e\u003ccode\u003econtrib/pageinspect\u003c/code\u003e\u003c/a\u003e 中，修复 heap_page_item 以 32 位值返回 infomask（Alvaro Herrera）\u003c/p\u003e\n\u003cp\u003e这避免了返回负值（那令人困惑）。底层值是 16 位无符号整数。\u003c/p\u003e","id":"9.1.0-d8e0d9f2d7b757fc","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":[],"source_entry_id":"9.1.0/changes/165","source_hash":"2a5c0f674797da8aa2f5ac17a640d5b2d1ba42662ae1f89dfc2c86723580aad3","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15","statement_hash":"b847590d0c39bfe195061218349fe61298ee837194049b2763bcd7a461956655","text":"在 contrib/pageinspect 中，修复 heap_page_item 以 32 位值返回 infomask（Alvaro Herrera） 这避免了返回负值（那令人困惑）。底层值是 16 位无符号整数。","title":"在 contrib/pageinspect 中，修复 heap_page_item 以 32 位值返回 infomask","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a45498be26af5d75218bdd0e39d44da9","html":"\u003cp\u003e新增 \u003ca href=\"/docs/9.1/sepgsql.html\" title=\"F.38. sepgsql — 基于 SELinux 标签的强制访问控制（MAC）安全模块\"\u003e\u003ccode\u003econtrib/sepgsql\u003c/code\u003e\u003c/a\u003e，使权限检查与 \u003cacronym\u003eSELinux\u003c/acronym\u003e 接口（KaiGai Kohei）\u003c/p\u003e\n\u003cp\u003e它使用新的 \u003ca href=\"/docs/9.1/sql-security-label.html\" title=\"SECURITY LABEL\"\u003e\u003ccode\u003eSECURITY LABEL\u003c/code\u003e\u003c/a\u003e 机制。\u003c/p\u003e","id":"9.1.0-8818864891e150ad","identity_text":"Add contrib/sepgsql to interface permission checks with SELinux (KaiGai Kohei) This uses the new SECURITY LABEL facility.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 安全","section_path":["附加模块","安全"],"source_commits":[],"source_entry_id":"9.1.0/changes/166","source_hash":"f3d3060ffef43892c84ba9c4ac9d5e6d33135ba71da46134c2fb900cb4c4f765","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.3","statement_hash":"33096d9cf68db602397635153e2416d3c0be3b17c0f96edcff16201e7382181d","text":"新增 contrib/sepgsql，使权限检查与 SELinux 接口（KaiGai Kohei） 它使用新的 SECURITY LABEL 机制。","title":"新增 contrib/sepgsql，使权限检查与 SELinux 接口","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"54e2f6acf565cd10053df8c52987d77c","html":"\u003cp\u003e新增 contrib 模块 \u003ca href=\"/docs/9.1/auth-delay.html\" title=\"F.2. auth_delay\"\u003e\u003ccode\u003eauth_delay\u003c/code\u003e\u003c/a\u003e（KaiGai Kohei）\u003c/p\u003e\n\u003cp\u003e它使服务器在返回认证失败前暂停；其设计目的是加大暴力破解口令攻击的难度。\u003c/p\u003e","id":"9.1.0-e4ecef2ed44e8116","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 安全","section_path":["附加模块","安全"],"source_commits":[],"source_entry_id":"9.1.0/changes/167","source_hash":"e913ebf6b1ac3972e90de0185e3235b513f36d3211d5f892ebcbdb375b060229","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.3","statement_hash":"0cffcd566352e064fc9af52faef96b49eca6a3a5d7b6ff3dc499fe168bea250a","text":"新增 contrib 模块 auth_delay（KaiGai Kohei） 它使服务器在返回认证失败前暂停；其设计目的是加大暴力破解口令攻击的难度。","title":"新增 contrib 模块 auth_delay","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"97ef46d5166ea1d5b8d49b087ef32ad6","html":"\u003cp\u003e新增 \u003ccode\u003edummy_seclabel\u003c/code\u003e contrib 模块（KaiGai Kohei）\u003c/p\u003e\n\u003cp\u003e它用于权限回归测试。\u003c/p\u003e","id":"9.1.0-3675901773e4eb3e","identity_text":"Add dummy_seclabel contrib module (KaiGai Kohei) This is used for permission regression testing.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 安全","section_path":["附加模块","安全"],"source_commits":[],"source_entry_id":"9.1.0/changes/168","source_hash":"542c45437f9384a8401da91619e90b61552c8de86f64bddaa6fb5d34fe276180","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.3","statement_hash":"95c0cf85857cb7d317b950fb4fbfa27de5643aa3d1ee9108c12adcea0cd1cd4f","text":"新增 dummy_seclabel contrib 模块（KaiGai Kohei） 它用于权限回归测试。","title":"新增 dummy_seclabel contrib 模块","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"9eb2f533b91464cd7948102f61dffb97","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/pgtrgm.html\" title=\"F.35. pg_trgm\"\u003e\u003ccode\u003econtrib/pg_trgm\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003eLIKE\u003c/code\u003e 和 \u003ccode\u003eILIKE\u003c/code\u003e 索引搜索支持（Alexander Korotkov）\u003c/p\u003e","id":"9.1.0-c0e0d5554c5a09ad","identity_text":"Add support for LIKE and ILIKE index searches to contrib/pg_trgm (Alexander Korotkov)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 性能","section_path":["附加模块","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/169","source_hash":"1df7b2a2969909b4da8abc7a4951a6020c0a830ce3a9f4e3f537be7703b03e02","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.4","statement_hash":"d96aa6dd6eef71f76a265fc7a8cdfc8c1645b4434147c2d3c923dceaa9cc4ece","text":"为 contrib/pg_trgm 新增 LIKE 和 ILIKE 索引搜索支持（Alexander Korotkov）","title":"为 contrib/pg_trgm 新增 LIKE 和 ILIKE 索引搜索支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"1a7200edcb58d2cdee33d98ac7c3bfe2","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/fuzzystrmatch.html\" title=\"F.15. fuzzystrmatch — 确定字符串的相似性和距离\"\u003e\u003ccode\u003econtrib/fuzzystrmatch\u003c/code\u003e\u003c/a\u003e 新增针对小距离优化的函数 \u003ccode\u003elevenshtein_less_equal()\u003c/code\u003e（Alexander Korotkov）\u003c/p\u003e","id":"9.1.0-f6808617b41ffad4","identity_text":"Add levenshtein_less_equal() function to contrib/fuzzystrmatch, which is optimized for small distances (Alexander Korotkov)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 性能","section_path":["附加模块","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/170","source_hash":"07c20ad1b77bc563021959138c0bf36e0c4fa8323980504492af411b321a09a5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.4","statement_hash":"2c95f7c3e3573cc1376da34934c1e96c931b9ec7ae870f33184ace3a5ed40591","text":"为 contrib/fuzzystrmatch 新增针对小距离优化的函数 levenshtein_less_equal()（Alexander Korotkov）","title":"为 contrib/fuzzystrmatch 新增针对小距离优化的函数 levenshtein_less_equal()","variants":[],"version":"9.1.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2e64851202d6f34eb25e2f723f22d76f","html":"\u003cp\u003e改进 \u003ca href=\"/docs/9.1/seg.html\" title=\"F.37. seg — 用于线段或浮点区间的数据类型\"\u003e\u003ccode\u003econtrib/seg\u003c/code\u003e\u003c/a\u003e 列上索引查找的性能（Alexander Korotkov）\u003c/p\u003e","id":"9.1.0-1b3acd16207edcbd","identity_text":"Improve performance of index lookups on contrib/seg columns (Alexander Korotkov)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 性能","section_path":["附加模块","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/171","source_hash":"7601fb7728e72cfeb25edb189ae90bffb6adbea26653ec62bc492d5b57c0dbb8","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.4","statement_hash":"90e35b415cfebecc249a2f3809f77df6bff3e0bf54bb5d17ddf7d205b4684615","text":"改进 contrib/seg 列上索引查找的性能（Alexander Korotkov）","title":"改进 contrib/seg 列上索引查找的性能","variants":[],"version":"9.1.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"723a020ff3519621f4479557476d513e","html":"\u003cp\u003e改进\u003ca href=\"/docs/9.1/pgupgrade.html\" title=\"F.36. pg_upgrade\"\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/a\u003e在多关系数据库下的性能（Bruce Momjian）\u003c/p\u003e","id":"9.1.0-60def48429f4722a","identity_text":"Improve performance of pg_upgrade for databases with many relations (Bruce Momjian)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 性能","section_path":["附加模块","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/172","source_hash":"253000f2594d24fec329fa76705021e1fc410266c3917963bb0ad74734b14207","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.4","statement_hash":"5e07bbae836f992c81285c61b43b71a5f02f59c1f07d1019e8e3172dc64a7bcc","text":"改进pg_upgrade在多关系数据库下的性能（Bruce Momjian）","title":"改进pg_upgrade在多关系数据库下的性能","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"4b18e0276a03e49d7cf142b931da7f8a","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/pgbench.html\" title=\"F.26. pgbench\"\u003e\u003ccode\u003econtrib/pgbench\u003c/code\u003e\u003c/a\u003e 新增报告逐语句延迟的标志（Florian Pflug）\u003c/p\u003e","id":"9.1.0-43e3e89df1f560c6","identity_text":"Add flag to contrib/pgbench to report per-statement latencies (Florian Pflug)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / 性能","section_path":["附加模块","性能"],"source_commits":[],"source_entry_id":"9.1.0/changes/173","source_hash":"5cea30e8ed9c8498e407a40ac255738f95e5e5336f681e5e7812789c3aa4c78c","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.4","statement_hash":"24361f325cf51c224ccf21cf8da3b14cce6b3e76611ed44663d5891acf9513da","text":"为 contrib/pgbench 新增报告逐语句延迟的标志（Florian Pflug）","title":"为 contrib/pgbench 新增报告逐语句延迟的标志","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a4be0d62359cd399fe6953f5fdce923d","html":"\u003cp\u003e把 \u003ccode\u003esrc/tools/test_fsync\u003c/code\u003e 移到 \u003ca href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"\u003e\u003ccode\u003econtrib/pg_test_fsync\u003c/code\u003e\u003c/a\u003e（Bruce Momjian、Tom Lane）\u003c/p\u003e","id":"9.1.0-d4a06e4bf3d337d2","identity_text":"Move src/tools/test_fsync to contrib/pg_test_fsync (Bruce Momjian, Tom Lane)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / fsync 测试","section_path":["附加模块","fsync 测试"],"source_commits":[],"source_entry_id":"9.1.0/changes/174","source_hash":"3dc63ab71ac77d708e7830c5cfa32cffb31f10f3aae54aa5af97e594390d99e5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.5","statement_hash":"c76b7d34dab8492f9404f48260125c8693d1f355c8264a4430ebcbb0033bfd3b","text":"把 src/tools/test_fsync 移到 contrib/pg_test_fsync（Bruce Momjian、Tom Lane）","title":"把 src/tools/test_fsync 移到 contrib/pg_test_fsync","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"294f109e503feefd69faf23788785d82","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"\u003e\u003ccode\u003econtrib/pg_test_fsync\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003eO_DIRECT\u003c/code\u003e 支持（Bruce Momjian）\u003c/p\u003e\n\u003cp\u003e这与 \u003ca href=\"/docs/9.1/runtime-config-wal.html#GUC-WAL-SYNC-METHOD\"\u003e\u003ccode\u003ewal_sync_method\u003c/code\u003e\u003c/a\u003e 对 \u003ccode\u003eO_DIRECT\u003c/code\u003e 的使用相匹配。\u003c/p\u003e","id":"9.1.0-ed517e9005f0240d","identity_text":"Add O_DIRECT support to contrib/pg_test_fsync (Bruce Momjian) This matches the use of O_DIRECT by wal_sync_method.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / fsync 测试","section_path":["附加模块","fsync 测试"],"source_commits":[],"source_entry_id":"9.1.0/changes/175","source_hash":"63bc666e4cc6cef8ae298166431b7badb9342be3e78cfa9f3762ad8c8c4f0bfb","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.5","statement_hash":"38fddab47b80263a7118264822b0d1f9eccae3ba9e8ab2f2b9bae238493295b1","text":"为 contrib/pg_test_fsync 新增 O_DIRECT 支持（Bruce Momjian） 这与 wal_sync_method 对 O_DIRECT 的使用相匹配。","title":"为 contrib/pg_test_fsync 新增 O_DIRECT 支持","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"2d6e6a08abb64b129fca9e75e0b3e283","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/pgtestfsync.html\" title=\"F.34. pg_test_fsync\"\u003e\u003ccode\u003econtrib/pg_test_fsync\u003c/code\u003e\u003c/a\u003e 新增新测试（Bruce Momjian）\u003c/p\u003e","id":"9.1.0-5c9ddd06466f178e","identity_text":"Add new tests to contrib/pg_test_fsync (Bruce Momjian)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"附加模块 / fsync 测试","section_path":["附加模块","fsync 测试"],"source_commits":[],"source_entry_id":"9.1.0/changes/176","source_hash":"6368959108c820353db34b1c010242276427b73149a969d07c799b4cb188411a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.15.5","statement_hash":"876e40eef95a97efddf26c5fb711b739cdb05523cf0f1d20455cd6b71a6cc65b","text":"为 contrib/pg_test_fsync 新增新测试（Bruce Momjian）","title":"为 contrib/pg_test_fsync 新增新测试","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"16ce551734664c729c2feefe31d20205","html":"\u003cp\u003e广泛的\u003ca href=\"/docs/9.1/ecpg.html\" title=\"第 33 章 ECPG - C 中的嵌入式 SQL\"\u003e\u003cspan\u003eECPG\u003c/span\u003e\u003c/a\u003e文档改进（Satoshi Nagayasu）\u003c/p\u003e","id":"9.1.0-9194a81982a84a7e","identity_text":"Extensive ECPG documentation improvements (Satoshi Nagayasu)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/177","source_hash":"9c0bcff9221aa1037a435ce056801b9539d2e465bbd6f8b4ef31572bba52a29b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"1ae30df10362bfd7339ad94cd5004e576255ea0d200746720c434ba9db2be128","text":"广泛的ECPG文档改进（Satoshi Nagayasu）","title":"广泛的ECPG文档改进","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"a814417e94aa0f08e0b7905e9781e4a3","html":"\u003cp\u003e广泛的校对和文档改进（Thom Brown、Josh Kupershmidt、Susanne Ebrecht）\u003c/p\u003e","id":"9.1.0-2ac16eab6a1b6186","identity_text":"Extensive proofreading and documentation improvements (Thom Brown, Josh Kupershmidt, Susanne Ebrecht)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/178","source_hash":"c6f207b793290c1e8b0b23c7c870b1c04418b1ff841f77be0a2531d796ff5137","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"4cf06260eb48ded764c172c31a3e8235e717c14d14923a3ff20bda5420f3b54d","text":"广泛的校对和文档改进（Thom Brown、Josh Kupershmidt、Susanne Ebrecht）","title":"广泛的校对和文档改进","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"908bdbfedb4c022a191f27c71d8f6b60","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/runtime-config-error-handling.html#GUC-EXIT-ON-ERROR\"\u003e\u003ccode\u003eexit_on_error\u003c/code\u003e\u003c/a\u003e 添加文档（Robert Haas）\u003c/p\u003e\n\u003cp\u003e该参数使会话在任何错误时退出。\u003c/p\u003e","id":"9.1.0-e79eba8f52c15eb5","identity_text":"Add documentation for exit_on_error (Robert Haas) This parameter causes sessions to exit on any error.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/179","source_hash":"539b54f7832cac997bc077d01695246973c0ae3a1615f2b603d12e4463aacb0a","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"bd4164dcc71a35fab37aebdb11967acf818c967aaab8d8f047ec44d8d0a2266a","text":"为 exit_on_error 添加文档（Robert Haas） 该参数使会话在任何错误时退出。","title":"为 exit_on_error 添加文档","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"ae096b4778d3cddbf18c080d0bd938f5","html":"\u003cp\u003e为 \u003ca href=\"/docs/9.1/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"表 9.51. 系统目录信息函数\"\u003e\u003ccode\u003epg_options_to_table()\u003c/code\u003e\u003c/a\u003e 添加文档（Josh Berkus）\u003c/p\u003e\n\u003cp\u003e该函数以可读的形式显示表存储选项。\u003c/p\u003e","id":"9.1.0-eaabae809cb40d8f","identity_text":"Add documentation for pg_options_to_table() (Josh Berkus) This function shows table storage options in a readable form.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/180","source_hash":"b928f7055e0fcc5c0f84a2d091282d006105b24705039a0c69e77b946117c1b5","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"d4c3bcb638bae2c1f6c6ece2142be1651960fa46cb36b8fe4db110179a84dc5e","text":"为 pg_options_to_table() 添加文档（Josh Berkus） 该函数以可读的形式显示表存储选项。","title":"为 pg_options_to_table() 添加文档","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"4b74701eee4ef0314f6efa638500fa55","html":"\u003cp\u003e记录可以使用 \u003ca href=\"/docs/9.1/sql-expressions.html#FIELD-SELECTION\" title=\"4.2.4. 字段选择\"\u003e\u003ccode\u003e(compositeval).*\u003c/code\u003e\u003c/a\u003e 语法访问所有组合类型字段（Peter Eisentraut）\u003c/p\u003e","id":"9.1.0-fe300449c9255ac1","identity_text":"Document that it is possible to access all composite type fields using (compositeval).* syntax (Peter Eisentraut)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/181","source_hash":"7229661185246e885f9d45e9179d1c382f0b7226e59f12ab6e38d0b46b9c014f","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"aec0038d98d34478981e90f1c307344527bdb3dbc3e1840561ca76eadb04c1a1","text":"记录可以使用 (compositeval).* 语法访问所有组合类型字段（Peter Eisentraut）","title":"记录可以使用 (compositeval).* 语法访问所有组合类型字段","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"845a7164db65c22b109e477f104fa0b3","html":"\u003cp\u003e记录 \u003ca href=\"/docs/9.1/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"表 9.7. 其他字符串函数\"\u003e\u003ccode\u003etranslate()\u003c/code\u003e\u003c/a\u003e 会删除 \u003ccode\u003efrom\u003c/code\u003e 中没有对应 \u003ccode\u003eto\u003c/code\u003e 字符的字符（Josh Kupershmidt）\u003c/p\u003e","id":"9.1.0-93426c2502745a3e","identity_text":"Document that translate() removes characters in from that don't have a corresponding to character (Josh Kupershmidt)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/182","source_hash":"57c37559c7e4d33144b1636bebae9179ca8ebb6caf0a97924b6234cd2f0471e0","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"2a1c5cecdfc3a12a16ccaa4fe821439b97c003ca782435dd992f3dfeb500fad0","text":"记录 translate() 会删除 from 中没有对应 to 字符的字符（Josh Kupershmidt）","title":"记录 translate() 会删除 from 中没有对应 to 字符的字符","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"9b65966eb48d3937804405a8e9eccdc1","html":"\u003cp\u003e合并 \u003ccode\u003eCREATE CONSTRAINT TRIGGER\u003c/code\u003e 和 \u003ca href=\"/docs/9.1/sql-createtrigger.html\" title=\"CREATE TRIGGER\"\u003e\u003ccode\u003eCREATE TRIGGER\u003c/code\u003e\u003c/a\u003e 的文档（Alvaro Herrera）\u003c/p\u003e","id":"9.1.0-714885e5e21476ed","identity_text":"Merge documentation for CREATE CONSTRAINT TRIGGER and CREATE TRIGGER (Alvaro Herrera)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/183","source_hash":"c1fe16c0dcace7a20dcaff1a5515aa1033f277f82c8fec1aa390a0b57396d530","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"a85c50a550052585e0e6d84e9ab7fb8901af8a502b8e50b015a085352e9f32c8","text":"合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档（Alvaro Herrera）","title":"合并 CREATE CONSTRAINT TRIGGER 和 CREATE TRIGGER 的文档","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f16388cda195e93435cfd2a5ffdbd276","html":"\u003cp\u003e集中化\u003ca href=\"/docs/9.1/ddl-priv.html\" title=\"5.6. 权限\"\u003e权限\u003c/a\u003e和\u003ca href=\"/docs/9.1/upgrading.html\" title=\"17.6. 升级 PostgreSQL 集簇\"\u003e升级\u003c/a\u003e文档（Bruce Momjian）\u003c/p\u003e","id":"9.1.0-0d2c5d796f15f12a","identity_text":"Centralize permission and upgrade documentation (Bruce Momjian)","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/184","source_hash":"3792f4bcae9ce684ab831cc2411378f6da52f8938bd2c5aa9025367db31ab8fc","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"951e3b24e7276d070d8cfe55628dcbb3310509da8e32e6b4b81b53f339ce6da4","text":"集中化权限和升级文档（Bruce Momjian）","title":"集中化权限和升级文档","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"f4be28c5bfde0cfa12139ed564f44e9f","html":"\u003cp\u003e为 Solaris 10 添加\u003ca href=\"/docs/9.1/kernel-resources.html#SYSVIPC-PARAMETERS\" title=\"表 17.1. System V IPC参数\"\u003e内核调优文档\u003c/a\u003e（Josh Berkus）\u003c/p\u003e\n\u003cp\u003e此前只记录了 Solaris 9 的内核调优。\u003c/p\u003e","id":"9.1.0-f067f4c4764af751","identity_text":"Add kernel tuning documentation for Solaris 10 (Josh Berkus) Previously only Solaris 9 kernel tuning was documented.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/185","source_hash":"ebb5edcac79590376a717782ec747b3a75c37f404235e7f12d64f86a745c5d6b","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"d039fc2eb3c3aa0de8b5231bdf03a0817c2bc8f2963294f1c8be1a01645c3942","text":"为 Solaris 10 添加内核调优文档（Josh Berkus） 此前只记录了 Solaris 9 的内核调优。","title":"为 Solaris 10 添加内核调优文档","variants":[],"version":"9.1.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":[],"commit_groups":[],"commits":[],"cves":[],"db_id":"090df20881d3760c0f891a3043aa6389","html":"\u003cp\u003e在 \u003ccode\u003eHISTORY\u003c/code\u003e 文件中一致地处理非 ASCII 字符（Peter Eisentraut）\u003c/p\u003e\n\u003cp\u003e虽然 \u003ccode\u003eHISTORY\u003c/code\u003e 文件是英文的，但我们必须处理贡献者姓名中的非 ASCII 字母。这些现在被音译，以便在不假设字符集的情况下也相当易读。\u003c/p\u003e","id":"9.1.0-ca3bd4401feb764c","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.","part":"changes","patch_ids":[],"related_changes":[],"relations":[],"section":"文档","section_path":["文档"],"source_commits":[],"source_entry_id":"9.1.0/changes/186","source_hash":"825e3d33374947870ceccee72c8da01ef8ea4c2616aa26036ed8ea82fc5d8462","source_url":"/docs/release/9.1.0/#id-1.11.6.29.5.16","statement_hash":"35267e5e1da6883a5d165aa71acf2aef01c29f5e00b886e93bc2f369c1d953c1","text":"在 HISTORY 文件中一致地处理非 ASCII 字符（Peter Eisentraut） 虽然 HISTORY 文件是英文的，但我们必须处理贡献者姓名中的非 ASCII 字母。这些现在被音译，以便在不假设字符集的情况下也相当易读。","title":"在 HISTORY 文件中一致地处理非 ASCII 字符","variants":[],"version":"9.1.0"}],"entry_count":203,"eol":"2016-10-27","eol_date":"2016-10-27","label":"9.1","major":"9.1","manual":"9.1","manual_build":"9.1.24","manual_url":"/docs/9.1/release-9-1.html","migration_html":"\u003cp\u003e对于希望从任何早期版本迁移数据的用户，需要使用 \u003cspan\u003epg_dump\u003c/span\u003e 进行转储/恢复，或者使用 \u003cspan\u003epg_upgrade\u003c/span\u003e。\u003c/p\u003e\n\u003cp\u003e版本 9.1 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处：\u003c/p\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e","minor":0,"placeholder":false,"source_as_of":"","source_url":"/docs/release/9.1.0/","status":"stable","status_label":"Historical","support_days":-3636,"supported":false,"version":"9.1.0"}],"mode":"release","release_count":1,"remaining_cves":[],"security_as_of":"2026-09-26","security_regressions":[],"source_as_of":"2026-09-26","stats":[{"count":203,"key":"all","label":"All changes"},{"count":174,"key":"feature","label":"Features"},{"count":9,"key":"bugfix","label":"Bug fixes"},{"count":0,"key":"security","label":"Security"},{"count":3,"key":"performance","label":"Performance"},{"count":17,"key":"compatibility","label":"Compatibility"},{"count":0,"key":"improvement","label":"Improvements"}],"to_release":{"age_days":5508,"build":"9.1.0","changes_count":186,"compatibility_count":17,"content_hash":"249aa96626415dd32a4be984132701732f764b429aba0c735a8d8535646169a2","date":"2011-09-12","date_text":"2011-09-12","doc_git":"","doc_loaded_at":"2026-09-26T02:56:47.783417","entry_count":203,"eol":"2016-10-27","eol_date":"2016-10-27","label":"9.1","major":"9.1","manual":"9.1","manual_build":"9.1.24","manual_url":"/docs/9.1/release-9-1.html","migration_html":"\u003cp\u003e对于希望从任何早期版本迁移数据的用户，需要使用 \u003cspan\u003epg_dump\u003c/span\u003e 进行转储/恢复，或者使用 \u003cspan\u003epg_upgrade\u003c/span\u003e。\u003c/p\u003e\n\u003cp\u003e版本 9.1 包含许多可能影响与以前版本兼容性的变更。请注意以下不兼容之处：\u003c/p\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003c/div\u003e\n\u003c/div\u003e","minor":0,"placeholder":false,"source_as_of":"","source_url":"/docs/release/9.1.0/","status":"stable","status_label":"Historical","support_days":-3636,"supported":false,"version":"9.1.0"},"total":203,"warnings":[]}
