{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2010-09-20", "build": "9.0.0", "major": "9.0", "minor": 0, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.0", "eol_date": "2015-10-08", "date_text": "2010-09-20", "supported": false, "manual_url": "/docs/9.0/release-9-0.html", "source_url": "/docs/release/9.0.0/", "entry_count": 237, "placeholder": false, "content_hash": "b3a13a64cf6b309e68c009020650510a9a5f94ef0738462cb2eaab24b1b08b0b", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 217, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于希望从任何早期版本迁移数据的用户，需要使用 <span>pg_dump</span> 进行转储/恢复，或者使用 <span>pg_upgrade</span>。</p>\n<p>版本 9.0 包含一些为支持新特性和代码质量改进而有选择地破坏向后兼容性的变更。特别是，大量使用 PL/pgSQL、时间点恢复（PITR）或温备的用户应测试其应用，因为这些领域有轻微的用户可见变化。请注意以下不兼容之处：</p>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>", "compatibility_count": 20, "label": "9.0", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 5854, "support_days": -4010}, "groups": [{"date": "2010-09-20", "build": "9.0.0", "major": "9.0", "minor": 0, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.0", "eol_date": "2015-10-08", "date_text": "2010-09-20", "supported": false, "manual_url": "/docs/9.0/release-9-0.html", "source_url": "/docs/release/9.0.0/", "entry_count": 237, "placeholder": false, "content_hash": "b3a13a64cf6b309e68c009020650510a9a5f94ef0738462cb2eaab24b1b08b0b", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 217, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于希望从任何早期版本迁移数据的用户，需要使用 <span>pg_dump</span> 进行转储/恢复，或者使用 <span>pg_upgrade</span>。</p>\n<p>版本 9.0 包含一些为支持新特性和代码质量改进而有选择地破坏向后兼容性的变更。特别是，大量使用 PL/pgSQL、时间点恢复（PITR）或温备的用户应测试其应用，因为这些领域有轻微的用户可见变化。请注意以下不兼容之处：</p>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>\n<div>\n<div>\n</div>\n</div>", "compatibility_count": 20, "label": "9.0", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 5854, "support_days": -4010, "entries": [{"id": "9.0.0-688b83d37f6ce3fd", "cves": [], "html": "<p>移除服务器参数 <code>add_missing_from</code>（多年来默认关闭）（Tom Lane）</p>", "text": "移除服务器参数 add_missing_from（多年来默认关闭）（Tom Lane）", "title": "移除服务器参数 add_missing_from（多年来默认关闭）", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.4", "source_hash": "3b4d98910ad98ad15b9ce41be32119207de1cee34535f4565570a754a02c8791", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "Remove server parameter add_missing_from, which was defaulted to off for many years (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/001", "db_id": "82e5029e64aabfb75f965eab4642bdbd", "patch_ids": [], "statement_hash": "894bf27520ee2224943f289173cb4fb8b84b3ae3c7ef770aef86b1d7bcc0631d", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-aa8589ca03c5da59", "cves": [], "html": "<p>移除服务器参数 <code>regex_flavor</code>（多年来默认为 <a href=\"/docs/9.0/functions-matching.html#POSIX-SYNTAX-DETAILS\" title=\"9.7.3.1. 正则表达式细节\"><code>advanced</code></a>）（Tom Lane）</p>", "text": "移除服务器参数 regex_flavor（多年来默认为 advanced）（Tom Lane）", "title": "移除服务器参数 regex_flavor（多年来默认为 advanced）", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.4", "source_hash": "1ae4767058cee282413b2be3cec7689217d35076dfa7d8df6ca97874eeb924a4", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "Remove server parameter regex_flavor, which was defaulted to advanced for many years (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/002", "db_id": "aa3a0e49cb93ecae7f9fd3a218ef90c1", "patch_ids": [], "statement_hash": "2bb4be094f1ac419b3fea84100499108425b464a1bce8d2f193b049f1d40dee9", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3d74cab322cea275", "cves": [], "html": "<p><a href=\"/docs/9.0/runtime-config-wal.html#GUC-ARCHIVE-MODE\"><code>archive_mode</code></a> 现在只影响 <a href=\"/docs/9.0/runtime-config-wal.html#GUC-ARCHIVE-COMMAND\"><code>archive_command</code></a>；新设置 <a href=\"/docs/9.0/runtime-config-wal.html#GUC-WAL-LEVEL\"><code>wal_level</code></a> 影响预写式日志的内容（Heikki Linnakangas）</p>", "text": "archive_mode 现在只影响 archive_command；新设置 wal_level 影响预写式日志的内容（Heikki Linnakangas）", "title": "archive_mode 现在只影响 archive_command；新设置 wal_level 影响预写式日志的内容", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.4", "source_hash": "d58b4029cd34e5db16ab704e54cae446b5a58fa3f95e129fe2790f243e8781c8", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "archive_mode now only affects archive_command; a new setting, wal_level, affects the contents of the write-ahead log (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/003", "db_id": "ef50fa87ca60014f843ccc230f6d781b", "patch_ids": [], "statement_hash": "5b87d6108861d2dc3f42cda76c147f653fe49229d97ccd165934bb1d2130cedf", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7993c5b28eb87f25", "cves": [], "html": "<p><a href=\"/docs/9.0/runtime-config-logging.html#GUC-LOG-TEMP-FILES\"><code>log_temp_files</code></a> 现在默认文件大小单位为千字节（Robert Haas）</p>", "text": "log_temp_files 现在默认文件大小单位为千字节（Robert Haas）", "title": "log_temp_files 现在默认文件大小单位为千字节", "commits": [], "section": "服务器设置", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.4", "source_hash": "ac9cc19724e08ee68a0dba562b5c3583169faf7dd36c7af8c0dd3ad46959cf4d", "section_path": ["服务器设置"], "commit_groups": [], "identity_text": "log_temp_files now uses default file size units of kilobytes (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/004", "db_id": "005f0aaaef1749be7770233c45da0261", "patch_ids": [], "statement_hash": "b9d254e074dbe100e031d78ca065d1ff156b04633d2340e04fcaebbdcfb455bc", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8c6ade9e53993743", "cves": [], "html": "<p>查询<a href=\"/docs/9.0/ddl-inherit.html\" title=\"5.8. 继承\">父表</a>时，不再对作为查询一部分被扫描的子表做单独的权限检查（Peter Eisentraut）</p>\n<p>SQL 标准规定了这种行为，而且实践中它也比此前同时检查每个子表和父表权限的行为方便得多。</p>", "text": "查询父表时，不再对作为查询一部分被扫描的子表做单独的权限检查（Peter Eisentraut） SQL 标准规定了这种行为，而且实践中它也比此前同时检查每个子表和父表权限的行为方便得多。", "title": "查询父表时，不再对作为查询一部分被扫描的子表做单独的权限检查", "commits": [], "section": "查询", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.5", "source_hash": "05b41161b73d01f088dbee17624e7bb6d0988f4ce13e0c6adce09852ad5d0f05", "section_path": ["查询"], "commit_groups": [], "identity_text": "When querying a parent table, do not do any separate permission checks on child tables scanned as part of the query (Peter Eisentraut) The SQL standard specifies this behavior, and it is also much more convenient in practice than the former behavior of checking permissions on each child as well as the parent.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/005", "db_id": "0c165f5ca49befcd6a4ed5fc49834a3b", "patch_ids": [], "statement_hash": "7de3d5be798ba5f821b360fe2d04ac964c376f9e0a99ca8495ffb56da79a5986", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-74489feeda9b77da", "cves": [], "html": "<p><a href=\"/docs/9.0/datatype-binary.html\" title=\"8.4. 二进制数据类型\"><code>bytea</code></a> 输出现在默认以十六进制格式显示（Peter Eisentraut）</p>\n<p>如有兼容需要，可使用服务器参数 <a href=\"/docs/9.0/runtime-config-client.html#GUC-BYTEA-OUTPUT\"><code>bytea_output</code></a> 选择传统输出格式。</p>", "text": "bytea 输出现在默认以十六进制格式显示（Peter Eisentraut） 如有兼容需要，可使用服务器参数 bytea_output 选择传统输出格式。", "title": "bytea 输出现在默认以十六进制格式显示", "commits": [], "section": "数据类型", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.6", "source_hash": "cb5eaf34c9f84f50530fbe2e20246b0e3df505e472bba624a9c1c5491e53109c", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "bytea output now appears in hex format by default (Peter Eisentraut) The server parameter bytea_output can be used to select the traditional output format if needed for compatibility.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/006", "db_id": "8223818ea6e5a7e57831688c067d2332", "patch_ids": [], "statement_hash": "b2bc13068d63604ed3e674c906440b37fcdd229e43283a69be2d4d2dbc5476da", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0967b29aaf9182e7", "cves": [], "html": "<p>数组输入现在只把普通 ASCII 空白字符视为可能可忽略；它永远不会忽略非 ASCII 字符，即使按某些区域设置它们是空白（Tom Lane）</p>\n<p>这避免了一些数组值可能因服务器区域设置不同而被不同解释的极端情况。</p>", "text": "数组输入现在只把普通 ASCII 空白字符视为可能可忽略；它永远不会忽略非 ASCII 字符，即使按某些区域设置它们是空白（Tom Lane） 这避免了一些数组值可能因服务器区域设置不同而被不同解释的极端情况。", "title": "数组输入现在只把普通 ASCII 空白字符视为可能可忽略；它永远不会忽略非 ASCII 字符，即使按某些区域设置它们是空白", "commits": [], "section": "数据类型", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.6", "source_hash": "a4b1cf198302b30ce35ada1c68139da15f9437aa3644c6fc35a794a1285ce2fa", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Array input now considers only plain ASCII whitespace characters to be potentially ignorable; it will never ignore non-ASCII characters, even if they are whitespace according to some locales (Tom Lane) This avoids some corner cases where array values could be interpreted differently depending on the server's locale settings.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/007", "db_id": "c272498ffa765b04f39b962ee0566862", "patch_ids": [], "statement_hash": "fb10646f07695fed8d15519f2b2e86fade9b798d036f5d487df83e1d755a55f7", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1fdf093911a2cb81", "cves": [], "html": "<p>改进 <a href=\"/docs/9.0/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP\" title=\"9.7.2. SIMILAR TO正则表达式\"><code>SIMILAR TO</code></a> 模式和 SQL 风格 <code>substring()</code> 模式的标准符合性（Tom Lane）</p>\n<p>这包括把 <code>?</code> 和 <code>{...}</code> 视为模式元字符（它们此前是普通字面字符）；这对应 SQL:2008 新增的特性。此外，<code>^</code> 和 <code>$</code> 现在被视为普通字面字符；此前它们被视为元字符，就好像模式遵循 POSIX 而不是 SQL 规则。另外，在 SQL 标准 <code>substring()</code> 中，用括号嵌套不再干扰子串的捕获。另外，方括号表达式（字符类）的处理现在更符合标准。</p>", "text": "改进 SIMILAR TO 模式和 SQL 风格 substring() 模式的标准符合性（Tom Lane） 这包括把 ? 和 {...} 视为模式元字符（它们此前是普通字面字符）；这对应 SQL:2008 新增的特性。此外，^ 和 $ 现在被视为普通字面字符；此前它们被视为元字符，就好像模式遵循 POSIX 而不是 SQL 规则。另外，在 SQL 标准 substring() 中，用括号嵌套不再干扰子串的捕获。另外，方括号表达式（字符类）的处理现在更符合标准。", "title": "改进 SIMILAR TO 模式和 SQL 风格 substring() 模式的标准符合性", "commits": [], "section": "数据类型", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.6", "source_hash": "97fc41be6b6fc7af73ac253af16b09d4d1e90c0437d87d30a50e362f4f413233", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Improve standards compliance of SIMILAR TO patterns and SQL-style substring() patterns (Tom Lane) This includes treating ? and {...} as pattern metacharacters, while they were simple literal characters before; that corresponds to new features added in SQL:2008. Also, ^ and $ are now treated as simple literal characters; formerly they were treated as metacharacters, as if the pattern were following POSIX rather than SQL rules. Also, in SQL-standard substring(), use of parentheses for nesting no longer interferes with capturing of a substring. Also, processing of bracket expressions (character classes) is now more standards-compliant.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/008", "db_id": "364616960bb4ba034fff7d7760525534", "patch_ids": [], "statement_hash": "852231ef7d95797a4aca76eafa30b91382b2af2af264b0d02e6b360be686089f", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-89aeeedaa17a11bf", "cves": [], "html": "<p>按 SQL 标准拒绝位串 3 参数 <a href=\"/docs/9.0/functions-string.html#FUNCTIONS-STRING-SQL\" title=\"表 9.6. SQL字符串函数和操作符\"><code>substring()</code></a> 中的负长度值（Tom Lane）</p>", "text": "按 SQL 标准拒绝位串 3 参数 substring() 中的负长度值（Tom Lane）", "title": "按 SQL 标准拒绝位串 3 参数 substring() 中的负长度值", "commits": [], "section": "数据类型", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.6", "source_hash": "39a5dd378c2d7f9151d93205a220a0ad755c87775cc20cfc80ac0104b3343a95", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Reject negative length values in 3-parameter substring() for bit strings, per the SQL standard (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/009", "db_id": "e46535633e40374dde96b0c849ef4be9", "patch_ids": [], "statement_hash": "8d4c743de15d00a9141e9aa909696ef0468ab3fbc87e7757c8cbae753015e33e", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-01f8a80fb3dd0698", "cves": [], "html": "<p>让 <code>date_trunc</code> 在降低秒的小数部分精度时截断而不是舍入（Tom Lane）</p>\n<p>对于基于整数的日期/时间，代码一直如此。现在基于浮点的日期/时间行为类似。</p>", "text": "让 date_trunc 在降低秒的小数部分精度时截断而不是舍入（Tom Lane） 对于基于整数的日期/时间，代码一直如此。现在基于浮点的日期/时间行为类似。", "title": "让 date_trunc 在降低秒的小数部分精度时截断而不是舍入", "commits": [], "section": "数据类型", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.6", "source_hash": "e7eb88c75bb1c78da0ef31ccd4b69e72e7b308a7579a99482f3084db383c8d94", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Make date_trunc truncate rather than round when reducing precision of fractional seconds (Tom Lane) The code always acted this way for integer-based dates/times. Now float-based dates/times behave similarly.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/010", "db_id": "03ddf4bda447b1c0a95e5a946ec09978", "patch_ids": [], "statement_hash": "f2a961757d10f2b685111e76eb4d27679685481e8fb105a21fdccb1aaf357f09", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-faaff80c820dee2b", "cves": [], "html": "<p>当子表从多个不相关的父表继承同一列时，收紧 <code>RENAME</code> 期间列名一致性的强制（KaiGai Kohei）</p>", "text": "当子表从多个不相关的父表继承同一列时，收紧 RENAME 期间列名一致性的强制（KaiGai Kohei）", "title": "当子表从多个不相关的父表继承同一列时，收紧 RENAME 期间列名一致性的强制", "commits": [], "section": "对象重命名", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.7", "source_hash": "b6a8e9b0d9e1e2afc961d52aa91f8b78788c1bfdd03ef77b6db7abd35e8a4996", "section_path": ["对象重命名"], "commit_groups": [], "identity_text": "Tighten enforcement of column name consistency during RENAME when a child table inherits the same column from multiple unrelated parents (KaiGai Kohei)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/011", "db_id": "204f0cc547fefb6e043031dbe670134c", "patch_ids": [], "statement_hash": "f6c39ba40d76cf39dc98ac78d611d8df445754d414c2edf883544f0af0b8ad5f", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-69fab494e605f010", "cves": [], "html": "<p>不再在底层表列被重命名时自动重命名索引和索引列（Tom Lane）</p>\n<p>管理员仍可以手工重命名这类索引和列。此变更需要更新 JDBC 驱动（可能还有其他驱动），以便重命名后仍能正确识别唯一索引。</p>", "text": "不再在底层表列被重命名时自动重命名索引和索引列（Tom Lane） 管理员仍可以手工重命名这类索引和列。此变更需要更新 JDBC 驱动（可能还有其他驱动），以便重命名后仍能正确识别唯一索引。", "title": "不再在底层表列被重命名时自动重命名索引和索引列", "commits": [], "section": "对象重命名", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.7", "source_hash": "fa49eceee036950b2379813dea7324db92d6446d4ce0bd2c89b5af718d1e230d", "section_path": ["对象重命名"], "commit_groups": [], "identity_text": "No longer automatically rename indexes and index columns when the underlying table columns are renamed (Tom Lane) Administrators can still rename such indexes and columns manually. This change will require an update of the JDBC driver, and possibly other drivers, so that unique indexes are correctly recognized after a rename.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/012", "db_id": "e0bd9c7a9ca304b955c1c0426c173ef2", "patch_ids": [], "statement_hash": "43dd56bf2c6e79a8193716d2c000d605d5a9a7429a8eab2f3bcb8e7027e70362", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7d3c242c52cd07d3", "cves": [], "html": "<p><code>CREATE OR REPLACE FUNCTION</code> 不再能更改函数参数的声明名称（Pavel Stehule）</p>\n<p>为了避免在命名参数调用中产生歧义，不再允许更改现有函数声明中输入参数的别名（但仍可为此前未命名的参数指定名称）。现在必须 <code>DROP</code> 并重建函数才能做到这一点。</p>", "text": "CREATE OR REPLACE FUNCTION 不再能更改函数参数的声明名称（Pavel Stehule） 为了避免在命名参数调用中产生歧义，不再允许更改现有函数声明中输入参数的别名（但仍可为此前未命名的参数指定名称）。现在必须 DROP 并重建函数才能做到这一点。", "title": "CREATE OR REPLACE FUNCTION 不再能更改函数参数的声明名称", "commits": [], "section": "对象重命名", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.7", "source_hash": "e45571241aedae8c78ce8a6427afbb647c3452552e836404a1b5436672576b29", "section_path": ["对象重命名"], "commit_groups": [], "identity_text": "CREATE OR REPLACE FUNCTION can no longer change the declared names of function parameters (Pavel Stehule) In order to avoid creating ambiguity in named-parameter calls, it is no longer allowed to change the aliases for input parameters in the declaration of an existing function (although names can still be assigned to previously unnamed parameters). You now have to DROP and recreate the function to do that.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/013", "db_id": "96b3adfc86cb7b4ec13f941e3322b933", "patch_ids": [], "statement_hash": "8c7af4bee41f0c7b96657bec95a7588282282ad01b2cf8b683bca90b4855e92a", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-60e3a8a4854ecfbd", "cves": [], "html": "<p>当变量名与查询中使用的列名冲突时，PL/pgSQL 现在抛出错误（Tom Lane）</p>\n<p>此前的行为是把有歧义的名称优先绑定到 PL/pgSQL 变量而不是查询列，这常常导致令人惊讶的错误行为。抛出错误可以轻松检测歧义情况。虽然建议修改遇到此类错误的函数以消除冲突，但如有必要，可以通过配置参数 <a href=\"/docs/9.0/plpgsql-implementation.html#PLPGSQL-VAR-SUBST\" title=\"39.10.1. 变量替换\"><code>plpgsql.variable_conflict</code></a> 或逐函数选项 <code>#variable_conflict</code> 恢复旧行为。</p>", "text": "当变量名与查询中使用的列名冲突时，PL/pgSQL 现在抛出错误（Tom Lane） 此前的行为是把有歧义的名称优先绑定到 PL/pgSQL 变量而不是查询列，这常常导致令人惊讶的错误行为。抛出错误可以轻松检测歧义情况。虽然建议修改遇到此类错误的函数以消除冲突，但如有必要，可以通过配置参数 plpgsql.variable_conflict 或逐函数选项 #variable_conflict 恢复旧行为。", "title": "当变量名与查询中使用的列名冲突时，PL/pgSQL 现在抛出错误", "commits": [], "section": "PL/pgSQL", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.8", "source_hash": "4b20cfd60b4c9e4b329bee9c54a1264c415c4415b1f6dcd71c2c058789206c47", "section_path": ["PL/pgSQL"], "commit_groups": [], "identity_text": "PL/pgSQL now throws an error if a variable name conflicts with a column name used in a query (Tom Lane) The former behavior was to bind ambiguous names to PL/pgSQL variables in preference to query columns, which often resulted in surprising misbehavior. Throwing an error allows easy detection of ambiguous situations. Although it's recommended that functions encountering this type of error be modified to remove the conflict, the old behavior can be restored if necessary via the configuration parameter plpgsql.variable_conflict, or via the per-function option #variable_conflict.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/014", "db_id": "78889b8e48e86cad4d38cfd8d87647c3", "patch_ids": [], "statement_hash": "d2627a80cdc217a4a766e23f89411ea0bc9749db427551e8a6f17cb42895d805", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b815bb2cf85b8163", "cves": [], "html": "<p>PL/pgSQL 不再允许与某些 SQL 保留字匹配的变量名（Tom Lane）</p>\n<p>这是使 PL/pgSQL 解析器与核心 SQL 解析器更紧密对齐的结果。如有必要，可以为变量名加双引号来避开此限制。</p>", "text": "PL/pgSQL 不再允许与某些 SQL 保留字匹配的变量名（Tom Lane） 这是使 PL/pgSQL 解析器与核心 SQL 解析器更紧密对齐的结果。如有必要，可以为变量名加双引号来避开此限制。", "title": "PL/pgSQL 不再允许与某些 SQL 保留字匹配的变量名", "commits": [], "section": "PL/pgSQL", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.8", "source_hash": "787a7456d51a5e4eef1ab6ea4e20b77afd59aa519aed55b31f67428eb869c317", "section_path": ["PL/pgSQL"], "commit_groups": [], "identity_text": "PL/pgSQL no longer allows variable names that match certain SQL reserved words (Tom Lane) This is a consequence of aligning the PL/pgSQL parser to match the core SQL parser more closely. If necessary, variable names can be double-quoted to avoid this restriction.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/015", "db_id": "c12fd389e6334a8badde14219b7f0663", "patch_ids": [], "statement_hash": "9aaa18aca1462c3e16285882a76d350e64b939eb43a0a0b7c715e3c845809670", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d92509f458407552", "cves": [], "html": "<p>PL/pgSQL 现在要求组合结果的列不仅匹配基本类型，还要匹配预期的类型修饰符（Pavel Stehule、Tom Lane）</p>\n<p>例如，如果结果类型的某列声明为 <code>NUMERIC(30,2)</code>，则在该列中返回其他精度的 <code>NUMERIC</code> 不再被接受。以前的版本疏于检查类型修饰符，因此会允许实际上不符合声明限制的结果行。</p>", "text": "PL/pgSQL 现在要求组合结果的列不仅匹配基本类型，还要匹配预期的类型修饰符（Pavel Stehule、Tom Lane） 例如，如果结果类型的某列声明为 NUMERIC(30,2)，则在该列中返回其他精度的 NUMERIC 不再被接受。以前的版本疏于检查类型修饰符，因此会允许实际上不符合声明限制的结果行。", "title": "PL/pgSQL 现在要求组合结果的列不仅匹配基本类型，还要匹配预期的类型修饰符", "commits": [], "section": "PL/pgSQL", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.8", "source_hash": "ef9b908da8b072a8b29ea78012655de6fcb3fc8cf7081b449990437386b41b08", "section_path": ["PL/pgSQL"], "commit_groups": [], "identity_text": "PL/pgSQL now requires columns of composite results to match the expected type modifier as well as base type (Pavel Stehule, Tom Lane) For example, if a column of the result type is declared as NUMERIC(30,2), it is no longer acceptable to return a NUMERIC of some other precision in that column. Previous versions neglected to check the type modifier and would thus allow result rows that didn't actually conform to the declared restrictions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/016", "db_id": "4b8d86632314a81870608f4549b81a1c", "patch_ids": [], "statement_hash": "274bfcc33d95aace796d6154136ae8725b36c3587a2734bb96ce1f870df969ce", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-04506ebd4de81ec7", "cves": [], "html": "<p>PL/pgSQL 现在更一致地处理选择到组合字段的情况（Tom Lane）</p>\n<p>此前，像 <code>SELECT ... INTO <em><code>rec</code></em>.<em><code>fld</code></em> FROM ...</code> 这样的语句即使记录字段 <em><code>fld</code></em> 是组合类型，也被视为标量赋值。现在它被视为记录赋值，与 <code>INTO</code> 目标是组合类型的常规变量时相同。因此，要赋给字段各子字段的值应写成 <code>SELECT</code> 列表的单独列，而不是像以前版本那样写成 <code>ROW(...)</code> 构造。</p>\n<p>如果需要以同时适用于 9.0 和以前版本的方式做到这一点，可以写成类似 <code><em><code>rec</code></em>.<em><code>fld</code></em> := ROW(...) FROM ...</code>。</p>", "text": "PL/pgSQL 现在更一致地处理选择到组合字段的情况（Tom Lane） 此前，像 SELECT ... INTO rec.fld FROM ... 这样的语句即使记录字段 fld 是组合类型，也被视为标量赋值。现在它被视为记录赋值，与 INTO 目标是组合类型的常规变量时相同。因此，要赋给字段各子字段的值应写成 SELECT 列表的单独列，而不是像以前版本那样写成 ROW(...) 构造。 如果需要以同时适用于 9.0 和以前版本的方式做到这一点，可以写成类似 rec.fld := ROW(...) FROM ...。", "title": "PL/pgSQL 现在更一致地处理选择到组合字段的情况", "commits": [], "section": "PL/pgSQL", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.8", "source_hash": "02ffbe18b44ba768bdca9993eb4f762bdd8450e50e30336f5c20a5d2ff5ff448", "section_path": ["PL/pgSQL"], "commit_groups": [], "identity_text": "PL/pgSQL now treats selection into composite fields more consistently (Tom Lane) Formerly, a statement like SELECT ... INTO rec.fld FROM ... was treated as a scalar assignment even if the record field fld was of composite type. Now it is treated as a record assignment, the same as when the INTO target is a regular variable of composite type. So the values to be assigned to the field's subfields should be written as separate columns of the SELECT list, not as a ROW(...) construct as in previous versions. If you need to do this in a way that will work in both 9.0 and previous releases, you can write something like rec.fld := ROW(...) FROM ....", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/017", "db_id": "4b672a57844a1affa1ab95e7e05c6855", "patch_ids": [], "statement_hash": "51f3a246eaab3fe114d4ff68ed2a70e0b96689db7ea0228b302ca17f7fcc2f8d", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5a7991c17a14a4d4", "cves": [], "html": "<p>移除 PL/pgSQL 的 <code>RENAME</code> 声明（Tom Lane）</p>\n<p>用 <a href=\"/docs/9.0/plpgsql-declarations.html#PLPGSQL-DECLARATION-ALIAS\" title=\"39.3.2. ALIAS\"><code>ALIAS</code></a> 取代 <code>RENAME</code>，它现在可以为任何变量创建别名，而不再像以前那样只能用于美元符号参数名（如 <code>$1</code>）。</p>", "text": "移除 PL/pgSQL 的 RENAME 声明（Tom Lane） 用 ALIAS 取代 RENAME，它现在可以为任何变量创建别名，而不再像以前那样只能用于美元符号参数名（如 $1）。", "title": "移除 PL/pgSQL 的 RENAME 声明", "commits": [], "section": "PL/pgSQL", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.8", "source_hash": "7522639f2a150e1888d4ea5c6f5d83fb41c3a578a0cbfc9508bf679dd6bbe554", "section_path": ["PL/pgSQL"], "commit_groups": [], "identity_text": "Remove PL/pgSQL's RENAME declaration (Tom Lane) Instead of RENAME, use ALIAS, which can now create an alias for any variable, not only dollar sign parameter names (such as $1) as before.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/018", "db_id": "ee173c5cb2042927316af71d1671b6bb", "patch_ids": [], "statement_hash": "3de60ac187a842ee8bb47a12885ab84bfa4bd112c10810f6ded795834bc860e0", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-fe20e004fd1496b5", "cves": [], "html": "<p>废弃把 <code>=&gt;</code> 用作操作符名（Robert Haas）</p>\n<p>为了支持 SQL 标准的命名函数参数记法，未来版本的 <span>PostgreSQL</span> 可能会完全拒绝此操作符名。目前它仍被允许，但定义此类操作符时会发出警告。</p>", "text": "废弃把 => 用作操作符名（Robert Haas） 为了支持 SQL 标准的命名函数参数记法，未来版本的 PostgreSQL 可能会完全拒绝此操作符名。目前它仍被允许，但定义此类操作符时会发出警告。", "title": "废弃把 => 用作操作符名", "commits": [], "section": "其他不兼容之处", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.9", "source_hash": "203a74f036529d094b8b7612f08adccebc4c06938e1dc2e0a814756caf7b1168", "section_path": ["其他不兼容之处"], "commit_groups": [], "identity_text": "Deprecate use of => as an operator name (Robert Haas) Future versions of PostgreSQL will probably reject this operator name entirely, in order to support the SQL-standard notation for named function parameters. For the moment, it is still allowed, but a warning is emitted when such an operator is defined.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/019", "db_id": "cb8b9815919b672e97c239dcab6f7092", "patch_ids": [], "statement_hash": "39468e8cc9ffb8c5bb61282738c5116f024c23650038a19efbe7526a80c6ae55", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0fe883aa4862cf85", "cves": [], "html": "<p>移除对没有可用 64 位整数数据类型的平台的支持（Tom Lane）</p>\n<p>据信所有仍受支持的平台都有可用的 64 位整数数据类型。</p>", "text": "移除对没有可用 64 位整数数据类型的平台的支持（Tom Lane） 据信所有仍受支持的平台都有可用的 64 位整数数据类型。", "title": "移除对没有可用 64 位整数数据类型的平台的支持", "commits": [], "section": "其他不兼容之处", "category": "compatibility", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.4.9", "source_hash": "337e9025a2dd9097e2e31fcf0344f2d8b8d3cffe602e76a68a8d3323bd4a0780", "section_path": ["其他不兼容之处"], "commit_groups": [], "identity_text": "Remove support for platforms that don't have a working 64-bit integer data type (Tom Lane) It is believed all still-supported platforms have working 64-bit integer data types.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/migration/020", "db_id": "2921a4b2c32598783c247a6e5cda031a", "patch_ids": [], "statement_hash": "bb1b7348f80bafe789b5bbe115e872506e8d5647536c3bb31480030a3bf8bfe0", "relations": [], "version": "9.0.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-27d41c3238739276", "cves": [], "html": "<p>允许备库服务器接受只读查询（Simon Riggs、Heikki Linnakangas）</p>\n<p>此特性称为热备。有新的 <code>postgresql.conf</code> 和 <code>recovery.conf</code> 设置控制此特性，并有详尽的<a href=\"/docs/9.0/hot-standby.html\" title=\"25.5. 热备\">文档</a>。</p>", "text": "允许备库服务器接受只读查询（Simon Riggs、Heikki Linnakangas） 此特性称为热备。有新的 postgresql.conf 和 recovery.conf 设置控制此特性，并有详尽的文档。", "title": "允许备库服务器接受只读查询", "commits": [], "section": "服务器 / 连续归档和流复制", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.2", "source_hash": "76ecf0b30b12c98b845da5d1979f3b497343b19205911215906670913032bbdb", "section_path": ["服务器", "连续归档和流复制"], "commit_groups": [], "identity_text": "Allow a standby server to accept read-only queries (Simon Riggs, Heikki Linnakangas) This feature is called Hot Standby. There are new postgresql.conf and recovery.conf settings to control this feature, as well as extensive documentation.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/001", "db_id": "a1de348cb3259392c506df4d201814a8", "patch_ids": [], "statement_hash": "d7194b1ebb2524df6a7f8d21db6c13734c8af38bf5c53293327ecb7bd834919b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-76290ea3d53d4048", "cves": [], "html": "<p>允许把预写式日志（<acronym>WAL</acronym>）数据流式传输到备库服务器（Fujii Masao、Heikki Linnakangas）</p>\n<p>此特性称为流复制。此前 <acronym>WAL</acronym> 数据只能以整个 <acronym>WAL</acronym> 文件（通常每个 16 MB）为单位发送到备库服务器。流复制消除了这种低效，使主库上的更新能以极小延迟传播到备库服务器。有新的 <code>postgresql.conf</code> 和 <code>recovery.conf</code> 设置控制此特性，并有详尽的<a href=\"/docs/9.0/warm-standby.html#STREAMING-REPLICATION\" title=\"25.2.5. 流复制\">文档</a>。</p>", "text": "允许把预写式日志（WAL）数据流式传输到备库服务器（Fujii Masao、Heikki Linnakangas） 此特性称为流复制。此前 WAL 数据只能以整个 WAL 文件（通常每个 16 MB）为单位发送到备库服务器。流复制消除了这种低效，使主库上的更新能以极小延迟传播到备库服务器。有新的 postgresql.conf 和 recovery.conf 设置控制此特性，并有详尽的文档。", "title": "允许把预写式日志（WAL）数据流式传输到备库服务器", "commits": [], "section": "服务器 / 连续归档和流复制", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.2", "source_hash": "a546b3a9ff29d5a59f3442a92edbd6ce25502ab9df02721295fc3f8ae2f95de3", "section_path": ["服务器", "连续归档和流复制"], "commit_groups": [], "identity_text": "Allow write-ahead log (WAL) data to be streamed to a standby server (Fujii Masao, Heikki Linnakangas) This feature is called Streaming Replication. Previously WAL data could be sent to standby servers only in units of entire WAL files (normally 16 megabytes each). Streaming Replication eliminates this inefficiency and allows updates on the master to be propagated to standby servers with very little delay. There are new postgresql.conf and recovery.conf settings to control this feature, as well as extensive documentation.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/002", "db_id": "3d5ba08b9761b170f488d737f1bbe898", "patch_ids": [], "statement_hash": "e29393810b2a2ed3aa68fcb3352ff00b8ec1b0d8cc300ac3565a0446e3a05c18", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7da58799a7089d5d", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE\" title=\"表 9.58. 恢复信息函数\"><code>pg_last_xlog_receive_location()</code></a> 和 <code>pg_last_xlog_replay_location()</code>，可用于监控备库服务器的 <acronym>WAL</acronym> 活动（Simon Riggs、Fujii Masao、Heikki Linnakangas）</p>", "text": "新增 pg_last_xlog_receive_location() 和 pg_last_xlog_replay_location()，可用于监控备库服务器的 WAL 活动（Simon Riggs、Fujii Masao、Heikki Linnakangas）", "title": "新增 pg_last_xlog_receive_location() 和 pg_last_xlog_replay_location()，可用于监控备库服务器的 WAL 活动", "commits": [], "section": "服务器 / 连续归档和流复制", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.2", "source_hash": "fe1685d97d2861e395f85e29be15c7b663fc5a5883694b6a87aff8fc746d4511", "section_path": ["服务器", "连续归档和流复制"], "commit_groups": [], "identity_text": "Add pg_last_xlog_receive_location() and pg_last_xlog_replay_location(), which can be used to monitor standby server WAL activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/003", "db_id": "7326b6943be336f849befb1e32b0b71b", "patch_ids": [], "statement_hash": "f27db56187c59ea867c9d27123a103a5aa9fdecc80587be8897a1f8f3f6b9467", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-cf1aeb50126ccdb1", "cves": [], "html": "<p>允许通过 <a href=\"/docs/9.0/sql-altertablespace.html\" title=\"ALTER TABLESPACE\"><code>ALTER TABLESPACE ... SET/RESET</code></a> 为顺序和随机页面代价估计（<code>seq_page_cost</code>/<code>random_page_cost</code>）设置逐表空间的值（Robert Haas）</p>", "text": "允许通过 ALTER TABLESPACE ... SET/RESET 为顺序和随机页面代价估计（seq_page_cost/random_page_cost）设置逐表空间的值（Robert Haas）", "title": "允许通过 ALTER TABLESPACE ... SET/RESET 为顺序和随机页面代价估计（seq_page_cost/random_page_cost）设置逐表空间的值", "commits": [], "section": "服务器 / 性能", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.3", "source_hash": "abcef5df7255e1247dc292fc6674376afb7c956db2cf988a6e4b45c2e9ef89ec", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Allow per-tablespace values to be set for sequential and random page cost estimates (seq_page_cost/random_page_cost) via ALTER TABLESPACE ... SET/RESET (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/004", "db_id": "eb453f84955fc410fe531c6da2405ff9", "patch_ids": [], "statement_hash": "669e4813a6ff8b6ae55783d9770e92ebdac11841dd31594f1e7c9a06b4020751", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b4bb73c2a7932610", "cves": [], "html": "<p>改进连接查询中 EvalPlanQual 重新检查的性能和可靠性（Tom Lane）</p>\n<p>涉及连接的 <code>UPDATE</code>、<code>DELETE</code> 和 <code>SELECT FOR UPDATE/SHARE</code> 查询在遇到刚更新的行时现在表现得好得多。</p>", "text": "改进连接查询中 EvalPlanQual 重新检查的性能和可靠性（Tom Lane） 涉及连接的 UPDATE、DELETE 和 SELECT FOR UPDATE/SHARE 查询在遇到刚更新的行时现在表现得好得多。", "title": "改进连接查询中 EvalPlanQual 重新检查的性能和可靠性", "commits": [], "section": "服务器 / 性能", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.3", "source_hash": "098b32cb10104601167554e380073ccf47d8794c692bf9cc9a399ee43fd3fb5c", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Improve performance and reliability of EvalPlanQual rechecks in join queries (Tom Lane) UPDATE, DELETE, and SELECT FOR UPDATE/SHARE queries that involve joins will now behave much better when encountering freshly-updated rows.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/005", "db_id": "5f9d2b266d1b62fdb57aa1bfa0dc2262", "patch_ids": [], "statement_hash": "5306e6c6135cc67e1d0121e8527533eb871557a564b28d1c59630f7277f2fd2a", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2bb948781dddac58", "cves": [], "html": "<p>改进表在同一事务中较早前被创建或截断时 <a href=\"/docs/9.0/sql-truncate.html\" title=\"TRUNCATE\"><code>TRUNCATE</code></a> 的性能（Tom Lane）</p>", "text": "改进表在同一事务中较早前被创建或截断时 TRUNCATE 的性能（Tom Lane）", "title": "改进表在同一事务中较早前被创建或截断时 TRUNCATE 的性能", "commits": [], "section": "服务器 / 性能", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.3", "source_hash": "76402758a831fa49690a22d4069537948c70acd8701177a4e53825d88417dc99", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Improve performance of TRUNCATE when the table was created or truncated earlier in the same transaction (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/006", "db_id": "724f03923bae148a41c834aa366edafb", "patch_ids": [], "statement_hash": "bb1de49a094625d34dc2a8d6632c8c38e0014ff8602e25b1b77b0a9e0ec37b5f", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8e61c184f8995b12", "cves": [], "html": "<p>改进查找继承子表的性能（Tom Lane）</p>", "text": "改进查找继承子表的性能（Tom Lane）", "title": "改进查找继承子表的性能", "commits": [], "section": "服务器 / 性能", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.3", "source_hash": "0fcb2eb63d78dd4b185662fa270766f447750f831048cbb28d24a8f1a11864c8", "section_path": ["服务器", "性能"], "commit_groups": [], "identity_text": "Improve performance of finding inheritance child tables (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/007", "db_id": "11c60fc8f035933b2a0fb242db7a4812", "patch_ids": [], "statement_hash": "8d2ce43b668df0f7209e7bfa65a4f992261320332b49b5a9a57a4867c8639158", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e589ebf283d09ed5", "cves": [], "html": "<p>移除不必要的<a href=\"/docs/9.0/queries-table-expressions.html#QUERIES-JOIN\" title=\"7.2.1.1. 连接表\">外连接</a>（Robert Haas）</p>\n<p>内侧唯一且未被连接以上引用的外连接是不必要的，因此现在会被移除。这将加速许多自动生成的查询，例如对象关系映射器（ORM）创建的查询。</p>", "text": "移除不必要的外连接（Robert Haas） 内侧唯一且未被连接以上引用的外连接是不必要的，因此现在会被移除。这将加速许多自动生成的查询，例如对象关系映射器（ORM）创建的查询。", "title": "移除不必要的外连接", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.4", "source_hash": "858dddc2871c2946ca85a9cdf5e204340decda8f6720b71623062658e6304a77", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Remove unnecessary outer joins (Robert Haas) Outer joins where the inner side is unique and not referenced above the join are unnecessary and are therefore now removed. This will accelerate many automatically generated queries, such as those created by object-relational mappers (ORMs).", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/008", "db_id": "2f608b7d819e700845bd3cc6fdd1f561", "patch_ids": [], "statement_hash": "48f7db46eb3ad0a3bac19f6f455842548978bd4e02525f5867da2f87477e93ee", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5af30327fd85fed6", "cves": [], "html": "<p>允许 <code>IS NOT NULL</code> 限制使用索引（Tom Lane）</p>\n<p>这在包含大量空值的索引中查找 <code>MAX()</code>/<code>MIN()</code> 值时特别有用。</p>", "text": "允许 IS NOT NULL 限制使用索引（Tom Lane） 这在包含大量空值的索引中查找 MAX()/MIN() 值时特别有用。", "title": "允许 IS NOT NULL 限制使用索引", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.4", "source_hash": "e1090f5196eef0d4747d32538d16acc99b24f0f98f3d3794534ee18c7702152d", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Allow IS NOT NULL restrictions to use indexes (Tom Lane) This is particularly useful for finding MAX()/MIN() values in indexes that contain many null values.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/009", "db_id": "ab1808493c016d121a2b2ba7e466259e", "patch_ids": [], "statement_hash": "70e6f6afaa8231734aae6391dc4ddbae49d791c8c42dbd7005fcb7e1e2c10401", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-296878608b2fe7be", "cves": [], "html": "<p>改进优化器关于何时使用物化节点、以及 <code>DISTINCT</code> 用排序还是哈希的选择（Tom Lane）</p>", "text": "改进优化器关于何时使用物化节点、以及 DISTINCT 用排序还是哈希的选择（Tom Lane）", "title": "改进优化器关于何时使用物化节点、以及 DISTINCT 用排序还是哈希的选择", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.4", "source_hash": "7d8ea758251da1894d45dd05ea0d004b58dd56942ab83722df5905aec5ceb1f4", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Improve the optimizer's choices about when to use materialize nodes, and when to use sorting versus hashing for DISTINCT (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/010", "db_id": "4f659ce18f0f49d450679249d4329edb", "patch_ids": [], "statement_hash": "4928f93f3779c5a2258300b903780751794095a28ddd1c75aa823cd4367c9cf4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-15ae5993ccc49601", "cves": [], "html": "<p>改进优化器对涉及 <code>boolean</code> <code>&lt;&gt;</code> 操作符的表达式的等价检测（Tom Lane）</p>", "text": "改进优化器对涉及 boolean <> 操作符的表达式的等价检测（Tom Lane）", "title": "改进优化器对涉及 boolean <> 操作符的表达式的等价检测", "commits": [], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.4", "source_hash": "e33b7f5751c9ed7ea443bb25b5ebe83fc70b2b98b7252ea1cdc797cbcd3bdb92", "section_path": ["服务器", "优化器"], "commit_groups": [], "identity_text": "Improve the optimizer's equivalence detection for expressions involving boolean <> operators (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/011", "db_id": "9699911de3ea025502bd89cddcdb8552", "patch_ids": [], "statement_hash": "9c5347d5a152986cf3e4a69fc1409cc66085787cec33832fc17f8b0a03372886", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a608e89a61776dc3", "cves": [], "html": "<p>让 GEQO 每次规划查询时使用相同的随机种子（Andres Freund）</p>\n<p>虽然遗传查询优化器（GEQO）仍然随机选择计划，但它现在对相同查询总是选择相同的随机计划，从而给出更一致的性能。可以修改 <a href=\"/docs/9.0/runtime-config-query.html#GUC-GEQO-SEED\"><code>geqo_seed</code></a> 来试验其他计划。</p>", "text": "让 GEQO 每次规划查询时使用相同的随机种子（Andres Freund） 虽然遗传查询优化器（GEQO）仍然随机选择计划，但它现在对相同查询总是选择相同的随机计划，从而给出更一致的性能。可以修改 geqo_seed 来试验其他计划。", "title": "让 GEQO 每次规划查询时使用相同的随机种子", "commits": [], "section": "服务器 / GEQO", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.5", "source_hash": "6364e2af5707f82caf6d6450e77e229d727f41d2a2d057417822c57049bd7b66", "section_path": ["服务器", "GEQO"], "commit_groups": [], "identity_text": "Use the same random seed every time GEQO plans a query (Andres Freund) While the Genetic Query Optimizer (GEQO) still selects random plans, it now always selects the same random plans for identical queries, thus giving more consistent performance. You can modify geqo_seed to experiment with alternative plans.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/012", "db_id": "266943316b292a2d6d989d8b76d33610", "patch_ids": [], "statement_hash": "cf8461ef8cad3bc0e75d641dcdb1334f1d5c1d775e0f4d5da38b8765ad5817a1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2e73074372393545", "cves": [], "html": "<p>改进 GEQO 计划选择（Tom Lane）</p>\n<p>这避免了罕见的 <span>“<span>failed to make a valid plan</span>”</span> 错误，还应能改进规划速度。</p>", "text": "改进 GEQO 计划选择（Tom Lane） 这避免了罕见的 “failed to make a valid plan” 错误，还应能改进规划速度。", "title": "改进 GEQO 计划选择", "commits": [], "section": "服务器 / GEQO", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.5", "source_hash": "3bde8f6708f30c30d9781c17afae1f7547066173233668310d9b47d03d25b2fb", "section_path": ["服务器", "GEQO"], "commit_groups": [], "identity_text": "Improve GEQO plan selection (Tom Lane) This avoids the rare error failed to make a valid plan, and should also improve planning speed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/013", "db_id": "561b24334198673fcdf2724ff0a35663", "patch_ids": [], "statement_hash": "bdeadd762c4077e983c20d50835766a6f46c1230f75df3575b11d57e8c8109d4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-27b4eb881daae25b", "cves": [], "html": "<p>改进 <a href=\"/docs/9.0/sql-analyze.html\" title=\"ANALYZE\"><code>ANALYZE</code></a>，使其支持继承树统计信息（Tom Lane）</p>\n<p>这对分区表特别有用。但自动清理尚不会在子表变化时自动重新分析父表。</p>", "text": "改进 ANALYZE，使其支持继承树统计信息（Tom Lane） 这对分区表特别有用。但自动清理尚不会在子表变化时自动重新分析父表。", "title": "改进 ANALYZE，使其支持继承树统计信息", "commits": [], "section": "服务器 / 优化器统计", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.6", "source_hash": "a50a259b636e290b188d8d39294a01c131d4a67621bc0b853d7330777e35b980", "section_path": ["服务器", "优化器统计"], "commit_groups": [], "identity_text": "Improve ANALYZE to support inheritance-tree statistics (Tom Lane) This is particularly useful for partitioned tables. However, autovacuum does not yet automatically re-analyze parent tables when child tables change.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/014", "db_id": "742d099d851a70d6217db65982443386", "patch_ids": [], "statement_hash": "2841214d590eaeb01b2c55e020e1185fbf55cb3d4409a3c554919138e9e9b82d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-be10c58a182fbe77", "cves": [], "html": "<p>改进<a href=\"/docs/9.0/maintenance.html#ROUTINE-VACUUMING\" title=\"23.1. 日常清理\">自动清理</a>对何时需要重新分析的检测（Tom Lane）</p>", "text": "改进自动清理对何时需要重新分析的检测（Tom Lane）", "title": "改进自动清理对何时需要重新分析的检测", "commits": [], "section": "服务器 / 优化器统计", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.6", "source_hash": "39f7df689aa195f49ad77c10419ae41779e1419a9e10bfd8252af05bf940051b", "section_path": ["服务器", "优化器统计"], "commit_groups": [], "identity_text": "Improve autovacuum's detection of when re-analyze is necessary (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/015", "db_id": "cb04edfebabf7533207d79915b70ab33", "patch_ids": [], "statement_hash": "54ad1662b165a11239f7c400394845f498c711a4915dabfc87056ca19fa88f90", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4d31a445607b3b1f", "cves": [], "html": "<p>改进优化器对大于/小于比较的估计（Tom Lane）</p>\n<p>在查找大于/小于比较的统计信息时，如果比较值位于第一个或最后一个直方图桶中，则使用索引（如果可用）获取该列当前的実際最小值或最大值。这大幅改进了对数据范围端点附近比较值的估计准确性，尤其是当范围因新数据的添加而不断变化时。</p>", "text": "改进优化器对大于/小于比较的估计（Tom Lane） 在查找大于/小于比较的统计信息时，如果比较值位于第一个或最后一个直方图桶中，则使用索引（如果可用）获取该列当前的実際最小值或最大值。这大幅改进了对数据范围端点附近比较值的估计准确性，尤其是当范围因新数据的添加而不断变化时。", "title": "改进优化器对大于/小于比较的估计", "commits": [], "section": "服务器 / 优化器统计", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.6", "source_hash": "7b2237d75b88439cd0867bc1ad9a99bc68ce3e09c35b2ff33374f1bd55d57adc", "section_path": ["服务器", "优化器统计"], "commit_groups": [], "identity_text": "Improve optimizer's estimation for greater/less-than comparisons (Tom Lane) When looking up statistics for greater/less-than comparisons, if the comparison value is in the first or last histogram bucket, use an index (if available) to fetch the current actual column minimum or maximum. This greatly improves the accuracy of estimates for comparison values near the ends of the data range, particularly if the range is constantly changing due to addition of new data.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/016", "db_id": "61d7ff74b739687cc536cc060f896d00", "patch_ids": [], "statement_hash": "5f6656cdb6200f22559287bb3fe0d545914718d04b37c646b071826fac0a3657", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8f656f47eaa60038", "cves": [], "html": "<p>允许使用 <a href=\"/docs/9.0/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE</code></a> 设置不同值数量统计信息（Robert Haas）</p>\n<p>这允许用户覆盖某列不同值的估计数量或百分比。此统计信息通常由 <code>ANALYZE</code> 计算，但估计可能不佳，尤其是在行数非常多的表上。</p>", "text": "允许使用 ALTER TABLE 设置不同值数量统计信息（Robert Haas） 这允许用户覆盖某列不同值的估计数量或百分比。此统计信息通常由 ANALYZE 计算，但估计可能不佳，尤其是在行数非常多的表上。", "title": "允许使用 ALTER TABLE 设置不同值数量统计信息", "commits": [], "section": "服务器 / 优化器统计", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.6", "source_hash": "9a3a558102d3d37f0595741353bfa597e2e8c349666dee6dcd3d6cc3e361a4f9", "section_path": ["服务器", "优化器统计"], "commit_groups": [], "identity_text": "Allow setting of number-of-distinct-values statistics using ALTER TABLE (Robert Haas) This allows users to override the estimated number or percentage of distinct values for a column. This statistic is normally computed by ANALYZE, but the estimate can be poor, especially on tables with very large numbers of rows.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/017", "db_id": "6d35f40240ce24964920a6006a7336f8", "patch_ids": [], "statement_hash": "35523ee9c7f7979983060801e317764717353a4ef958b593cc7a08604c898ee8", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6bf7cfc4e85f44f9", "cves": [], "html": "<p>新增对 <a href=\"/docs/9.0/auth-methods.html#AUTH-RADIUS\" title=\"19.3.8. RADIUS 认证\"><acronym>RADIUS</acronym></a>（远程认证拨入用户服务）认证的支持（Magnus Hagander）</p>", "text": "新增对 RADIUS（远程认证拨入用户服务）认证的支持（Magnus Hagander）", "title": "新增对 RADIUS（远程认证拨入用户服务）认证的支持", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.7", "source_hash": "c78c433a385e6dbeee16b8aa026d50214f752c14d9ce7b78b79d043eb47b613e", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Add support for RADIUS (Remote Authentication Dial In User Service) authentication (Magnus Hagander)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/018", "db_id": "252495cf3674cda4ade431ca68b74253", "patch_ids": [], "statement_hash": "799d6f7d241b5db65ca06e6cbccd8c792642fad533675539b6e2bed3372ada3a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-41bba7887db80c7e", "cves": [], "html": "<p>允许 <a href=\"/docs/9.0/auth-methods.html#AUTH-LDAP\" title=\"19.3.7. LDAP 认证\"><acronym>LDAP</acronym></a>（轻量目录访问协议）认证以<span>“<span>搜索/绑定</span>”</span>模式运行（Robert Fleming、Magnus Hagander）</p>\n<p>这允许先查找用户，然后系统使用为该用户返回的 <acronym>DN</acronym>（可分辨名称）。</p>", "text": "允许 LDAP（轻量目录访问协议）认证以“搜索/绑定”模式运行（Robert Fleming、Magnus Hagander） 这允许先查找用户，然后系统使用为该用户返回的 DN（可分辨名称）。", "title": "允许 LDAP（轻量目录访问协议）认证以“搜索/绑定”模式运行", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.7", "source_hash": "fc92292c3ba3e43a1ffb96f22bbcb7bba62ffabba52ddff777680b1d03a73321", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Allow LDAP (Lightweight Directory Access Protocol) authentication to operate in search/bind mode (Robert Fleming, Magnus Hagander) This allows the user to be looked up first, then the system uses the DN (Distinguished Name) returned for that user.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/019", "db_id": "05fbca9ab895db9c04e8d4275286f942", "patch_ids": [], "statement_hash": "8493c02b247e80b07bc198b72bc46db7c813bc9aa6e0da701ac4918622fb6583", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-90499da79aa8b3b4", "cves": [], "html": "<p>为 <code>pg_hba.conf</code> 新增 <a href=\"/docs/9.0/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"19.1. The pg_hba.conf file\"><code>samehost</code></a> 和 <code>samenet</code> 指定（Stef Walter）</p>\n<p>它们分别匹配服务器的 <acronym>IP</acronym> 地址和子网地址。</p>", "text": "为 pg_hba.conf 新增 samehost 和 samenet 指定（Stef Walter） 它们分别匹配服务器的 IP 地址和子网地址。", "title": "为 pg_hba.conf 新增 samehost 和 samenet 指定", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.7", "source_hash": "ac0dd04c4aaeadbb0cd9acaae1b7c21079109bf9c1ff049f62d4d23728df2ac8", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Add samehost and samenet designations to pg_hba.conf (Stef Walter) These match the server's IP address and subnet address respectively.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/020", "db_id": "ea50e738bd48021691485f0f3c802c60", "patch_ids": [], "statement_hash": "243fd85afae0eb33b78bdda4cea96c54a2b11206f2742176ca3d2c4b06ff367f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-390662b2136e6fc5", "cves": [], "html": "<p>把受信任的 SSL 根证书名称传递给客户端，使客户端能返回合适的客户端证书（Craig Ringer）</p>", "text": "把受信任的 SSL 根证书名称传递给客户端，使客户端能返回合适的客户端证书（Craig Ringer）", "title": "把受信任的 SSL 根证书名称传递给客户端，使客户端能返回合适的客户端证书", "commits": [], "section": "服务器 / 认证", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.7", "source_hash": "a10e4665bb7a5414fce5b3536f3d2b0d790d15487e948aa11f42320216c59a24", "section_path": ["服务器", "认证"], "commit_groups": [], "identity_text": "Pass trusted SSL root certificate names to the client so the client can return an appropriate client certificate (Craig Ringer)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/021", "db_id": "02c4ad675407781fd302a2fe82a6b484", "patch_ids": [], "statement_hash": "b83db8d803c98a734fe7dd019cdb00a26208ac28c61262b3e4cccf498269c57b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-799a14bb0a0bee67", "cves": [], "html": "<p>新增客户端设置<a href=\"/docs/9.0/libpq.html#LIBPQ-CONNECT-APPLICATION-NAME\">应用名</a>的能力，它显示在 <code>pg_stat_activity</code> 中（Dave Page）</p>\n<p>这允许管理员按源应用刻画数据库流量并排查问题。</p>", "text": "新增客户端设置应用名的能力，它显示在 pg_stat_activity 中（Dave Page） 这允许管理员按源应用刻画数据库流量并排查问题。", "title": "新增客户端设置应用名的能力，它显示在 pg_stat_activity 中", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.8", "source_hash": "72d33ac67f266dfc2f88ba11436bc5ca6ee37d538afeacfc34ec3778f740970b", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Add the ability for clients to set an application name, which is displayed in pg_stat_activity (Dave Page) This allows administrators to characterize database traffic and troubleshoot problems by source application.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/022", "db_id": "523a2ac41246721d0f8ed2adb5d3c075", "patch_ids": [], "statement_hash": "082b5299e7017928d4b26b25e1e951ef442f50af0631a65acd60c6418e97a6ed", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-237b6e40979db563", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/runtime-config-logging.html#GUC-LOG-LINE-PREFIX\"><code>log_line_prefix</code></a> 新增 SQLSTATE 选项（<code>%e</code>）（Guillaume Smet）</p>\n<p>这允许用户按错误码编号汇总错误和消息的统计信息。</p>", "text": "为 log_line_prefix 新增 SQLSTATE 选项（%e）（Guillaume Smet） 这允许用户按错误码编号汇总错误和消息的统计信息。", "title": "为 log_line_prefix 新增 SQLSTATE 选项（%e）", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.8", "source_hash": "3a43c94a47e6cd7569b7ee0ef502b130901ceda09687658d024e785a7c520dc4", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Add a SQLSTATE option (%e) to log_line_prefix (Guillaume Smet) This allows users to compile statistics on errors and messages by error code number.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/023", "db_id": "9f13cd21f2da3a262546fed86fc3e56b", "patch_ids": [], "statement_hash": "90045f449baeedd4e903af554505082b4183a4fcc2e2d72a402a8d2d982e3bd0", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6031bd5d1867abfb", "cves": [], "html": "<p>以 <acronym>UTF16</acronym> 编码写入 Windows 事件日志（Itagaki Takahiro）</p>\n<p>现在 Windows 上的 PostgreSQL 日志消息有了真正的多语言支持。</p>", "text": "以 UTF16 编码写入 Windows 事件日志（Itagaki Takahiro） 现在 Windows 上的 PostgreSQL 日志消息有了真正的多语言支持。", "title": "以 UTF16 编码写入 Windows 事件日志", "commits": [], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.8", "source_hash": "2261c57d25c9bbce358f4d138e3d21d36cb1c22e80960c3426c25bcee1d6acdd", "section_path": ["服务器", "监控"], "commit_groups": [], "identity_text": "Write to the Windows event log in UTF16 encoding (Itagaki Takahiro) Now there is true multilingual support for PostgreSQL log messages on Windows.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/024", "db_id": "05ae318a8ee211d41549514a0a4e156f", "patch_ids": [], "statement_hash": "bb1f0ac86af67a8e723e15b5d4955bcc34e708f74f720037da6c4c3ec13640a5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0c6f2dbf9f19e74a", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"表 27.2. 统计访问函数\"><code>pg_stat_reset_shared('bgwriter')</code></a>，用于重置后台写入进程的集簇级共享统计信息（Greg Smith）</p>", "text": "新增 pg_stat_reset_shared('bgwriter')，用于重置后台写入进程的集簇级共享统计信息（Greg Smith）", "title": "新增 pg_stat_reset_shared('bgwriter')，用于重置后台写入进程的集簇级共享统计信息", "commits": [], "section": "服务器 / 统计计数器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.9", "source_hash": "88faf7ca142b32dd0d608a28bcb6a0c4333ac758af46386f7f27d581493bd454", "section_path": ["服务器", "统计计数器"], "commit_groups": [], "identity_text": "Add pg_stat_reset_shared('bgwriter') to reset the cluster-wide shared statistics for the background writer (Greg Smith)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/025", "db_id": "38a7e84a6e12d2a6c2109325919203ee", "patch_ids": [], "statement_hash": "93314f8c36dc17f141445c7b84d2448622bc0d4cc710acb5b5ebc89aeb066a1e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8fae461147c325c6", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"表 27.2. 统计访问函数\"><code>pg_stat_reset_single_table_counters()</code></a> 和 <code>pg_stat_reset_single_function_counters()</code>，允许重置单个表和函数的统计计数器（Magnus Hagander）</p>", "text": "新增 pg_stat_reset_single_table_counters() 和 pg_stat_reset_single_function_counters()，允许重置单个表和函数的统计计数器（Magnus Hagander）", "title": "新增 pg_stat_reset_single_table_counters() 和 pg_stat_reset_single_function_counters()，允许重置单个表和函数的统计计数器", "commits": [], "section": "服务器 / 统计计数器", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.9", "source_hash": "7e380f973d838ed52ad8bd0531ca2c71d017fe724b9122ad74528ead43c38564", "section_path": ["服务器", "统计计数器"], "commit_groups": [], "identity_text": "Add pg_stat_reset_single_table_counters() and pg_stat_reset_single_function_counters() to allow resetting the statistics counters for individual tables and functions (Magnus Hagander)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/026", "db_id": "9c22d9ffbd11c0ee7d55243788e65fca", "patch_ids": [], "statement_hash": "2a125b8f76cc3b4991988cc5731ef09263426c512797b90162ee9cf114189e21", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-341ae6aeca81a786", "cves": [], "html": "<p>允许基于<a href=\"/docs/9.0/sql-alterrole.html\" title=\"ALTER ROLE\">数据库/角色组合</a>设置配置参数（Alvaro Herrera）</p>\n<p>此前只能按数据库和按角色设置，不能组合。所有角色和数据库设置现在存储在新的 <code>pg_db_role_setting</code> 系统目录中。新的 <span>psql</span> 命令 <code>\\drds</code> 显示这些设置。传统系统视图 <code>pg_roles</code>、<code>pg_shadow</code> 和 <code>pg_user</code> 不显示组合设置，因此不再完全表示用户或数据库的配置。</p>", "text": "允许基于数据库/角色组合设置配置参数（Alvaro Herrera） 此前只能按数据库和按角色设置，不能组合。所有角色和数据库设置现在存储在新的 pg_db_role_setting 系统目录中。新的 psql 命令 \\drds 显示这些设置。传统系统视图 pg_roles、pg_shadow 和 pg_user 不显示组合设置，因此不再完全表示用户或数据库的配置。", "title": "允许基于数据库/角色组合设置配置参数", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "d4ec0781644ec1c7914dde3cea7a6d84ea99c9bf8e5bfec783869a33ac383c64", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Allow setting of configuration parameters based on database/role combinations (Alvaro Herrera) Previously only per-database and per-role settings were possible, not combinations. All role and database settings are now stored in the new pg_db_role_setting system catalog. A new psql command \\drds shows these settings. The legacy system views pg_roles, pg_shadow, and pg_user do not show combination settings, and therefore no longer completely represent the configuration for a user or database.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/027", "db_id": "5fd0b5135641d86048cb8ae8eee9b200", "patch_ids": [], "statement_hash": "7f02f0f75ad09d86cc5bf34b925e918ec2534cc4692110abacbb874657e85f0b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-71c301968409ea21", "cves": [], "html": "<p>新增服务器参数 <a href=\"/docs/9.0/runtime-config-connection.html#GUC-BONJOUR\"><code>bonjour</code></a>，控制启用 Bonjour 的服务器是否通过 <span>Bonjour</span> 宣告自身（Tom Lane）</p>\n<p>默认为关闭，即不宣告。这使打包者可以分发启用 Bonjour 的构建，而不必担心个别用户不想要此特性。</p>", "text": "新增服务器参数 bonjour，控制启用 Bonjour 的服务器是否通过 Bonjour 宣告自身（Tom Lane） 默认为关闭，即不宣告。这使打包者可以分发启用 Bonjour 的构建，而不必担心个别用户不想要此特性。", "title": "新增服务器参数 bonjour，控制启用 Bonjour 的服务器是否通过 Bonjour 宣告自身", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "2eda4f3c073aa0f862cdbfe3f569d159c1697f0fdcbf4b87fdb81aee6350314b", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Add server parameter bonjour, which controls whether a Bonjour-enabled server advertises itself via Bonjour (Tom Lane) The default is off, meaning it does not advertise. This allows packagers to distribute Bonjour-enabled builds without worrying that individual users might not want the feature.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/028", "db_id": "63e813662c1fa2971652cddd532886f8", "patch_ids": [], "statement_hash": "183f69ae8df28706ed669d5835a639012d50ba19f6b963141f8b9a59854cc407", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-17aac9b997b955b9", "cves": [], "html": "<p>新增服务器参数 <a href=\"/docs/9.0/runtime-config-query.html#GUC-ENABLE-MATERIAL\"><code>enable_material</code></a>，控制优化器对物化节点的使用（Robert Haas）</p>\n<p>默认为开启。关闭时，优化器不会纯粹出于性能原因添加物化节点，但在正确性需要时仍会使用。</p>", "text": "新增服务器参数 enable_material，控制优化器对物化节点的使用（Robert Haas） 默认为开启。关闭时，优化器不会纯粹出于性能原因添加物化节点，但在正确性需要时仍会使用。", "title": "新增服务器参数 enable_material，控制优化器对物化节点的使用", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "03e64ab727ee1f4bc12fd4a7e93cefdecc519629a728d1ead7dcaa1968da6940", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Add server parameter enable_material, which controls the use of materialize nodes in the optimizer (Robert Haas) The default is on. When off, the optimizer will not add materialize nodes purely for performance reasons, though they will still be used when necessary for correctness.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/029", "db_id": "1bb3af40753dd9ceb1bcea26bd08f1b2", "patch_ids": [], "statement_hash": "bf076af8835ce7fce2035d5e3c205e4e45826db3aa60b2c80acdf3fa5e7543ff", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-fc114eec71ffc8bc", "cves": [], "html": "<p>更改服务器参数 <a href=\"/docs/9.0/runtime-config-logging.html#GUC-LOG-TEMP-FILES\"><code>log_temp_files</code></a>，使其默认文件大小单位为千字节（Robert Haas）</p>\n<p>此前如果未指定单位，此设置按字节解释。</p>", "text": "更改服务器参数 log_temp_files，使其默认文件大小单位为千字节（Robert Haas） 此前如果未指定单位，此设置按字节解释。", "title": "更改服务器参数 log_temp_files，使其默认文件大小单位为千字节", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "6505de213864818652de5a14b0773384043c9d0b89ab9ce9132c4f63f980632b", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Change server parameter log_temp_files to use default file size units of kilobytes (Robert Haas) Previously this setting was interpreted in bytes if no units were specified.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/030", "db_id": "ac0cf417b0862e87d3099ed52aa57b91", "patch_ids": [], "statement_hash": "96d0ec1cfbb5865d77a24e6c4d208928dcd78cf884096b63bbdcbc1f2647375f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-46591e5f8b42681d", "cves": [], "html": "<p>在重新加载 <code>postgresql.conf</code> 时记录参数值的变更（Peter Eisentraut）</p>\n<p>这使管理员和安全人员可以审计数据库设置的变更，而且对检查 <code>postgresql.conf</code> 编辑的效果也非常方便。</p>", "text": "在重新加载 postgresql.conf 时记录参数值的变更（Peter Eisentraut） 这使管理员和安全人员可以审计数据库设置的变更，而且对检查 postgresql.conf 编辑的效果也非常方便。", "title": "在重新加载 postgresql.conf 时记录参数值的变更", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "8733cfce90538253670cc39a5713bcc6c916aec13ddd9f781a653cb3501ae4eb", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Log changes of parameter values when postgresql.conf is reloaded (Peter Eisentraut) This lets administrators and security staff audit changes of database settings, and is also very convenient for checking the effects of postgresql.conf edits.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/031", "db_id": "6e63c1fa841e0041bb4394d3648826b2", "patch_ids": [], "statement_hash": "11395735da89be7ac33d1efc359f72f06d7718cdd361061b369b3d381f280aae", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a237a2f12d1209c2", "cves": [], "html": "<p>对自定义服务器参数正确强制超级用户权限（Tom Lane）</p>\n<p>非超级用户不再能对服务器当前未知的参数发出 <code>ALTER ROLE</code>/<code>DATABASE SET</code>。这使服务器能够正确检查仅超级用户参数只由超级用户设置。此前，<code>SET</code> 会被允许，然后在会话启动时被忽略，使仅超级用户自定义参数远不如应有的有用。</p>", "text": "对自定义服务器参数正确强制超级用户权限（Tom Lane） 非超级用户不再能对服务器当前未知的参数发出 ALTER ROLE/DATABASE SET。这使服务器能够正确检查仅超级用户参数只由超级用户设置。此前，SET 会被允许，然后在会话启动时被忽略，使仅超级用户自定义参数远不如应有的有用。", "title": "对自定义服务器参数正确强制超级用户权限", "commits": [], "section": "服务器 / 服务器设置", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.3.10", "source_hash": "0ca35040cb6582511f9a1b9452182f02114e6c7642cf3a5c3deaaa265f5d0d29", "section_path": ["服务器", "服务器设置"], "commit_groups": [], "identity_text": "Properly enforce superuser permissions for custom server parameters (Tom Lane) Non-superusers can no longer issue ALTER ROLE/DATABASE SET for parameters that are not currently known to the server. This allows the server to correctly check that superuser-only parameters are only set by superusers. Previously, the SET would be allowed and then ignored at session start, making superuser-only custom parameters much less useful than they should be.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/032", "db_id": "f4b59b256d78ed2be1264e67285f115f", "patch_ids": [], "statement_hash": "93a127d04295709dc42d9edfb8f90bc0056cdab2df971f0c9a199bab051f0ec4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-be822ca9d04114d8", "cves": [], "html": "<p>在应用 <code>LIMIT</code> 之后执行 <a href=\"/docs/9.0/sql-select.html#SQL-FOR-UPDATE-SHARE\" title=\"FOR UPDATE/FOR SHARE Clause\"><code>SELECT FOR UPDATE</code>/<code>SHARE</code></a> 处理，使返回的行数总是可预测（Tom Lane）</p>\n<p>此前，并发事务所做的更改可能导致 <code>SELECT FOR UPDATE</code> 意外返回少于 <code>LIMIT</code> 指定的行数。<code>FOR UPDATE</code> 与 <code>ORDER BY</code> 组合仍可能产生令人惊讶的结果，但可以通过把 <code>FOR UPDATE</code> 放在子查询中来纠正。</p>", "text": "在应用 LIMIT 之后执行 SELECT FOR UPDATE/SHARE 处理，使返回的行数总是可预测（Tom Lane） 此前，并发事务所做的更改可能导致 SELECT FOR UPDATE 意外返回少于 LIMIT 指定的行数。FOR UPDATE 与 ORDER BY 组合仍可能产生令人惊讶的结果，但可以通过把 FOR UPDATE 放在子查询中来纠正。", "title": "在应用 LIMIT 之后执行 SELECT FOR UPDATE/SHARE 处理，使返回的行数总是可预测", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4", "source_hash": "1c38059aaf8850cf19dd79fb85aea787537e03ca016c28cfe4d44ed2574707cb", "section_path": ["查询"], "commit_groups": [], "identity_text": "Perform SELECT FOR UPDATE/SHARE processing after applying LIMIT, so the number of rows returned is always predictable (Tom Lane) Previously, changes made by concurrent transactions could cause a SELECT FOR UPDATE to unexpectedly return fewer rows than specified by its LIMIT. FOR UPDATE in combination with ORDER BY can still produce surprising results, but that can be corrected by placing FOR UPDATE in a subquery.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/033", "db_id": "8c1672f74e848c716eeca1b9e0715f7e", "patch_ids": [], "statement_hash": "cf056fc0f0ebc74ee366d3fa0f7854cafe6b97bce1c98af829dee4c079bfcf8a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-dfe82d08b3372f78", "cves": [], "html": "<p>允许混用传统与 SQL 标准的 <a href=\"/docs/9.0/sql-select.html#SQL-LIMIT\" title=\"LIMIT Clause\"><code>LIMIT</code>/<code>OFFSET</code></a> 语法（Tom Lane）</p>", "text": "允许混用传统与 SQL 标准的 LIMIT/OFFSET 语法（Tom Lane）", "title": "允许混用传统与 SQL 标准的 LIMIT/OFFSET 语法", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4", "source_hash": "535a363065f5c4dd1b1292fbe9dca2666c5de7e148e9cacc6c84879faf8bf56a", "section_path": ["查询"], "commit_groups": [], "identity_text": "Allow mixing of traditional and SQL-standard LIMIT/OFFSET syntax (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/034", "db_id": "6bb3ae2d0e1828a9fa805510793ee828", "patch_ids": [], "statement_hash": "e459c289f27d005d88d8f32172c4ff52bb35b3c5f927348d6e4a495da68869c9", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4aca21cad118abfc", "cves": [], "html": "<p>扩展<a href=\"/docs/9.0/sql-select.html#SQL-WINDOW\" title=\"WINDOW Clause\">窗口函数</a>支持的帧选项（Hitoshi Harada）</p>\n<p>帧现在可以以 <code>CURRENT ROW</code> 开始，并且支持 <code>ROWS <em><code>n</code></em> PRECEDING</code>/<code>FOLLOWING</code> 选项。</p>", "text": "扩展窗口函数支持的帧选项（Hitoshi Harada） 帧现在可以以 CURRENT ROW 开始，并且支持 ROWS n PRECEDING/FOLLOWING 选项。", "title": "扩展窗口函数支持的帧选项", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4", "source_hash": "a99257f81c862cae5c036de2607cf3b5bd9981395248e09c6b76b4aa3edf54fc", "section_path": ["查询"], "commit_groups": [], "identity_text": "Extend the supported frame options in window functions (Hitoshi Harada) Frames can now start with CURRENT ROW, and the ROWS n PRECEDING/FOLLOWING options are now supported.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/035", "db_id": "0d4b91d4e83fde6ad6d681125119ca11", "patch_ids": [], "statement_hash": "859d4b6d1b00ccbfe977fecb220448a6fb902cd887d4b14b90edc971f5b8d762", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-150bb0b1b47d2b55", "cves": [], "html": "<p>让 <code>SELECT INTO</code> 和 <code>CREATE TABLE AS</code> 在其命令标签中向客户端返回行数（Boszormenyi Zoltan）</p>\n<p>这可以省去一整次到客户端的往返，允许在不需要额外 <code>COUNT</code> 查询的情况下计算结果数和分页。</p>", "text": "让 SELECT INTO 和 CREATE TABLE AS 在其命令标签中向客户端返回行数（Boszormenyi Zoltan） 这可以省去一整次到客户端的往返，允许在不需要额外 COUNT 查询的情况下计算结果数和分页。", "title": "让 SELECT INTO 和 CREATE TABLE AS 在其命令标签中向客户端返回行数", "commits": [], "section": "查询", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4", "source_hash": "418c8109887e052e770e9dd7b5c7e0636953a00367e65fe66fb5270e9baae5bd", "section_path": ["查询"], "commit_groups": [], "identity_text": "Make SELECT INTO and CREATE TABLE AS return row counts to the client in their command tags (Boszormenyi Zoltan) This can save an entire round-trip to the client, allowing result counts and pagination to be calculated without an additional COUNT query.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/036", "db_id": "1c4be4c55fa2909c241cd9e210762976", "patch_ids": [], "statement_hash": "d466f9bf558b2739404ab29cbe7cca9f271bdacc9b9bf43add6d456966c419e2", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b98f30da2d3acff3", "cves": [], "html": "<p>在 <a href=\"/docs/9.0/sql-syntax.html#SQL-SYNTAX-STRINGS-UESCAPE\" title=\"4.1.2.3. 带有 Unicode 转义的字符串常量\"><code>U&amp;</code></a> 字符串和标识符中支持 Unicode 代理对（双 16 位表示）（Peter Eisentraut）</p>", "text": "在 U& 字符串和标识符中支持 Unicode 代理对（双 16 位表示）（Peter Eisentraut）", "title": "在 U& 字符串和标识符中支持 Unicode 代理对（双 16 位表示）", "commits": [], "section": "查询 / Unicode 字符串", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4.3", "source_hash": "1788f158849cd9dafbc584816febb31411c64cc5d3ea1f44f66f4fa6b7893517", "section_path": ["查询", "Unicode 字符串"], "commit_groups": [], "identity_text": "Support Unicode surrogate pairs (dual 16-bit representation) in U& strings and identifiers (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/037", "db_id": "70231e7112bbc171b5c51c912d480233", "patch_ids": [], "statement_hash": "02d921f474a1c4eca5014f71bf53392fe23596962745abe57533a8e6df980779", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5d15f7ccb88a857e", "cves": [], "html": "<p>在 <a href=\"/docs/9.0/sql-syntax.html#SQL-SYNTAX-STRINGS-ESCAPE\" title=\"4.1.2.2. C风格转义的字符串常量\"><code>E'...'</code></a> 字符串中支持 Unicode 转义（Marko Kreen）</p>", "text": "在 E'...' 字符串中支持 Unicode 转义（Marko Kreen）", "title": "在 E'...' 字符串中支持 Unicode 转义", "commits": [], "section": "查询 / Unicode 字符串", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.4.3", "source_hash": "4d7b405fae5d7dcaceeed900a64fb7a0434e65a05230ae2e098b9e1634bb4843", "section_path": ["查询", "Unicode 字符串"], "commit_groups": [], "identity_text": "Support Unicode escapes in E'...' strings (Marko Kreen)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/038", "db_id": "6732d57acb5c81039ecacbc346d32483", "patch_ids": [], "statement_hash": "fbd809f8e6fcf85a095fcf19df0d3f230bab0f33787d914ae822d70fa812be4e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0d4bc3dcd65729f7", "cves": [], "html": "<p>通过推迟刷盘加速 <a href=\"/docs/9.0/sql-createdatabase.html\" title=\"CREATE DATABASE\"><code>CREATE DATABASE</code></a>（Andres Freund、Greg Stark）</p>", "text": "通过推迟刷盘加速 CREATE DATABASE（Andres Freund、Greg Stark）", "title": "通过推迟刷盘加速 CREATE DATABASE", "commits": [], "section": "对象操作", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5", "source_hash": "73417122793a9434fda2898d07e01f4c4744d802dfaa792cb0cbe1c7a0a1df54", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Speed up CREATE DATABASE by deferring flushes to disk (Andres Freund, Greg Stark)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/039", "db_id": "cf9ff9728392c3c0b5441274c0a2a63f", "patch_ids": [], "statement_hash": "069db9e2ed433f3e64933e4be0b77db23ebd67ca0dc9782baeecb8aca6471377", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2e5651e99e50a281", "cves": [], "html": "<p>只允许对表、视图和组合类型的列加<a href=\"/docs/9.0/sql-comment.html\" title=\"COMMENT\">注释</a>，不允许对索引和 <acronym>TOAST</acronym> 表等其他关系类型（Tom Lane）</p>", "text": "只允许对表、视图和组合类型的列加注释，不允许对索引和 TOAST 表等其他关系类型（Tom Lane）", "title": "只允许对表、视图和组合类型的列加注释，不允许对索引和 TOAST 表等其他关系类型", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5", "source_hash": "4f656f3e7ab0d43c9408eae9f0df0b8e09a32938eb91d8298faeb1bb1c00c759", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Allow comments on columns of tables, views, and composite types only, not other relation types such as indexes and TOAST tables (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/040", "db_id": "416a0d3b84151f736a9f5cb504f0dac0", "patch_ids": [], "statement_hash": "134389e19c67738431959894091093debbac6be4038e2be0e4f3c6b7c3b94221", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-11219011a59cd467", "cves": [], "html": "<p>允许创建不含任何值的<a href=\"/docs/9.0/sql-createtype.html#SQL-CREATETYPE-ENUM\" title=\"枚举类型\">枚举类型</a>（Bruce Momjian）</p>", "text": "允许创建不含任何值的枚举类型（Bruce Momjian）", "title": "允许创建不含任何值的枚举类型", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5", "source_hash": "5714e1b089d848e5758ee89715e45ae2d4755e06f7fd0f446295daad9399963a", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Allow the creation of enumerated types containing no values (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/041", "db_id": "97fe8cff2127cac1b853c645cf23788d", "patch_ids": [], "statement_hash": "31d3eec935dd3432f746f5863e33db3994cccbf98ed04c42367ff76ec53e4e9d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-abe988e9098c3f4c", "cves": [], "html": "<p>让存储类型为 <code>MAIN</code> 的列值保留在主堆页上，除非行放不进一个页面（Kevin Grittner）</p>\n<p>此前 <code>MAIN</code> 值会被强制移出到 <acronym>TOAST</acronym> 表，直到行大小小于页面大小的四分之一。</p>", "text": "让存储类型为 MAIN 的列值保留在主堆页上，除非行放不进一个页面（Kevin Grittner） 此前 MAIN 值会被强制移出到 TOAST 表，直到行大小小于页面大小的四分之一。", "title": "让存储类型为 MAIN 的列值保留在主堆页上，除非行放不进一个页面", "commits": [], "section": "对象操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5", "source_hash": "c476b0cb4788c0cebb4004ee57effd1b272efac02fba32f4de91f17bf0bd5ddc", "section_path": ["对象操作"], "commit_groups": [], "identity_text": "Let values of columns having storage type MAIN remain on the main heap page unless the row cannot fit on a page (Kevin Grittner) Previously MAIN values were forced out to TOAST tables until the row size was less than one-quarter of the page size.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/042", "db_id": "bce596242d3517f24f982e6841358f82", "patch_ids": [], "statement_hash": "177f02cd09187a2cf3dc5c58cf98797aeb20c38b9ff8159f50b8c1d9d4c1da84", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-ac98094a23ce17d9", "cves": [], "html": "<p>为 <code>ALTER TABLE DROP COLUMN</code> 和 <code>ALTER TABLE DROP CONSTRAINT</code> 实现 <code>IF EXISTS</code>（Andres Freund）</p>", "text": "为 ALTER TABLE DROP COLUMN 和 ALTER TABLE DROP CONSTRAINT 实现 IF EXISTS（Andres Freund）", "title": "为 ALTER TABLE DROP COLUMN 和 ALTER TABLE DROP CONSTRAINT 实现 IF EXISTS", "commits": [], "section": "对象操作 / ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.3", "source_hash": "ccf8c76d96b59e8912b32a0575bb4469006b14612f4309b4315b7659cb0046c4", "section_path": ["对象操作", "ALTER TABLE"], "commit_groups": [], "identity_text": "Implement IF EXISTS for ALTER TABLE DROP COLUMN and ALTER TABLE DROP CONSTRAINT (Andres Freund)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/043", "db_id": "418a23d25e770231a316dc57e45bf3fb", "patch_ids": [], "statement_hash": "184696652d8abf114e4eec5b00ede5117895bd899e24881f222f7d38bc21eb0f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-74d9ab9870b7a6b0", "cves": [], "html": "<p>允许重写表的 <code>ALTER TABLE</code> 命令跳过 <acronym>WAL</acronym> 日志记录（Itagaki Takahiro）</p>\n<p>这类操作要么产生表的新副本要么回滚，因此可以跳过 <acronym>WAL</acronym> 归档，除非运行在连续归档模式下。这减少了 I/O 开销并改进了性能。</p>", "text": "允许重写表的 ALTER TABLE 命令跳过 WAL 日志记录（Itagaki Takahiro） 这类操作要么产生表的新副本要么回滚，因此可以跳过 WAL 归档，除非运行在连续归档模式下。这减少了 I/O 开销并改进了性能。", "title": "允许重写表的 ALTER TABLE 命令跳过 WAL 日志记录", "commits": [], "section": "对象操作 / ALTER TABLE", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.3", "source_hash": "47d4c9faae882d086a05d63a6c449d9cd05859a382731562282c3955b47455cf", "section_path": ["对象操作", "ALTER TABLE"], "commit_groups": [], "identity_text": "Allow ALTER TABLE commands that rewrite tables to skip WAL logging (Itagaki Takahiro) Such operations either produce a new copy of the table or are rolled back, so WAL archiving can be skipped, unless running in continuous archiving mode. This reduces I/O overhead and improves performance.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/044", "db_id": "5bc7cfe453b6eb76e67e3bee54373bda", "patch_ids": [], "statement_hash": "f7c1586a097ecf7202ddf4cf3508715349d6b4b4ffa8137004fd06ce3d3b1766", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-711d78c93509c307", "cves": [], "html": "<p>修复由非表所有者执行 <code>ALTER TABLE <em><code>table</code></em> ADD COLUMN <em><code>col</code></em> serial</code> 时的失败（Tom Lane）</p>", "text": "修复由非表所有者执行 ALTER TABLE table ADD COLUMN col serial 时的失败（Tom Lane）", "title": "修复由非表所有者执行 ALTER TABLE table ADD COLUMN col serial 时的失败", "commits": [], "section": "对象操作 / ALTER TABLE", "category": "bugfix", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.3", "source_hash": "3782d306958b4d582f54f3361137232623adb9f64f16e25bb1b7ef0c0363565c", "section_path": ["对象操作", "ALTER TABLE"], "commit_groups": [], "identity_text": "Fix failure of ALTER TABLE table ADD COLUMN col serial when done by non-owner of table (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/045", "db_id": "56a45ca27c2f48ac7e6a19b8d1956b9b", "patch_ids": [], "statement_hash": "6b24eb7d7a7dca33aaa181d1b55dd3183da2ca3da34fd486b382829c7d014727", "relations": [], "version": "9.0.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e31bd7e72ac911d4", "cves": [], "html": "<p>为 <code>CREATE TABLE ... LIKE</code> 命令新增复制 <code>COMMENTS</code> 和 <code>STORAGE</code> 设置的支持（Itagaki Takahiro）</p>", "text": "为 CREATE TABLE ... LIKE 命令新增复制 COMMENTS 和 STORAGE 设置的支持（Itagaki Takahiro）", "title": "为 CREATE TABLE ... LIKE 命令新增复制 COMMENTS 和 STORAGE 设置的支持", "commits": [], "section": "对象操作 / CREATE TABLE", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.4", "source_hash": "0acc905e0f7d0e840ff94148db3ae918d31da1d313e9e706032db1700316415d", "section_path": ["对象操作", "CREATE TABLE"], "commit_groups": [], "identity_text": "Add support for copying COMMENTS and STORAGE settings in CREATE TABLE ... LIKE commands (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/046", "db_id": "2a444d71e2f63f09a3ed79ed15c1db77", "patch_ids": [], "statement_hash": "45dc711f82c3188e999521b983ff5a7142c932f6d23a0d578ea8f7fefae026cd", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3ad70120bb334c82", "cves": [], "html": "<p>为 <code>CREATE TABLE ... LIKE</code> 命令新增复制所有属性的快捷方式（Itagaki Takahiro）</p>", "text": "为 CREATE TABLE ... LIKE 命令新增复制所有属性的快捷方式（Itagaki Takahiro）", "title": "为 CREATE TABLE ... LIKE 命令新增复制所有属性的快捷方式", "commits": [], "section": "对象操作 / CREATE TABLE", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.4", "source_hash": "82552dd03601a6368cf236d65ed3746969da4d3ce63e18d42d1e93d652887437", "section_path": ["对象操作", "CREATE TABLE"], "commit_groups": [], "identity_text": "Add a shortcut for copying all properties in CREATE TABLE ... LIKE commands (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/047", "db_id": "9895cd9d07813c4595c340e4d8780213", "patch_ids": [], "statement_hash": "1f66353dba47ceb9052a394ad00644020635f9d4ca49e72672854122169ee70f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-42dd80aa6ead4eb3", "cves": [], "html": "<p>新增 SQL 标准的 <code>CREATE TABLE ... OF <em><code>type</code></em></code> 命令（Peter Eisentraut）</p>\n<p>这允许创建匹配现有组合类型的表。命令中还可以指定额外的约束和默认值。</p>", "text": "新增 SQL 标准的 CREATE TABLE ... OF type 命令（Peter Eisentraut） 这允许创建匹配现有组合类型的表。命令中还可以指定额外的约束和默认值。", "title": "新增 SQL 标准的 CREATE TABLE ... OF type 命令", "commits": [], "section": "对象操作 / CREATE TABLE", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.4", "source_hash": "e7fefb788f767e170a67da6c92d77b9d22c065f87452c8eba0aeccc4141973da", "section_path": ["对象操作", "CREATE TABLE"], "commit_groups": [], "identity_text": "Add the SQL-standard CREATE TABLE ... OF type command (Peter Eisentraut) This allows creation of a table that matches an existing composite type. Additional constraints and defaults can be specified in the command.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/048", "db_id": "28023d74d710f7436fe349936ec3543d", "patch_ids": [], "statement_hash": "85c9f44776bd3aea564832a6e50861688a7bb84bda660e391b5b8137ba96ee61", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-62d3b44b2699e3ba", "cves": [], "html": "<p>新增<a href=\"/docs/9.0/sql-createtable.html#SQL-CREATETABLE-COMPATIBILITY\" title=\"兼容性\">可延迟唯一约束</a>（Dean Rasheed）</p>\n<p>这使批量更新（例如 <code>UPDATE tab SET col = col + 1</code>）能够在有唯一索引或标记为主键的列上可靠工作。如果约束指定为 <code>DEFERRABLE</code>，它将在语句末尾而不是每行更新后检查。约束检查还可以推迟到当前事务末尾，使这类更新可以分散到多个 SQL 命令中。</p>", "text": "新增可延迟唯一约束（Dean Rasheed） 这使批量更新（例如 UPDATE tab SET col = col + 1）能够在有唯一索引或标记为主键的列上可靠工作。如果约束指定为 DEFERRABLE，它将在语句末尾而不是每行更新后检查。约束检查还可以推迟到当前事务末尾，使这类更新可以分散到多个 SQL 命令中。", "title": "新增可延迟唯一约束", "commits": [], "section": "对象操作 / 约束", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.5", "source_hash": "0cf337fbf1241bee589e299c3ba11cf915456da9c583f9a65956120da723d1e7", "section_path": ["对象操作", "约束"], "commit_groups": [], "identity_text": "Add deferrable unique constraints (Dean Rasheed) This allows mass updates, such as UPDATE tab SET col = col + 1, to work reliably on columns that have unique indexes or are marked as primary keys. If the constraint is specified as DEFERRABLE it will be checked at the end of the statement, rather than after each row is updated. The constraint check can also be deferred until the end of the current transaction, allowing such updates to be spread over multiple SQL commands.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/049", "db_id": "c9ec185f4b2a4a7682f90193396ca8c6", "patch_ids": [], "statement_hash": "5ebcae2a37fac06cba6719862ffff6d410159e59f52357f0e8a01cd81ed0d1e5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-580f2e55f464173d", "cves": [], "html": "<p>新增<a href=\"/docs/9.0/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION\" title=\"5.3.6. 排他约束\">排他约束</a>（Jeff Davis）</p>\n<p>排他约束通过允许任意比较操作符（而不仅仅是相等）来泛化唯一约束。它们通过 <a href=\"/docs/9.0/sql-createtable.html#SQL-CREATETABLE-EXCLUDE\"><code>CREATE TABLE CONSTRAINT ... EXCLUDE</code></a> 子句创建。排他约束最常见的用途是指定列项不得重叠，而不仅仅是不相等。这对时间段和其他范围以及数组都很有用。此特性增强了许多日历、时间管理和科学应用的数据完整性检查。</p>", "text": "新增排他约束（Jeff Davis） 排他约束通过允许任意比较操作符（而不仅仅是相等）来泛化唯一约束。它们通过 CREATE TABLE CONSTRAINT ... EXCLUDE 子句创建。排他约束最常见的用途是指定列项不得重叠，而不仅仅是不相等。这对时间段和其他范围以及数组都很有用。此特性增强了许多日历、时间管理和科学应用的数据完整性检查。", "title": "新增排他约束", "commits": [], "section": "对象操作 / 约束", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.5", "source_hash": "c7eb4be11ca2872f4d596f3271bfe8979726569376ca2dab536f03cf950d2822", "section_path": ["对象操作", "约束"], "commit_groups": [], "identity_text": "Add exclusion constraints (Jeff Davis) Exclusion constraints generalize uniqueness constraints by allowing arbitrary comparison operators, not just equality. They are created with the CREATE TABLE CONSTRAINT ... EXCLUDE clause. The most common use of exclusion constraints is to specify that column entries must not overlap, rather than simply not be equal. This is useful for time periods and other ranges, as well as arrays. This feature enhances checking of data integrity for many calendaring, time-management, and scientific applications.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/050", "db_id": "1a7d8b04203a60df02e4c9b5fca55803", "patch_ids": [], "statement_hash": "bbf3eb5e9630dc7041d353b3905a28ffb4a1783dcb544c8570ed4da8dc63ad4e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0dc3136796588ddb", "cves": [], "html": "<p>改进唯一约束违规错误消息，报告导致失败的值（Itagaki Takahiro）</p>\n<p>例如，唯一约束违规现在可能报告 <code>Key (x)=(2) already exists</code>。</p>", "text": "改进唯一约束违规错误消息，报告导致失败的值（Itagaki Takahiro） 例如，唯一约束违规现在可能报告 Key (x)=(2) already exists。", "title": "改进唯一约束违规错误消息，报告导致失败的值", "commits": [], "section": "对象操作 / 约束", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.5", "source_hash": "768e3a1ba01da4e5ffbb25565b8226542ecc8111e49cc113e4cb2e1d2b1200b1", "section_path": ["对象操作", "约束"], "commit_groups": [], "identity_text": "Improve uniqueness-constraint violation error messages to report the values causing the failure (Itagaki Takahiro) For example, a uniqueness constraint violation might now report Key (x)=(2) already exists.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/051", "db_id": "46eb0e177ac82a74a2e0dc1074bbe687", "patch_ids": [], "statement_hash": "2d3c05c909573fd0b3c1b02d2e7a787055933c0f6a0640f0af137c1df18d6f16", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-9f92584092d55424", "cves": [], "html": "<p>新增使用新的 <a href=\"/docs/9.0/sql-grant.html\" title=\"GRANT\"><code>GRANT</code>/<code>REVOKE IN SCHEMA</code></a> 子句在整个模式内批量修改权限的能力（Petr Jelinek）</p>\n<p>这简化了对象权限的管理，并使为应用数据安全利用数据库角色更加容易。</p>", "text": "新增使用新的 GRANT/REVOKE IN SCHEMA 子句在整个模式内批量修改权限的能力（Petr Jelinek） 这简化了对象权限的管理，并使为应用数据安全利用数据库角色更加容易。", "title": "新增使用新的 GRANT/REVOKE IN SCHEMA 子句在整个模式内批量修改权限的能力", "commits": [], "section": "对象操作 / 对象权限", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.6", "source_hash": "4117e2c3a955d76b340d2ea12844b85bf4af4c2ed18e85a9f71d9376a5afec4f", "section_path": ["对象操作", "对象权限"], "commit_groups": [], "identity_text": "Add the ability to make mass permission changes across a whole schema using the new GRANT/REVOKE IN SCHEMA clause (Petr Jelinek) This simplifies management of object permissions and makes it easier to utilize database roles for application data security.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/052", "db_id": "52e72a4be321701e4c5fd98bffb777a5", "patch_ids": [], "statement_hash": "815aca5d66bf739603f9f5a6fa8b7646758aa55a0cae2595b63b413c2a913834", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-56170c9a9710cc72", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/sql-alterdefaultprivileges.html\" title=\"ALTER DEFAULT PRIVILEGES\"><code>ALTER DEFAULT PRIVILEGES</code></a> 命令，用于控制稍后创建的对象的权限（Petr Jelinek）</p>\n<p>这大幅简化了复杂数据库应用中对象权限的分配。可以为表、视图、序列和函数设置默认权限。默认值可以按模式分配，也可以数据库范围分配。</p>", "text": "新增 ALTER DEFAULT PRIVILEGES 命令，用于控制稍后创建的对象的权限（Petr Jelinek） 这大幅简化了复杂数据库应用中对象权限的分配。可以为表、视图、序列和函数设置默认权限。默认值可以按模式分配，也可以数据库范围分配。", "title": "新增 ALTER DEFAULT PRIVILEGES 命令，用于控制稍后创建的对象的权限", "commits": [], "section": "对象操作 / 对象权限", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.6", "source_hash": "d3b92e4efeac5f7922665c2819ed5d7e10cdc4c8af97b45d0cd1eaf217b3a53d", "section_path": ["对象操作", "对象权限"], "commit_groups": [], "identity_text": "Add ALTER DEFAULT PRIVILEGES command to control privileges of objects created later (Petr Jelinek) This greatly simplifies the assignment of object privileges in a complex database application. Default privileges can be set for tables, views, sequences, and functions. Defaults may be assigned on a per-schema basis, or database-wide.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/053", "db_id": "fdf60726f13b8375986345a0c20f43b5", "patch_ids": [], "statement_hash": "e6039360ef4c0079483695126bf7644deff8e8ab2e30beda31d6dad6731c5ea8", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-59967ba39df774b3", "cves": [], "html": "<p>新增用 <code>GRANT</code>/<code>REVOKE</code> 控制大对象（BLOB）权限的能力（KaiGai Kohei）</p>\n<p>此前任何数据库用户都可以读取或修改任何大对象。现在可以逐大对象授予和撤销读写权限，并且会跟踪大对象的所有权。</p>", "text": "新增用 GRANT/REVOKE 控制大对象（BLOB）权限的能力（KaiGai Kohei） 此前任何数据库用户都可以读取或修改任何大对象。现在可以逐大对象授予和撤销读写权限，并且会跟踪大对象的所有权。", "title": "新增用 GRANT/REVOKE 控制大对象（BLOB）权限的能力", "commits": [], "section": "对象操作 / 对象权限", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.5.6", "source_hash": "ae4ed4de8e2d7799959ef8e7ddce818355750219db9af70f7541873465616f16", "section_path": ["对象操作", "对象权限"], "commit_groups": [], "identity_text": "Add the ability to control large object (BLOB) permissions with GRANT/REVOKE (KaiGai Kohei) Formerly, any database user could read or modify any large object. Read and write permissions can now be granted and revoked per large object, and the ownership of large objects is tracked.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/054", "db_id": "df318b7ab7dda32946f9c3127e50baee", "patch_ids": [], "statement_hash": "df110d3ec6ca2b651d16d29771b161fdde28e4c4ae393fc5a081e73dc122d983", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-de071464569afc61", "cves": [], "html": "<p>让 <a href=\"/docs/9.0/sql-listen.html\" title=\"LISTEN\"><code>LISTEN</code></a>/<a href=\"/docs/9.0/sql-notify.html\" title=\"NOTIFY\"><code>NOTIFY</code></a> 把未决事件存储在内存队列而不是系统表中（Joachim Wieland）</p>\n<p>这大幅改进了性能，同时保留了事务支持和保证送达的现有特性。</p>", "text": "让 LISTEN/NOTIFY 把未决事件存储在内存队列而不是系统表中（Joachim Wieland） 这大幅改进了性能，同时保留了事务支持和保证送达的现有特性。", "title": "让 LISTEN/NOTIFY 把未决事件存储在内存队列而不是系统表中", "commits": [], "section": "工具操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6", "source_hash": "568ef92c5978878c97b86863286bccfa510f40485f9db797bd8a4c8edbeb4073", "section_path": ["工具操作"], "commit_groups": [], "identity_text": "Make LISTEN/NOTIFY store pending events in a memory queue, rather than in a system table (Joachim Wieland) This substantially improves performance, while retaining the existing features of transactional support and guaranteed delivery.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/055", "db_id": "4452178216d475e0245686a33f5e1845", "patch_ids": [], "statement_hash": "e2495c5cce1c61ea6fd1969fdcf40023d3a23907365b784acb8c45d938db8b67", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6c3e3af9fd1c3e43", "cves": [], "html": "<p>允许 <a href=\"/docs/9.0/sql-notify.html\" title=\"NOTIFY\"><code>NOTIFY</code></a> 向监听者传递可选的<span>“<span>载荷</span>”</span>字符串（Joachim Wieland）</p>\n<p>这大幅提升了 <code>LISTEN</code>/<code>NOTIFY</code> 作为通用事件队列系统的实用性。</p>", "text": "允许 NOTIFY 向监听者传递可选的“载荷”字符串（Joachim Wieland） 这大幅提升了 LISTEN/NOTIFY 作为通用事件队列系统的实用性。", "title": "允许 NOTIFY 向监听者传递可选的“载荷”字符串", "commits": [], "section": "工具操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6", "source_hash": "2b39dfaa2a53cba3538919e3517695e6d69b832a0b329dd2397adb3ac1e9c026", "section_path": ["工具操作"], "commit_groups": [], "identity_text": "Allow NOTIFY to pass an optional payload string to listeners (Joachim Wieland) This greatly improves the usefulness of LISTEN/NOTIFY as a general-purpose event queue system.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/056", "db_id": "9c71f1f31b15da00160826fe32553484", "patch_ids": [], "statement_hash": "96ac7c81a806e7e3f6df7c6bfc8b78f7ec5836f447481b78e64c4dcb85b3af10", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2df19168f3bb012c", "cves": [], "html": "<p>允许对所有逐数据库系统目录执行 <a href=\"/docs/9.0/sql-cluster.html\" title=\"CLUSTER\"><code>CLUSTER</code></a>（Tom Lane）</p>\n<p>共享目录仍然不能聚簇。</p>", "text": "允许对所有逐数据库系统目录执行 CLUSTER（Tom Lane） 共享目录仍然不能聚簇。", "title": "允许对所有逐数据库系统目录执行 CLUSTER", "commits": [], "section": "工具操作", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6", "source_hash": "97476b4cffd73717ce2db074a16148620e93d551375eae3286102203d9e767ef", "section_path": ["工具操作"], "commit_groups": [], "identity_text": "Allow CLUSTER on all per-database system catalogs (Tom Lane) Shared catalogs still cannot be clustered.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/057", "db_id": "9fc1a52fe3e4d30169a9fd1c5d44337a", "patch_ids": [], "statement_hash": "be44de2a7fa26166aa716f1b1bd61f91cbdf91a778811514414d39af80e93769", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-59bc43c83cedea2a", "cves": [], "html": "<p>接受 <code>COPY ... CSV FORCE QUOTE *</code>（Itagaki Takahiro）</p>\n<p>现在 <code>*</code> 可用作 <code>FORCE QUOTE</code> 子句中<span>“<span>所有列</span>”</span>的简写。</p>", "text": "接受 COPY ... CSV FORCE QUOTE *（Itagaki Takahiro） 现在 * 可用作 FORCE QUOTE 子句中“所有列”的简写。", "title": "接受 COPY ... CSV FORCE QUOTE *", "commits": [], "section": "工具操作 / COPY", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.3", "source_hash": "04e082b68d51de78eac66c7c85c131290e9da75d5387d04f349c47f2262961c5", "section_path": ["工具操作", "COPY"], "commit_groups": [], "identity_text": "Accept COPY ... CSV FORCE QUOTE * (Itagaki Takahiro) Now * can be used as shorthand for all columns in the FORCE QUOTE clause.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/058", "db_id": "3ba6a20de2f68c609082549089482e95", "patch_ids": [], "statement_hash": "f5910322c6a1a01b4ef76bf25dec2c828443a4ce6ae52347224145c4a5d5575f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0cfe8a02aec9c023", "cves": [], "html": "<p>新增允许在括号内指定选项的 <code>COPY</code> 语法（Robert Haas、Emmanuel Cecchet）</p>\n<p>这为未来的 <code>COPY</code> 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。</p>", "text": "新增允许在括号内指定选项的 COPY 语法（Robert Haas、Emmanuel Cecchet） 这为未来的 COPY 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。", "title": "新增允许在括号内指定选项的 COPY 语法", "commits": [], "section": "工具操作 / COPY", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.3", "source_hash": "68395ae0fd03e805158a468a40b52ca9e10698985ca06fc4cded7f08104d91d2", "section_path": ["工具操作", "COPY"], "commit_groups": [], "identity_text": "Add new COPY syntax that allows options to be specified inside parentheses (Robert Haas, Emmanuel Cecchet) This allows greater flexibility for future COPY options. The old syntax is still supported, but only for pre-existing options.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/059", "db_id": "f82fdc0b1a76ad1030783e7921038c26", "patch_ids": [], "statement_hash": "f42dccc82fbaf2deb8f2f890220a4e022a8fa2701ed07ebd74bedc310fc4d94f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3a02e57533ac4e8b", "cves": [], "html": "<p>允许 <code>EXPLAIN</code> 以 <acronym>XML</acronym>、<acronym>JSON</acronym> 或 <acronym>YAML</acronym> 格式输出（Robert Haas、Greg Sabino Mullane）</p>\n<p>新的输出格式易于机器读取，支持开发分析 <code>EXPLAIN</code> 输出的新工具。</p>", "text": "允许 EXPLAIN 以 XML、JSON 或 YAML 格式输出（Robert Haas、Greg Sabino Mullane） 新的输出格式易于机器读取，支持开发分析 EXPLAIN 输出的新工具。", "title": "允许 EXPLAIN 以 XML、JSON 或 YAML 格式输出", "commits": [], "section": "工具操作 / EXPLAIN", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.4", "source_hash": "8c55c6a52468cd353e1a1fdb7f4201c3bc9b27e30017fc3bb1498e1bf48ce7d1", "section_path": ["工具操作", "EXPLAIN"], "commit_groups": [], "identity_text": "Allow EXPLAIN to output in XML, JSON, or YAML format (Robert Haas, Greg Sabino Mullane) The new output formats are easily machine-readable, supporting the development of new tools for analysis of EXPLAIN output.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/060", "db_id": "52ec77867d09de784911a4c883ac6ddc", "patch_ids": [], "statement_hash": "de3f3749aee3cb17c17bb4df334a20786151b3ac9aa44573f419b83bc363a654", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a938134f4921b7c0", "cves": [], "html": "<p>新增 <code>BUFFERS</code> 选项，用于在 <code>EXPLAIN ANALYZE</code> 期间报告查询缓冲区使用情况（Itagaki Takahiro）</p>\n<p>这允许对单个查询做更好的分析。缓冲区使用情况不再报告在 <a href=\"/docs/9.0/runtime-config-statistics.html#RUNTIME-CONFIG-STATISTICS-MONITOR\" title=\"18.8.2. 统计监控\">log_statement_stats</a> 及相关设置的输出中。</p>", "text": "新增 BUFFERS 选项，用于在 EXPLAIN ANALYZE 期间报告查询缓冲区使用情况（Itagaki Takahiro） 这允许对单个查询做更好的分析。缓冲区使用情况不再报告在 log_statement_stats 及相关设置的输出中。", "title": "新增 BUFFERS 选项，用于在 EXPLAIN ANALYZE 期间报告查询缓冲区使用情况", "commits": [], "section": "工具操作 / EXPLAIN", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.4", "source_hash": "fcbaf8b58597479bfcf4115863da1f65392468202e0b72b39e2e0ebb2f3e89dd", "section_path": ["工具操作", "EXPLAIN"], "commit_groups": [], "identity_text": "Add new BUFFERS option to report query buffer usage during EXPLAIN ANALYZE (Itagaki Takahiro) This allows better query profiling for individual queries. Buffer usage is no longer reported in the output for log_statement_stats and related settings.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/061", "db_id": "4e4eb7a9d1255bef5dd28462e313aec6", "patch_ids": [], "statement_hash": "ea5febd54b3232fcdef3a8a08002cb2c76d7e7346af6d3e0ed4160724efbd9cf", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4121288294761d26", "cves": [], "html": "<p>在 <code>EXPLAIN</code> 输出中添加哈希使用信息（Robert Haas）</p>", "text": "在 EXPLAIN 输出中添加哈希使用信息（Robert Haas）", "title": "在 EXPLAIN 输出中添加哈希使用信息", "commits": [], "section": "工具操作 / EXPLAIN", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.4", "source_hash": "dea2b1ff5938adcd0702801697ac4d010cf2739d197f7e134dd0c1eaa625c414", "section_path": ["工具操作", "EXPLAIN"], "commit_groups": [], "identity_text": "Add hash usage information to EXPLAIN output (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/062", "db_id": "2d9dcafe49a578f78aad5dddc85a7998", "patch_ids": [], "statement_hash": "371b30be9fe364c81b1f2d7234c2e1a9d28430fe1a07b2f7d179ec82598f0889", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6d1b190e49d739a7", "cves": [], "html": "<p>新增允许在括号内指定选项的 <code>EXPLAIN</code> 语法（Robert Haas）</p>\n<p>这为未来的 <code>EXPLAIN</code> 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。</p>", "text": "新增允许在括号内指定选项的 EXPLAIN 语法（Robert Haas） 这为未来的 EXPLAIN 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。", "title": "新增允许在括号内指定选项的 EXPLAIN 语法", "commits": [], "section": "工具操作 / EXPLAIN", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.4", "source_hash": "d14b62a8ae51756a92bb25235d08c1bc169236843575e3250e1b54d1d350cd51", "section_path": ["工具操作", "EXPLAIN"], "commit_groups": [], "identity_text": "Add new EXPLAIN syntax that allows options to be specified inside parentheses (Robert Haas) This allows greater flexibility for future EXPLAIN options. The old syntax is still supported, but only for pre-existing options.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/063", "db_id": "eb59f256fb40425d2a30a9996366011d", "patch_ids": [], "statement_hash": "f0047cd209718ed1f196aa91f1a9ef3bded9c1981a7d4977419704e717f41f80", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1db4aaf4f2ea526e", "cves": [], "html": "<p>更改 <code>VACUUM FULL</code>，使其重写整个表并重建其索引，而不是移动单个行来压缩空间（Itagaki Takahiro、Tom Lane）</p>\n<p>以前的方法通常更慢并导致索引膨胀。注意新方法在 <code>VACUUM FULL</code> 期间会暂时使用更多磁盘空间；可能多达表及其索引通常占用空间的两倍。</p>", "text": "更改 VACUUM FULL，使其重写整个表并重建其索引，而不是移动单个行来压缩空间（Itagaki Takahiro、Tom Lane） 以前的方法通常更慢并导致索引膨胀。注意新方法在 VACUUM FULL 期间会暂时使用更多磁盘空间；可能多达表及其索引通常占用空间的两倍。", "title": "更改 VACUUM FULL，使其重写整个表并重建其索引，而不是移动单个行来压缩空间", "commits": [], "section": "工具操作 / VACUUM", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.5", "source_hash": "4fbca7062ed82fb282b1fb0d0bfd8702e48c5381e9472b8fd325247090a914be", "section_path": ["工具操作", "VACUUM"], "commit_groups": [], "identity_text": "Change VACUUM FULL to rewrite the entire table and rebuild its indexes, rather than moving individual rows around to compact space (Itagaki Takahiro, Tom Lane) The previous method was usually slower and caused index bloat. Note that the new method will use more disk space transiently during VACUUM FULL; potentially as much as twice the space normally occupied by the table and its indexes.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/064", "db_id": "22a1bcb5ce76d79513856c74541fa4b0", "patch_ids": [], "statement_hash": "2277a3d43a9e4f6bb2ea2593e21af32c022d9b054fa24f835486ea7adba3a8e4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-545d701c52f794e2", "cves": [], "html": "<p>新增允许在括号内指定选项的 <code>VACUUM</code> 语法（Itagaki Takahiro）</p>\n<p>这为未来的 <code>VACUUM</code> 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。</p>", "text": "新增允许在括号内指定选项的 VACUUM 语法（Itagaki Takahiro） 这为未来的 VACUUM 选项提供了更大的灵活性。仍支持旧语法，但只用于既有选项。", "title": "新增允许在括号内指定选项的 VACUUM 语法", "commits": [], "section": "工具操作 / VACUUM", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.5", "source_hash": "457b1b268e4ee36063ab4f405f61afc644f74fa4ef21c2796b7b4dffcc081f2a", "section_path": ["工具操作", "VACUUM"], "commit_groups": [], "identity_text": "Add new VACUUM syntax that allows options to be specified inside parentheses (Itagaki Takahiro) This allows greater flexibility for future VACUUM options. The old syntax is still supported, but only for pre-existing options.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/065", "db_id": "d4c97b715a82466e27f4ff32a428f44c", "patch_ids": [], "statement_hash": "6bd23353087fdc6c077269858922d77092b75c6d3ab5e997171f2a0949945c9a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-296558b0067f6c47", "cves": [], "html": "<p>允许在 <a href=\"/docs/9.0/sql-createindex.html\" title=\"CREATE INDEX\"><code>CREATE INDEX</code></a> 中省略索引名以自动命名索引（Tom Lane）</p>", "text": "允许在 CREATE INDEX 中省略索引名以自动命名索引（Tom Lane）", "title": "允许在 CREATE INDEX 中省略索引名以自动命名索引", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.6", "source_hash": "8742cc241a72e7e3b70e3a964f8f5bdf6b12fa9c1ec21e76475c68a4d6341cdd", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Allow an index to be named automatically by omitting the index name in CREATE INDEX (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/066", "db_id": "a50c59620522b40bcdfb7bd35cc55516", "patch_ids": [], "statement_hash": "e9bfccb7dd348da1b3f9727c9e5f887927195459099761073cb376ca0d9bf1ff", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7c2cc3f4cff3b4ed", "cves": [], "html": "<p>默认情况下，多列索引现在以所有列命名；索引表达式列现在基于其表达式命名（Tom Lane）</p>", "text": "默认情况下，多列索引现在以所有列命名；索引表达式列现在基于其表达式命名（Tom Lane）", "title": "默认情况下，多列索引现在以所有列命名；索引表达式列现在基于其表达式命名", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.6", "source_hash": "70cb57018e37a38fe080f0078f888b0c65ea16ac7290c49c2640fdb5b31c5c56", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "By default, multicolumn indexes are now named after all their columns; and index expression columns are now named based on their expressions (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/067", "db_id": "63b86008836b08eb8d3fd144623baf39", "patch_ids": [], "statement_hash": "89e9d31d85a9a637eb9ddf7c4ae843bb805c9495951dff275818d1030849fd2b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-79f28e0426734b88", "cves": [], "html": "<p>重建共享系统目录的索引现在完全是事务性且崩溃安全的（Tom Lane）</p>\n<p>此前，重建共享索引只允许在独立模式下进行，而且操作期间崩溃可能使索引处于比之前更糟的状态。</p>", "text": "重建共享系统目录的索引现在完全是事务性且崩溃安全的（Tom Lane） 此前，重建共享索引只允许在独立模式下进行，而且操作期间崩溃可能使索引处于比之前更糟的状态。", "title": "重建共享系统目录的索引现在完全是事务性且崩溃安全的", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.6", "source_hash": "ccf788a718dc4d8561d4c8956a38079b69af6afb7b655f7669383fd9d376ec61", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Reindexing shared system catalogs is now fully transactional and crash-safe (Tom Lane) Formerly, reindexing a shared index was only allowed in standalone mode, and a crash during the operation could leave the index in worse condition than it was before.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/068", "db_id": "2fda88e3a26a8642900cb1b04efd51eb", "patch_ids": [], "statement_hash": "9091a5a297ff7d9653ce58577813b31885d1e1b2c3e3fb6c1ce2f6c66bdf3111", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4f026c0f531f72b7", "cves": [], "html": "<p>为 <acronym>GiST</acronym> 新增 <code>point_ops</code> 操作符类（Teodor Sigaev）</p>\n<p>此特性允许对 <code>point</code> 列建立 <acronym>GiST</acronym> 索引。该索引可用于多种类型的查询，例如 <em><code>point</code></em> <code>&lt;@</code> <em><code>polygon</code></em>（点在多边形内）。这应能使许多 <span>PostGIS</span> 查询更快。</p>", "text": "为 GiST 新增 point_ops 操作符类（Teodor Sigaev） 此特性允许对 point 列建立 GiST 索引。该索引可用于多种类型的查询，例如 point <@ polygon（点在多边形内）。这应能使许多 PostGIS 查询更快。", "title": "为 GiST 新增 point_ops 操作符类", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.6", "source_hash": "37911db1be9e286548a4d64915adaea672fcb201322910a93b8b152bf8b04457", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Add point_ops operator class for GiST (Teodor Sigaev) This feature permits GiST indexing of point columns. The index can be used for several types of queries such as point <@ polygon (point is in polygon). This should make many PostGIS queries faster.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/069", "db_id": "4f43b6662d3fca4141219c6b5dd315b6", "patch_ids": [], "statement_hash": "ea28749259c8bc3a2d361f93c15481e20e93db6d898081350ea3adff495492d4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-34d4587e4da1abea", "cves": [], "html": "<p>在 <acronym>GIN</acronym> 索引创建中使用红黑二叉树（Teodor Sigaev）</p>\n<p>红黑树是自平衡的。这避免了输入以非随机顺序出现时的变慢。</p>", "text": "在 GIN 索引创建中使用红黑二叉树（Teodor Sigaev） 红黑树是自平衡的。这避免了输入以非随机顺序出现时的变慢。", "title": "在 GIN 索引创建中使用红黑二叉树", "commits": [], "section": "工具操作 / 索引", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.6.6", "source_hash": "90a0b181bcce23cac2d1e06c278ae941467ee0c4ff50b1e8f22b10703a4c014f", "section_path": ["工具操作", "索引"], "commit_groups": [], "identity_text": "Use red-black binary trees for GIN index creation (Teodor Sigaev) Red-black trees are self-balancing. This avoids slowdowns in cases where the input is in nonrandom order.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/070", "db_id": "a0f4a8fe5b3a5860b203006ad97f5b4f", "patch_ids": [], "statement_hash": "a5cdb4a0e2bc95ecebccc88e7d57385a11db12e8ef945f4e74341f6f54afe061", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-aeed2d9f8ac05d30", "cves": [], "html": "<p>允许 <a href=\"/docs/9.0/datatype-binary.html\" title=\"8.4. 二进制数据类型\"><code>bytea</code></a> 值以十六进制记法书写（Peter Eisentraut）</p>\n<p>服务器参数 <a href=\"/docs/9.0/runtime-config-client.html#GUC-BYTEA-OUTPUT\"><code>bytea_output</code></a> 控制 <code>bytea</code> 输出使用十六进制还是传统格式。Libpq 的 <code>PQescapeByteaConn()</code> 函数在连接 <span>PostgreSQL</span> 9.0 或更新服务器时自动使用十六进制格式。但 9.0 之前的 libpq 版本无法正确处理来自更新服务器的十六进制格式。</p>\n<p>新的十六进制格式与更多使用二进制数据的应用直接兼容，使它们无需额外转换即可存储和获取。它的读写也明显快于传统格式。</p>", "text": "允许 bytea 值以十六进制记法书写（Peter Eisentraut） 服务器参数 bytea_output 控制 bytea 输出使用十六进制还是传统格式。Libpq 的 PQescapeByteaConn() 函数在连接 PostgreSQL 9.0 或更新服务器时自动使用十六进制格式。但 9.0 之前的 libpq 版本无法正确处理来自更新服务器的十六进制格式。 新的十六进制格式与更多使用二进制数据的应用直接兼容，使它们无需额外转换即可存储和获取。它的读写也明显快于传统格式。", "title": "允许 bytea 值以十六进制记法书写", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7", "source_hash": "f554f9757c7990bbdafcffe1e6df0173a61e5f88d39188850456fd372758f9e3", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Allow bytea values to be written in hex notation (Peter Eisentraut) The server parameter bytea_output controls whether hex or traditional format is used for bytea output. Libpq's PQescapeByteaConn() function automatically uses the hex format when connected to PostgreSQL 9.0 or newer servers. However, pre-9.0 libpq versions will not correctly process hex format from newer servers. The new hex format will be directly compatible with more applications that use binary data, allowing them to store and retrieve it without extra conversion. It is also significantly faster to read and write than the traditional format.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/071", "db_id": "de388957b88a64be3a4c205b2195dfe8", "patch_ids": [], "statement_hash": "2200ccb1ee30b584d9d04a865855946df8d44d2fc690ca6d9d71098ff371f911", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1f74db7aa0c73451", "cves": [], "html": "<p>允许把服务器参数 <a href=\"/docs/9.0/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS\">extra_float_digits</a> 增大到 <code>3</code>（Tom Lane）</p>\n<p>此前 <code>extra_float_digits</code> 的最大设置为 <code>2</code>。有些情况需要 3 位数字才能精确转储和恢复 <code>float4</code> 值。<span>pg_dump</span> 现在在从允许它的服务器转储时将使用设置 3。</p>", "text": "允许把服务器参数 extra_float_digits 增大到 3（Tom Lane） 此前 extra_float_digits 的最大设置为 2。有些情况需要 3 位数字才能精确转储和恢复 float4 值。pg_dump 现在在从允许它的服务器转储时将使用设置 3。", "title": "允许把服务器参数 extra_float_digits 增大到 3", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7", "source_hash": "f75a15add043161133d6231a7a3ba8f08b7b0c5dafa321f5f1c1b7ddab1f7b47", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Allow server parameter extra_float_digits to be increased to 3 (Tom Lane) The previous maximum extra_float_digits setting was 2. There are cases where 3 digits are needed to dump and restore float4 values exactly. pg_dump will now use the setting of 3 when dumping from a server that allows it.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/072", "db_id": "ed4ccbd5cd7cb575cccf5ea2b3bbd810", "patch_ids": [], "statement_hash": "11c986ccfddcd7cd39af493002f6bcbfd03c8b596831c987f2795f115b1805dc", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-52afe23a59ec010d", "cves": [], "html": "<p>收紧对 <code>int2vector</code> 值的输入检查（Caleb Welton）</p>", "text": "收紧对 int2vector 值的输入检查（Caleb Welton）", "title": "收紧对 int2vector 值的输入检查", "commits": [], "section": "数据类型", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7", "source_hash": "a194b3bb07721c772aa909c354802e9c7b8a119ef7d62b01f66eb17970058684", "section_path": ["数据类型"], "commit_groups": [], "identity_text": "Tighten input checking for int2vector values (Caleb Welton)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/073", "db_id": "e4d9e57e1f5f1d841696af4c7e1d3daf", "patch_ids": [], "statement_hash": "e56849e55681f730a0277442d4acd8d21eef7eec14e5cba150ee33925b618462", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-ef8ad652b128c1f8", "cves": [], "html": "<p>在 <code>synonym</code> 词典中新增前缀支持（Teodor Sigaev）</p>", "text": "在 synonym 词典中新增前缀支持（Teodor Sigaev）", "title": "在 synonym 词典中新增前缀支持", "commits": [], "section": "数据类型 / Full Text Search", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7.3", "source_hash": "daf19fbc857f897af7bea2d06e87f2f5b565d50a16c79f82dae511324a289652", "section_path": ["数据类型", "Full Text Search"], "commit_groups": [], "identity_text": "Add prefix support in synonym dictionaries (Teodor Sigaev)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/074", "db_id": "ebf5166f047a36a5b10e66f866d4b334", "patch_ids": [], "statement_hash": "a500c8c23e1c38d97011e001cbb020b75a9954e6f6086a291ff7b4a99937a6d7", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-780c186f12c4768c", "cves": [], "html": "<p>新增<em>过滤</em>词典（Teodor Sigaev）</p>\n<p>过滤词典允许先修改词元再传递给后续词典。</p>", "text": "新增过滤词典（Teodor Sigaev） 过滤词典允许先修改词元再传递给后续词典。", "title": "新增过滤词典", "commits": [], "section": "数据类型 / Full Text Search", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7.3", "source_hash": "8e6e9e652eb5e2ce6a14494f6d2211343f5e170fac14f335eb4093ca1a1ddb6e", "section_path": ["数据类型", "Full Text Search"], "commit_groups": [], "identity_text": "Add filtering dictionaries (Teodor Sigaev) Filtering dictionaries allow tokens to be modified then passed to subsequent dictionaries.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/075", "db_id": "63e075dbfea8f33b0b3048c247227b7c", "patch_ids": [], "statement_hash": "e2507e7c1c455b802b98a7e48d2621ec275d6cc367d1e592f9a109f19da98f3c", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d3d23e5732cff671", "cves": [], "html": "<p>允许电子邮件地址词元中包含下划线（Teodor Sigaev）</p>", "text": "允许电子邮件地址词元中包含下划线（Teodor Sigaev）", "title": "允许电子邮件地址词元中包含下划线", "commits": [], "section": "数据类型 / Full Text Search", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7.3", "source_hash": "84c1bb427f095c95ab3196e55fd39bedfaf9a0bd16e5b7e83c2eef8fea7482ff", "section_path": ["数据类型", "Full Text Search"], "commit_groups": [], "identity_text": "Allow underscores in email-address tokens (Teodor Sigaev)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/076", "db_id": "cf8f6b7eab521411623be4074afa0542", "patch_ids": [], "statement_hash": "baeb1f8715ebdafb0da6f56f01c39dced36b06adbf5bf8265027757cca46d2b1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7fd240e50ed5fa3f", "cves": [], "html": "<p>使用更符合标准的规则解析 <acronym>URL</acronym> 词元（Tom Lane）</p>", "text": "使用更符合标准的规则解析 URL 词元（Tom Lane）", "title": "使用更符合标准的规则解析 URL 词元", "commits": [], "section": "数据类型 / Full Text Search", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.7.3", "source_hash": "36f4f85bc4dba3903a33c914a765b3d12c1ed55fcc284681ce012b72273c8acd", "section_path": ["数据类型", "Full Text Search"], "commit_groups": [], "identity_text": "Use more standards-compliant rules for parsing URL tokens (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/077", "db_id": "bf55c0835d6a08619f9b6e18b88e95c8", "patch_ids": [], "statement_hash": "0e06ab6620451cd9343238a9c870855ea4fbaa440663a98da50c3f3c0b8def76", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f7827ac909b3bb1d", "cves": [], "html": "<p>允许函数调用提供参数名并与函数定义中的命名参数匹配（Pavel Stehule）</p>\n<p>例如，如果函数定义为接受参数 <code>a</code> 和 <code>b</code>，则可以用 <code>func(a := 7, b := 12)</code> 或 <code>func(b := 12, a := 7)</code> 调用它。</p>", "text": "允许函数调用提供参数名并与函数定义中的命名参数匹配（Pavel Stehule） 例如，如果函数定义为接受参数 a 和 b，则可以用 func(a := 7, b := 12) 或 func(b := 12, a := 7) 调用它。", "title": "允许函数调用提供参数名并与函数定义中的命名参数匹配", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "8b6127963053fd9f9a97509a9d2e503e52d4bdf84d5ef6202c131f74edf14871", "section_path": ["函数"], "commit_groups": [], "identity_text": "Allow function calls to supply parameter names and match them to named parameters in the function definition (Pavel Stehule) For example, if a function is defined to take parameters a and b, it can be called with func(a := 7, b := 12) or func(b := 12, a := 7).", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/078", "db_id": "a72fff2f0636d1cd0011970adc23d621", "patch_ids": [], "statement_hash": "d57487b9524a6e854306e5c71fff9a2944880752726768f096dc5f4e51822834", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0a45c4a138ef8ae3", "cves": [], "html": "<p>支持在 <acronym>UTF-8</acronym> 服务器编码下进行区域特定的<a href=\"/docs/9.0/functions-matching.html#FUNCTIONS-POSIX-REGEXP\" title=\"9.7.3. POSIX正则表达式\">正则表达式</a>处理（Tom Lane）</p>\n<p>区域特定的正则表达式功能包括不区分大小写的匹配和区域特定的字符类。此前，这些特性只有当数据库使用单字节服务器编码（如 LATIN1）时才能对非 <acronym>ASCII</acronym> 字符正确工作。在 <acronym>UTF-8</acronym> 之外的多字节编码中它们仍会行为不当。</p>", "text": "支持在 UTF-8 服务器编码下进行区域特定的正则表达式处理（Tom Lane） 区域特定的正则表达式功能包括不区分大小写的匹配和区域特定的字符类。此前，这些特性只有当数据库使用单字节服务器编码（如 LATIN1）时才能对非 ASCII 字符正确工作。在 UTF-8 之外的多字节编码中它们仍会行为不当。", "title": "支持在 UTF-8 服务器编码下进行区域特定的正则表达式处理", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "7403d2194bd6a2bcca3dec12dba57afd9975572077b882b7468e5096ef8ad034", "section_path": ["函数"], "commit_groups": [], "identity_text": "Support locale-specific regular expression processing with UTF-8 server encoding (Tom Lane) Locale-specific regular expression functionality includes case-insensitive matching and locale-specific character classes. Previously, these features worked correctly for non-ASCII characters only if the database used a single-byte server encoding (such as LATIN1). They will still misbehave in multi-byte encodings other than UTF-8.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/079", "db_id": "8d8ef343759b8e68e2d9c6f9b4bb29c4", "patch_ids": [], "statement_hash": "5e1a32e175a8ee471432751aeace2848eaf1e6437b25c47c0019b7989857e73d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f169b54674235ded", "cves": [], "html": "<p>在 <a href=\"/docs/9.0/functions-formatting.html\" title=\"9.8. 数据类型格式化函数\"><code>to_char()</code></a> 中新增科学计数法支持（<a href=\"/docs/9.0/functions-formatting.html#FUNCTIONS-FORMATTING-NUMERIC-TABLE\" title=\"表 9.24. 用于数值格式化的模板模式\"><code>EEEE</code> 规范</a>）（Pavel Stehule、Brendan Jurd）</p>", "text": "在 to_char() 中新增科学计数法支持（EEEE 规范）（Pavel Stehule、Brendan Jurd）", "title": "在 to_char() 中新增科学计数法支持（EEEE 规范）", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "65079a8864ae30cabc2cc32162f98d706d2b46669b910d32067e9623ba7fa484", "section_path": ["函数"], "commit_groups": [], "identity_text": "Add support for scientific notation in to_char() (EEEE specification) (Pavel Stehule, Brendan Jurd)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/080", "db_id": "00fa18ac56ac16f756110e72035c303e", "patch_ids": [], "statement_hash": "c786a903854b906af8d9f775e23eca61c1fd384c3c26f21e827aee781345de50", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-ab3a10b1dd3716df", "cves": [], "html": "<p>让 <code>to_char()</code> 在 <code>Y</code>、<code>YY</code> 和 <code>YYY</code> 规范中遵循 <a href=\"/docs/9.0/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIMEMOD-TABLE\" title=\"表 9.23. 用于日期/时间格式化的模板模式修饰符\"><code>FM</code></a>（填充模式）（Bruce Momjian、Tom Lane）</p>\n<p><code>YYYY</code> 此前已遵循它。</p>", "text": "让 to_char() 在 Y、YY 和 YYY 规范中遵循 FM（填充模式）（Bruce Momjian、Tom Lane） YYYY 此前已遵循它。", "title": "让 to_char() 在 Y、YY 和 YYY 规范中遵循 FM（填充模式）", "commits": [], "section": "函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "3c6549997f1beeb4b3985ff136ffbb8f4c8fd4a06219a1315d27cea596058fe7", "section_path": ["函数"], "commit_groups": [], "identity_text": "Make to_char() honor FM (fill mode) in Y, YY, and YYY specifications (Bruce Momjian, Tom Lane) It was already honored by YYYY.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/081", "db_id": "ad8309b86613146531b4c6b58db841d6", "patch_ids": [], "statement_hash": "b61588049c663626e3d81ba2b685e4bf8a9131a4c1a563512c022b4fe058f6b4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a3dfa35f654248d7", "cves": [], "html": "<p>修复 <code>to_char()</code>，使其在 <span>Windows</span> 上以正确的编码输出本地化的数字和货币字符串（Hiroshi Inoue、Itagaki Takahiro、Bruce Momjian）</p>", "text": "修复 to_char()，使其在 Windows 上以正确的编码输出本地化的数字和货币字符串（Hiroshi Inoue、Itagaki Takahiro、Bruce Momjian）", "title": "修复 to_char()，使其在 Windows 上以正确的编码输出本地化的数字和货币字符串", "commits": [], "section": "函数", "category": "bugfix", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "b84c9162ecaa762f73896c674c649a9e5109469c72e28e461308312da7df5b19", "section_path": ["函数"], "commit_groups": [], "identity_text": "Fix to_char() to output localized numeric and monetary strings in the correct encoding on Windows (Hiroshi Inoue, Itagaki Takahiro, Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/082", "db_id": "4436a77713048cea7fecff1185b84364", "patch_ids": [], "statement_hash": "7fc33efcb7279feba07a15f38cd16c13b9e85dfcf79b6c9225804c3b30cc654f", "relations": [], "version": "9.0.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-80d92ed60039b003", "cves": [], "html": "<p>修正多边形的<a href=\"/docs/9.0/functions-geometry.html#FUNCTIONS-GEOMETRY-OP-TABLE\" title=\"表 9.31. 几何操作符\"><span>“<span>重叠</span>”</span></a>和<span>“<span>包含</span>”</span>运算的计算（Teodor Sigaev）</p>\n<p>多边形 <code>&amp;&amp;</code>（重叠）操作符此前只检查两个多边形的边界框是否重叠。现在它做更正确的检查。多边形 <code>@&gt;</code> 和 <code>&lt;@</code>（包含/被包含）操作符此前检查一个多边形的所有顶点是否都包含在另一个中；这对某些非凸多边形可能错误地报告<span>“<span>真</span>”</span>。现在它们检查一个多边形的所有线段都包含在另一个中。</p>", "text": "修正多边形的“重叠”和“包含”运算的计算（Teodor Sigaev） 多边形 &&（重叠）操作符此前只检查两个多边形的边界框是否重叠。现在它做更正确的检查。多边形 @> 和 <@（包含/被包含）操作符此前检查一个多边形的所有顶点是否都包含在另一个中；这对某些非凸多边形可能错误地报告“真”。现在它们检查一个多边形的所有线段都包含在另一个中。", "title": "修正多边形的“重叠”和“包含”运算的计算", "commits": [], "section": "函数", "category": "bugfix", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8", "source_hash": "d50868a6c01314d40245d6e556b204b00f4ef0ca7b79347c497b666c84f27586", "section_path": ["函数"], "commit_groups": [], "identity_text": "Correct calculations of overlaps and contains operations for polygons (Teodor Sigaev) The polygon && (overlaps) operator formerly just checked to see if the two polygons' bounding boxes overlapped. It now does a more correct check. The polygon @> and <@ (contains/contained by) operators formerly checked to see if one polygon's vertexes were all contained in the other; this can wrongly report true for some non-convex polygons. Now they check that all line segments of one polygon are contained in the other.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/083", "db_id": "347c6f66d371de97ff24886df5cf098f", "patch_ids": [], "statement_hash": "189dfb8d58cd959849847beb41f5b48b1354d288b92c0905cccff0818cc3bc9e", "relations": [], "version": "9.0.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5490dc23f6a9b0ac", "cves": [], "html": "<p>允许聚合函数使用 <a href=\"/docs/9.0/sql-expressions.html#SYNTAX-AGGREGATES\" title=\"4.2.7. 聚合表达式\"><code>ORDER BY</code></a>（Andrew Gierth）</p>\n<p>例如，现在支持：<code>array_agg(a ORDER BY b)</code>。这对输入值顺序很重要的聚合很有用，并消除了使用非标准子查询来确定排序的需要。</p>", "text": "允许聚合函数使用 ORDER BY（Andrew Gierth） 例如，现在支持：array_agg(a ORDER BY b)。这对输入值顺序很重要的聚合很有用，并消除了使用非标准子查询来确定排序的需要。", "title": "允许聚合函数使用 ORDER BY", "commits": [], "section": "函数 / 聚合", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.3", "source_hash": "f383d2f9ca27b4ada66176419e589bca6bffeaf194a1afc9b2821e08234b7e12", "section_path": ["函数", "聚合"], "commit_groups": [], "identity_text": "Allow aggregate functions to use ORDER BY (Andrew Gierth) For example, this is now supported: array_agg(a ORDER BY b). This is useful with aggregates for which the order of input values is significant, and eliminates the need to use a nonstandard subquery to determine the ordering.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/084", "db_id": "f22e800ecadf5b2aa788112397482f97", "patch_ids": [], "statement_hash": "13c15562bb5535ab10f397391710054ff78ad50912d5ec658686364b3c0410c3", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d9b01a5e91a87e04", "cves": [], "html": "<p>多参数聚合函数现在可以使用 <code>DISTINCT</code>（Andrew Gierth）</p>", "text": "多参数聚合函数现在可以使用 DISTINCT（Andrew Gierth）", "title": "多参数聚合函数现在可以使用 DISTINCT", "commits": [], "section": "函数 / 聚合", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.3", "source_hash": "9fbabf9451d5437da0fd04140ff6e7a3d902a52435b4bf9d756959dbdf704594", "section_path": ["函数", "聚合"], "commit_groups": [], "identity_text": "Multi-argument aggregate functions can now use DISTINCT (Andrew Gierth)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/085", "db_id": "24fdc056867a728e8794eb054b709d95", "patch_ids": [], "statement_hash": "a9f939471f1e8c775b8eeb8ad119221eb2c1e0fcbf4c6ffd1f3ec143fbd299c4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-77ab5ae6ce313030", "cves": [], "html": "<p>新增聚合函数 <a href=\"/docs/9.0/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE\" title=\"表 9.43. 通用聚合函数\"><code>string_agg()</code></a>，用于把值组合成单个字符串（Pavel Stehule）</p>", "text": "新增聚合函数 string_agg()，用于把值组合成单个字符串（Pavel Stehule）", "title": "新增聚合函数 string_agg()，用于把值组合成单个字符串", "commits": [], "section": "函数 / 聚合", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.3", "source_hash": "2cc161637c6509cd9df8d12a9af121a7e308d287432ad1b1afc3029cc7670ddf", "section_path": ["函数", "聚合"], "commit_groups": [], "identity_text": "Add the string_agg() aggregate function to combine values into a single string (Pavel Stehule)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/086", "db_id": "0deceb550f87d436b9713081c1bf9d2a", "patch_ids": [], "statement_hash": "2eee3a17f2750e243eb174c33538a9130a0d52712b473f1d57dd7cc47e9a1d35", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-69b1d41409064e94", "cves": [], "html": "<p>如果聚合转换函数未标记为 <code>STRICT</code>，以 <code>DISTINCT</code> 调用的聚合函数现在会被传递 NULL 值（Andrew Gierth）</p>\n<p>例如，<code>agg(DISTINCT x)</code> 可能会把 NULL 的 <code>x</code> 值传递给 <code>agg()</code>。这与非 <code>DISTINCT</code> 情况下的行为更一致。</p>", "text": "如果聚合转换函数未标记为 STRICT，以 DISTINCT 调用的聚合函数现在会被传递 NULL 值（Andrew Gierth） 例如，agg(DISTINCT x) 可能会把 NULL 的 x 值传递给 agg()。这与非 DISTINCT 情况下的行为更一致。", "title": "如果聚合转换函数未标记为 STRICT，以 DISTINCT 调用的聚合函数现在会被传递 NULL 值", "commits": [], "section": "函数 / 聚合", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.3", "source_hash": "b6943e1132f9907468e9dcccd9a9dc18a6a12080e32ffa7313fd0797653dcb09", "section_path": ["函数", "聚合"], "commit_groups": [], "identity_text": "Aggregate functions that are called with DISTINCT are now passed NULL values if the aggregate transition function is not marked as STRICT (Andrew Gierth) For example, agg(DISTINCT x) might pass a NULL x value to agg(). This is more consistent with the behavior in non-DISTINCT cases.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/087", "db_id": "cc4c10e8b984ee471b0338ffd0216127", "patch_ids": [], "statement_hash": "06af4cd04cdf0a5cc574e21f21f38ef4dac98f129f2117a28b2bb4e8b4e1d68e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1721ae31f3cd1b05", "cves": [], "html": "<p>为 <code>bit</code> 字符串新增 <a href=\"/docs/9.0/functions-binarystring.html#FUNCTIONS-BINARYSTRING-OTHER\" title=\"表 9.10. 其他二进制串函数\"><code>get_bit()</code></a> 和 <code>set_bit()</code> 函数，与 <code>bytea</code> 的对应函数保持一致（Leonardo F）</p>", "text": "为 bit 字符串新增 get_bit() 和 set_bit() 函数，与 bytea 的对应函数保持一致（Leonardo F）", "title": "为 bit 字符串新增 get_bit() 和 set_bit() 函数，与 bytea 的对应函数保持一致", "commits": [], "section": "函数 / 位串", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.4", "source_hash": "675d27a04e5f62946fe80b25aa113456f66786c8032b9ffa0d7377799987eea8", "section_path": ["函数", "位串"], "commit_groups": [], "identity_text": "Add get_bit() and set_bit() functions for bit strings, mirroring those for bytea (Leonardo F)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/088", "db_id": "8ce4f3a0738f69058a98ca130c2008b9", "patch_ids": [], "statement_hash": "0e1e5b1f4fa8b061ffd38625ee2412da934b0368ac89c90e8a4ed4eb0a6cd387", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f2481ee75c74f1c1", "cves": [], "html": "<p>为 <code>bit</code> 字符串和 <code>bytea</code> 实现 <a href=\"/docs/9.0/functions-string.html#FUNCTIONS-STRING-SQL\" title=\"表 9.6. SQL字符串函数和操作符\"><code>OVERLAY()</code></a>（替换）（Leonardo F）</p>", "text": "为 bit 字符串和 bytea 实现 OVERLAY()（替换）（Leonardo F）", "title": "为 bit 字符串和 bytea 实现 OVERLAY()（替换）", "commits": [], "section": "函数 / 位串", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.4", "source_hash": "f3cb03d1dc31c2c43443453ab75ae235b230182855cab3d5a86d47a0e34abc3c", "section_path": ["函数", "位串"], "commit_groups": [], "identity_text": "Implement OVERLAY() (replace) for bit strings and bytea (Leonardo F)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/089", "db_id": "3c0a0473fe4a6d92115722c5c4c917c8", "patch_ids": [], "statement_hash": "889f939ea1f2a56f7a94e6c3fde624c4d0001aaaacacb6e0ccddf4b013da70c0", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d3a9dd06392092ff", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE\" title=\"表 9.59. 数据库对象尺寸函数\"><code>pg_table_size()</code></a> 和 <code>pg_indexes_size()</code>，为 <code>pg_relation_size()</code> 函数提供更用户友好的接口（Bernd Helmle）</p>", "text": "新增 pg_table_size() 和 pg_indexes_size()，为 pg_relation_size() 函数提供更用户友好的接口（Bernd Helmle）", "title": "新增 pg_table_size() 和 pg_indexes_size()，为 pg_relation_size() 函数提供更用户友好的接口", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.5", "source_hash": "d4197b3c408e2a10e107a1fc14df0a47463fe8f1fe948c263d178ade9a0fde03", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Add pg_table_size() and pg_indexes_size() to provide a more user-friendly interface to the pg_relation_size() function (Bernd Helmle)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/090", "db_id": "f6ff97fea99497995e971d2fc5acff85", "patch_ids": [], "statement_hash": "721d6fe639818be5630ae9a53dfc31f7a06c69b3dfbcb5e7fb0789a5c5382410", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8806dd0afc025826", "cves": [], "html": "<p>新增用于序列权限检查的 <a href=\"/docs/9.0/functions-info.html#FUNCTIONS-INFO-ACCESS-TABLE\" title=\"表 9.49. 访问权限查询函数\"><code>has_sequence_privilege()</code></a>（Abhijit Menon-Sen）</p>", "text": "新增用于序列权限检查的 has_sequence_privilege()（Abhijit Menon-Sen）", "title": "新增用于序列权限检查的 has_sequence_privilege()", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.5", "source_hash": "7ddfb65f64cf454ae9e3d4b8565d7dbc3a8c40f0161c4224204b21e1ab86bd90", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Add has_sequence_privilege() for sequence permission checking (Abhijit Menon-Sen)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/091", "db_id": "458b97385020e20114c70d047c541299", "patch_ids": [], "statement_hash": "f3f3c7a8aaec42c5f8736023ae78ee33a80f79dd10c29b367f41a5a58ac6fbc5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-db781a2b876e1af9", "cves": [], "html": "<p>更新 <a href=\"/docs/9.0/information-schema.html\" title=\"第 34 章 信息模式\">information_schema</a> 视图以符合 SQL:2008（Peter Eisentraut）</p>", "text": "更新 information_schema 视图以符合 SQL:2008（Peter Eisentraut）", "title": "更新 information_schema 视图以符合 SQL:2008", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.5", "source_hash": "faaa08568475998e32791f40f192caa845e1f036be3ee7d2fdf23849a1d7190f", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Update the information_schema views to conform to SQL:2008 (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/092", "db_id": "06e36f8a7ad8b3f7f9e90f4c1534855d", "patch_ids": [], "statement_hash": "68a96cecf13cef29b9218232c1593c6d0cd85c4a4187c06d4d9f621a8921c885", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-fdaf8b5afcc48e4b", "cves": [], "html": "<p>让 <code>information_schema</code> 视图正确显示 <code>char</code> 和 <code>varchar</code> 列的最大八位字节长度（Peter Eisentraut）</p>", "text": "让 information_schema 视图正确显示 char 和 varchar 列的最大八位字节长度（Peter Eisentraut）", "title": "让 information_schema 视图正确显示 char 和 varchar 列的最大八位字节长度", "commits": [], "section": "函数 / 对象信息函数", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.5", "source_hash": "bb4b0f74921906871f148c49f0dd29c0ca7eeaf898cbf070e391c57008e90975", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Make the information_schema views correctly display maximum octet lengths for char and varchar columns (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/093", "db_id": "5e5fffb785f1c1dcdb26140ae851bfe0", "patch_ids": [], "statement_hash": "84531eb89332e7b64d9f7abfe0b8ad39b7e0a1f73565c424cd3a73c081b9e0f0", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8310c00e45b86f06", "cves": [], "html": "<p>加速 <code>information_schema</code> 权限视图（Joachim Wieland）</p>", "text": "加速 information_schema 权限视图（Joachim Wieland）", "title": "加速 information_schema 权限视图", "commits": [], "section": "函数 / 对象信息函数", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.5", "source_hash": "70aa91074d4d2767808a6c73f42eb0583a1102fb4c0c51a24d364d3b12ce85e9", "section_path": ["函数", "对象信息函数"], "commit_groups": [], "identity_text": "Speed up information_schema privilege views (Joachim Wieland)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/094", "db_id": "ba0b65f9a93ee2447abf47bc683315d1", "patch_ids": [], "statement_hash": "ebe2c8d69e6b31f8eaf24c35f7f00136ebf90c06bd5178833fdf273e5d18b3ac", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1a74ca01bd533149", "cves": [], "html": "<p>支持使用 <a href=\"/docs/9.0/sql-do.html\" title=\"DO\"><code>DO</code></a> 语句执行匿名代码块（Petr Jelinek、Joshua Tolley、Hannu Valtonen）</p>\n<p>这允许执行服务器端代码而无需创建和删除临时函数定义。可以用用户有权定义函数的任何语言执行代码。</p>", "text": "支持使用 DO 语句执行匿名代码块（Petr Jelinek、Joshua Tolley、Hannu Valtonen） 这允许执行服务器端代码而无需创建和删除临时函数定义。可以用用户有权定义函数的任何语言执行代码。", "title": "支持使用 DO 语句执行匿名代码块", "commits": [], "section": "函数 / 函数和触发器创建", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.6", "source_hash": "72116b9e6efc602fe37721f6c0f9c8bfc66833d45676450aec19d98cb1e44e09", "section_path": ["函数", "函数和触发器创建"], "commit_groups": [], "identity_text": "Support execution of anonymous code blocks using the DO statement (Petr Jelinek, Joshua Tolley, Hannu Valtonen) This allows execution of server-side code without the need to create and delete a temporary function definition. Code can be executed in any language for which the user has permissions to define a function.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/095", "db_id": "a981b58b449b49eb08d3c43218eaaa0c", "patch_ids": [], "statement_hash": "06015db8ee9e8cc42b970feed44423d98db7b7144fe1b409781ccaf32e600e54", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a27d49cc73c7b076", "cves": [], "html": "<p>实现符合 SQL 标准的<a href=\"/docs/9.0/sql-createtrigger.html\" title=\"CREATE TRIGGER\">逐列触发器</a>（Itagaki Takahiro）</p>\n<p>这类触发器只在指定列受查询影响（例如出现在 <code>UPDATE</code> 的 <code>SET</code> 列表中）时触发。</p>", "text": "实现符合 SQL 标准的逐列触发器（Itagaki Takahiro） 这类触发器只在指定列受查询影响（例如出现在 UPDATE 的 SET 列表中）时触发。", "title": "实现符合 SQL 标准的逐列触发器", "commits": [], "section": "函数 / 函数和触发器创建", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.6", "source_hash": "35d199c7fb45683eb0654b790f6e9311b94a81b3ff158d02984b31ffe1cceeb1", "section_path": ["函数", "函数和触发器创建"], "commit_groups": [], "identity_text": "Implement SQL-standard-compliant per-column triggers (Itagaki Takahiro) Such triggers are fired only when the specified column(s) are affected by the query, e.g. appear in an UPDATE's SET list.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/096", "db_id": "b41a947a577570b3ccebf6e3ba7a52d6", "patch_ids": [], "statement_hash": "286e25158a71f9ae5e0826a00b3db15e1479d603e38b0b7f6c8f1b8b5a67d065", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b9bd89a176cb0871", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/sql-createtrigger.html\" title=\"CREATE TRIGGER\"><code>CREATE TRIGGER</code></a> 新增 <code>WHEN</code> 子句，允许控制触发器是否触发（Itagaki Takahiro）</p>\n<p>虽然同类检查总是可以在触发器内部执行，但在外部 <code>WHEN</code> 子句中执行可能有性能收益。</p>", "text": "为 CREATE TRIGGER 新增 WHEN 子句，允许控制触发器是否触发（Itagaki Takahiro） 虽然同类检查总是可以在触发器内部执行，但在外部 WHEN 子句中执行可能有性能收益。", "title": "为 CREATE TRIGGER 新增 WHEN 子句，允许控制触发器是否触发", "commits": [], "section": "函数 / 函数和触发器创建", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.8.6", "source_hash": "736d2e020fc2699a8b4ca75d449979a71649ef810140cece6cf59cf9b8d2b69d", "section_path": ["函数", "函数和触发器创建"], "commit_groups": [], "identity_text": "Add the WHEN clause to CREATE TRIGGER to allow control over whether a trigger is fired (Itagaki Takahiro) While the same type of check can always be performed inside the trigger, doing it in an external WHEN clause can have performance benefits.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/097", "db_id": "bdf4f6544c9d99f824b22d88f80a89cb", "patch_ids": [], "statement_hash": "b7e4a4efb0fd89745d6d6c0f6c1138809214c316a41a7c3fd34169083a0127c9", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d964bbc59313bfdb", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/sql-createlanguage.html\" title=\"CREATE LANGUAGE\"><code>CREATE LANGUAGE</code></a> 新增 <code>OR REPLACE</code> 子句（Tom Lane）</p>\n<p>这有助于在语言尚不存在时选择性地安装它，而且在 PL/pgSQL 默认安装的现在特别有用。</p>", "text": "为 CREATE LANGUAGE 新增 OR REPLACE 子句（Tom Lane） 这有助于在语言尚不存在时选择性地安装它，而且在 PL/pgSQL 默认安装的现在特别有用。", "title": "为 CREATE LANGUAGE 新增 OR REPLACE 子句", "commits": [], "section": "服务器端语言", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9", "source_hash": "9363a55d3dd3b14a7a30503421d59eb1f9226fd10ce6d765796647121675f7dd", "section_path": ["服务器端语言"], "commit_groups": [], "identity_text": "Add the OR REPLACE clause to CREATE LANGUAGE (Tom Lane) This is helpful to optionally install a language if it does not already exist, and is particularly helpful now that PL/pgSQL is installed by default.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/098", "db_id": "8259d5f074a15c5e0acf049b0b44136e", "patch_ids": [], "statement_hash": "4e588f3fb08afa61a52ada208c42bdf1b9b7e1349ecac4fdf214cd2602fb230d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0ce38c1ba1e68632", "cves": [], "html": "<p>默认安装 PL/pgSQL（Bruce Momjian）</p>\n<p>如果管理员对其可用性有安全或性能方面的顾虑，仍可以把它从特定数据库中移除。</p>", "text": "默认安装 PL/pgSQL（Bruce Momjian） 如果管理员对其可用性有安全或性能方面的顾虑，仍可以把它从特定数据库中移除。", "title": "默认安装 PL/pgSQL", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "83c9ade3d9ad182b0820a17cdad2ae05d6cd3f9b6087ffd2092fc38c780fefa0", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Install PL/pgSQL by default (Bruce Momjian) The language can still be removed from a particular database if the administrator has security or performance concerns about making it available.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/099", "db_id": "2e15c275f7e183a4c0f475f3f259c76e", "patch_ids": [], "statement_hash": "c6d5dc37fec1e01d0fb3e11b3408d3f93233bac552690f9afd484d33c51967a8", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-492fdbd713a18a65", "cves": [], "html": "<p>改进对 PL/pgSQL 变量名与函数内查询所用标识符冲突情况的处理（Tom Lane）</p>\n<p>现在的默认行为是在存在冲突时抛出错误，以避免令人惊讶的行为。可以通过配置参数 <a href=\"/docs/9.0/plpgsql-implementation.html#PLPGSQL-VAR-SUBST\" title=\"39.10.1. 变量替换\"><code>plpgsql.variable_conflict</code></a> 或逐函数选项 <code>#variable_conflict</code> 修改它，允许使用变量或查询提供的列。无论如何，PL/pgSQL 不再尝试在语法上无效的位置替换变量。</p>", "text": "改进对 PL/pgSQL 变量名与函数内查询所用标识符冲突情况的处理（Tom Lane） 现在的默认行为是在存在冲突时抛出错误，以避免令人惊讶的行为。可以通过配置参数 plpgsql.variable_conflict 或逐函数选项 #variable_conflict 修改它，允许使用变量或查询提供的列。无论如何，PL/pgSQL 不再尝试在语法上无效的位置替换变量。", "title": "改进对 PL/pgSQL 变量名与函数内查询所用标识符冲突情况的处理", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "df6829983afa73e14ee9a36ebb278245f42939d96f71c16524f88b21dfb0d039", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Improve handling of cases where PL/pgSQL variable names conflict with identifiers used in queries within a function (Tom Lane) The default behavior is now to throw an error when there is a conflict, so as to avoid surprising behaviors. This can be modified, via the configuration parameter plpgsql.variable_conflict or the per-function option #variable_conflict, to allow either the variable or the query-supplied column to be used. In any case PL/pgSQL will no longer attempt to substitute variables in places where they would not be syntactically valid.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/100", "db_id": "8b53d611e2f1f2c2aa041f7d58cbd474", "patch_ids": [], "statement_hash": "fe5ab152153ac4fba69bc3e53b4a3a99ec9498812e9df516abf972c4a16ae23b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-24983f93c5a4b0d4", "cves": [], "html": "<p>让 PL/pgSQL 使用主词法分析器而不是自己的版本（Tom Lane）</p>\n<p>这确保了对主系统行为（如字符串转义等细节）的准确跟踪。一些用户可见的细节（例如 PL/pgSQL 中被视为保留的关键字集合）因此而改变。</p>", "text": "让 PL/pgSQL 使用主词法分析器而不是自己的版本（Tom Lane） 这确保了对主系统行为（如字符串转义等细节）的准确跟踪。一些用户可见的细节（例如 PL/pgSQL 中被视为保留的关键字集合）因此而改变。", "title": "让 PL/pgSQL 使用主词法分析器而不是自己的版本", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "282fab6982122823493e2f8bf8cc51fb61d640d3cdf2f35ac787cc9523be0481", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Make PL/pgSQL use the main lexer, rather than its own version (Tom Lane) This ensures accurate tracking of the main system's behavior for details such as string escaping. Some user-visible details, such as the set of keywords considered reserved in PL/pgSQL, have changed in consequence.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/101", "db_id": "2800ce58534c89db8c1ed2079b7e27ca", "patch_ids": [], "statement_hash": "e7c848d2692bcfe3eb36b3e654bf71c2b9b54a1dfc662400f396cf626be1f751", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c1135ce91c526278", "cves": [], "html": "<p>避免对无效的记录引用抛出不必要的错误（Tom Lane）</p>\n<p>现在只有当引用实际被获取时才抛出错误，而不是在到达外层表达式时就抛出。例如，许多人曾在触发器中尝试这样做：</p>\n<pre> if TG_OP = 'INSERT' and NEW.col1 = ... then \n</pre>\n<p>这现在将按预期工作。</p>", "text": "避免对无效的记录引用抛出不必要的错误（Tom Lane） 现在只有当引用实际被获取时才抛出错误，而不是在到达外层表达式时就抛出。例如，许多人曾在触发器中尝试这样做： if TG_OP = 'INSERT' and NEW.col1 = ... then 这现在将按预期工作。", "title": "避免对无效的记录引用抛出不必要的错误", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "7c1b08b0224798d1031b58562fdcde9c908db4a9b605a527fab4ba9878673aba", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Avoid throwing an unnecessary error for an invalid record reference (Tom Lane) An error is now thrown only if the reference is actually fetched, rather than whenever the enclosing expression is reached. For example, many people have tried to do this in triggers: if TG_OP = 'INSERT' and NEW.col1 = ... then This will now actually work as expected.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/102", "db_id": "e30758a8fc4cd36e74db9e0fc01e2f10", "patch_ids": [], "statement_hash": "d6605ef34f6f2882c454c00b153d714f1cb80855a6db0b8a05da8f55f5ef8d01", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4d657bc33f977817", "cves": [], "html": "<p>改进 PL/pgSQL 处理带已删除列的行类型的能力（Pavel Stehule）</p>", "text": "改进 PL/pgSQL 处理带已删除列的行类型的能力（Pavel Stehule）", "title": "改进 PL/pgSQL 处理带已删除列的行类型的能力", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "0090995390666938acdf152716b1ba0e01c3ac28d1ce93022b7223495321c3f3", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Improve PL/pgSQL's ability to handle row types with dropped columns (Pavel Stehule)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/103", "db_id": "6102d1fc43588dc4fcb321e17bc03f76", "patch_ids": [], "statement_hash": "67c5aed85f8a84e4df8e342ce734b6e8e39fe73455e93095674fdbdac66c55a1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-088860ef5a5bc5f0", "cves": [], "html": "<p>允许在 PL/pgSQL 函数内为输入参数赋值（Steve Prentice）</p>\n<p>此前输入参数被视为声明为 <code>CONST</code>，因此函数代码不能更改它们的值。此限制已被移除，以简化从没有等效限制的其他 DBMS 移植函数。输入参数现在就像初始化为传入值的局部变量。</p>", "text": "允许在 PL/pgSQL 函数内为输入参数赋值（Steve Prentice） 此前输入参数被视为声明为 CONST，因此函数代码不能更改它们的值。此限制已被移除，以简化从没有等效限制的其他 DBMS 移植函数。输入参数现在就像初始化为传入值的局部变量。", "title": "允许在 PL/pgSQL 函数内为输入参数赋值", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "ae66c40f963d12b74c33b545bb4460ba4cddbc361fc1f6cde8da95ddc49de34d", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Allow input parameters to be assigned values within PL/pgSQL functions (Steve Prentice) Formerly, input parameters were treated as being declared CONST, so the function's code could not change their values. This restriction has been removed to simplify porting of functions from other DBMSes that do not impose the equivalent restriction. An input parameter now acts like a local variable initialized to the passed-in value.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/104", "db_id": "b002d77a3561e91809bebb795e2f3870", "patch_ids": [], "statement_hash": "844c1e507a9d9bc8e87fd5649aa2792ccf65745495f35232f7f4634b17690d1e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-264f4d55c03fad88", "cves": [], "html": "<p>改进 PL/pgSQL 的错误位置报告（Tom Lane）</p>", "text": "改进 PL/pgSQL 的错误位置报告（Tom Lane）", "title": "改进 PL/pgSQL 的错误位置报告", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "0e5cce37a14b2dcdba5d20b9e268cfe3540e9e8acd6ea582256d0dbfc2dfb37c", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Improve error location reporting in PL/pgSQL (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/105", "db_id": "a9318e03ed070797f7a11780c0e7afcf", "patch_ids": [], "statement_hash": "6d9a636525230afbd2d5f57d30bd390288919625028b4d8377f11089d3049190", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-72ef1a7d5d7384d0", "cves": [], "html": "<p>为 PL/pgSQL 的 <code>MOVE FORWARD</code>/<code>BACKWARD</code> 新增 <em><code>count</code></em> 和 <code>ALL</code> 选项（Pavel Stehule）</p>", "text": "为 PL/pgSQL 的 MOVE FORWARD/BACKWARD 新增 count 和 ALL 选项（Pavel Stehule）", "title": "为 PL/pgSQL 的 MOVE FORWARD/BACKWARD 新增 count 和 ALL 选项", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "9b7d73f151a8fe0d75f95701275735e6e3af38ea045813888a99a731cc7fde0a", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Add count and ALL options to MOVE FORWARD/BACKWARD in PL/pgSQL (Pavel Stehule)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/106", "db_id": "3a0d26fec821a61cfbbe9b8117fdeb3a", "patch_ids": [], "statement_hash": "6ed6c0112267bb9a186a48a4cc8e91b443518efdda731c048a9fda454023c4c0", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8cba82b8d1238137", "cves": [], "html": "<p>允许 PL/pgSQL 的 <code>WHERE CURRENT OF</code> 使用游标变量（Tom Lane）</p>", "text": "允许 PL/pgSQL 的 WHERE CURRENT OF 使用游标变量（Tom Lane）", "title": "允许 PL/pgSQL 的 WHERE CURRENT OF 使用游标变量", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "a7c57be26d106d80f2031180dcafc5038ddc6304b871412bac95040f42902a50", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Allow PL/pgSQL's WHERE CURRENT OF to use a cursor variable (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/107", "db_id": "b3e4430bbafcb105ba7780a1f4fc5692", "patch_ids": [], "statement_hash": "598639dfe94b492c2ade44fa8ff4574e985c387a922640f0b07deb5b117eac0e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0a664f899fb6c950", "cves": [], "html": "<p>允许 PL/pgSQL 的 <code>OPEN <em><code>cursor</code></em> FOR EXECUTE</code> 使用参数（Pavel Stehule、Itagaki Takahiro）</p>\n<p>这通过新的 <code>USING</code> 子句实现。</p>", "text": "允许 PL/pgSQL 的 OPEN cursor FOR EXECUTE 使用参数（Pavel Stehule、Itagaki Takahiro） 这通过新的 USING 子句实现。", "title": "允许 PL/pgSQL 的 OPEN cursor FOR EXECUTE 使用参数", "commits": [], "section": "服务器端语言 / PL/pgSQL Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.3", "source_hash": "b0d2e815ff4909ed76f7e613e907fe4a3c80b338fe6bf6535a13a45870132720", "section_path": ["服务器端语言", "PL/pgSQL Server-Side Language"], "commit_groups": [], "identity_text": "Allow PL/pgSQL's OPEN cursor FOR EXECUTE to use parameters (Pavel Stehule, Itagaki Takahiro) This is accomplished with a new USING clause.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/108", "db_id": "5a7bd7bf1a962c69aadd8cd5597bcb5f", "patch_ids": [], "statement_hash": "3873807a096bb2009d00734df021add21deb27de747ccf3c30be96ff1f4f6259", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-660cc95dfde8a973", "cves": [], "html": "<p>新增 PL/Perl 函数：<a href=\"/docs/9.0/plperl-builtins.html#PLPERL-UTILITY-FUNCTIONS\" title=\"41.3.2. Utility functions in PL/Perl\"><code>quote_literal()</code></a>、<code>quote_nullable()</code>、<code>quote_ident()</code>、<code>encode_bytea()</code>、<code>decode_bytea()</code>、<code>looks_like_number()</code>、<code>encode_array_literal()</code>、<code>encode_array_constructor()</code>（Tim Bunce）</p>", "text": "新增 PL/Perl 函数：quote_literal()、quote_nullable()、quote_ident()、encode_bytea()、decode_bytea()、looks_like_number()、encode_array_literal()、encode_array_constructor()（Tim Bunce）", "title": "新增 PL/Perl 函数：quote_literal()、quote_nullable()、quote_ident()、encode_bytea()、decode_bytea()、looks_like_number()、encode_array_literal()、encode_array_constructor()", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "18803bd5841a25627d44ba953bc0f99a8fcc5c7afae7f04a8f20c4181a0bc055", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Add new PL/Perl functions: quote_literal(), quote_nullable(), quote_ident(), encode_bytea(), decode_bytea(), looks_like_number(), encode_array_literal(), encode_array_constructor() (Tim Bunce)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/109", "db_id": "9804e686b3092e5e7cea1ee451b5af01", "patch_ids": [], "statement_hash": "855cf3025f3bba4ab5e6990ed804a2cbffe250e5f8ef6bdb0d686e8adaea82a6", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c12087ae08d8eb19", "cves": [], "html": "<p>新增服务器参数 <a href=\"/docs/9.0/plperl-under-the-hood.html#GUC-PLPERL-ON-INIT\"><code>plperl.on_init</code></a>，用于指定 PL/Perl 初始化函数（Tim Bunce）</p>\n<p>还提供 <a href=\"/docs/9.0/plperl-under-the-hood.html#GUC-PLPERL-ON-PLPERL-INIT\"><code>plperl.on_plperl_init</code></a> 和 <a href=\"/docs/9.0/plperl-under-the-hood.html#GUC-PLPERL-ON-PLPERL-INIT\"><code>plperl.on_plperlu_init</code></a>，分别用于可信或不可信语言的特定初始化。</p>", "text": "新增服务器参数 plperl.on_init，用于指定 PL/Perl 初始化函数（Tim Bunce） 还提供 plperl.on_plperl_init 和 plperl.on_plperlu_init，分别用于可信或不可信语言的特定初始化。", "title": "新增服务器参数 plperl.on_init，用于指定 PL/Perl 初始化函数", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "b8a45fac7a44f7e4eaf86267a304bfd98df68edccc5959fe63bc233b9aca1f75", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Add server parameter plperl.on_init to specify a PL/Perl initialization function (Tim Bunce) plperl.on_plperl_init and plperl.on_plperlu_init are also available for initialization that is specific to the trusted or untrusted language respectively.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/110", "db_id": "d97456baeb3395cc97a85404eeaca432", "patch_ids": [], "statement_hash": "17feb2a461a2abbfc6a834e7d38088325190de1c21419a7029284c3702ee756e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-097f31a3d2076d7b", "cves": [], "html": "<p>支持 PL/Perl 中的 <code>END</code> 块（Tim Bunce）</p>\n<p><code>END</code> 块目前不允许数据库访问。</p>", "text": "支持 PL/Perl 中的 END 块（Tim Bunce） END 块目前不允许数据库访问。", "title": "支持 PL/Perl 中的 END 块", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "8b805570b68d2b9d3dfb4ae1b07c32f4c0604e53183a9ad84157022c7b2e8db0", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Support END blocks in PL/Perl (Tim Bunce) END blocks do not currently allow database access.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/111", "db_id": "041fbf4eb307436d0d0c8df865b3388b", "patch_ids": [], "statement_hash": "51af437a1b0a24e4f485053e207bb5ba32cb1436f260d8b40fefbe1a9fdf631a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f8e17d0743b84df7", "cves": [], "html": "<p>允许 PL/Perl 中使用 <code>use strict</code>（Tim Bunce）</p>\n<p>Perl <code>strict</code> 检查还可以通过新的服务器参数 <a href=\"/docs/9.0/plperl-under-the-hood.html#GUC-PLPERL-USE-STRICT\"><code>plperl.use_strict</code></a> 全局启用。</p>", "text": "允许 PL/Perl 中使用 use strict（Tim Bunce） Perl strict 检查还可以通过新的服务器参数 plperl.use_strict 全局启用。", "title": "允许 PL/Perl 中使用 use strict", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "586e4ee8915e3684956fbe610ed48ff45102b675da9780b68f9c163ef9d11894", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Allow use strict in PL/Perl (Tim Bunce) Perl strict checks can also be globally enabled with the new server parameter plperl.use_strict.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/112", "db_id": "6422e088e3f395f46bcd0c0380055a36", "patch_ids": [], "statement_hash": "698f638d992093948a3be797495c14da4fdf1074c96d916ed8069b53bd4acf2e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-83a26480fc43a230", "cves": [], "html": "<p>允许 PL/Perl 中使用 <code>require</code>（Tim Bunce）</p>\n<p>它基本上是测试模块是否已加载，如果没有则生成错误。它不允许加载管理员未通过初始化参数预加载的模块。</p>", "text": "允许 PL/Perl 中使用 require（Tim Bunce） 它基本上是测试模块是否已加载，如果没有则生成错误。它不允许加载管理员未通过初始化参数预加载的模块。", "title": "允许 PL/Perl 中使用 require", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "1ba98d72b64ff4166386fd80dc3028b240f8de6e696a526e538c37c14e73cffe", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Allow require in PL/Perl (Tim Bunce) This basically tests to see if the module is loaded, and if not, generates an error. It will not allow loading of modules that the administrator has not preloaded via the initialization parameters.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/113", "db_id": "8cd9c1b330c62cd356688aac65531539", "patch_ids": [], "statement_hash": "21eed2dea0e105b3454a483a9a14dfb48607b70ab1dea29fc5c07d968f3d823c", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-fdb4bc266a1a9ee1", "cves": [], "html": "<p>如果使用 Perl 5.10 或更高版本，允许 PL/Perl 中使用 <code>use feature</code>（Tim Bunce）</p>", "text": "如果使用 Perl 5.10 或更高版本，允许 PL/Perl 中使用 use feature（Tim Bunce）", "title": "如果使用 Perl 5.10 或更高版本，允许 PL/Perl 中使用 use feature", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "53c9bf9c83abc284469df82787fdf791f8eb6741329e625320fa4d6a43aa7cfe", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Allow use feature in PL/Perl if Perl version 5.10 or later is used (Tim Bunce)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/114", "db_id": "141de70310f1056ed70dfbf8267b64d8", "patch_ids": [], "statement_hash": "8300c04ce0d52803b4fb6181d4c3b3228d6a0e18f461a26f793323e6669919f5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1402f011cb61b40d", "cves": [], "html": "<p>验证 PL/Perl 返回值在服务器编码中有效（Andrew Dunstan）</p>", "text": "验证 PL/Perl 返回值在服务器编码中有效（Andrew Dunstan）", "title": "验证 PL/Perl 返回值在服务器编码中有效", "commits": [], "section": "服务器端语言 / PL/Perl Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.4", "source_hash": "8e4370725b865a4273f20ca750a4818d5aa15ac0ff47321b2b6f0df8af339e22", "section_path": ["服务器端语言", "PL/Perl Server-Side Language"], "commit_groups": [], "identity_text": "Verify that PL/Perl return values are valid in the server encoding (Andrew Dunstan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/115", "db_id": "1639958a37bd70c0e3d27444e9cbc2c9", "patch_ids": [], "statement_hash": "308d290b9edb99b6a2ebcadc4a190db16d45930ac152bab0d0b15a34965013ca", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-56a8e029f8faf6d6", "cves": [], "html": "<p>在 PL/Python 中新增 Unicode 支持（Peter Eisentraut）</p>\n<p>字符串会根据需要自动与服务器编码相互转换。</p>", "text": "在 PL/Python 中新增 Unicode 支持（Peter Eisentraut） 字符串会根据需要自动与服务器编码相互转换。", "title": "在 PL/Python 中新增 Unicode 支持", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "ee3dc49a898cf7cdc9a5f4d4a711665ff7a044ff47885f27b3f6429ec4ca8a70", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add Unicode support in PL/Python (Peter Eisentraut) Strings are automatically converted from/to the server encoding as necessary.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/116", "db_id": "2f3573f2ba368e3dee862e67670ef829", "patch_ids": [], "statement_hash": "cc9ac3751e69f2f75bf2d582f0e0c882bff3d891c94464b9d1629b31531e14af", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-37adc8598072852a", "cves": [], "html": "<p>改进 PL/Python 的 <code>bytea</code> 支持（Caleb Welton）</p>\n<p>传入 PL/Python 的 <code>bytea</code> 值现在表示为二进制而不是 PostgreSQL 的 <code>bytea</code> 文本格式。包含空字节的 <code>bytea</code> 值现在也能从 PL/Python 正确输出。布尔、整数和浮点值的传递也得到了改进。</p>", "text": "改进 PL/Python 的 bytea 支持（Caleb Welton） 传入 PL/Python 的 bytea 值现在表示为二进制而不是 PostgreSQL 的 bytea 文本格式。包含空字节的 bytea 值现在也能从 PL/Python 正确输出。布尔、整数和浮点值的传递也得到了改进。", "title": "改进 PL/Python 的 bytea 支持", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "e7a94967ec6a098563441b992e6aec66d61e7f490ca02a78792301518394997d", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Improve bytea support in PL/Python (Caleb Welton) Bytea values passed into PL/Python are now represented as binary, rather than the PostgreSQL bytea text format. Bytea values containing null bytes are now also output properly from PL/Python. Passing of boolean, integer, and float values was also improved.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/117", "db_id": "ea90fe89f5e765c38ddb7478adee1d47", "patch_ids": [], "statement_hash": "f4042a89df50c77cf85f639a5a551c7ada66cb8870b7834daa570643d59dca79", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a389bcb519421958", "cves": [], "html": "<p>支持在 PL/Python 中使用<a href=\"/docs/9.0/plpython-data.html#PLPYTHON-ARRAYS\" title=\"42.3.3. Arrays, Lists\">数组</a>作为参数和返回值（Peter Eisentraut）</p>", "text": "支持在 PL/Python 中使用数组作为参数和返回值（Peter Eisentraut）", "title": "支持在 PL/Python 中使用数组作为参数和返回值", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "57e4b30ac9c7759878fc1f0dd572acc42ab8043ea27a9518e50dbf93d844a8e5", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Support arrays as parameters and return values in PL/Python (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/118", "db_id": "5209e3154b23be3e480ec792bbfe1c3b", "patch_ids": [], "statement_hash": "850dc3e3cde6b775e86f70bce855e8b5a69ff448d16b48d10c5a98b150b0c45b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-38d4cd25ede2652d", "cves": [], "html": "<p>改进 SQL 域到 Python 类型的映射（Peter Eisentraut）</p>", "text": "改进 SQL 域到 Python 类型的映射（Peter Eisentraut）", "title": "改进 SQL 域到 Python 类型的映射", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "05508ab79d88fc42d10034ef9dc05ad2f937df0e7c657188c5f17d51f21959c6", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Improve mapping of SQL domains to Python types (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/119", "db_id": "055ed222fc379b190e7ece76ec77fed0", "patch_ids": [], "statement_hash": "ce113c314850dc3bd500b491b33f8ee7cd2bada06edc541c48863690b96ebaa7", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7aac8bc369fb0b3a", "cves": [], "html": "<p>为 PL/Python 新增 <span>Python</span> 3 支持（Peter Eisentraut）</p>\n<p>新的服务器端语言名为 <a href=\"/docs/9.0/plpython.html#PLPYTHON-PYTHON23\" title=\"42.1. Python 2 与 Python 3\"><code>plpython3u</code></a>。它不能与 <span>Python</span> 2 服务器端语言在同一会话中使用。</p>", "text": "为 PL/Python 新增 Python 3 支持（Peter Eisentraut） 新的服务器端语言名为 plpython3u。它不能与 Python 2 服务器端语言在同一会话中使用。", "title": "为 PL/Python 新增 Python 3 支持", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "4ca0cf01e39cbd31dcc9ad4d8407684f0ab559eb61016be941aa19041848faa2", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Add Python 3 support to PL/Python (Peter Eisentraut) The new server-side language is called plpython3u. This cannot be used in the same session with the Python 2 server-side language.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/120", "db_id": "252b0ccd785240e5b5c7353ee7eb8019", "patch_ids": [], "statement_hash": "a84e4386d0304730e25d28d32a7aed0f462726e5c9650baa7d33adb56c3ccf9f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-9992824cb286e7a7", "cves": [], "html": "<p>改进 PL/Python 的错误位置和异常报告（Peter Eisentraut）</p>", "text": "改进 PL/Python 的错误位置和异常报告（Peter Eisentraut）", "title": "改进 PL/Python 的错误位置和异常报告", "commits": [], "section": "服务器端语言 / PL/Python Server-Side Language", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.9.5", "source_hash": "ca94e2169d2536a7f2b8ec28eab2397a16237c5f5d9cb8d840adaadd000fcc3e", "section_path": ["服务器端语言", "PL/Python Server-Side Language"], "commit_groups": [], "identity_text": "Improve error location and exception reporting in PL/Python (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/121", "db_id": "6244ac39bbc508a4e096157690094833", "patch_ids": [], "statement_hash": "264c43ccb4a23db4de518f8dd90ca242fd583ff79d6b26774f33d1829149efd2", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-707a94b34b010bad", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/app-vacuumdb.html\" title=\"vacuumdb\"><code>vacuumdb</code></a> 新增 <code>--analyze-only</code> 选项，只分析不清理（Bruce Momjian）</p>", "text": "为 vacuumdb 新增 --analyze-only 选项，只分析不清理（Bruce Momjian）", "title": "为 vacuumdb 新增 --analyze-only 选项，只分析不清理", "commits": [], "section": "客户端应用程序", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10", "source_hash": "e0aa041a074ddfa1c325d223f853d6f98bccde233fb9da55909d3b90744dd090", "section_path": ["客户端应用程序"], "commit_groups": [], "identity_text": "Add an --analyze-only option to vacuumdb, to analyze without vacuuming (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/122", "db_id": "1f1013c89a74d25134949cfff07943b9", "patch_ids": [], "statement_hash": "b82bcb9dd50bcff18ef14d6c8caecda614277a5e0aa0d79848593219d17a7628", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c793632c3bd89dbf", "cves": [], "html": "<p>新增对 <span>psql</span> <a href=\"/docs/9.0/app-psql.html#APP-PSQL-VARIABLES\" title=\"变量\">变量</a>值作为 SQL 字符串或标识符加引号/转义的支持（Pavel Stehule、Robert Haas）</p>\n<p>例如，<code>:'var'</code> 会产生加了引号并正确转义为字面字符串的 <code>var</code> 值，而 <code>:\"var\"</code> 会产生加了引号并转义为标识符的值。</p>", "text": "新增对 psql 变量值作为 SQL 字符串或标识符加引号/转义的支持（Pavel Stehule、Robert Haas） 例如，:'var' 会产生加了引号并正确转义为字面字符串的 var 值，而 :\"var\" 会产生加了引号并转义为标识符的值。", "title": "新增对 psql 变量值作为 SQL 字符串或标识符加引号/转义的支持", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "4f538ff9521cdc912139104504588c333ff179874638ef049f48eea20c200c13", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Add support for quoting/escaping the values of psql variables as SQL strings or identifiers (Pavel Stehule, Robert Haas) For example, :'var' will produce the value of var quoted and properly escaped as a literal string, while :\"var\" will produce its value quoted and escaped as an identifier.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/123", "db_id": "168401865cb7c623480de3e4b89746c6", "patch_ids": [], "statement_hash": "a449c4872582a66e274b4cde4c5d26201a79dda0a8d956c951678e43c1f8d56f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-77f23752c2f984ec", "cves": [], "html": "<p>让 <span>psql</span> 忽略其读取的脚本文件中前导的 UTF-8 编码 Unicode 字节顺序标记（Itagaki Takahiro）</p>\n<p>这在客户端编码为 <acronym>UTF-8</acronym> 时启用。它改进了与某些（主要在 Windows 上）坚持插入此类标记的编辑器的兼容性。</p>", "text": "让 psql 忽略其读取的脚本文件中前导的 UTF-8 编码 Unicode 字节顺序标记（Itagaki Takahiro） 这在客户端编码为 UTF-8 时启用。它改进了与某些（主要在 Windows 上）坚持插入此类标记的编辑器的兼容性。", "title": "让 psql 忽略其读取的脚本文件中前导的 UTF-8 编码 Unicode 字节顺序标记", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "14b82bcaf250faec0ba1c5a89bd054d1f7b5fbca1e9ca6eb60b3214c29586f71", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Ignore a leading UTF-8-encoded Unicode byte-order marker in script files read by psql (Itagaki Takahiro) This is enabled when the client encoding is UTF-8. It improves compatibility with certain editors, mostly on Windows, that insist on inserting such markers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/124", "db_id": "1d5f46c3e0efadffec766a68997db936", "patch_ids": [], "statement_hash": "804a69798e3c1e022ad46411460a8601cc0d113c1b464496075e98a54dc8ca9e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3a7dca52d9bda178", "cves": [], "html": "<p>修复 <code>psql --file -</code>，使其正确遵循 <a href=\"/docs/9.0/app-psql.html#R1-APP-PSQL-3\" title=\"选项\"><code>--single-transaction</code></a>（Bruce Momjian）</p>", "text": "修复 psql --file -，使其正确遵循 --single-transaction（Bruce Momjian）", "title": "修复 psql --file -，使其正确遵循 --single-transaction", "commits": [], "section": "客户端应用程序 / psql", "category": "bugfix", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "a1353fb8ef6d8bebc0cadb75fb73f69b6a87a217ca52484db98b98b53c00e3a1", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Fix psql --file - to properly honor --single-transaction (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/125", "db_id": "b4f671b61efe006e6e8ec573d58a1d64", "patch_ids": [], "statement_hash": "7501f858a8de85b51dfc82eb633eb7f2d4a6c6c1e3bae380c18fd28802c7f5ef", "relations": [], "version": "9.0.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a2826c8681c7d266", "cves": [], "html": "<p>避免两个 <span>psql</span> 会话并发运行时 <span>psql</span> 的命令行历史相互覆盖（Tom Lane）</p>", "text": "避免两个 psql 会话并发运行时 psql 的命令行历史相互覆盖（Tom Lane）", "title": "避免两个 psql 会话并发运行时 psql 的命令行历史相互覆盖", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "2336dbf6800b4b5b5b1891bac0a839e78f060dff6b926c57289fe3b340429965", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Avoid overwriting of psql's command-line history when two psql sessions are run concurrently (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/126", "db_id": "e98a49a54b78adf36daf8295a32639c1", "patch_ids": [], "statement_hash": "94e17779963484011912b07e3f4ed2607dd4b781d1a7c2ee22b2b09e2a5e2f3b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-53d7a7f84d775fe2", "cves": [], "html": "<p>改进 <span>psql</span> 的 Tab 补全支持（Itagaki Takahiro）</p>", "text": "改进 psql 的 Tab 补全支持（Itagaki Takahiro）", "title": "改进 psql 的 Tab 补全支持", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "ebb00acc8fa1c9dfb9215ec6c60daf18d56976e70df0f6edd4428b4d7093ad54", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Improve psql's tab completion support (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/127", "db_id": "4b39ac4c3589a00903df8e6b7f3bb800", "patch_ids": [], "statement_hash": "fda675fb0ff4e263a81d913fa78b50837ed3a87372693da1ff7fe847791bdfe1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-dcfdb74033ec3c0b", "cves": [], "html": "<p>只要启用了 <code>\\timing</code> 就显示其输出，无论是否处于<span>“<span>安静</span>”</span>模式（Peter Eisentraut）</p>", "text": "只要启用了 \\timing 就显示其输出，无论是否处于“安静”模式（Peter Eisentraut）", "title": "只要启用了 \\timing 就显示其输出，无论是否处于“安静”模式", "commits": [], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3", "source_hash": "0694bcb3d96a553bc923e9f04056f6432132ecf3b0760c4c3315ce54db150706", "section_path": ["客户端应用程序", "psql"], "commit_groups": [], "identity_text": "Show \\timing output when it is enabled, regardless of quiet mode (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/128", "db_id": "8c4f5e0c1fe4dc3ad1c73531b4b46412", "patch_ids": [], "statement_hash": "9e808ab3cdfedfd2b968397d4989275cd9693f123e170be256b49c974c86002a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b926a868a2338277", "cves": [], "html": "<p>改进 <span>psql</span> 中换行列的显示（Roger Leigh）</p>\n<p>此行为现在是默认。以前的格式可以通过 <code>\\pset linestyle old-ascii</code> 使用。</p>", "text": "改进 psql 中换行列的显示（Roger Leigh） 此行为现在是默认。以前的格式可以通过 \\pset linestyle old-ascii 使用。", "title": "改进 psql 中换行列的显示", "commits": [], "section": "客户端应用程序 / psql / psql Display", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3.3", "source_hash": "4d90286a07e25b285a6ad6833c53303a7fb7db5b6dc3a3147431542be5a479f2", "section_path": ["客户端应用程序", "psql", "psql Display"], "commit_groups": [], "identity_text": "Improve display of wrapped columns in psql (Roger Leigh) This behavior is now the default. The previous formatting is available by using \\pset linestyle old-ascii.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/129", "db_id": "df55cb6e0e9ea81d3b13c601bdfa3264", "patch_ids": [], "statement_hash": "e938f51a4aa5ea114e770575f6162c46836f076672ce9696cbd4ad534920c4a5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8b08aa46f89d01fe", "cves": [], "html": "<p>允许 <span>psql</span> 通过 <code>\\pset linestyle unicode</code> 使用精致的 Unicode 画线字符（Roger Leigh）</p>", "text": "允许 psql 通过 \\pset linestyle unicode 使用精致的 Unicode 画线字符（Roger Leigh）", "title": "允许 psql 通过 \\pset linestyle unicode 使用精致的 Unicode 画线字符", "commits": [], "section": "客户端应用程序 / psql / psql Display", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3.3", "source_hash": "2d413b7f34532576e3ea29aba9d68fa5377c222afd272fb0d1b5b091ad83f238", "section_path": ["客户端应用程序", "psql", "psql Display"], "commit_groups": [], "identity_text": "Allow psql to use fancy Unicode line-drawing characters via \\pset linestyle unicode (Roger Leigh)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/130", "db_id": "9e3488dc99973baffe1af0d92000e11e", "patch_ids": [], "statement_hash": "8aaaeb2ab6353ca51af37713f259d3af9024e0a20137c719e87fe6d0c2904803", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8116d933f861b329", "cves": [], "html": "<p>让 <code>\\d</code> 显示继承自指定父表的子表（Damien Clochard）</p>\n<p><code>\\d</code> 只显示子表数量，而 <code>\\d+</code> 显示所有子表的名称。</p>", "text": "让 \\d 显示继承自指定父表的子表（Damien Clochard） \\d 只显示子表数量，而 \\d+ 显示所有子表的名称。", "title": "让 \\d 显示继承自指定父表的子表", "commits": [], "section": "客户端应用程序 / psql / psql \\d Commands", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3.4", "source_hash": "1c469d83a0c59bcf19d05682eded039a9a80b2c2db1902c60b447e1f6e9b1a8f", "section_path": ["客户端应用程序", "psql", "psql \\d Commands"], "commit_groups": [], "identity_text": "Make \\d show child tables that inherit from the specified parent (Damien Clochard) \\d shows only the number of child tables, while \\d+ shows the names of all child tables.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/131", "db_id": "618c901992745f23ab75f36b3046a996", "patch_ids": [], "statement_hash": "c9982f682a57bcdc7e24dc159c4e43be10e4bad2ab5ab00602e315ff3f0cf6c5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1c1e9c1e811f63dd", "cves": [], "html": "<p>在 <code>\\d index_name</code> 中显示索引列的定义（Khee Chin）</p>\n<p>该定义对表达式索引很有用。</p>", "text": "在 \\d index_name 中显示索引列的定义（Khee Chin） 该定义对表达式索引很有用。", "title": "在 \\d index_name 中显示索引列的定义", "commits": [], "section": "客户端应用程序 / psql / psql \\d Commands", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3.4", "source_hash": "aeb86d9a99f28d2f449ab0715798f4ede59a16c28a3d9bdaffee090184f9bf1c", "section_path": ["客户端应用程序", "psql", "psql \\d Commands"], "commit_groups": [], "identity_text": "Show definitions of index columns in \\d index_name (Khee Chin) The definition is useful for expression indexes.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/132", "db_id": "33619f25fe433af77f35dead5a3c49d4", "patch_ids": [], "statement_hash": "088eb082dd25591c0b72bf9e08c08135b903b6155b9940273b668222a1e42de4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8f5ebf78a48b3889", "cves": [], "html": "<p>只在 <code>\\d+</code> 而不是 <code>\\d</code> 中显示视图的定义查询（Peter Eisentraut）</p>\n<p>始终包含查询被认为过于冗长。</p>", "text": "只在 \\d+ 而不是 \\d 中显示视图的定义查询（Peter Eisentraut） 始终包含查询被认为过于冗长。", "title": "只在 \\d+ 而不是 \\d 中显示视图的定义查询", "commits": [], "section": "客户端应用程序 / psql / psql \\d Commands", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.3.4", "source_hash": "42aa91510332597a2fa823fbf0d421de08a7b4bc61ef8bdbaec16731768d25f4", "section_path": ["客户端应用程序", "psql", "psql \\d Commands"], "commit_groups": [], "identity_text": "Show a view's defining query only in \\d+, not in \\d (Peter Eisentraut) Always including the query was deemed overly verbose.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/133", "db_id": "4658c4c5c975e9f5dd899bc3e923aabe", "patch_ids": [], "statement_hash": "e3fcd2be89e87c8123015c636f8ac8d3eacbfa6546c2200d90181a6196d78c7d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7e3450f83a1ccebf", "cves": [], "html": "<p>让 <span>pg_dump</span>/<span>pg_restore</span> 的 <a href=\"/docs/9.0/app-pgdump.html#PG-DUMP-OPTIONS\" title=\"Options\"><code>--clean</code></a> 也移除大对象（Itagaki Takahiro）</p>", "text": "让 pg_dump/pg_restore 的 --clean 也移除大对象（Itagaki Takahiro）", "title": "让 pg_dump/pg_restore 的 --clean 也移除大对象", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "a46c064f7181c7f0261be748578e33c222f25d8988e1a58a5c6ba21ab71a0d89", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Make pg_dump/pg_restore --clean also remove large objects (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/134", "db_id": "82b6475d7362b30aa4adadd8026a003a", "patch_ids": [], "statement_hash": "1503ccd3b4350d9335e1eb248660416af52ff7237dc408f0d3f6628d4cdc14a8", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a571f706d6f76d54", "cves": [], "html": "<p>修复 <span>pg_dump</span>，使其在启用 <code>standard_conforming_strings</code> 时正确转储大对象（Tom Lane）</p>\n<p>以前的编码在转储到归档文件再由 <span>pg_restore</span> 生成脚本输出时可能失败。</p>", "text": "修复 pg_dump，使其在启用 standard_conforming_strings 时正确转储大对象（Tom Lane） 以前的编码在转储到归档文件再由 pg_restore 生成脚本输出时可能失败。", "title": "修复 pg_dump，使其在启用 standard_conforming_strings 时正确转储大对象", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "bugfix", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "27cd511ea6e1d493b006df17f6cae508b529b4afe4388d67968cc9d3c351a884", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Fix pg_dump to properly dump large objects when standard_conforming_strings is enabled (Tom Lane) The previous coding could fail when dumping to an archive file and then generating script output from pg_restore.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/135", "db_id": "385994f2327012742f667d815f0f3a78", "patch_ids": [], "statement_hash": "012fc2f97fa48a25887a55786eb67db20a5edd6bdaa0d60301028d78cf54066d", "relations": [], "version": "9.0.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8d2e6086625a6137", "cves": [], "html": "<p><span>pg_restore</span> 现在在生成脚本输出时以十六进制格式发出大对象数据（Tom Lane）</p>\n<p>如果脚本随后被加载到 9.0 之前的服务器，这可能导致兼容性问题。解决办法是改为直接恢复到服务器。</p>", "text": "pg_restore 现在在生成脚本输出时以十六进制格式发出大对象数据（Tom Lane） 如果脚本随后被加载到 9.0 之前的服务器，这可能导致兼容性问题。解决办法是改为直接恢复到服务器。", "title": "pg_restore 现在在生成脚本输出时以十六进制格式发出大对象数据", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "2879b638e1c5288772eef367275b2e30a8c0008088c7282387ce056a74686b4d", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "pg_restore now emits large-object data in hex format when generating script output (Tom Lane) This could cause compatibility problems if the script is then loaded into a pre-9.0 server. To work around that, restore directly to the server, instead.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/136", "db_id": "145bb6c65035c2d8428ec5f5f9a9cbf7", "patch_ids": [], "statement_hash": "5bea01feff9c616ce20b508d08a939c86d128f3b98badf79ba25cf7fb86d9e69", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f776aae922534fe4", "cves": [], "html": "<p>允许 <span>pg_dump</span> 转储附加在组合类型列上的注释（Taro Minowa (Higepon)）</p>", "text": "允许 pg_dump 转储附加在组合类型列上的注释（Taro Minowa (Higepon)）", "title": "允许 pg_dump 转储附加在组合类型列上的注释（Taro Minowa (Higepon)）", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "cc0780fe49e592897044e987254fd506b7ad141777373e7220b88515d2e67414", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Allow pg_dump to dump comments attached to columns of composite types (Taro Minowa (Higepon))", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/137", "db_id": "a8378f1c04583d2703425a65178f7cb0", "patch_ids": [], "statement_hash": "ef1dbacf8eae73707329667cd01f65c6481d7bc4250c811b7245ecfe748da0b4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-bbba22bf7e496699", "cves": [], "html": "<p>让 <span>pg_dump</span> <a href=\"/docs/9.0/app-pgdump.html#PG-DUMP-OPTIONS\" title=\"Options\"><code>--verbose</code></a> 在文本输出模式下输出 <span>pg_dump</span> 和服务器版本（Jim Cox、Tom Lane）</p>\n<p>这些在自定义输出模式下早已提供。</p>", "text": "让 pg_dump --verbose 在文本输出模式下输出 pg_dump 和服务器版本（Jim Cox、Tom Lane） 这些在自定义输出模式下早已提供。", "title": "让 pg_dump --verbose 在文本输出模式下输出 pg_dump 和服务器版本", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "99a7cbb3573e109bf4a9bc2a8d7445b85391b77394cf59a6ca25b053a59720f7", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "Make pg_dump --verbose output the pg_dump and server versions in text output mode (Jim Cox, Tom Lane) These were already provided in custom output mode.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/138", "db_id": "7fcbb2f6c866dff6c5bdc397814d0d5f", "patch_ids": [], "statement_hash": "341ed569e26d6b4e0f6736bbce0658213c5770631a38e0548c74c390a92c61b8", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f0046a4cb68965bd", "cves": [], "html": "<p><span>pg_restore</span> 现在会在开关和可选文件名之后还有命令行参数时抱怨（Tom Lane）</p>\n<p>此前它会静默忽略任何这类参数。</p>", "text": "pg_restore 现在会在开关和可选文件名之后还有命令行参数时抱怨（Tom Lane） 此前它会静默忽略任何这类参数。", "title": "pg_restore 现在会在开关和可选文件名之后还有命令行参数时抱怨", "commits": [], "section": "客户端应用程序 / pg_dump", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.4", "source_hash": "5a8de215f253b27b81cb4cabadc202fdb348ee8d64e3364f0663c1018991d506", "section_path": ["客户端应用程序", "pg_dump"], "commit_groups": [], "identity_text": "pg_restore now complains if any command-line arguments remain after the switches and optional file name (Tom Lane) Previously, it silently ignored any such arguments.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/139", "db_id": "3644a0d1734457041c5ad85d0375f490", "patch_ids": [], "statement_hash": "987aa1066c1b73b24dbc0fe139186a67172450526e13af519244feffa9352d25", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c4ea10629dadc5e6", "cves": [], "html": "<p>允许在系统重启期间安全地用 <span>pg_ctl</span> 启动 <span>postmaster</span>（Tom Lane）</p>\n<p>此前，<span>pg_ctl</span> 的父进程可能基于过期的 <span>postmaster</span> 锁文件被误识别为运行中的 <span>postmaster</span>，导致数据库瞬时启动失败。</p>", "text": "允许在系统重启期间安全地用 pg_ctl 启动 postmaster（Tom Lane） 此前，pg_ctl 的父进程可能基于过期的 postmaster 锁文件被误识别为运行中的 postmaster，导致数据库瞬时启动失败。", "title": "允许在系统重启期间安全地用 pg_ctl 启动 postmaster", "commits": [], "section": "客户端应用程序 / pg_ctl", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.5", "source_hash": "b1d7f1ecb4a09700f0b41fe959b2060549046521ba7396d9d689118ecad11308", "section_path": ["客户端应用程序", "pg_ctl"], "commit_groups": [], "identity_text": "Allow pg_ctl to be used safely to start the postmaster during a system reboot (Tom Lane) Previously, pg_ctl's parent process could have been mistakenly identified as a running postmaster based on a stale postmaster lock file, resulting in a transient failure to start the database.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/140", "db_id": "49592cda0cd3ee25c44946d817f2328c", "patch_ids": [], "statement_hash": "c9ceec3253f22dcb34583bc72a4e35f9c72b2e9b9c5f6557b0b1d3b2f4af13a4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d29c258c0c0ce33f", "cves": [], "html": "<p>赋予 <span>pg_ctl</span> 初始化数据库的能力（通过调用 <span>initdb</span>）（Zdenek Kotala）</p>", "text": "赋予 pg_ctl 初始化数据库的能力（通过调用 initdb）（Zdenek Kotala）", "title": "赋予 pg_ctl 初始化数据库的能力（通过调用 initdb）", "commits": [], "section": "客户端应用程序 / pg_ctl", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.10.5", "source_hash": "29ce6fa81b7b61e06ee260586e39bc708d47f515b4dc9d809274364c815b375f", "section_path": ["客户端应用程序", "pg_ctl"], "commit_groups": [], "identity_text": "Give pg_ctl the ability to initialize the database (by invoking initdb) (Zdenek Kotala)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/141", "db_id": "01f10a1b58d652fe9dc1855f544b6446", "patch_ids": [], "statement_hash": "9e0058a991d8a73279454994ec4a10b5a97526dec2a8aadb52d41b6356211b33", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-fc39196427f7b9a0", "cves": [], "html": "<p>新增 <span>libpq</span> 函数 <a href=\"/docs/9.0/libpq.html#LIBPQ-CONNECT\" title=\"31.1. 数据库连接控制函数\"><code>PQconnectdbParams()</code></a> 和 <code>PQconnectStartParams()</code>（Guillaume Lelarge）</p>\n<p>这些函数类似于 <code>PQconnectdb()</code> 和 <code>PQconnectStart()</code>，只是它们接受以空结尾的连接选项数组，而不是要求在单个字符串中提供所有选项。</p>", "text": "新增 libpq 函数 PQconnectdbParams() 和 PQconnectStartParams()（Guillaume Lelarge） 这些函数类似于 PQconnectdb() 和 PQconnectStart()，只是它们接受以空结尾的连接选项数组，而不是要求在单个字符串中提供所有选项。", "title": "新增 libpq 函数 PQconnectdbParams() 和 PQconnectStartParams()", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "37040b5587f63857bc3ff9ce11e7a79176aee7ed263cbcd4aaef412dcc5868e8", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add new libpq functions PQconnectdbParams() and PQconnectStartParams() (Guillaume Lelarge) These functions are similar to PQconnectdb() and PQconnectStart() except that they accept a null-terminated array of connection options, rather than requiring all options to be provided in a single string.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/142", "db_id": "82fa3f10606287eafc906b775e0aae6b", "patch_ids": [], "statement_hash": "1fe0f1a477f140229a77a9128fa2209ac79970ca0034bc7c7ee72f1697a0c580", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-11342d9c10f74213", "cves": [], "html": "<p>新增 <span>libpq</span> 函数 <a href=\"/docs/9.0/libpq-exec.html#LIBPQ-EXEC-ESCAPE-STRING\" title=\"31.3.4. 用于在 SQL 命令中嵌入字符串的转义\"><code>PQescapeLiteral()</code></a> 和 <code>PQescapeIdentifier()</code>（Robert Haas）</p>\n<p>这些函数返回适当加引号和转义的 SQL 字符串字面量和标识符。调用者不需要像 <code>PQescapeStringConn()</code> 那样预分配字符串结果。</p>", "text": "新增 libpq 函数 PQescapeLiteral() 和 PQescapeIdentifier()（Robert Haas） 这些函数返回适当加引号和转义的 SQL 字符串字面量和标识符。调用者不需要像 PQescapeStringConn() 那样预分配字符串结果。", "title": "新增 libpq 函数 PQescapeLiteral() 和 PQescapeIdentifier()", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "72984a7c9872e62cf1a0d46de2edc297153ac07e1c885620bd7614336dca2332", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add libpq functions PQescapeLiteral() and PQescapeIdentifier() (Robert Haas) These functions return appropriately quoted and escaped SQL string literals and identifiers. The caller is not required to pre-allocate the string result, as is required by PQescapeStringConn().", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/143", "db_id": "5e1d83d2c5068ec22d6a62d6b8b180d7", "patch_ids": [], "statement_hash": "8dc769a3b97e366f9a5ca556c8269632408bc15346b1ea615b3a3d33215f3849", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7bf5b7be2d0a6d49", "cves": [], "html": "<p>新增对每用户服务文件（<a href=\"/docs/9.0/libpq-pgservice.html\" title=\"31.15. 连接服务文件\"><code>.pg_service.conf</code></a>）的支持，它在全站服务文件之前检查（Peter Eisentraut）</p>", "text": "新增对每用户服务文件（.pg_service.conf）的支持，它在全站服务文件之前检查（Peter Eisentraut）", "title": "新增对每用户服务文件（.pg_service.conf）的支持，它在全站服务文件之前检查", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "3f60c5818770405ba7ca6aa2373648c7ddf247a063d2a027a3c2adaad617e5d2", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add support for a per-user service file (.pg_service.conf), which is checked before the site-wide service file (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/144", "db_id": "0c4322353e5bd61b78f732327271b068", "patch_ids": [], "statement_hash": "ba90d1cca9623e7e8c5a420f7a1230ac944799980fd74cb1807189fb796e95ab", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-77c703f745a9f194", "cves": [], "html": "<p>如果找不到指定的 <span>libpq</span> 服务则正确报告错误（Peter Eisentraut）</p>", "text": "如果找不到指定的 libpq 服务则正确报告错误（Peter Eisentraut）", "title": "如果找不到指定的 libpq 服务则正确报告错误", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "0ee67bb0a4f3f0a7366cd40aa5f23b6a7aed1bfbb0aee8db837d87d5de2d4de2", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Properly report an error if the specified libpq service cannot be found (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/145", "db_id": "bade1e78f1b9a00ebc23565243f2cb46", "patch_ids": [], "statement_hash": "a126b44fd2324ea61be06f1b2b761ef3c961b605ccfedf544689aae79ed50b74", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e85c1a77d3b9330d", "cves": [], "html": "<p>在 libpq 中新增 <a href=\"/docs/9.0/libpq.html#LIBPQ-KEEPALIVES\">TCP keepalive 设置</a>（Tollef Fog Heen、Fujii Masao、Robert Haas）</p>\n<p>TCP 连接的服务器端此前已支持 keepalive 设置。</p>", "text": "在 libpq 中新增 TCP keepalive 设置（Tollef Fog Heen、Fujii Masao、Robert Haas） TCP 连接的服务器端此前已支持 keepalive 设置。", "title": "在 libpq 中新增 TCP keepalive 设置", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "8031703bae56041123755b297e3066ff7a02327fae8a22cfd47ac932205a6337", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Add TCP keepalive settings in libpq (Tollef Fog Heen, Fujii Masao, Robert Haas) Keepalive settings were already supported on the server end of TCP connections.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/146", "db_id": "e9b9e096b3da648aa7f8aaf232d72db5", "patch_ids": [], "statement_hash": "8af571f32c52d434bbdf1a5a89db9d43795ae6bae53d1bd2014827308139be8f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5a8a03d83c7b11b2", "cves": [], "html": "<p>在提供替代方法的平台上，避免 <span>libpq</span> 中为阻塞和取消阻塞 <code>SIGPIPE</code> 而进行的额外系统调用（Jeremy Kerr）</p>", "text": "在提供替代方法的平台上，避免 libpq 中为阻塞和取消阻塞 SIGPIPE 而进行的额外系统调用（Jeremy Kerr）", "title": "在提供替代方法的平台上，避免 libpq 中为阻塞和取消阻塞 SIGPIPE 而进行的额外系统调用", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "e2cb996a1332fe0bfaba4cdfd9b8af618e3b6c69fddbf890500826b85461029e", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Avoid extra system calls to block and unblock SIGPIPE in libpq, on platforms that offer alternative methods (Jeremy Kerr)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/147", "db_id": "0a1d0add7f865c26b05a15faeb406b1a", "patch_ids": [], "statement_hash": "0d75d6eedf5df531a5af71fd3a8c08dc9a40396c9658af6367d21235a4798daf", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-94c96f8322dad021", "cves": [], "html": "<p>当 <a href=\"/docs/9.0/libpq-pgpass.html\" title=\"31.14. 密码文件\"><code>.pgpass</code></a> 提供的口令失败时，在错误消息中说明口令来源（Bruce Momjian）</p>", "text": "当 .pgpass 提供的口令失败时，在错误消息中说明口令来源（Bruce Momjian）", "title": "当 .pgpass 提供的口令失败时，在错误消息中说明口令来源", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "d35b0c750b1658ae17344c78044b63252ab01f8f75bba445e8f38385bd330aad", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "When a .pgpass-supplied password fails, mention where the password came from in the error message (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/148", "db_id": "4dccd6b95f4562f31c11100ec911b5d3", "patch_ids": [], "statement_hash": "89daccdcec7e4078b38186f4692420802dc2dd3e6e902da34b40a2802113f474", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-42e9266a1832d06c", "cves": [], "html": "<p>加载客户端证书文件中给出的所有 SSL 证书（Tom Lane）</p>\n<p>这改进了对间接签名 SSL 证书的支持。</p>", "text": "加载客户端证书文件中给出的所有 SSL 证书（Tom Lane） 这改进了对间接签名 SSL 证书的支持。", "title": "加载客户端证书文件中给出的所有 SSL 证书", "commits": [], "section": "Development Tools / libpq", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.2", "source_hash": "e451bbea80a600ae8c85924e824de3c6d9b8672cf46205957afd7d1664d7e01a", "section_path": ["Development Tools", "libpq"], "commit_groups": [], "identity_text": "Load all SSL certificates given in the client certificate file (Tom Lane) This improves support for indirectly-signed SSL certificates.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/149", "db_id": "bf17cef038db2fa4a209e680e369d5ca", "patch_ids": [], "statement_hash": "f90d4bd7c0496e1fdd00fb0c8da8681ac7fe70654b4fc09686264cec8cc7fe97", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-23f652106d847ecc", "cves": [], "html": "<p>为 <span>ecpg</span> 新增 <a href=\"/docs/9.0/ecpg-descriptors.html\" title=\"33.9. 使用描述符区域\"><acronym>SQLDA</acronym></a>（SQL 描述符区域）支持（Boszormenyi Zoltan）</p>", "text": "为 ecpg 新增 SQLDA（SQL 描述符区域）支持（Boszormenyi Zoltan）", "title": "为 ecpg 新增 SQLDA（SQL 描述符区域）支持", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "1faff9ebd795208cf2e05d9e9ec9cc628cc9c578a5d1532a56eecbe28cd217f8", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Add SQLDA (SQL Descriptor Area) support to ecpg (Boszormenyi Zoltan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/150", "db_id": "d35f8570b171ad7e2af1dfccb6b83e10", "patch_ids": [], "statement_hash": "4b40cbee796b1869e36471a7616335482e6100ce1bf783824c97be4e450abed4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6b65844c9229d892", "cves": [], "html": "<p>为 <span>ecpg</span> 新增 <a href=\"/docs/9.0/ecpg-descriptors.html\" title=\"33.9. 使用描述符区域\"><code>DESCRIBE</code> [ <code>OUTPUT</code> ]</a> 语句（Boszormenyi Zoltan）</p>", "text": "为 ecpg 新增 DESCRIBE [ OUTPUT ] 语句（Boszormenyi Zoltan）", "title": "为 ecpg 新增 DESCRIBE [ OUTPUT ] 语句", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "e928ec11b47a31dab8d5905c9a86f78df3054087d89150e08d86eefb88537ad7", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Add the DESCRIBE [ OUTPUT ] statement to ecpg (Boszormenyi Zoltan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/151", "db_id": "489d4c86cc1a81aa48545ca2cec47c32", "patch_ids": [], "statement_hash": "ec28d48c619d13ccdfbadf25c43a5941492a562cfacfb03f4f849cd0b825d9bd", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5769bb3a43bce1a6", "cves": [], "html": "<p>新增返回当前事务状态的 <a href=\"/docs/9.0/ecpg-library.html\" title=\"33.14. 库函数\">ECPGtransactionStatus</a> 函数（Bernd Helmle）</p>", "text": "新增返回当前事务状态的 ECPGtransactionStatus 函数（Bernd Helmle）", "title": "新增返回当前事务状态的 ECPGtransactionStatus 函数", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "724f69e4fa6c209601b6bdc10ac9946b7ad99a291bac60f4b183dd99f0bfe400", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Add an ECPGtransactionStatus function to return the current transaction status (Bernd Helmle)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/152", "db_id": "b66bae06a62b3a3a8430960460b2350e", "patch_ids": [], "statement_hash": "641e763a976a9d0a38aa69b55ff3a645c2e3b3adfbe4cd3c31c52df46e701114", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f73dd90b8982a76d", "cves": [], "html": "<p>在 <span>ecpg</span> Informix 兼容模式中新增 <code>string</code> 数据类型（Boszormenyi Zoltan）</p>", "text": "在 ecpg Informix 兼容模式中新增 string 数据类型（Boszormenyi Zoltan）", "title": "在 ecpg Informix 兼容模式中新增 string 数据类型", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "42e787ea4efad51299162d712e7c5a6516972833f3431bda2017e719be3def1e", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Add the string data type in ecpg Informix-compatibility mode (Boszormenyi Zoltan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/153", "db_id": "7bfc454c63a928316c09e0745b98f71f", "patch_ids": [], "statement_hash": "e8b47b97bab907378f5ed9a699e0a82a9417b62a55361e4b9f47bc9388ddb928", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c55e4333df327810", "cves": [], "html": "<p>允许 <span>ecpg</span> 无限制地使用 <code>new</code> 和 <code>old</code> 变量名（Michael Meskes）</p>", "text": "允许 ecpg 无限制地使用 new 和 old 变量名（Michael Meskes）", "title": "允许 ecpg 无限制地使用 new 和 old 变量名", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "853341329d3c3cdfceacc7413f4265bb81b15c030fa00e0bcbefcd1f21f72016", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Allow ecpg to use new and old variable names without restriction (Michael Meskes)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/154", "db_id": "c329eccbfda498679626d725ffae6f7d", "patch_ids": [], "statement_hash": "000a3c620a37ff02c5986df07a5955fea44e75a2da07aa627c48de956128b42c", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-37f9ec604cde5c2f", "cves": [], "html": "<p>允许 <span>ecpg</span> 在 <code>free()</code> 中使用变量名（Michael Meskes）</p>", "text": "允许 ecpg 在 free() 中使用变量名（Michael Meskes）", "title": "允许 ecpg 在 free() 中使用变量名", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "9ab8f96d82b9ba8e2143774a10554c3fedacb0de3bc193f16c057568a3bfef5f", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Allow ecpg to use variable names in free() (Michael Meskes)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/155", "db_id": "4299da39a7ba285deb63d0f9386efc15", "patch_ids": [], "statement_hash": "b6a2a3d1eeae789ad3c0fd895476abebd829b98a1fd32235f942795ca2036e24", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c1610ec758b45ea2", "cves": [], "html": "<p>让 <code>ecpg_dynamic_type()</code> 对非 SQL3 数据类型返回零（Michael Meskes）</p>\n<p>此前它返回数据类型 OID 的负值。但这可能与有效的类型 OID 混淆。</p>", "text": "让 ecpg_dynamic_type() 对非 SQL3 数据类型返回零（Michael Meskes） 此前它返回数据类型 OID 的负值。但这可能与有效的类型 OID 混淆。", "title": "让 ecpg_dynamic_type() 对非 SQL3 数据类型返回零", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "c2cdee875ac2f5c51eeca5a7d2040ffc4b863e901ca2b5ff32b6136bdbe42907", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Make ecpg_dynamic_type() return zero for non-SQL3 data types (Michael Meskes) Previously it returned the negative of the data type OID. This could be confused with valid type OIDs, however.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/156", "db_id": "ab86282a3d0d2af4b9490a6db8856637", "patch_ids": [], "statement_hash": "b44fd1a158407c9e2797d924df9d407143bce9e53ac5eef869bea46d083dcfaa", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2a71191fe5bb7b7c", "cves": [], "html": "<p>在已有 64 位 <code>long</code> 的平台上支持 <code>long long</code> 类型（Michael Meskes）</p>", "text": "在已有 64 位 long 的平台上支持 long long 类型（Michael Meskes）", "title": "在已有 64 位 long 的平台上支持 long long 类型", "commits": [], "section": "Development Tools / ecpg", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3", "source_hash": "225922549aa4fb976ebd75b34e7f2d441c98d139d0368c626eae50c14bc717e6", "section_path": ["Development Tools", "ecpg"], "commit_groups": [], "identity_text": "Support long long types on platforms that already have 64-bit long (Michael Meskes)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/157", "db_id": "9cd761dbd8308bfd0f4cbafbcfe2c497", "patch_ids": [], "statement_hash": "bfd67395f013edc2fea8274df7e77228465297161a3bcf2c966f890b0819f298", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3b9fbbd2a713c60b", "cves": [], "html": "<p>在 <span>ecpg</span> 的本机模式中新增范围外游标支持（Boszormenyi Zoltan）</p>\n<p>这允许 <code>DECLARE</code> 使用 <code>OPEN</code> 被调用时不在作用域内的变量。此机制在 <span>ecpg</span> 的 Informix 兼容模式中早已存在。</p>", "text": "在 ecpg 的本机模式中新增范围外游标支持（Boszormenyi Zoltan） 这允许 DECLARE 使用 OPEN 被调用时不在作用域内的变量。此机制在 ecpg 的 Informix 兼容模式中早已存在。", "title": "在 ecpg 的本机模式中新增范围外游标支持", "commits": [], "section": "Development Tools / ecpg / ecpg Cursors", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3.3", "source_hash": "ff7eedcec1e3c6d00b751edb62a6df59fdcdc1be2dc1cc5ba5a6e52695d59a6e", "section_path": ["Development Tools", "ecpg", "ecpg Cursors"], "commit_groups": [], "identity_text": "Add out-of-scope cursor support in ecpg's native mode (Boszormenyi Zoltan) This allows DECLARE to use variables that are not in scope when OPEN is called. This facility already existed in ecpg's Informix-compatibility mode.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/158", "db_id": "152960f2a86090c7feb374c36e993266", "patch_ids": [], "statement_hash": "701cfb61d8c74a0c3cf22acaf6188c0ddefdbf1128a0ae1f4a341c01f0bd128b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-d2db027c45b61db7", "cves": [], "html": "<p>允许 <span>ecpg</span> 中的动态游标名（Boszormenyi Zoltan）</p>", "text": "允许 ecpg 中的动态游标名（Boszormenyi Zoltan）", "title": "允许 ecpg 中的动态游标名", "commits": [], "section": "Development Tools / ecpg / ecpg Cursors", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3.3", "source_hash": "80d43b82cbddcddc00ebe6d886ab649747f883ef2633d2aa097346474ff0a4e6", "section_path": ["Development Tools", "ecpg", "ecpg Cursors"], "commit_groups": [], "identity_text": "Allow dynamic cursor names in ecpg (Boszormenyi Zoltan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/159", "db_id": "0a89af980dd862f8706644344a543c06", "patch_ids": [], "statement_hash": "a78b90048642ad267a15c5ac18d044cd7a6d26420de0a57a50513cd6a69e2d45", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3ff7d5dee5ca5993", "cves": [], "html": "<p>允许 <span>ecpg</span> 在 <code>FETCH</code> 和 <code>MOVE</code> 中使用噪声词 <code>FROM</code> 和 <code>IN</code>（Boszormenyi Zoltan）</p>", "text": "允许 ecpg 在 FETCH 和 MOVE 中使用噪声词 FROM 和 IN（Boszormenyi Zoltan）", "title": "允许 ecpg 在 FETCH 和 MOVE 中使用噪声词 FROM 和 IN", "commits": [], "section": "Development Tools / ecpg / ecpg Cursors", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.11.3.3", "source_hash": "3bf926fe6442113b87d83b467cc2779ed781527dea0404df884c6c282ee2e1df", "section_path": ["Development Tools", "ecpg", "ecpg Cursors"], "commit_groups": [], "identity_text": "Allow ecpg to use noise words FROM and IN in FETCH and MOVE (Boszormenyi Zoltan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/160", "db_id": "63cc9ee9d9312be1f042f10575788dc3", "patch_ids": [], "statement_hash": "c5a8e05dc3f1d8b79f162c7f4ac3a66c95ee0e029ce0b6a6dc73bdaa49663ea5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-1408603920634e64", "cves": [], "html": "<p>默认启用客户端线程安全（Bruce Momjian）</p>\n<p>线程安全选项可以用 <a href=\"/docs/9.0/install-procedure.html#CONFIGURE\" title=\"Configuration\"><code>configure</code></a> <code>--disable-thread-safety</code> 禁用。</p>", "text": "默认启用客户端线程安全（Bruce Momjian） 线程安全选项可以用 configure --disable-thread-safety 禁用。", "title": "默认启用客户端线程安全", "commits": [], "section": "构建选项", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12", "source_hash": "5d9f6279bde7ce267811b2216a80100034410c3da90096296459e3374c6d0322", "section_path": ["构建选项"], "commit_groups": [], "identity_text": "Enable client thread safety by default (Bruce Momjian) The thread-safety option can be disabled with configure --disable-thread-safety.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/161", "db_id": "30670e86683bfd95b18fb893c9ef8cf6", "patch_ids": [], "statement_hash": "02d2e99b09dfcf33146f122954667d6dfc633929040bb3f7de100f4642c0cc12", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-bcc1453d013f2e31", "cves": [], "html": "<p>新增对控制 Linux 内存不足终止器的支持（Alex Hunsaker、Tom Lane）</p>\n<p>既然 <code>/proc/self/oom_adj</code> 允许禁用 <span>Linux</span> 内存不足（<acronym>OOM</acronym>）终止器，建议对 postmaster 禁用 OOM 终止。之后可能希望对 postmaster 的子进程重新启用 OOM 终止。新的编译期选项 <a href=\"/docs/9.0/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT\" title=\"17.4.3. Linux 内存过量分配\"><code>LINUX_OOM_ADJ</code></a> 允许对子进程重新激活终止器。</p>", "text": "新增对控制 Linux 内存不足终止器的支持（Alex Hunsaker、Tom Lane） 既然 /proc/self/oom_adj 允许禁用 Linux 内存不足（OOM）终止器，建议对 postmaster 禁用 OOM 终止。之后可能希望对 postmaster 的子进程重新启用 OOM 终止。新的编译期选项 LINUX_OOM_ADJ 允许对子进程重新激活终止器。", "title": "新增对控制 Linux 内存不足终止器的支持", "commits": [], "section": "构建选项", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12", "source_hash": "bf48a7543053264fb9135f53192e509dd7aeffccabeed5176bce8ca953b17146", "section_path": ["构建选项"], "commit_groups": [], "identity_text": "Add support for controlling the Linux out-of-memory killer (Alex Hunsaker, Tom Lane) Now that /proc/self/oom_adj allows disabling of the Linux out-of-memory (OOM) killer, it's recommendable to disable OOM kills for the postmaster. It may then be desirable to re-enable OOM kills for the postmaster's child processes. The new compile-time option LINUX_OOM_ADJ allows the killer to be reactivated for child processes.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/162", "db_id": "df298b1a06b5ce1f1662727de1e02d9f", "patch_ids": [], "statement_hash": "83a0302fcfe46f05a0b6f8dfcd12d1cc6f25d1d30a7c981523c18fa06a67edc2", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c6ede6da9524f386", "cves": [], "html": "<p>新的 <code>Makefile</code> 目标 <a href=\"/docs/9.0/install-procedure.html#BUILD\" title=\"Build\"><code>world</code></a>、<code>install-world</code> 和 <code>installcheck-world</code>（Andrew Dunstan）</p>\n<p>它们类似于现有的 <code>all</code>、<code>install</code> 和 <code>installcheck</code> 目标，但它们还构建 <acronym>HTML</acronym> 文档、构建并测试 <code>contrib</code>，并测试服务器端语言和 <span>ecpg</span>。</p>", "text": "新的 Makefile 目标 world、install-world 和 installcheck-world（Andrew Dunstan） 它们类似于现有的 all、install 和 installcheck 目标，但它们还构建 HTML 文档、构建并测试 contrib，并测试服务器端语言和 ecpg。", "title": "新的 Makefile 目标 world、install-world 和 installcheck-world", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12.3", "source_hash": "71366b046249506e8de01302d4f5a7e5dc7d1fca1a498d075bb184074265da24", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "New Makefile targets world, install-world, and installcheck-world (Andrew Dunstan) These are similar to the existing all, install, and installcheck targets, but they also build the HTML documentation, build and test contrib, and test server-side languages and ecpg.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/163", "db_id": "0ec335391cd6c3cf29ae68a1ef3ae5ab", "patch_ids": [], "statement_hash": "b04cadd415da9f43eadbad36cc706fc1c7893757fc0d6f0110823a1295f627d1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e7c265b35f3459da", "cves": [], "html": "<p>为 <acronym>PGXS</acronym> Makefile 新增数据和文档安装位置控制（Mark Cave-Ayland）</p>", "text": "为 PGXS Makefile 新增数据和文档安装位置控制（Mark Cave-Ayland）", "title": "为 PGXS Makefile 新增数据和文档安装位置控制", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12.3", "source_hash": "7cb6d50c8a0cef096890c6a2cfd854fa4108f196e5d97e2c0e365b1bcb288411", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Add data and documentation installation location control to PGXS Makefiles (Mark Cave-Ayland)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/164", "db_id": "94b0293114422b0f23c699e611a1b998", "patch_ids": [], "statement_hash": "bde5a683067e85eafd460e598f12061935163e40f6f8cab1f98b3dc01a84a4c3", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f64059377f043c00", "cves": [], "html": "<p>新增 Makefile 规则，把 <span>PostgreSQL</span> 文档构建为单个 <acronym>HTML</acronym> 文件或单个纯文本文件（Peter Eisentraut、Bruce Momjian）</p>", "text": "新增 Makefile 规则，把 PostgreSQL 文档构建为单个 HTML 文件或单个纯文本文件（Peter Eisentraut、Bruce Momjian）", "title": "新增 Makefile 规则，把 PostgreSQL 文档构建为单个 HTML 文件或单个纯文本文件", "commits": [], "section": "构建选项 / Makefile", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12.3", "source_hash": "09ceda334fbf75eede1aa12391bbd8f17dc29ecef77fb3c36a41d3b755786517", "section_path": ["构建选项", "Makefile"], "commit_groups": [], "identity_text": "Add Makefile rules to build the PostgreSQL documentation as a single HTML file or as a single plain-text file (Peter Eisentraut, Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/165", "db_id": "9ac63ca70020725f41e4eff05b77a822", "patch_ids": [], "statement_hash": "7ef450801db5614f53bacf1ce303bdbb65ff817677446862e175eb696f5e68f1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b3f8c1b51cfd7400", "cves": [], "html": "<p>支持在 <a href=\"/docs/9.0/install-windows.html\" title=\"第 16 章 在 Windows 上从源代码安装\">64 位 <span>Windows</span></a> 上编译并以 64 位模式运行（Tsutomu Yamada、Magnus Hagander）</p>\n<p>这允许在 <span>Windows</span> 上使用大型共享内存。</p>", "text": "支持在 64 位 Windows 上编译并以 64 位模式运行（Tsutomu Yamada、Magnus Hagander） 这允许在 Windows 上使用大型共享内存。", "title": "支持在 64 位 Windows 上编译并以 64 位模式运行", "commits": [], "section": "构建选项 / Windows", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12.4", "source_hash": "e82dfd6b1fc84ddbe4822cfe92b531546c8415cf8743dc22c3f6bd71e49bc932", "section_path": ["构建选项", "Windows"], "commit_groups": [], "identity_text": "Support compiling on 64-bit Windows and running in 64-bit mode (Tsutomu Yamada, Magnus Hagander) This allows for large shared memory sizes on Windows.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/166", "db_id": "3ce50785d95cde9ac18c6094ef5fb4d3", "patch_ids": [], "statement_hash": "4c1a92b9d6156dee97edb8c08960d70903743df2e8bdc461d4ba1fba8018774a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7359a40002d0010c", "cves": [], "html": "<p>支持使用 <a href=\"/docs/9.0/install-windows.html#INSTALL-WINDOWS-FULL\" title=\"16.1. Building with Visual C++ or the Platform SDK\"><span>Visual Studio 2008</span></a> 构建服务器（Magnus Hagander）</p>", "text": "支持使用 Visual Studio 2008 构建服务器（Magnus Hagander）", "title": "支持使用 Visual Studio 2008 构建服务器", "commits": [], "section": "构建选项 / Windows", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.12.4", "source_hash": "3fcb46eb07329546b32817c8556bb58888e86ebae6fa9aceb6c88a8a7fdaa36b", "section_path": ["构建选项", "Windows"], "commit_groups": [], "identity_text": "Support server builds using Visual Studio 2008 (Magnus Hagander)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/167", "db_id": "27d434790d5504a234e4f6402c84fa9f", "patch_ids": [], "statement_hash": "f28e77eba4e20f018b2a4ee12b91c304393ffab24435179e2396a73f20d5e46a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8f1d352db6cf94ea", "cves": [], "html": "<p>以子目录树而非发行版压缩包内的 tar 归档文件的形式分发预构建文档（Peter Eisentraut）</p>\n<p>例如，预构建的 <acronym>HTML</acronym> 文档现在位于 <code>doc/src/sgml/html/</code>；手册页的打包方式类似。</p>", "text": "以子目录树而非发行版压缩包内的 tar 归档文件的形式分发预构建文档（Peter Eisentraut） 例如，预构建的 HTML 文档现在位于 doc/src/sgml/html/；手册页的打包方式类似。", "title": "以子目录树而非发行版压缩包内的 tar 归档文件的形式分发预构建文档", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "49995aa16b8cfbc7e04dd77313b166acd92e97c8dc9047e6345aa17855c9ee4d", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Distribute prebuilt documentation in a subdirectory tree, rather than as tar archive files inside the distribution tarball (Peter Eisentraut) For example, the prebuilt HTML documentation is now in doc/src/sgml/html/; the manual pages are packaged similarly.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/168", "db_id": "2ce5bcf3ffa2f2e66c5c48799c4ab70b", "patch_ids": [], "statement_hash": "edfe6436abdda758146ca7162e19a3954704e66abcf3b3c8897e481fa78d8f76", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-9e130defc8c2fcab", "cves": [], "html": "<p>使服务器词法分析器可重入（Tom Lane）</p>\n<p>这是 PL/pgSQL 使用该词法分析器所需要的。</p>", "text": "使服务器词法分析器可重入（Tom Lane） 这是 PL/pgSQL 使用该词法分析器所需要的。", "title": "使服务器词法分析器可重入", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "85ed7b025197090084caa05df075e6185ec78a5c4494a294d3a82e83c18a233f", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Make the server's lexer reentrant (Tom Lane) This was needed for use of the lexer by PL/pgSQL.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/169", "db_id": "026e89350272b86c003b65af74950850", "patch_ids": [], "statement_hash": "19d2e1ae800e5146bf585770d705524c4340d0d599fc08bd4c6b65a583070ca7", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b3f2dc2b0071e84f", "cves": [], "html": "<p>改进内存分配的速度（Tom Lane、Greg Stark）</p>", "text": "改进内存分配的速度（Tom Lane、Greg Stark）", "title": "改进内存分配的速度", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "166aee09cc468d6c367b6706c2919fcaae174f61c345d6e59131c7269eefffc3", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve speed of memory allocation (Tom Lane, Greg Stark)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/170", "db_id": "aa4b3e0d216561b931956f30488f80c2", "patch_ids": [], "statement_hash": "ab7132ad959cfd55231c8c610c39a968641a8598e401f34cb6bbb947d62fe637", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-69a7557c96b2051c", "cves": [], "html": "<p>用户定义的约束触发器现在在 <code>pg_constraint</code> 和 <code>pg_trigger</code> 中都有条目（Tom Lane）</p>\n<p>由于此变更，<code>pg_constraint</code>.<code>pgconstrname</code> 现在是冗余的，已被移除。</p>", "text": "用户定义的约束触发器现在在 pg_constraint 和 pg_trigger 中都有条目（Tom Lane） 由于此变更，pg_constraint.pgconstrname 现在是冗余的，已被移除。", "title": "用户定义的约束触发器现在在 pg_constraint 和 pg_trigger 中都有条目", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "19f50e8edcb0edc4cfa41bf806f7293b51d3b05c6844bdcc6e5218a3960eb013", "section_path": ["源代码"], "commit_groups": [], "identity_text": "User-defined constraint triggers now have entries in pg_constraint as well as pg_trigger (Tom Lane) Because of this change, pg_constraint.pgconstrname is now redundant and has been removed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/171", "db_id": "0ed76274bbae6d4da00eaeb0a5affa72", "patch_ids": [], "statement_hash": "f998714a1ebb7b0f049ce9279657abd253a3b69a7a291d8e4d56b46c32399b3f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-aec69faf3e6ff6c6", "cves": [], "html": "<p>新增系统目录列 <code>pg_constraint</code>.<code>conindid</code> 和 <code>pg_trigger</code>.<code>tgconstrindid</code>，以更好地记录约束强制执行中索引的使用（Tom Lane）</p>", "text": "新增系统目录列 pg_constraint.conindid 和 pg_trigger.tgconstrindid，以更好地记录约束强制执行中索引的使用（Tom Lane）", "title": "新增系统目录列 pg_constraint.conindid 和 pg_trigger.tgconstrindid，以更好地记录约束强制执行中索引的使用", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "a63cdcc49d35174126a7f8d12c79894c1b7f18da960ddfeec36cbfa7a90d9887", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add system catalog columns pg_constraint.conindid and pg_trigger.tgconstrindid to better document the use of indexes for constraint enforcement (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/172", "db_id": "75bada65f399925ca0ae52aaafca674f", "patch_ids": [], "statement_hash": "22f49cb0736a631ea83f7dae24792a3fde0cb84870d685e107b0a552f41f71a1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c8c3588e1b5eeb1e", "cves": [], "html": "<p>允许使用单个操作系统信号向后台进程传达多个条件（Fujii Masao）</p>\n<p>这允许新增特性而不受平台特定的信号条件数量限制。</p>", "text": "允许使用单个操作系统信号向后台进程传达多个条件（Fujii Masao） 这允许新增特性而不受平台特定的信号条件数量限制。", "title": "允许使用单个操作系统信号向后台进程传达多个条件", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "60e3be85ac52ac65f978558b39fdc099f3d9b4eba285d84be0f5ea34606bb966", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Allow multiple conditions to be communicated to backends using a single operating system signal (Fujii Masao) This allows new features to be added without a platform-specific constraint on the number of signal conditions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/173", "db_id": "802021d5b541b1e0aae1d7faf6626021", "patch_ids": [], "statement_hash": "574d87c89ebbb128268b7547e3611907b4c372913cc706d884278a06763380ba", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-996fc2b6a04eb48e", "cves": [], "html": "<p>改进源代码测试覆盖率，包括 <code>contrib</code>、PL/Python 和 PL/Perl（Peter Eisentraut、Andrew Dunstan）</p>", "text": "改进源代码测试覆盖率，包括 contrib、PL/Python 和 PL/Perl（Peter Eisentraut、Andrew Dunstan）", "title": "改进源代码测试覆盖率，包括 contrib、PL/Python 和 PL/Perl", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "e18e5cdb6f0ce5b1f63ec97af3f5932e9116d92ba1495b3074bf9c222eeb3a4a", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve source code test coverage, including contrib, PL/Python, and PL/Perl (Peter Eisentraut, Andrew Dunstan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/174", "db_id": "55ce0a92288546dc1cf665b027a546aa", "patch_ids": [], "statement_hash": "c110390c984f5ca62ee2659f393fde9cdd42f4ff40f0322744494010b8d4a4cb", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6b9c54a2bf2ec6ca", "cves": [], "html": "<p>移除系统表引导时对平面文件的使用（Tom Lane、Alvaro Herrera）</p>\n<p>这改进了使用大量角色或数据库时的性能，并消除了一些可能的失败条件。</p>", "text": "移除系统表引导时对平面文件的使用（Tom Lane、Alvaro Herrera） 这改进了使用大量角色或数据库时的性能，并消除了一些可能的失败条件。", "title": "移除系统表引导时对平面文件的使用", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "bc4abf05c7a88d2c8c6c4b84ae856eaf553c46f7c1aa806cca88750c41d5725f", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Remove the use of flat files for system table bootstrapping (Tom Lane, Alvaro Herrera) This improves performance when using many roles or databases, and eliminates some possible failure conditions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/175", "db_id": "8811626923c14accb7941a86c2af3d1d", "patch_ids": [], "statement_hash": "21839acedca44098fe43be35ad2ac502a7495375a817876d9f9b8c81c48ed9eb", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c7a2f81e9d3bf22d", "cves": [], "html": "<p>自动为<span>“<span>引导</span>”</span>目录生成 <code>pg_attribute</code> 的初始内容（John Naylor）</p>\n<p>这大幅简化了对这些目录的更改。</p>", "text": "自动为“引导”目录生成 pg_attribute 的初始内容（John Naylor） 这大幅简化了对这些目录的更改。", "title": "自动为“引导”目录生成 pg_attribute 的初始内容", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "7424d41c21a96b75765865bf3f01e498cc0f1519dcdd54f78ce35e08588209f2", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Automatically generate the initial contents of pg_attribute for bootstrapped catalogs (John Naylor) This greatly simplifies changes to these catalogs.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/176", "db_id": "11620b2db3f07555b06b222b39530833", "patch_ids": [], "statement_hash": "0eaf995a415c6abfe880fa4293c761217f92445abfc09c8bf4eb2a0672972f50", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-465de0083e773ba1", "cves": [], "html": "<p>把 <code>INSERT</code>/<code>UPDATE</code>/<code>DELETE</code> 操作的处理从 <code>execMain.c</code> 中拆分出来（Marko Tiikkaja）</p>\n<p>更新现在在单独的 ModifyTable 节点中执行。此变更是未来改进的必要基础设施。</p>", "text": "把 INSERT/UPDATE/DELETE 操作的处理从 execMain.c 中拆分出来（Marko Tiikkaja） 更新现在在单独的 ModifyTable 节点中执行。此变更是未来改进的必要基础设施。", "title": "把 INSERT/UPDATE/DELETE 操作的处理从 execMain.c 中拆分出来", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "dddd04efaff482780f03df7dbb19daf3beed9ab328b8991c895878de5b5eaa18", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Split the processing of INSERT/UPDATE/DELETE operations out of execMain.c (Marko Tiikkaja) Updates are now executed in a separate ModifyTable node. This change is necessary infrastructure for future improvements.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/177", "db_id": "1702d5c015df66ad90f547084f6b5134", "patch_ids": [], "statement_hash": "dbd89d628759ddb37f9619ccce5ef0e2889a508c61d54245eea7fb64d8fd60d5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-74a46e2892044c5b", "cves": [], "html": "<p>简化 <span>psql</span> SQL 帮助文本的翻译（Peter Eisentraut）</p>", "text": "简化 psql SQL 帮助文本的翻译（Peter Eisentraut）", "title": "简化 psql SQL 帮助文本的翻译", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "766ad6bc4908c03992f65a6764b5258f0cf5484e37c78e740da9d0c10e409953", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Simplify translation of psql's SQL help text (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/178", "db_id": "0b51cee99ecdc5156cae6c1d078bf94c", "patch_ids": [], "statement_hash": "f219dd2995625d77e968270d9655d609af78feb8a2ac6f2c4ae87a02d08807c0", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7c1f14e8517bcd12", "cves": [], "html": "<p>缩短某些文件名的长度，使发行版压缩包中所有文件路径都少于 100 个字符（Tom Lane）</p>\n<p>某些解压程序对更长的文件路径有问题。</p>", "text": "缩短某些文件名的长度，使发行版压缩包中所有文件路径都少于 100 个字符（Tom Lane） 某些解压程序对更长的文件路径有问题。", "title": "缩短某些文件名的长度，使发行版压缩包中所有文件路径都少于 100 个字符", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "c7a85e75745b712f87e249d190b51a1adac984b5922d6b778c1655efb37ad5a4", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Reduce the lengths of some file names so that all file paths in the distribution tarball are less than 100 characters (Tom Lane) Some decompression programs have problems with longer file paths.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/179", "db_id": "86a399ba1f1fc9c11fb636050c2a162d", "patch_ids": [], "statement_hash": "c67d03fb0a528b7b95758e9d75eb77aaf30ed0410da74ba0361f55c1faa010a5", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-5c06a7d21f28209e", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/errcodes-appendix.html#ERRCODES-TABLE\" title=\"表 A.1. PostgreSQL Error Codes\"><code>ERRCODE_INVALID_PASSWORD</code></a> <code>SQLSTATE</code> 错误码（Bruce Momjian）</p>", "text": "新增 ERRCODE_INVALID_PASSWORD SQLSTATE 错误码（Bruce Momjian）", "title": "新增 ERRCODE_INVALID_PASSWORD SQLSTATE 错误码", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "028308e341cda9b02cc976544dc7705c5c2628faffc8f9b6fd963c1a67326737", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add a new ERRCODE_INVALID_PASSWORD SQLSTATE error code (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/180", "db_id": "8705430410b13442ad4ef7f2c0e92b60", "patch_ids": [], "statement_hash": "588327409bd8e0174602c9c19d18f8f5c6ba3d256e049914957128a94d50d2cb", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0091c7fd76b19f6e", "cves": [], "html": "<p>经作者许可，移除少数剩余的个人源代码版权声明（Bruce Momjian）</p>\n<p>个人版权声明无关紧要，但社区偶尔不得不回答关于它们的问题。</p>", "text": "经作者许可，移除少数剩余的个人源代码版权声明（Bruce Momjian） 个人版权声明无关紧要，但社区偶尔不得不回答关于它们的问题。", "title": "经作者许可，移除少数剩余的个人源代码版权声明", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "9a21acfea8bd2a2fc9e9179a94b501b2470ded5773498befb08014c59da06e9a", "section_path": ["源代码"], "commit_groups": [], "identity_text": "With authors' permissions, remove the few remaining personal source code copyright notices (Bruce Momjian) The personal copyright notices were insignificant but the community occasionally had to answer questions about them.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/181", "db_id": "227ec2a4e78d1d93baa7d1f70ac5924d", "patch_ids": [], "statement_hash": "058019c5765f61d2ed1f1bc97dfccb40bc99453a3885630d6ee746b82d89c5d9", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c6cf0e6e0835f6ab", "cves": [], "html": "<p>新增关于以非持久模式运行 <span>PostgreSQL</span> 以改进性能的文档<a href=\"/docs/9.0/non-durability.html\" title=\"14.5. 非持久设置\">节</a>（Bruce Momjian）</p>", "text": "新增关于以非持久模式运行 PostgreSQL 以改进性能的文档节（Bruce Momjian）", "title": "新增关于以非持久模式运行 PostgreSQL 以改进性能的文档节", "commits": [], "section": "源代码", "category": "performance", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "2df4d4089957a94afc0f54c70e3c1206407a96931f34bbc67ef24e9618f26079", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Add new documentation section about running PostgreSQL in non-durable mode to improve performance (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/182", "db_id": "ff0cd161b2fc77901b35e60f19ed9fb8", "patch_ids": [], "statement_hash": "98e50cd29229b81422cb7f4f051859989afed7f447572816566f4540df225aba", "relations": [], "version": "9.0.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a49e33e5eb1c46fc", "cves": [], "html": "<p>重构 <acronym>HTML</acronym> 文档 <code>Makefile</code> 规则，使其依赖检查正确工作，避免不必要的重建（Peter Eisentraut）</p>", "text": "重构 HTML 文档 Makefile 规则，使其依赖检查正确工作，避免不必要的重建（Peter Eisentraut）", "title": "重构 HTML 文档 Makefile 规则，使其依赖检查正确工作，避免不必要的重建", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "0c1afa9f037113895316919273ee81d855f4f9dd820eb7dd6241973d9b0dd135", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Restructure the HTML documentation Makefile rules to make their dependency checks work correctly, avoiding unnecessary rebuilds (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/183", "db_id": "83baffb1bbc18cd1c1e2be85eebd6e8e", "patch_ids": [], "statement_hash": "3e8f2fdcaf85bbc26c9a93b0ddfb0f4f2bce5d2a4e557576f38c8194e9f3ab91", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-14e42ceb72aa5e53", "cves": [], "html": "<p>使用 <span>DocBook</span> <acronym>XSL</acronym> 样式表而非 <span>Docbook2X</span> 构建手册页（Peter Eisentraut）</p>\n<p>这改变了构建手册页所需的工具集。</p>", "text": "使用 DocBook XSL 样式表而非 Docbook2X 构建手册页（Peter Eisentraut） 这改变了构建手册页所需的工具集。", "title": "使用 DocBook XSL 样式表而非 Docbook2X 构建手册页", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "161036ee119e1b6346846b782d9a733c7acaebde75c3ca0a019ef802473d5e4a", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Use DocBook XSL stylesheets for man page building, rather than Docbook2X (Peter Eisentraut) This changes the set of tools needed to build the man pages.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/184", "db_id": "dd888cd2ac0a29c64870dcb86e4e45de", "patch_ids": [], "statement_hash": "ce42e7ac6cf8cbf6e8bb086cee2a9b3370bcae111ba1e9995f5cf9e92927e79d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-cff4e2c78549c50e", "cves": [], "html": "<p>改进 PL/Perl 代码结构（Tim Bunce）</p>", "text": "改进 PL/Perl 代码结构（Tim Bunce）", "title": "改进 PL/Perl 代码结构", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "d094e12597e7ae70ac70c3dd1deaca97ee706d5414c7ffc9209578696b4785a1", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve PL/Perl code structure (Tim Bunce)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/185", "db_id": "61e20bc4682f774a488919ce38b23b95", "patch_ids": [], "statement_hash": "eca1ee8c7b17d465b5065723a1cfbcb001bbd653b4bc84cdfde7c4bab7cace22", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-c3d5ebaeb767913b", "cves": [], "html": "<p>改进 PL/Perl 的错误上下文报告（Alexey Klyukin）</p>", "text": "改进 PL/Perl 的错误上下文报告（Alexey Klyukin）", "title": "改进 PL/Perl 的错误上下文报告", "commits": [], "section": "源代码", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13", "source_hash": "9f8f8a175154be38ec60726b2a591413d6c8a6cc0319a49baed4a49278885b31", "section_path": ["源代码"], "commit_groups": [], "identity_text": "Improve error context reports in PL/Perl (Alexey Klyukin)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/186", "db_id": "f064758df3460d86a0db0d0f047e64ce", "patch_ids": [], "statement_hash": "62fe732cc9a9347e80edfb72d87e915e0b3d66409cb2888b145cdd886615406a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6b793a1d340a6297", "cves": [], "html": "<p>要求 <span>Autoconf</span> 2.63 来构建 <span>configure</span>（Peter Eisentraut）</p>", "text": "要求 Autoconf 2.63 来构建 configure（Peter Eisentraut）", "title": "要求 Autoconf 2.63 来构建 configure", "commits": [], "section": "源代码 / 新构建要求", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.3", "source_hash": "117962be5bb8494f649bc53bae7df65b002c473076df3cb035d94e0083862b33", "section_path": ["源代码", "新构建要求"], "commit_groups": [], "identity_text": "Require Autoconf 2.63 to build configure (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/187", "db_id": "fa82a072752279f17c3012e30a91021e", "patch_ids": [], "statement_hash": "67cdef3e4d606ba04aa204361ddd2583493ffcb9287ae38fde855e3a5ddd4558", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8c4abfa9702aa81c", "cves": [], "html": "<p>要求 <span>Flex</span> 2.5.31 或更高版本以从 <acronym>CVS</acronym> 检出构建（Tom Lane）</p>", "text": "要求 Flex 2.5.31 或更高版本以从 CVS 检出构建（Tom Lane）", "title": "要求 Flex 2.5.31 或更高版本以从 CVS 检出构建", "commits": [], "section": "源代码 / 新构建要求", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.3", "source_hash": "a3bfa1722fb5326a77bee38ad3e468a99f889195a1383dbf3f858686a467e97f", "section_path": ["源代码", "新构建要求"], "commit_groups": [], "identity_text": "Require Flex 2.5.31 or later to build from a CVS checkout (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/188", "db_id": "8268fa93c94413ba55da7ad24aed197a", "patch_ids": [], "statement_hash": "f58adc4a5004b55ba2f0e6ee15de1bf07f3c669873248b5b10953d8f16da3d32", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-4c4cf45404ff61dc", "cves": [], "html": "<p>要求 <span>Perl</span> 5.8 或更高版本以从 <acronym>CVS</acronym> 检出构建（John Naylor、Andrew Dunstan）</p>", "text": "要求 Perl 5.8 或更高版本以从 CVS 检出构建（John Naylor、Andrew Dunstan）", "title": "要求 Perl 5.8 或更高版本以从 CVS 检出构建", "commits": [], "section": "源代码 / 新构建要求", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.3", "source_hash": "29522f57366d781f77c1225e262e6f14b8c2884f7ccd6f50d7d1c3f6de13d053", "section_path": ["源代码", "新构建要求"], "commit_groups": [], "identity_text": "Require Perl version 5.8 or later to build from a CVS checkout (John Naylor, Andrew Dunstan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/189", "db_id": "6c34387dd8c268e93b31e3c1712ac519", "patch_ids": [], "statement_hash": "8c3216f0774de55004f4098ca116931b64434b7a36810468615c175da4118267", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-9c723aa2f3665d31", "cves": [], "html": "<p>为 <span>Bonjour</span> 使用更现代的 <acronym>API</acronym>（Tom Lane）</p>\n<p>Bonjour 支持现在要求 <span>OS X</span> 10.3 或更高版本。旧 API 已被 Apple 弃用。</p>", "text": "为 Bonjour 使用更现代的 API（Tom Lane） Bonjour 支持现在要求 OS X 10.3 或更高版本。旧 API 已被 Apple 弃用。", "title": "为 Bonjour 使用更现代的 API", "commits": [], "section": "源代码 / 可移植性", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.4", "source_hash": "fb55c5ae9c557bff655920a45724029db9c197ca27b292bc476a86875daaa5fe", "section_path": ["源代码", "可移植性"], "commit_groups": [], "identity_text": "Use a more modern API for Bonjour (Tom Lane) Bonjour support now requires OS X 10.3 or later. The older API has been deprecated by Apple.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/190", "db_id": "2076208da2298ff0b47fdf06836c9428", "patch_ids": [], "statement_hash": "18d722c018fc9eafd465670ee1000c712b85158e80333feb0cc497a91ec2a9b1", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f5be6a5057426bf1", "cves": [], "html": "<p>新增 <span>SuperH</span> 架构的自旋锁支持（Nobuhiro Iwamatsu）</p>", "text": "新增 SuperH 架构的自旋锁支持（Nobuhiro Iwamatsu）", "title": "新增 SuperH 架构的自旋锁支持", "commits": [], "section": "源代码 / 可移植性", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.4", "source_hash": "ffb1d0de4043c4d8250109ddae6601d317a25f17a22e60d4238147d8db94c45c", "section_path": ["源代码", "可移植性"], "commit_groups": [], "identity_text": "Add spinlock support for the SuperH architecture (Nobuhiro Iwamatsu)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/191", "db_id": "59e4cef4b93072abd7add8474f4dbac9", "patch_ids": [], "statement_hash": "f73cbe18ec5b4f7dd9f5c8db526290e6503c1f52df05edfcea11769a6636d99e", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-9e8b9e8bb22719ac", "cves": [], "html": "<p>允许非 <span>GCC</span> 编译器在支持时使用内联函数（Kurt Harriman）</p>", "text": "允许非 GCC 编译器在支持时使用内联函数（Kurt Harriman）", "title": "允许非 GCC 编译器在支持时使用内联函数", "commits": [], "section": "源代码 / 可移植性", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.4", "source_hash": "189eb6da41c641b54f3d8e51777107b41b65d917ec528b48ea1e15eeda8576d2", "section_path": ["源代码", "可移植性"], "commit_groups": [], "identity_text": "Allow non-GCC compilers to use inline functions if they support them (Kurt Harriman)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/192", "db_id": "86011833ff62867c57a5e4f3e3fed5fb", "patch_ids": [], "statement_hash": "78c71d0cf84bbb45df8a5c5976d512d3374ec23a6c2b664445720bd3dccb398b", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-768a438393e40bc9", "cves": [], "html": "<p>移除对没有可用 64 位整数数据类型的平台的支持（Tom Lane）</p>", "text": "移除对没有可用 64 位整数数据类型的平台的支持（Tom Lane）", "title": "移除对没有可用 64 位整数数据类型的平台的支持", "commits": [], "section": "源代码 / 可移植性", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.4", "source_hash": "e466231617cec16c573fd4a06728b36d24050e8cfd66b66ff0ccf5c0fb218d67", "section_path": ["源代码", "可移植性"], "commit_groups": [], "identity_text": "Remove support for platforms that don't have a working 64-bit integer data type (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/193", "db_id": "d6a280e738eb6b1452083395d1220094", "patch_ids": [], "statement_hash": "8f16d938b737a1677e0b6a1ffe5618208c585189e4b8020f5389d7b224b6850a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-db94088ca516e3e4", "cves": [], "html": "<p>重构 <code>LDFLAGS</code> 的使用，使其在平台间更一致（Tom Lane）</p>\n<p><code>LDFLAGS</code> 现在用于链接可执行文件和共享库，并且在链接可执行文件时附加 <code>LDFLAGS_EX</code>，链接共享库时附加 <code>LDFLAGS_SL</code>。</p>", "text": "重构 LDFLAGS 的使用，使其在平台间更一致（Tom Lane） LDFLAGS 现在用于链接可执行文件和共享库，并且在链接可执行文件时附加 LDFLAGS_EX，链接共享库时附加 LDFLAGS_SL。", "title": "重构 LDFLAGS 的使用，使其在平台间更一致", "commits": [], "section": "源代码 / 可移植性", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.4", "source_hash": "5e0d84a8e84b1e2a7296c8b0a1a78c1d62edc43a2fecf7dffd283ee84a35ca34", "section_path": ["源代码", "可移植性"], "commit_groups": [], "identity_text": "Restructure use of LDFLAGS to be more consistent across platforms (Tom Lane) LDFLAGS is now used for linking both executables and shared libraries, and we add on LDFLAGS_EX when linking executables, or LDFLAGS_SL when linking shared libraries.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/194", "db_id": "21e60cf406b9077bc8bce0ed654148be", "patch_ids": [], "statement_hash": "89542e68d5ef588eec4e506746770e94c0baae3bdeafbdeb49016ea7cbfafa53", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-41408923357512a4", "cves": [], "html": "<p>使后端头文件可以安全地包含在 <span>C++</span> 中（Kurt Harriman、Peter Eisentraut）</p>\n<p>这些变更移除了此前使 <span>C++</span> 难以用于后端代码的关键字冲突。但是，在为后端函数使用 <span>C++</span> 时仍有其他复杂之处。在适当的地方仍需要 <code>extern \"C\" { }</code>，内存管理和错误处理仍是有问题的。</p>", "text": "使后端头文件可以安全地包含在 C++ 中（Kurt Harriman、Peter Eisentraut） 这些变更移除了此前使 C++ 难以用于后端代码的关键字冲突。但是，在为后端函数使用 C++ 时仍有其他复杂之处。在适当的地方仍需要 extern \"C\" { }，内存管理和错误处理仍是有问题的。", "title": "使后端头文件可以安全地包含在 C++ 中", "commits": [], "section": "源代码 / 服务器编程", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.5", "source_hash": "72cf9ae26e90811f301ba14c7a21f008de88782afd112313ff1c6342b15ecddf", "section_path": ["源代码", "服务器编程"], "commit_groups": [], "identity_text": "Make backend header files safe to include in C++ (Kurt Harriman, Peter Eisentraut) These changes remove keyword conflicts that previously made C++ usage difficult in backend code. However, there are still other complexities when using C++ for backend functions. extern \"C\" { } is still necessary in appropriate places, and memory management and error handling are still problematic.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/195", "db_id": "c32f422f672f221dd65be98c1af4b84e", "patch_ids": [], "statement_hash": "052c6dc90d3d34877d9153b8b20fb96ed6e01441b366c016f2b8e3d0ff26521d", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f8cc326f28ee9f56", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/xaggr.html\" title=\"35.10. User-Defined Aggregates\"><code>AggCheckCallContext()</code></a>，用于检测 <span>C</span> 函数是否被作为聚合调用（Hitoshi Harada）</p>", "text": "新增 AggCheckCallContext()，用于检测 C 函数是否被作为聚合调用（Hitoshi Harada）", "title": "新增 AggCheckCallContext()，用于检测 C 函数是否被作为聚合调用", "commits": [], "section": "源代码 / 服务器编程", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.5", "source_hash": "ceee2dd399c7ce2dc5e748db360c3d23264cfbc7db24332c5169913637a0faed", "section_path": ["源代码", "服务器编程"], "commit_groups": [], "identity_text": "Add AggCheckCallContext() for use in detecting if a C function is being called as an aggregate (Hitoshi Harada)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/196", "db_id": "be9796bb1fae447b5253777d8fa33f3b", "patch_ids": [], "statement_hash": "0ea6db5ec9b76a52edd9ee650da8917d39fd7a565a1b0e4da9f75864a7d83f5c", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-50d5c16f935dbe44", "cves": [], "html": "<p>更改 <code>SearchSysCache()</code> 及相关函数的调用约定，以避免硬编码缓存键的最大数量（Robert Haas）</p>\n<p>现有调用目前仍可工作，但如果不转换为新风格，预计会在 9.1 或更高版本中中断。</p>", "text": "更改 SearchSysCache() 及相关函数的调用约定，以避免硬编码缓存键的最大数量（Robert Haas） 现有调用目前仍可工作，但如果不转换为新风格，预计会在 9.1 或更高版本中中断。", "title": "更改 SearchSysCache() 及相关函数的调用约定，以避免硬编码缓存键的最大数量", "commits": [], "section": "源代码 / 服务器编程", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.5", "source_hash": "78de263ccea56205d464bb95ae94ea66a31a3a3a98ef9fb9bad4a4b9b1f282af", "section_path": ["源代码", "服务器编程"], "commit_groups": [], "identity_text": "Change calling convention for SearchSysCache() and related functions to avoid hard-wiring the maximum number of cache keys (Robert Haas) Existing calls will still work for the moment, but can be expected to break in 9.1 or later if not converted to the new style.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/197", "db_id": "15b3d5560c5a7d2b4fb8e06f2f9db456", "patch_ids": [], "statement_hash": "c07ea99453e62201db7bcc3e3801fd209d5da973275b19db35c7046229699034", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-be1eb76e10bd3ddf", "cves": [], "html": "<p>要求对 <code>fastgetattr()</code> 和 <code>heap_getattr()</code> 后端宏的调用提供非 NULL 的第四个参数（Robert Haas）</p>", "text": "要求对 fastgetattr() 和 heap_getattr() 后端宏的调用提供非 NULL 的第四个参数（Robert Haas）", "title": "要求对 fastgetattr() 和 heap_getattr() 后端宏的调用提供非 NULL 的第四个参数", "commits": [], "section": "源代码 / 服务器编程", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.5", "source_hash": "004f46108282cef4f2142b03b8c2ee5ff000e837066eabf164f869ba7d61653c", "section_path": ["源代码", "服务器编程"], "commit_groups": [], "identity_text": "Require calls of fastgetattr() and heap_getattr() backend macros to provide a non-NULL fourth argument (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/198", "db_id": "e43e318d6b14f6efbf9cf9dbc001a6dc", "patch_ids": [], "statement_hash": "4596c0a0ec9109830967e0f2c897e7b1b919be2b8bc8e7f09631545907e5379f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e4b22b629495b46b", "cves": [], "html": "<p>自定义 typanalyze 函数不应再依赖 <code>VacAttrStats</code>.<code>attr</code> 来确定将要传递给它们的数据类型（Tom Lane）</p>\n<p>此变更是为了允许对存储类型与底层列数据类型不同的索引列收集统计信息。有新的字段告知实际被分析的数据类型。</p>", "text": "自定义 typanalyze 函数不应再依赖 VacAttrStats.attr 来确定将要传递给它们的数据类型（Tom Lane） 此变更是为了允许对存储类型与底层列数据类型不同的索引列收集统计信息。有新的字段告知实际被分析的数据类型。", "title": "自定义 typanalyze 函数不应再依赖 VacAttrStats.attr 来确定将要传递给它们的数据类型", "commits": [], "section": "源代码 / 服务器编程", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.5", "source_hash": "e0b7028823c9d0b2a647917a111f5981bf8162c23a9a557dc122cec31db958f7", "section_path": ["源代码", "服务器编程"], "commit_groups": [], "identity_text": "Custom typanalyze functions should no longer rely on VacAttrStats.attr to determine the type of data they will be passed (Tom Lane) This was changed to allow collection of statistics on index columns for which the storage type is different from the underlying column data type. There are new fields that tell the actual datatype being analyzed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/199", "db_id": "4d9db9b60c9e956cedac531013a5fa10", "patch_ids": [], "statement_hash": "5351fc5df7bb6c538d777b10f2858c2e7e05c1b243e0d95766df278bd9dc7ebd", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f490c19cdeb63b51", "cves": [], "html": "<p>新增用于处理 ColumnRef 和 ParamRef 节点的解析器钩子（Tom Lane）</p>", "text": "新增用于处理 ColumnRef 和 ParamRef 节点的解析器钩子（Tom Lane）", "title": "新增用于处理 ColumnRef 和 ParamRef 节点的解析器钩子", "commits": [], "section": "源代码 / 服务器钩子", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.6", "source_hash": "761b16d125a2a7f32e6fbf6f866123748359fb2c4ba07f74336a6a4c3f1f7216", "section_path": ["源代码", "服务器钩子"], "commit_groups": [], "identity_text": "Add parser hooks for processing ColumnRef and ParamRef nodes (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/200", "db_id": "c61b83107d02e35868fc45a4e65b746a", "patch_ids": [], "statement_hash": "30a76f9989a2503afee5303e5fae572b1f5bfdc905bc65818bd80cb97461c057", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b9314b262db2ba09", "cves": [], "html": "<p>新增 ProcessUtility 钩子，使可加载模块可以控制工具命令（Itagaki Takahiro）</p>", "text": "新增 ProcessUtility 钩子，使可加载模块可以控制工具命令（Itagaki Takahiro）", "title": "新增 ProcessUtility 钩子，使可加载模块可以控制工具命令", "commits": [], "section": "源代码 / 服务器钩子", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.6", "source_hash": "555a283d2f39e8d314cf445cc2353e67590628df1540dceb28fd71dfcacc4e5d", "section_path": ["源代码", "服务器钩子"], "commit_groups": [], "identity_text": "Add a ProcessUtility hook so loadable modules can control utility commands (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/201", "db_id": "9cf45936ac399fe5d2ae3d4e4f435491", "patch_ids": [], "statement_hash": "2efe22c3f775163d583deac590cde19a321617733735d9b0c594a4259ee0c5b6", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-97a06b56ae3b557c", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/pgupgrade.html\" title=\"F.32. pg_upgrade\"><code>contrib/pg_upgrade</code></a> 以支持就地升级（Bruce Momjian）</p>\n<p>这避免了升级到 PostgreSQL 新大版本时转储/重载数据库的要求，从而把停机时间降低了数量级。它支持从 PostgreSQL 8.3 和 8.4 升级到 9.0。</p>", "text": "新增 contrib/pg_upgrade 以支持就地升级（Bruce Momjian） 这避免了升级到 PostgreSQL 新大版本时转储/重载数据库的要求，从而把停机时间降低了数量级。它支持从 PostgreSQL 8.3 和 8.4 升级到 9.0。", "title": "新增 contrib/pg_upgrade 以支持就地升级", "commits": [], "section": "源代码 / 二进制升级支持", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.7", "source_hash": "f47024df5715280167e1ab5c1787c6052ec8bfd63eb55e02fa8a43d95bef958f", "section_path": ["源代码", "二进制升级支持"], "commit_groups": [], "identity_text": "Add contrib/pg_upgrade to support in-place upgrades (Bruce Momjian) This avoids the requirement of dumping/reloading the database when upgrading to a new major release of PostgreSQL, thus reducing downtime by orders of magnitude. It supports upgrades to 9.0 from PostgreSQL 8.3 and 8.4.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/202", "db_id": "858341bb2244d74413febc7989c2e07c", "patch_ids": [], "statement_hash": "aa73d5b3d811a5b0099044564ccf3d6f08e545eb97c5e952cbecdcac0b4ab6ad", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-036e1248bb400884", "cves": [], "html": "<p>新增在二进制升级期间保留关系 <a href=\"/docs/9.0/catalog-pg-class.html\" title=\"45.11. pg_class\"><code>relfilenode</code></a> 值的支持（Bruce Momjian）</p>", "text": "新增在二进制升级期间保留关系 relfilenode 值的支持（Bruce Momjian）", "title": "新增在二进制升级期间保留关系 relfilenode 值的支持", "commits": [], "section": "源代码 / 二进制升级支持", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.7", "source_hash": "1430c541b393ea9f3966297d04aa9a43f3f4b4168ee86cb7ebfd03f682e31546", "section_path": ["源代码", "二进制升级支持"], "commit_groups": [], "identity_text": "Add support for preserving relation relfilenode values during binary upgrades (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/203", "db_id": "a17b98c82d3476158de96b8bb3f89037", "patch_ids": [], "statement_hash": "0f034d89dcb14328a874aa5b4db64e97941af86341049aba3ed834ce38ba171a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-b97124d9b308add9", "cves": [], "html": "<p>新增在二进制升级期间保留 <code>pg_type</code> 和 <code>pg_enum</code> OID 的支持（Bruce Momjian）</p>", "text": "新增在二进制升级期间保留 pg_type 和 pg_enum OID 的支持（Bruce Momjian）", "title": "新增在二进制升级期间保留 pg_type 和 pg_enum OID 的支持", "commits": [], "section": "源代码 / 二进制升级支持", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.7", "source_hash": "79c0461651ec71927bd1c6cf3a885d49be59f3ad77634c35a090f9e6e85aed90", "section_path": ["源代码", "二进制升级支持"], "commit_groups": [], "identity_text": "Add support for preserving pg_type and pg_enum OIDs during binary upgrades (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/204", "db_id": "12f50e3a32b51149e961466ab5324b63", "patch_ids": [], "statement_hash": "9c37630c1504b22f40677bf3bbdf3a16fe48516a6d196195557af59679e70503", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-8112fa6e6adc601e", "cves": [], "html": "<p>把表空间内的数据文件移到 <span>PostgreSQL</span> 版本特定的子目录中（Bruce Momjian）</p>\n<p>这简化了二进制升级。</p>", "text": "把表空间内的数据文件移到 PostgreSQL 版本特定的子目录中（Bruce Momjian） 这简化了二进制升级。", "title": "把表空间内的数据文件移到 PostgreSQL 版本特定的子目录中", "commits": [], "section": "源代码 / 二进制升级支持", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.13.7", "source_hash": "e4252b9174b9b43cb0d22b756958ee9fc731b9995b1a7ed6f53856c96bd69418", "section_path": ["源代码", "二进制升级支持"], "commit_groups": [], "identity_text": "Move data files within tablespaces into PostgreSQL-version-specific subdirectories (Bruce Momjian) This simplifies binary upgrades.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/205", "db_id": "29ae659144b049189c2b759efeebc11c", "patch_ids": [], "statement_hash": "2ea84cc6cc33a35d3f44f70be69e3d7f4f894a18f30976964493554b7bd22691", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e7484e94dc315f1f", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/pgbench.html\" title=\"F.23. pgbench\"><code>contrib/pgbench</code></a> 新增多线程选项（<code>-j</code>）（Itagaki Takahiro）</p>\n<p>这允许 pgbench 使用多个 <acronym>CPU</acronym>，降低 pgbench 本身成为测试瓶颈的风险。</p>", "text": "为 contrib/pgbench 新增多线程选项（-j）（Itagaki Takahiro） 这允许 pgbench 使用多个 CPU，降低 pgbench 本身成为测试瓶颈的风险。", "title": "为 contrib/pgbench 新增多线程选项（-j）", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "1030f85e6443b1310c45e05c4f3c21fe975b37f41170fc96a4670da0c56a2969", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add multithreading option (-j) to contrib/pgbench (Itagaki Takahiro) This allows multiple CPUs to be used by pgbench, reducing the risk of pgbench itself becoming the test bottleneck.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/206", "db_id": "40542163473da322a2fc2a3f5c3e3bb6", "patch_ids": [], "statement_hash": "f950ab86ad14684190eec0f995f49cf2e4cece4ca6208c088d105bea8581fa78", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-a5b523f2a06300ec", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/pgbench.html\" title=\"F.23. pgbench\"><code>contrib/pgbench</code></a> 新增 <code>\\shell</code> 和 <code>\\setshell</code> 元命令（Michael Paquier）</p>", "text": "为 contrib/pgbench 新增 \\shell 和 \\setshell 元命令（Michael Paquier）", "title": "为 contrib/pgbench 新增 \\shell 和 \\setshell 元命令", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "9d603dfd06456c584604dec9da500dbe094cb6adc1a6e5a57f021aee476ba7cf", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add \\shell and \\setshell meta commands to contrib/pgbench (Michael Paquier)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/207", "db_id": "ca45163fd769886042de4648c44518f3", "patch_ids": [], "statement_hash": "8fc0186a11c1b08089715cfb785388b12b9931012de65c652f5e3859996b868f", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-0c15bfed38a15280", "cves": [], "html": "<p><a href=\"/docs/9.0/dict-xsyn.html\" title=\"F.10. dict_xsyn — 示例同义词全文检索词典\"><code>contrib/dict_xsyn</code></a> 的新特性（Sergey Karpov）</p>\n<p>新选项为 <code>matchorig</code>、<code>matchsynonyms</code> 和 <code>keepsynonyms</code>。</p>", "text": "contrib/dict_xsyn 的新特性（Sergey Karpov） 新选项为 matchorig、matchsynonyms 和 keepsynonyms。", "title": "contrib/dict_xsyn 的新特性", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "7855d7f3f6dd157d7ce9f7e79dd1e1a361746cfbaeefdec6dc0d98318d7697e8", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "New features for contrib/dict_xsyn (Sergey Karpov) The new options are matchorig, matchsynonyms, and keepsynonyms.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/208", "db_id": "f3c4b9374cae42cc70d2896bf5bfbb80", "patch_ids": [], "statement_hash": "f3f721b94bfa44f88c92e03043814ab8db431fb03d053f34aba8a7d47b014671", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-7667742bd1ba074c", "cves": [], "html": "<p>新增全文词典 <a href=\"/docs/9.0/unaccent.html\" title=\"F.39. unaccent\"><code>contrib/unaccent</code></a>（Teodor Sigaev）</p>\n<p>这个过滤词典移除字母上的重音符号，使跨多种语言的全文搜索容易得多。</p>", "text": "新增全文词典 contrib/unaccent（Teodor Sigaev） 这个过滤词典移除字母上的重音符号，使跨多种语言的全文搜索容易得多。", "title": "新增全文词典 contrib/unaccent", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "cffa91112b16e983687c512455313c7ea48fa79429464bdf855754dd53efed35", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add full text dictionary contrib/unaccent (Teodor Sigaev) This filtering dictionary removes accents from letters, which makes full-text searches over multiple languages much easier.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/209", "db_id": "a3d78229152305302d5a7b4e4bc74c10", "patch_ids": [], "statement_hash": "f1021d847ff3b0d93cbdbab9880dfc9ef8647f5f9e8585973962ac5360b36d74", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-e874131dd266cdaf", "cves": [], "html": "<p>为 <code>contrib/dblink</code> 新增 <a href=\"/docs/9.0/contrib-dblink-get-notify.html\" title=\"dblink_get_notify\"><code>dblink_get_notify()</code></a>（Marcus Kempe）</p>\n<p>这允许 <span>dblink</span> 中的异步通知。</p>", "text": "为 contrib/dblink 新增 dblink_get_notify()（Marcus Kempe） 这允许 dblink 中的异步通知。", "title": "为 contrib/dblink 新增 dblink_get_notify()", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "f0431668b49ccd5c8b01d15f156dffa5314ae8daa00a8688c771c64ef4ec6312", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add dblink_get_notify() to contrib/dblink (Marcus Kempe) This allows asynchronous notifications in dblink.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/210", "db_id": "115a2e783c8ad77460edc1b011ca56b4", "patch_ids": [], "statement_hash": "c070c7f6680987f4eeea959d4916407933f548de369f16178b6e0571efd6f8c4", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-be7e264060221f67", "cves": [], "html": "<p>改进 <code>contrib/dblink</code> 对已删除列的处理（Tom Lane）</p>\n<p>这影响 <a href=\"/docs/9.0/contrib-dblink-build-sql-insert.html\" title=\"dblink_build_sql_insert\"><code>dblink_build_sql_insert()</code></a> 及相关函数。这些函数现在按逻辑而非物理列编号对列计数。</p>", "text": "改进 contrib/dblink 对已删除列的处理（Tom Lane） 这影响 dblink_build_sql_insert() 及相关函数。这些函数现在按逻辑而非物理列编号对列计数。", "title": "改进 contrib/dblink 对已删除列的处理", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "52f6b28792bc7c9c9ab2e0efb93315fc05d22ed32e3efa8bc8a1f1d9d50558a6", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Improve contrib/dblink's handling of dropped columns (Tom Lane) This affects dblink_build_sql_insert() and related functions. These functions now number columns according to logical not physical column numbers.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/211", "db_id": "69c52020509cce2841a9b883fd0277a0", "patch_ids": [], "statement_hash": "63effc51402cae772a36cfae5f13b82441293e4376343743366a591dc7070447", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-84919592d4cbee8b", "cves": [], "html": "<p>大幅提高 <a href=\"/docs/9.0/hstore.html\" title=\"F.13. hstore\"><code>contrib/hstore</code></a> 的数据长度限制，并新增 B-tree 和哈希支持，使 <code>hstore</code> 列上可以进行 <code>GROUP BY</code> 和 <code>DISTINCT</code> 操作（Andrew Gierth）</p>\n<p>还新增了函数和操作符。这些改进使 <code>hstore</code> 成为嵌入 <span>PostgreSQL</span> 的全功能键值存储。</p>", "text": "大幅提高 contrib/hstore 的数据长度限制，并新增 B-tree 和哈希支持，使 hstore 列上可以进行 GROUP BY 和 DISTINCT 操作（Andrew Gierth） 还新增了函数和操作符。这些改进使 hstore 成为嵌入 PostgreSQL 的全功能键值存储。", "title": "大幅提高 contrib/hstore 的数据长度限制，并新增 B-tree 和哈希支持，使 hstore 列上可以进行 GROUP BY 和 DISTINCT 操作", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "0ca27de9d4bd2d77bc18ee1e1a57e1ff2a34fb1acc3c394fee5af22d23d06575", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Greatly increase contrib/hstore's data length limit, and add B-tree and hash support so GROUP BY and DISTINCT operations are possible on hstore columns (Andrew Gierth) New functions and operators were also added. These improvements make hstore a full-function key-value store embedded in PostgreSQL.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/212", "db_id": "bf4c949f1d9f7b2191d01c53616ee6a4", "patch_ids": [], "statement_hash": "97a2138eb4386af72b09a0ca1bec63ceb6f6198231be4387d521eec709cdcbbe", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-ce5201cd0366e3e2", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/passwordcheck.html\" title=\"F.21. passwordcheck\"><code>contrib/passwordcheck</code></a>，用于支持站点特定的口令强度策略（Laurenz Albe）</p>\n<p>应修改此模块的源代码以实现站点特定的口令策略。</p>", "text": "新增 contrib/passwordcheck，用于支持站点特定的口令强度策略（Laurenz Albe） 应修改此模块的源代码以实现站点特定的口令策略。", "title": "新增 contrib/passwordcheck，用于支持站点特定的口令强度策略", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "58dba93b5ee729a4e5655b8b1174e20aa3b8900f14cb3a3177e7e8332207bae8", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add contrib/passwordcheck to support site-specific password strength policies (Laurenz Albe) The source code of this module should be modified to implement site-specific password policies.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/213", "db_id": "5ad4c38180243ca188981e72781f9e75", "patch_ids": [], "statement_hash": "26521b9f98d883f2bc9ee7c7c80d39cf5317fada9240ba2003c5c751ad07dcde", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-2c408c63518a860d", "cves": [], "html": "<p>新增 <a href=\"/docs/9.0/pgarchivecleanup.html\" title=\"F.22. pg_archivecleanup\"><code>contrib/pg_archivecleanup</code></a> 工具（Simon Riggs）</p>\n<p>它设计用于 <code>archive_cleanup_command</code> 服务器参数，用于删除不再需要的归档文件。</p>", "text": "新增 contrib/pg_archivecleanup 工具（Simon Riggs） 它设计用于 archive_cleanup_command 服务器参数，用于删除不再需要的归档文件。", "title": "新增 contrib/pg_archivecleanup 工具", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "40567513738f71c48bfc7aa192dbdbf5b528ad32691c055b98b04abda2b09986", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add contrib/pg_archivecleanup tool (Simon Riggs) This is designed to be used in the archive_cleanup_command server parameter, to remove no-longer-needed archive files.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/214", "db_id": "2960d79002538515d1c450106ede4b74", "patch_ids": [], "statement_hash": "86264468104b624939f57ba6d6907121ce36261686f3e00649783cb30a9b1d99", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-6c432cdc6bdbbcee", "cves": [], "html": "<p>在 <a href=\"/docs/9.0/auto-explain.html\" title=\"F.2. auto_explain\"><code>contrib/auto_explain</code></a> 输出中添加查询文本（Andrew Dunstan）</p>", "text": "在 contrib/auto_explain 输出中添加查询文本（Andrew Dunstan）", "title": "在 contrib/auto_explain 输出中添加查询文本", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "5606b2067b548187f7cd69b51e412358aff82583a28062a0ee74f724b628becd", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add query text to contrib/auto_explain output (Andrew Dunstan)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/215", "db_id": "155fc7b6f8a80169be96fe6c5c7c4d63", "patch_ids": [], "statement_hash": "03012280c439810358fbfb752d74b080c42c00f96fdf12371619ec40a97d6f9a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-3173b622cb5eaf4b", "cves": [], "html": "<p>为 <a href=\"/docs/9.0/pgstatstatements.html\" title=\"F.29. pg_stat_statements\"><code>contrib/pg_stat_statements</code></a> 新增缓冲区访问计数器（Itagaki Takahiro）</p>", "text": "为 contrib/pg_stat_statements 新增缓冲区访问计数器（Itagaki Takahiro）", "title": "为 contrib/pg_stat_statements 新增缓冲区访问计数器", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "62b7fe916ad17f2a12ce6345b5256ff5f0f341666ddb0f0a97ecfa2ff1f4c3fb", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Add buffer access counters to contrib/pg_stat_statements (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/216", "db_id": "a5cecaa666e05dfd45a6c059aa085545", "patch_ids": [], "statement_hash": "d7a7e3e3c55c73afc6ae0a4b76ebcb496f77e459aa560777791e88e5e64b784a", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.0-f64e0665a014f91b", "cves": [], "html": "<p>更新 <a href=\"/docs/9.0/server-start.html\" title=\"17.3. 启动数据库服务器\"><code>contrib/start-scripts/linux</code></a>，使其使用 <code>/proc/self/oom_adj</code> 禁用 <a href=\"/docs/9.0/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT\" title=\"17.4.3. Linux 内存过量分配\"><span>Linux</span> 内存不足</a>（<acronym>OOM</acronym>）终止器（Alex Hunsaker、Tom Lane）</p>", "text": "更新 contrib/start-scripts/linux，使其使用 /proc/self/oom_adj 禁用 Linux 内存不足（OOM）终止器（Alex Hunsaker、Tom Lane）", "title": "更新 contrib/start-scripts/linux，使其使用 /proc/self/oom_adj 禁用 Linux 内存不足（OOM）终止器", "commits": [], "section": "附加模块", "category": "feature", "source_url": "/docs/release/9.0.0/#id-1.11.6.28.5.14", "source_hash": "fa4eff16d36bf632e2af0839ead1d3e9d5417aaa9539216c27f30641006e6443", "section_path": ["附加模块"], "commit_groups": [], "identity_text": "Update contrib/start-scripts/linux to use /proc/self/oom_adj to disable the Linux out-of-memory (OOM) killer (Alex Hunsaker, Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.0/changes/217", "db_id": "2e54319bb3fc50cf5084c621019b7624", "patch_ids": [], "statement_hash": "3dd32e4d9c1f6defe25945c1443c8a24996df9b1ff8d148ed17f1912c3c22023", "relations": [], "version": "9.0.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}]}], "stats": [{"key": "all", "label": "全部变更", "count": 237}, {"key": "feature", "label": "新功能", "count": 206}, {"key": "bugfix", "label": "BUG 修复", "count": 5}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 6}, {"key": "compatibility", "label": "兼容性变化", "count": 20}, {"key": "improvement", "label": "其他改进", "count": 0}], "total": 237, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 237, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}