{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2012-06-04", "build": "9.1.4", "major": "9.1", "minor": 4, "manual": "9.1", "status": "stable", "doc_git": "", "version": "9.1.4", "eol_date": "2016-10-27", "date_text": "2012-06-04", "supported": false, "manual_url": "/docs/9.1/release-9-1-4.html", "source_url": "/docs/release/9.1.4/", "entry_count": 42, "placeholder": false, "content_hash": "f6d3a6030aad54527df13124bd882127a44fe15f2a8449c6aa22e0b46b5b5c42", "manual_build": "9.1.24", "source_as_of": "", "changes_count": 42, "doc_loaded_at": "2026-09-26T02:56:47.783417", "migration_html": "<p>对于运行 9.1.X 的用户，不需要进行转储/恢复。</p>\n<p>不过，如果你使用 <code>citext</code> 数据类型，并且是通过运行 <span>pg_upgrade</span> 从前一个大版本升级的，应执行 <code>CREATE EXTENSION citext FROM unpackaged</code>，以避免 <code>citext</code> 操作中与排序规则相关的失败。如果恢复来自包含 <code>citext</code> 数据类型的 9.1 之前数据库的转储，也需要这样做。如果你在升级到 9.1.4 之前已经运行过 <code>CREATE EXTENSION</code> 命令，则需要按下面第三条变更日志条目的说明手工更新系统目录。</p>\n<p>不过，如果你是从早于 9.1.2 的版本升级，请参见<a href=\"/docs/9.1/release-9-1-2.html\" title=\"E.23. 版本 9.1.2\">第 E.23 节</a>。</p>", "compatibility_count": 0, "label": "9.1.4", "status_label": "历史版本", "eol": "2016-10-27", "age_days": 5231, "support_days": -3625}, "groups": [{"date": "2012-06-04", "build": "9.1.4", "major": "9.1", "minor": 4, "manual": "9.1", "status": "stable", "doc_git": "", "version": "9.1.4", "eol_date": "2016-10-27", "date_text": "2012-06-04", "supported": false, "manual_url": "/docs/9.1/release-9-1-4.html", "source_url": "/docs/release/9.1.4/", "entry_count": 42, "placeholder": false, "content_hash": "f6d3a6030aad54527df13124bd882127a44fe15f2a8449c6aa22e0b46b5b5c42", "manual_build": "9.1.24", "source_as_of": "", "changes_count": 42, "doc_loaded_at": "2026-09-26T02:56:47.783417", "migration_html": "<p>对于运行 9.1.X 的用户，不需要进行转储/恢复。</p>\n<p>不过，如果你使用 <code>citext</code> 数据类型，并且是通过运行 <span>pg_upgrade</span> 从前一个大版本升级的，应执行 <code>CREATE EXTENSION citext FROM unpackaged</code>，以避免 <code>citext</code> 操作中与排序规则相关的失败。如果恢复来自包含 <code>citext</code> 数据类型的 9.1 之前数据库的转储，也需要这样做。如果你在升级到 9.1.4 之前已经运行过 <code>CREATE EXTENSION</code> 命令，则需要按下面第三条变更日志条目的说明手工更新系统目录。</p>\n<p>不过，如果你是从早于 9.1.2 的版本升级，请参见<a href=\"/docs/9.1/release-9-1-2.html\" title=\"E.23. 版本 9.1.2\">第 E.23 节</a>。</p>", "compatibility_count": 0, "label": "9.1.4", "status_label": "历史版本", "eol": "2016-10-27", "age_days": 5231, "support_days": -3625, "entries": [{"id": "9.1.4-f7e027714cbe55a9", "cves": ["CVE-2012-2143"], "html": "<p>修复 <code>contrib/pgcrypto</code> 的 DES <code>crypt()</code> 函数中不正确的口令变换（Solar Designer）</p>\n<p>如果口令串包含字节值 <code>0x80</code>，口令的其余部分会被忽略，使口令比看起来弱得多。修复后，字符串的其余部分会被正确纳入 DES 哈希。因此，受此缺陷影响的任何已存储口令值将不再匹配，所以可能需要更新已存储的值。（CVE-2012-2143）</p>", "text": "修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换（Solar Designer） 如果口令串包含字节值 0x80，口令的其余部分会被忽略，使口令比看起来弱得多。修复后，字符串的其余部分会被正确纳入 DES 哈希。因此，受此缺陷影响的任何已存储口令值将不再匹配，所以可能需要更新已存储的值。（CVE-2012-2143）", "title": "修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "03a1260ee215d2a25cc1484b7103f4107390ddf678301f7bd1ceae282b0d55b1", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix incorrect password transformation in contrib/pgcrypto's DES crypt() function (Solar Designer) If a password string contained the byte value 0x80, the remainder of the password was ignored, causing the password to be much weaker than it appeared. With this fix, the rest of the string is properly included in the DES hash. Any stored password values that are affected by this bug will thus no longer match, so the stored values may need to be updated. (CVE-2012-2143)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/001", "db_id": "d1c9aa8a6e42b789d6b12bf1c19ff48d", "patch_ids": [], "statement_hash": "0f947a81af48a2bd27b30000bab97b036e134d06ee4907612bcff56b4d16f7aa", "relations": [{"rule": 2, "type": "equivalent", "target": "cb5920a7729a661d027d04e87378653a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0f947a81af48a2bd27b30000bab97b036e134d06ee4907612bcff56b4d16f7aa"}}], "version": "9.1.4", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "cb5920a7729a661d027d04e87378653a", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0f947a81af48a2bd27b30000bab97b036e134d06ee4907612bcff56b4d16f7aa"}, "url": "/docs/compare/?release=9.0.8#9.0.8-f7e027714cbe55a9", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-950752998fe1f2a1", "cves": ["CVE-2012-2655"], "html": "<p>忽略过程语言调用处理程序的 <code>SECURITY DEFINER</code> 和 <code>SET</code> 属性（Tom Lane）</p>\n<p>把这类属性应用于调用处理程序可能导致服务器崩溃。（CVE-2012-2655）</p>", "text": "忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性（Tom Lane） 把这类属性应用于调用处理程序可能导致服务器崩溃。（CVE-2012-2655）", "title": "忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "bbdb239a6841f1e9d3da8a3a37b3e91395b788f87fd1a80b91653ba2dd93352c", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ignore SECURITY DEFINER and SET attributes for a procedural language's call handler (Tom Lane) Applying such attributes to a call handler could crash the server. (CVE-2012-2655)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/002", "db_id": "1e9aa9dadb7f705940e29fe92ef4e58c", "patch_ids": [], "statement_hash": "3a45f8c9f78d68b6bb81173d47eee8e0f3bfb011cdfceb55b611990b4bfde531", "relations": [{"rule": 2, "type": "equivalent", "target": "2dc791f135e8a00bb8117ee8ba9bbf9f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3a45f8c9f78d68b6bb81173d47eee8e0f3bfb011cdfceb55b611990b4bfde531"}}], "version": "9.1.4", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "2dc791f135e8a00bb8117ee8ba9bbf9f", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3a45f8c9f78d68b6bb81173d47eee8e0f3bfb011cdfceb55b611990b4bfde531"}, "url": "/docs/compare/?release=9.0.8#9.0.8-950752998fe1f2a1", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-fb2a0d154bffebf7", "cves": [], "html": "<p>让 <code>contrib/citext</code> 的升级脚本修复 <code>citext</code> 数组以及 <code>citext</code> 之上的域的排序规则（Tom Lane）</p>\n<p>9.1.2 提供了对从 9.1 之前安装升级或重载的数据库中 <code>citext</code> 列和索引排序规则的修复，但该修复不完整：它遗漏了对数组以及 <code>citext</code> 之上的域的处理。本版本扩展了该模块的升级脚本以处理这些情况。和以前一样，如果你已经运行过升级脚本，则需要改为手工运行排序规则更新命令。具体做法参见 9.1.2 发行说明。</p>", "text": "让 contrib/citext 的升级脚本修复 citext 数组以及 citext 之上的域的排序规则（Tom Lane） 9.1.2 提供了对从 9.1 之前安装升级或重载的数据库中 citext 列和索引排序规则的修复，但该修复不完整：它遗漏了对数组以及 citext 之上的域的处理。本版本扩展了该模块的升级脚本以处理这些情况。和以前一样，如果你已经运行过升级脚本，则需要改为手工运行排序规则更新命令。具体做法参见 9.1.2 发行说明。", "title": "让 contrib/citext 的升级脚本修复 citext 数组以及 citext 之上的域的排序规则", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "12a9b14edfff3624036b615300f4a7d4a9af0eb6e62f322d70de46fdab3ce67b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Make contrib/citext's upgrade script fix collations of citext arrays and domains over citext (Tom Lane) Release 9.1.2 provided a fix for collations of citext columns and indexes in databases upgraded or reloaded from pre-9.1 installations, but that fix was incomplete: it neglected to handle arrays and domains over citext. This release extends the module's upgrade script to handle these cases. As before, if you have already run the upgrade script, you'll need to run the collation update commands by hand instead. See the 9.1.2 release notes for more information about doing this.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/003", "db_id": "7a5054a2657a09e320d20c003f377cbe", "patch_ids": [], "statement_hash": "a079dead48e4f1a0b2dc5d0da6bfc73779eb2946f0679b82f06379567d148b63", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-c62fc7c46c9b6370", "cves": [], "html": "<p>允许 <code>timestamp</code> 输入中的数字时区偏移距 UTC 最多 16 小时（Tom Lane）</p>\n<p>一些历史时区的偏移超过此前 15 小时的限制。这可能导致转储的数据值在重载期间被拒绝。</p>", "text": "允许 timestamp 输入中的数字时区偏移距 UTC 最多 16 小时（Tom Lane） 一些历史时区的偏移超过此前 15 小时的限制。这可能导致转储的数据值在重载期间被拒绝。", "title": "允许 timestamp 输入中的数字时区偏移距 UTC 最多 16 小时", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "095455017b66c55da7ed039aa3f5560a3263adfea20dda6aa302de82de828030", "section_path": ["变更"], "commit_groups": [], "identity_text": "Allow numeric timezone offsets in timestamp input to be up to 16 hours away from UTC (Tom Lane) Some historical time zones have offsets larger than 15 hours, the previous limit. This could result in dumped data values being rejected during reload.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/004", "db_id": "148a0e4a0398fc58c07421da3704ba28", "patch_ids": [], "statement_hash": "c3e3ec0ac5c3d36697ec4d7790092641fb62939d3e45a1ab5fb07e9627be88e7", "relations": [{"rule": 2, "type": "equivalent", "target": "66dfcc585e0253d76efafa427b1cfacf", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c3e3ec0ac5c3d36697ec4d7790092641fb62939d3e45a1ab5fb07e9627be88e7"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "66dfcc585e0253d76efafa427b1cfacf", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "允许 timestamp 输入中的数字时区偏移距 UTC 最多 16 小时", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c3e3ec0ac5c3d36697ec4d7790092641fb62939d3e45a1ab5fb07e9627be88e7"}, "url": "/docs/compare/?release=9.0.8#9.0.8-c62fc7c46c9b6370", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-8d118edb2ae197ca", "cves": [], "html": "<p>修复时间戳转换，使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理（Tom Lane）</p>\n<p>这一疏忽已存在很长时间，但此前未被注意到，因为大多数使用夏令时的时区被假定有无限的未来夏令时转换序列。</p>", "text": "修复时间戳转换，使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理（Tom Lane） 这一疏忽已存在很长时间，但此前未被注意到，因为大多数使用夏令时的时区被假定有无限的未来夏令时转换序列。", "title": "修复时间戳转换，使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "dcb250ef64a23c07160dcef95f88732260b4bea6fb201bd5fc62375f81319c48", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix timestamp conversion to cope when the given time is exactly the last DST transition time for the current timezone (Tom Lane) This oversight has been there a long time, but was not noticed previously because most DST-using zones are presumed to have an indefinite sequence of future DST transitions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/005", "db_id": "dba677f0792ea4293b27390098dc3d6d", "patch_ids": [], "statement_hash": "83fe48e3588100d31ea25ded9b792e4acf012f89a6827c2e26ad123c24092655", "relations": [{"rule": 2, "type": "equivalent", "target": "adbae31d5c047fe31754c449e1bbaa24", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "83fe48e3588100d31ea25ded9b792e4acf012f89a6827c2e26ad123c24092655"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "adbae31d5c047fe31754c449e1bbaa24", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复时间戳转换，使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "83fe48e3588100d31ea25ded9b792e4acf012f89a6827c2e26ad123c24092655"}, "url": "/docs/compare/?release=9.0.8#9.0.8-8d118edb2ae197ca", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-cb1403d26eab4c62", "cves": [], "html": "<p>修复 <code>text</code> 到 <code>name</code> 以及 <code>char</code> 到 <code>name</code> 的转换，使其在多字节编码下正确执行字符串截断（Karl Schnaitter）</p>", "text": "修复 text 到 name 以及 char 到 name 的转换，使其在多字节编码下正确执行字符串截断（Karl Schnaitter）", "title": "修复 text 到 name 以及 char 到 name 的转换，使其在多字节编码下正确执行字符串截断", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b238c8128f334e29dd27f26a155f4798409dd546ad6a8b2118ce60dec4ea1779", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix text to name and char to name casts to perform string truncation correctly in multibyte encodings (Karl Schnaitter)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/006", "db_id": "d2cebd1f21edbebaa93a2a85740498f1", "patch_ids": [], "statement_hash": "2c91579c14e0421cc4befc73e67c9f3a6bdee231311a8a3f88da3cea2f6eaa05", "relations": [{"rule": 2, "type": "equivalent", "target": "b62ecf087122590c91da50302d70e3ff", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2c91579c14e0421cc4befc73e67c9f3a6bdee231311a8a3f88da3cea2f6eaa05"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b62ecf087122590c91da50302d70e3ff", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 text 到 name 以及 char 到 name 的转换，使其在多字节编码下正确执行字符串截断", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2c91579c14e0421cc4befc73e67c9f3a6bdee231311a8a3f88da3cea2f6eaa05"}, "url": "/docs/compare/?release=9.0.8#9.0.8-cb1403d26eab4c62", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-5a31d7980364b87c", "cves": [], "html": "<p>修复 <code>to_tsquery()</code> 中的内存复制缺陷（Heikki Linnakangas）</p>", "text": "修复 to_tsquery() 中的内存复制缺陷（Heikki Linnakangas）", "title": "修复 to_tsquery() 中的内存复制缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "88d94d6ef8e5b743952e58e6e2f93bb4574b553085c6bc89ed71c0e9e1b0413d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix memory copying bug in to_tsquery() (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/007", "db_id": "246ee9f97ad753e16c3afac6fdea659c", "patch_ids": [], "statement_hash": "17052e5fa0cc283e7f8c8c7f3b11ae8239d038ed05d86b422f744fa3e28545f4", "relations": [{"rule": 2, "type": "equivalent", "target": "c69a6087c68a06d664f2f8f71e09fb6e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "17052e5fa0cc283e7f8c8c7f3b11ae8239d038ed05d86b422f744fa3e28545f4"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c69a6087c68a06d664f2f8f71e09fb6e", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 to_tsquery() 中的内存复制缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "17052e5fa0cc283e7f8c8c7f3b11ae8239d038ed05d86b422f744fa3e28545f4"}, "url": "/docs/compare/?release=9.0.8#9.0.8-5a31d7980364b87c", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-360cb51d2a1fd171", "cves": [], "html": "<p>确保 <code>txid_current()</code> 在热备中执行时报告正确的纪元（epoch）（Simon Riggs）</p>", "text": "确保 txid_current() 在热备中执行时报告正确的纪元（epoch）（Simon Riggs）", "title": "确保 txid_current() 在热备中执行时报告正确的纪元（epoch）", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b0ccb6472cbc75c153b6da657f721258b1d7c69f33eb187eca5ff4774d793988", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure txid_current() reports the correct epoch when executed in hot standby (Simon Riggs)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/008", "db_id": "2c0dec606905b65df86f3696314a0f28", "patch_ids": [], "statement_hash": "6ff384176800c990eead1448541e563e2034b2d035497e65e5f33c45cff13118", "relations": [{"rule": 2, "type": "equivalent", "target": "558735af561463755186750792b27395", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6ff384176800c990eead1448541e563e2034b2d035497e65e5f33c45cff13118"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "558735af561463755186750792b27395", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "确保 txid_current() 在热备中执行时报告正确的纪元（epoch）", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6ff384176800c990eead1448541e563e2034b2d035497e65e5f33c45cff13118"}, "url": "/docs/compare/?release=9.0.8#9.0.8-360cb51d2a1fd171", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-6c756bffcdb78f66", "cves": [], "html": "<p>修复规划器对子查询内外层 PlaceHolderVar 的处理（Tom Lane）</p>\n<p>该缺陷涉及引用来自外层查询外连接可空侧变量的子 SELECT。在 9.1 中，受此缺陷影响的查询会报 <span>“<span>ERROR: Upper-level PlaceHolderVar found where not expected</span>”</span> 失败。但在 9.0 和 8.4 中，你会静默地得到可能错误的答案，因为传入子查询的值不会在该为空时变为空。</p>", "text": "修复规划器对子查询内外层 PlaceHolderVar 的处理（Tom Lane） 该缺陷涉及引用来自外层查询外连接可空侧变量的子 SELECT。在 9.1 中，受此缺陷影响的查询会报 “ERROR: Upper-level PlaceHolderVar found where not expected” 失败。但在 9.0 和 8.4 中，你会静默地得到可能错误的答案，因为传入子查询的值不会在该为空时变为空。", "title": "修复规划器对子查询内外层 PlaceHolderVar 的处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "74402dad6b2aa4c05f2ded5ac17ec2100eab3cb773d7b741805a6b81b4c7e85b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix planner's handling of outer PlaceHolderVars within subqueries (Tom Lane) This bug concerns sub-SELECTs that reference variables coming from the nullable side of an outer join of the surrounding query. In 9.1, queries affected by this bug would fail with ERROR: Upper-level PlaceHolderVar found where not expected. But in 9.0 and 8.4, you'd silently get possibly-wrong answers, since the value transmitted into the subquery wouldn't go to null when it should.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/009", "db_id": "ef188976cac2505dda8376e40a42b5d1", "patch_ids": [], "statement_hash": "8ee28efc2fbfda74cb453da5f680773337fd25421ee1855c571078dd937bb706", "relations": [{"rule": 2, "type": "equivalent", "target": "19a6e1973e59e9da729551e85bc3d665", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8ee28efc2fbfda74cb453da5f680773337fd25421ee1855c571078dd937bb706"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "19a6e1973e59e9da729551e85bc3d665", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复规划器对子查询内外层 PlaceHolderVar 的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8ee28efc2fbfda74cb453da5f680773337fd25421ee1855c571078dd937bb706"}, "url": "/docs/compare/?release=9.0.8#9.0.8-6c756bffcdb78f66", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-6acf961b322be3dd", "cves": [], "html": "<p>修复输出列不是简单变量的 <code>UNION ALL</code> 子查询的规划（Tom Lane）</p>\n<p>由于对 <span>“<span>MergeAppend child's targetlist doesn't match MergeAppend</span>”</span> 错误的一次误导性修复，这类情况的规划在 9.1 中明显变差。现已撤销该修复并改用其他方法。</p>", "text": "修复输出列不是简单变量的 UNION ALL 子查询的规划（Tom Lane） 由于对 “MergeAppend child's targetlist doesn't match MergeAppend” 错误的一次误导性修复，这类情况的规划在 9.1 中明显变差。现已撤销该修复并改用其他方法。", "title": "修复输出列不是简单变量的 UNION ALL 子查询的规划", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "6a4ffc166064f8b09ddf911e02e920c1c2db28138bce1d70ac841fd8c29d3d10", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix planning of UNION ALL subqueries with output columns that are not simple variables (Tom Lane) Planning of such cases got noticeably worse in 9.1 as a result of a misguided fix for MergeAppend child's targetlist doesn't match MergeAppend errors. Revert that fix and do it another way.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/010", "db_id": "20c9f5ca515c6f79fec1b5ee504114c4", "patch_ids": [], "statement_hash": "a8ca38d6526e03443cf9a6f6e68f96da93674c7f63884b21d932bc75efdc2d2e", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-0ee6a4c6ae8c98fb", "cves": [], "html": "<p>修复 <code>pg_attribute</code> 非常大会话启动缓慢的问题（Tom Lane）</p>\n<p>如果 <code>pg_attribute</code> 超过 <code>shared_buffers</code> 的四分之一，会话启动期间有时需要的缓存重建代码就会触发同步扫描逻辑，使其耗时比正常情况多数倍。如果许多新会话同时启动，问题尤为严重。</p>", "text": "修复 pg_attribute 非常大会话启动缓慢的问题（Tom Lane） 如果 pg_attribute 超过 shared_buffers 的四分之一，会话启动期间有时需要的缓存重建代码就会触发同步扫描逻辑，使其耗时比正常情况多数倍。如果许多新会话同时启动，问题尤为严重。", "title": "修复 pg_attribute 非常大会话启动缓慢的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "f291eb34a8053b272fe285d3cb88a3e84de3ed5e0d6a59c98714e1d708ded0e3", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix slow session startup when pg_attribute is very large (Tom Lane) If pg_attribute exceeds one-fourth of shared_buffers, cache rebuilding code that is sometimes needed during session start would trigger the synchronized-scan logic, causing it to take many times longer than normal. The problem was particularly acute if many new sessions were starting at once.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/011", "db_id": "3067d257f33b50d90891579b75bb82b1", "patch_ids": [], "statement_hash": "0a7f507b1407c40499c963726716788f68d57c16325ddd52739c2610a0f7af0b", "relations": [{"rule": 2, "type": "equivalent", "target": "8e30e72a2405bcb8cb42f78c56812986", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0a7f507b1407c40499c963726716788f68d57c16325ddd52739c2610a0f7af0b"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8e30e72a2405bcb8cb42f78c56812986", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 pg_attribute 非常大会话启动缓慢的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0a7f507b1407c40499c963726716788f68d57c16325ddd52739c2610a0f7af0b"}, "url": "/docs/compare/?release=9.0.8#9.0.8-0ee6a4c6ae8c98fb", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-dd3e7759287e444a", "cves": [], "html": "<p>确保顺序扫描以合理的频率检查查询取消（Merlin Moncure）</p>\n<p>遇到许多不含存活元组的连续页面的扫描在此期间不会响应中断。</p>", "text": "确保顺序扫描以合理的频率检查查询取消（Merlin Moncure） 遇到许多不含存活元组的连续页面的扫描在此期间不会响应中断。", "title": "确保顺序扫描以合理的频率检查查询取消", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "48f014989507f574f50e0319eea1787d248a8c0acb89c83bd8cb242202121d25", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure sequential scans check for query cancel reasonably often (Merlin Moncure) A scan encountering many consecutive pages that contain no live tuples would not respond to interrupts meanwhile.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/012", "db_id": "bd6436e92343187447f9bd25be2155e3", "patch_ids": [], "statement_hash": "32c4ebad7086dd8ff0fb67a82b5d81e2020c0da9c949bd90c1da163f46f80891", "relations": [{"rule": 2, "type": "equivalent", "target": "1adeba20bc22f27bf9f5441c733c00fe", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "32c4ebad7086dd8ff0fb67a82b5d81e2020c0da9c949bd90c1da163f46f80891"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "1adeba20bc22f27bf9f5441c733c00fe", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "确保顺序扫描以合理的频率检查查询取消", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "32c4ebad7086dd8ff0fb67a82b5d81e2020c0da9c949bd90c1da163f46f80891"}, "url": "/docs/compare/?release=9.0.8#9.0.8-dd3e7759287e444a", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-a6be6a0fdf406fc1", "cves": [], "html": "<p>确保 <code>PGSemaphoreLock()</code> 的 Windows 实现在返回前清除 <code>ImmediateInterruptOK</code>（Tom Lane）</p>\n<p>这一疏忽意味着同一查询稍后收到的查询取消中断可能在不安全的时刻被接受，后果不可预测且不好。</p>", "text": "确保 PGSemaphoreLock() 的 Windows 实现在返回前清除 ImmediateInterruptOK（Tom Lane） 这一疏忽意味着同一查询稍后收到的查询取消中断可能在不安全的时刻被接受，后果不可预测且不好。", "title": "确保 PGSemaphoreLock() 的 Windows 实现在返回前清除 ImmediateInterruptOK", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "0515df05c357e80f06528ed45102c74a7345c0c78656281ee72ab3a2948a8f1b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure the Windows implementation of PGSemaphoreLock() clears ImmediateInterruptOK before returning (Tom Lane) This oversight meant that a query-cancel interrupt received later in the same query could be accepted at an unsafe time, with unpredictable but not good consequences.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/013", "db_id": "db01691604fa124e6f972589c146118e", "patch_ids": [], "statement_hash": "475baa30bf05e7068b9227b884192b9296ffb209bb282f734ab8b4f1bad76d95", "relations": [{"rule": 2, "type": "equivalent", "target": "621e08ded86dac462543a1b66528aedf", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "475baa30bf05e7068b9227b884192b9296ffb209bb282f734ab8b4f1bad76d95"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "621e08ded86dac462543a1b66528aedf", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "确保 PGSemaphoreLock() 的 Windows 实现在返回前清除 ImmediateInterruptOK", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "475baa30bf05e7068b9227b884192b9296ffb209bb282f734ab8b4f1bad76d95"}, "url": "/docs/compare/?release=9.0.8#9.0.8-a6be6a0fdf406fc1", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-37785b7bff0bb5e4", "cves": [], "html": "<p>在打印视图或规则时安全地显示整行变量（Abbas Butt、Tom Lane）</p>\n<p>涉及有歧义名称（即该名称既可能是查询的表名也可能是列名）的极端情况此前以有歧义的方式打印，存在视图或规则在转储和重载后被不同解释的风险。现通过附加无操作转换来避免歧义情况。</p>", "text": "在打印视图或规则时安全地显示整行变量（Abbas Butt、Tom Lane） 涉及有歧义名称（即该名称既可能是查询的表名也可能是列名）的极端情况此前以有歧义的方式打印，存在视图或规则在转储和重载后被不同解释的风险。现通过附加无操作转换来避免歧义情况。", "title": "在打印视图或规则时安全地显示整行变量", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "3e74b472e7c0b99515ebc321a5a5838a351a6c867b3a9ba9b84464243793b519", "section_path": ["变更"], "commit_groups": [], "identity_text": "Show whole-row variables safely when printing views or rules (Abbas Butt, Tom Lane) Corner cases involving ambiguous names (that is, the name could be either a table or column name of the query) were printed in an ambiguous way, risking that the view or rule would be interpreted differently after dump and reload. Avoid the ambiguous case by attaching a no-op cast.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/014", "db_id": "4c8e9274b22ace290b1f223746068ee3", "patch_ids": [], "statement_hash": "b08bd7aedbfa17f2c0ae9439b638e1f95a9356d905183fa9049d8bf16d7b6dcb", "relations": [{"rule": 2, "type": "equivalent", "target": "046268baafb6eb208a178d325c4f509f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b08bd7aedbfa17f2c0ae9439b638e1f95a9356d905183fa9049d8bf16d7b6dcb"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "046268baafb6eb208a178d325c4f509f", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "在打印视图或规则时安全地显示整行变量", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b08bd7aedbfa17f2c0ae9439b638e1f95a9356d905183fa9049d8bf16d7b6dcb"}, "url": "/docs/compare/?release=9.0.8#9.0.8-37785b7bff0bb5e4", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-829dca33ef5c035f", "cves": [], "html": "<p>修复 <code>COPY FROM</code>，使其正确处理对应无效编码的空值标记串（Tom Lane）</p>\n<p>诸如 <code>E'\\\\0'</code> 这样的空值标记串本应有效，过去也确实有效，但该情况在 8.4 中被破坏。</p>", "text": "修复 COPY FROM，使其正确处理对应无效编码的空值标记串（Tom Lane） 诸如 E'\\\\0' 这样的空值标记串本应有效，过去也确实有效，但该情况在 8.4 中被破坏。", "title": "修复 COPY FROM，使其正确处理对应无效编码的空值标记串", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "cae92798a320025c41a60c0b6591a20eb89652cf2db5351718a0341c03f56614", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix COPY FROM to properly handle null marker strings that correspond to invalid encoding (Tom Lane) A null marker string such as E'\\\\0' should work, and did work in the past, but the case got broken in 8.4.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/015", "db_id": "b5da3801ab6a6f88ccbc5d535a02965a", "patch_ids": [], "statement_hash": "e95a56110050751e2be814ee1968520c2f1bdb1d487ab0ed47dfa2672f30fb83", "relations": [{"rule": 2, "type": "equivalent", "target": "2a4117a0b88da00252fd221e090f5545", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e95a56110050751e2be814ee1968520c2f1bdb1d487ab0ed47dfa2672f30fb83"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "2a4117a0b88da00252fd221e090f5545", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 COPY FROM，使其正确处理对应无效编码的空值标记串", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e95a56110050751e2be814ee1968520c2f1bdb1d487ab0ed47dfa2672f30fb83"}, "url": "/docs/compare/?release=9.0.8#9.0.8-829dca33ef5c035f", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-eebc34d43e2d3c54", "cves": [], "html": "<p>修复对包含 <code>RETURNING</code> 子句的可写 CTE 的 <code>EXPLAIN VERBOSE</code>（Tom Lane）</p>", "text": "修复对包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE（Tom Lane）", "title": "修复对包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "564c50f39c057642819a7912f781fdbc912050c0b224c7bfade74fbd6055230f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix EXPLAIN VERBOSE for writable CTEs containing RETURNING clauses (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/016", "db_id": "fc051691b52cddae39d4d8c157aaa728", "patch_ids": [], "statement_hash": "ddcf47296fbc3c1ed3a57ffe85c117e3bf9fd55ae31d8333dcc3dfdf14260a3c", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-59506ff453ecca36", "cves": [], "html": "<p>修复 <code>PREPARE TRANSACTION</code>，使其在存在咨询锁时正确工作（Tom Lane）</p>\n<p>历史上，<code>PREPARE TRANSACTION</code> 只是忽略会话持有的任何会话级咨询锁，但这一情况在 9.1 中被意外破坏。</p>", "text": "修复 PREPARE TRANSACTION，使其在存在咨询锁时正确工作（Tom Lane） 历史上，PREPARE TRANSACTION 只是忽略会话持有的任何会话级咨询锁，但这一情况在 9.1 中被意外破坏。", "title": "修复 PREPARE TRANSACTION，使其在存在咨询锁时正确工作", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "a5ad4561250e96eb25db4447e37e6847054a938ca67c64a15a1cb0ca98ced1d8", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PREPARE TRANSACTION to work correctly in the presence of advisory locks (Tom Lane) Historically, PREPARE TRANSACTION has simply ignored any session-level advisory locks the session holds, but this case was accidentally broken in 9.1.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/017", "db_id": "d2ac23659db22528c2334253d495cea4", "patch_ids": [], "statement_hash": "bbdd4c20d59d087b915ac9b4e5450dfa34448620f33ed397b657edcca0ff255f", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-f7dc975747bbbf31", "cves": [], "html": "<p>修复不记录日志的表的截断（Robert Haas）</p>", "text": "修复不记录日志的表的截断（Robert Haas）", "title": "修复不记录日志的表的截断", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "21d0fbcb273a5da09b73bc0639c36814bfa5f725f7570384a9975cb3626a27d7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix truncation of unlogged tables (Robert Haas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/018", "db_id": "17ed1c76e5151bd0bba763ca52c8ecd6", "patch_ids": [], "statement_hash": "ff4154f593a7b044f91bd2d9ef7e5da2c6f9df095e75854b966579f7dcf1e8b4", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-89c7aa886d836378", "cves": [], "html": "<p>在 <code>search_path</code> 的非交互式赋值期间忽略缺失的模式（Tom Lane）</p>\n<p>这使 9.1 的行为与较旧的分支重新一致。此前，9.1 会对来自 <code>ALTER DATABASE SET</code> 等处的 <code>search_path</code> 设置中提到的不存在模式抛出错误。</p>", "text": "在 search_path 的非交互式赋值期间忽略缺失的模式（Tom Lane） 这使 9.1 的行为与较旧的分支重新一致。此前，9.1 会对来自 ALTER DATABASE SET 等处的 search_path 设置中提到的不存在模式抛出错误。", "title": "在 search_path 的非交互式赋值期间忽略缺失的模式", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "91f1af1d48033ea678df9b48137aee24885eaefdedfa0a8d3f8ff19fc38248f3", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ignore missing schemas during non-interactive assignments of search_path (Tom Lane) This re-aligns 9.1's behavior with that of older branches. Previously 9.1 would throw an error for nonexistent schemas mentioned in search_path settings obtained from places such as ALTER DATABASE SET.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/019", "db_id": "4d9cf0df443d441a54b965139c833176", "patch_ids": [], "statement_hash": "04eff021561bcdc2ea899b1fafb87fa0efe3d77c8b9954985f5ff4050c390e23", "relations": [], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-e95db6d2a34e5488", "cves": [], "html": "<p>修复扩展脚本中所用临时表或瞬态表的缺陷（Tom Lane）</p>\n<p>这包括扩展更新脚本中的重写型 <code>ALTER TABLE</code> 等情况，因为它在后台使用了瞬态表。</p>", "text": "修复扩展脚本中所用临时表或瞬态表的缺陷（Tom Lane） 这包括扩展更新脚本中的重写型 ALTER TABLE 等情况，因为它在后台使用了瞬态表。", "title": "修复扩展脚本中所用临时表或瞬态表的缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b98858cb58a37497d41c9f612bec77ae2cc764d97e106cd534a45e7f0eded109", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix bugs with temporary or transient tables used in extension scripts (Tom Lane) This includes cases such as a rewriting ALTER TABLE within an extension update script, since that uses a transient table behind the scenes.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/020", "db_id": "444893c2ef670dcf05e3fcdb06c70a28", "patch_ids": [], "statement_hash": "20e47b8235c2f13608ca7205e54f43222c4f6e12ed1c8fea06e062a3f3ca0a94", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-ffb859808358d3e6", "cves": [], "html": "<p>确保自动清理工作进程正确执行栈深度检查（Heikki Linnakangas）</p>\n<p>此前，由自动 <code>ANALYZE</code> 调用的函数中的无限递归可能导致工作进程崩溃。</p>", "text": "确保自动清理工作进程正确执行栈深度检查（Heikki Linnakangas） 此前，由自动 ANALYZE 调用的函数中的无限递归可能导致工作进程崩溃。", "title": "确保自动清理工作进程正确执行栈深度检查", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b794dd5ddc8be160f08b469b5728c89827fbc41451390fb278c4a23161abce8e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure autovacuum worker processes perform stack depth checking properly (Heikki Linnakangas) Previously, infinite recursion in a function invoked by auto-ANALYZE could crash worker processes.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/021", "db_id": "5163f9da5a826eaa7bbcf89a43982fec", "patch_ids": [], "statement_hash": "0f52396aa707d6b843a52a7c887bbdde0c730d2fec6c70552b6a7c795241c07e", "relations": [{"rule": 2, "type": "equivalent", "target": "36167ec72ac13f36f65ffe51dfc10ef8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0f52396aa707d6b843a52a7c887bbdde0c730d2fec6c70552b6a7c795241c07e"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "36167ec72ac13f36f65ffe51dfc10ef8", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "确保自动清理工作进程正确执行栈深度检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0f52396aa707d6b843a52a7c887bbdde0c730d2fec6c70552b6a7c795241c07e"}, "url": "/docs/compare/?release=9.0.8#9.0.8-ffb859808358d3e6", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-6bfe9c34cb456dbf", "cves": [], "html": "<p>修复日志收集器，使其在高负载下不丢失日志连贯性（Andrew Dunstan）</p>\n<p>此前，如果收集器过于忙碌，可能无法重新组装大消息。</p>", "text": "修复日志收集器，使其在高负载下不丢失日志连贯性（Andrew Dunstan） 此前，如果收集器过于忙碌，可能无法重新组装大消息。", "title": "修复日志收集器，使其在高负载下不丢失日志连贯性", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "92a514017fd659be3e62a4e84ff9ac785df62dba2904561c23526e0231724645", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix logging collector to not lose log coherency under high load (Andrew Dunstan) The collector previously could fail to reassemble large messages if it got too busy.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/022", "db_id": "b153bdac2cdae4cf4c2db4419094a37c", "patch_ids": [], "statement_hash": "a8f1eaf60d9cbec4f01617787fed23b1a7342ea79b3c4a281c02d49023cafb0e", "relations": [{"rule": 2, "type": "equivalent", "target": "7bf5d3e7f3ea95a754f5c5a79f806a3b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a8f1eaf60d9cbec4f01617787fed23b1a7342ea79b3c4a281c02d49023cafb0e"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7bf5d3e7f3ea95a754f5c5a79f806a3b", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复日志收集器，使其在高负载下不丢失日志连贯性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a8f1eaf60d9cbec4f01617787fed23b1a7342ea79b3c4a281c02d49023cafb0e"}, "url": "/docs/compare/?release=9.0.8#9.0.8-6bfe9c34cb456dbf", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-b91475414d755f42", "cves": [], "html": "<p>修复日志收集器，确保它在收到 <span>SIGHUP</span> 后会重新开始文件轮转（Tom Lane）</p>", "text": "修复日志收集器，确保它在收到 SIGHUP 后会重新开始文件轮转（Tom Lane）", "title": "修复日志收集器，确保它在收到 SIGHUP 后会重新开始文件轮转", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "ab1071859ba97152c11f5b6a38b747a6de1aab06302f74487e414a0272650715", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix logging collector to ensure it will restart file rotation after receiving SIGHUP (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/023", "db_id": "874b3ea93908f9ba5c8325180087db06", "patch_ids": [], "statement_hash": "6fac7f36ad3dde95d58b318c8f49bfa7bae648666592c387f0e27dca94ab7c6b", "relations": [{"rule": 2, "type": "equivalent", "target": "848cae60cce40e40e5f5d0f271a779af", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6fac7f36ad3dde95d58b318c8f49bfa7bae648666592c387f0e27dca94ab7c6b"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "848cae60cce40e40e5f5d0f271a779af", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复日志收集器，确保它在收到 SIGHUP 后会重新开始文件轮转", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6fac7f36ad3dde95d58b318c8f49bfa7bae648666592c387f0e27dca94ab7c6b"}, "url": "/docs/compare/?release=9.0.8#9.0.8-b91475414d755f42", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-38379464bf655f0c", "cves": [], "html": "<p>修复 GiST 索引中的 <span>“<span>too many LWLocks taken</span>”</span> 失败（Heikki Linnakangas）</p>", "text": "修复 GiST 索引中的 “too many LWLocks taken” 失败（Heikki Linnakangas）", "title": "修复 GiST 索引中的 “too many LWLocks taken” 失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "bce2dbabcd752202cdc66dac45e711d262cee9b0f10df206978f9e1da90de45c", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix too many LWLocks taken failure in GiST indexes (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/024", "db_id": "bfca532ae65e5fb44e4753e3c87e22a3", "patch_ids": [], "statement_hash": "b5924c66708ab079e3ce312baafe6c1ba257ab8925a5e3034564186db552b699", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-079134671ec2bd62", "cves": [], "html": "<p>修复 GIN 索引的 WAL 重放逻辑，使其在索引随后被删除时不失败（Tom Lane）</p>", "text": "修复 GIN 索引的 WAL 重放逻辑，使其在索引随后被删除时不失败（Tom Lane）", "title": "修复 GIN 索引的 WAL 重放逻辑，使其在索引随后被删除时不失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "9c968194c67f0d8782fce65804003937935d85c5c96170c7279f172e067c889e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix WAL replay logic for GIN indexes to not fail if the index was subsequently dropped (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/025", "db_id": "78130b6a8a0ac77de9d35f9a208a5366", "patch_ids": [], "statement_hash": "3c20319e0fbcbc1ecbf8cc8cc2c9c0d70f21c12ade0d88c48cc5722447792d84", "relations": [{"rule": 2, "type": "equivalent", "target": "f31f64f9c579661cdacb2fbfa7f24af1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c20319e0fbcbc1ecbf8cc8cc2c9c0d70f21c12ade0d88c48cc5722447792d84"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f31f64f9c579661cdacb2fbfa7f24af1", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 GIN 索引的 WAL 重放逻辑，使其在索引随后被删除时不失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c20319e0fbcbc1ecbf8cc8cc2c9c0d70f21c12ade0d88c48cc5722447792d84"}, "url": "/docs/compare/?release=9.0.8#9.0.8-079134671ec2bd62", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-35fdc027f9632b42", "cves": [], "html": "<p>在崩溃后正确检测预备事务的 SSI 冲突（Dan Ports）</p>", "text": "在崩溃后正确检测预备事务的 SSI 冲突（Dan Ports）", "title": "在崩溃后正确检测预备事务的 SSI 冲突", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "9d9db73d779ea54ad581e6a62888062cb3c74a571b20b639523775e2e70a4e70", "section_path": ["变更"], "commit_groups": [], "identity_text": "Correctly detect SSI conflicts of prepared transactions after a crash (Dan Ports)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/026", "db_id": "0204f739ff3a41e1aaf90f0876cc7490", "patch_ids": [], "statement_hash": "3b2c31053ef2d6e0f3ba5d8ecbcae1f20218069ce273fb7dc7ac589f85a5e4f3", "relations": [], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-848c9b7134e34a33", "cves": [], "html": "<p>提交只修改了临时表的事务时避免同步复制延迟（Heikki Linnakangas）</p>\n<p>在这种情况下，事务的提交记录不需要刷到备库服务器，但部分代码不知道这一点，仍然等待它发生。</p>", "text": "提交只修改了临时表的事务时避免同步复制延迟（Heikki Linnakangas） 在这种情况下，事务的提交记录不需要刷到备库服务器，但部分代码不知道这一点，仍然等待它发生。", "title": "提交只修改了临时表的事务时避免同步复制延迟", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "04540e5b970745fed2f4a52e2dc7d76548ef3780ed75e6aa5f7a1312727d7fc0", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid synchronous replication delay when committing a transaction that only modified temporary tables (Heikki Linnakangas) In such a case the transaction's commit record need not be flushed to standby servers, but some of the code didn't know that and waited for it to happen anyway.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/027", "db_id": "0f900e1a68944cf03b5da0315e43da18", "patch_ids": [], "statement_hash": "ec796da42ceedb016930d033b7f92b520f8aa49e4a3c793ce0276c81a3006c38", "relations": [], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-2ca90d9c546b0e2e", "cves": [], "html": "<p>修复 <span>pg_basebackup</span> 中的错误处理（Thomas Ogrisegg、Fujii Masao）</p>", "text": "修复 pg_basebackup 中的错误处理（Thomas Ogrisegg、Fujii Masao）", "title": "修复 pg_basebackup 中的错误处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "64bb746e9d6d5a7485c790cda4bd8e58484bf9d1af415f9ff505bc37a01912de", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix error handling in pg_basebackup (Thomas Ogrisegg, Fujii Masao)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/028", "db_id": "f5210d623185d388d4aee4c64c05d5c0", "patch_ids": [], "statement_hash": "69b9cb9e94069d0d8223d5597e58bdc44b4016b0eaf057be999fd2c3fa014ad0", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-e6e10a3345075133", "cves": [], "html": "<p>修复 <span>walsender</span>，使其在连接终止时不进入忙循环（Fujii Masao）</p>", "text": "修复 walsender，使其在连接终止时不进入忙循环（Fujii Masao）", "title": "修复 walsender，使其在连接终止时不进入忙循环", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "dff005265ce8dc8ed714c48f8f616e291ca76588a1194d2ed0fd2d8883f71961", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix walsender to not go into a busy loop if connection is terminated (Fujii Masao)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/029", "db_id": "5653f675daab797d5b93ec8ad9a3eaac", "patch_ids": [], "statement_hash": "34cb84ea65145e471c71da8a1cadcf48334f91e9aa9c1c23934b12ce41c4a2ca", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-20ade416d0c79ad8", "cves": [], "html": "<p>修复 PL/pgSQL 的 <code>RETURN NEXT</code> 命令中的内存泄漏（Joe Conway）</p>", "text": "修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏（Joe Conway）", "title": "修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "d6994eee9cd96838028f24df93e4f13f0c4a1e76dc3d347dee298abb934442e1", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe Conway)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/030", "db_id": "ae5ee9f16eeeec833b76b57a9a9ce715", "patch_ids": [], "statement_hash": "ff4f48f8b2ccc6064b6ea5b63e49627a4fff4828e77ab95c5cb88d7917cd3e05", "relations": [{"rule": 2, "type": "equivalent", "target": "540f10a54d1bf2813fecd40209bc5457", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff4f48f8b2ccc6064b6ea5b63e49627a4fff4828e77ab95c5cb88d7917cd3e05"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "540f10a54d1bf2813fecd40209bc5457", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff4f48f8b2ccc6064b6ea5b63e49627a4fff4828e77ab95c5cb88d7917cd3e05"}, "url": "/docs/compare/?release=9.0.8#9.0.8-20ade416d0c79ad8", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-9ecdbc49ec73f15c", "cves": [], "html": "<p>修复 PL/pgSQL 的 <code>GET DIAGNOSTICS</code> 命令在目标是函数第一个变量时的问题（Tom Lane）</p>", "text": "修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题（Tom Lane）", "title": "修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "c45f1bfd877d53a249b8e330a739f5cf5ac77d73651702b41c94463e1223fd18", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/pgSQL's GET DIAGNOSTICS command when the target is the function's first variable (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/031", "db_id": "87472d649a176ede91baaebedd0b831d", "patch_ids": [], "statement_hash": "ac74968daa2b65e50dc6e0d049d58e3be94549e24bc4bf9939ab692a8b4b4222", "relations": [{"rule": 2, "type": "equivalent", "target": "7f0bc33006563175bc5414d7816dcf96", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ac74968daa2b65e50dc6e0d049d58e3be94549e24bc4bf9939ab692a8b4b4222"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f0bc33006563175bc5414d7816dcf96", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ac74968daa2b65e50dc6e0d049d58e3be94549e24bc4bf9939ab692a8b4b4222"}, "url": "/docs/compare/?release=9.0.8#9.0.8-9ecdbc49ec73f15c", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-93fcff647673bd15", "cves": [], "html": "<p>确保 PL/Perl 为 <code>_TD</code> 变量加上包限定（Alex Hunsaker）</p>\n<p>该缺陷导致触发器调用在嵌套于更改当前包的函数调用中时失败。</p>", "text": "确保 PL/Perl 为 _TD 变量加上包限定（Alex Hunsaker） 该缺陷导致触发器调用在嵌套于更改当前包的函数调用中时失败。", "title": "确保 PL/Perl 为 _TD 变量加上包限定", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "d443707d1971df9f1b49d09fe0ac7829dbcf270fbb13d2d687d72e49f828958f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure that PL/Perl package-qualifies the _TD variable (Alex Hunsaker) This bug caused trigger invocations to fail when they are nested within a function invocation that changes the current package.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/032", "db_id": "e39cefe06dc82100b98cca42c83390be", "patch_ids": [], "statement_hash": "e1346acfbe992fb05cc60071d12466af05b5cbf97e1f40bfe95a2339ed411d12", "relations": [], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-6f81967ec6b8e64d", "cves": [], "html": "<p>修复返回组合类型的 PL/Python 函数，使其接受字符串作为结果值（Jan Urbanski）</p>\n<p>这一情况被 9.1 中允许以其他格式（如字典）提供组合结果值的新增内容意外破坏。</p>", "text": "修复返回组合类型的 PL/Python 函数，使其接受字符串作为结果值（Jan Urbanski） 这一情况被 9.1 中允许以其他格式（如字典）提供组合结果值的新增内容意外破坏。", "title": "修复返回组合类型的 PL/Python 函数，使其接受字符串作为结果值", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b4e1682ff6ae2eda1408f4021bc843edee21f02917eedc4fca0a1b16b620e2cd", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/Python functions returning composite types to accept a string for their result value (Jan Urbanski) This case was accidentally broken by the 9.1 additions to allow a composite result value to be supplied in other formats, such as dictionaries.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/033", "db_id": "401ad4687a0cbc46db7b34f1555502c3", "patch_ids": [], "statement_hash": "dc4e78883e4e56221d3f737b816745e518e023b7d501b419b7cd9a92f5f71aa8", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-ee0a7018cabc2610", "cves": [], "html": "<p>修复 <span>psql</span> 扩展显示（<code>\\x</code>）模式中可能越过内存末尾的访问（Peter Eisentraut）</p>", "text": "修复 psql 扩展显示（\\x）模式中可能越过内存末尾的访问（Peter Eisentraut）", "title": "修复 psql 扩展显示（\\x）模式中可能越过内存末尾的访问", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "589cf070918bbc41aa76c74fc9ab68b3c5b10e1f95bba059b7ebf1eae17d599f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix potential access off the end of memory in psql's expanded display (\\x) mode (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/034", "db_id": "03d3ce536e76a31bdcc0cc050132798f", "patch_ids": [], "statement_hash": "cd3f8f30a929dcb62c007262f8144eb4ff9da0bb6418fc7c9f05188a025e2d00", "relations": [{"rule": 2, "type": "equivalent", "target": "73ebf284c9b01ca4b21dd84fb622e363", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cd3f8f30a929dcb62c007262f8144eb4ff9da0bb6418fc7c9f05188a025e2d00"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "73ebf284c9b01ca4b21dd84fb622e363", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 psql 扩展显示（\\x）模式中可能越过内存末尾的访问", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cd3f8f30a929dcb62c007262f8144eb4ff9da0bb6418fc7c9f05188a025e2d00"}, "url": "/docs/compare/?release=9.0.8#9.0.8-ee0a7018cabc2610", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-f207e94deeeb708f", "cves": [], "html": "<p>修复数据库包含大量对象时 <span>pg_dump</span> 的若干性能问题（Jeff Janes、Tom Lane）</p>\n<p>如果数据库包含许多模式、许多对象处于依赖循环中、或有许多被拥有的序列，<span>pg_dump</span> 可能变得非常慢。</p>", "text": "修复数据库包含大量对象时 pg_dump 的若干性能问题（Jeff Janes、Tom Lane） 如果数据库包含许多模式、许多对象处于依赖循环中、或有许多被拥有的序列，pg_dump 可能变得非常慢。", "title": "修复数据库包含大量对象时 pg_dump 的若干性能问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "0b7b863e6ad07da1a0c1b29b0e6399b9cbafefcbfb400ad6e854033bf55f1521", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix several performance problems in pg_dump when the database contains many objects (Jeff Janes, Tom Lane) pg_dump could get very slow if the database contained many schemas, or if many objects are in dependency loops, or if there are many owned sequences.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/035", "db_id": "e3be79fdcc3d8276f9c34911da1b31e1", "patch_ids": [], "statement_hash": "ba9de3cb96597ea955a9878da3161da87dfdaf13e916d135578cb969c0f0a402", "relations": [{"rule": 2, "type": "equivalent", "target": "5b97b955dcbbdace43be1ac7e00eca55", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba9de3cb96597ea955a9878da3161da87dfdaf13e916d135578cb969c0f0a402"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "5b97b955dcbbdace43be1ac7e00eca55", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复数据库包含大量对象时 pg_dump 的若干性能问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba9de3cb96597ea955a9878da3161da87dfdaf13e916d135578cb969c0f0a402"}, "url": "/docs/compare/?release=9.0.8#9.0.8-f207e94deeeb708f", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-1af4d3d3ef6c2ae2", "cves": [], "html": "<p>修复 <span>pg_restore</span> 读取目录格式归档时的内存和文件描述符泄漏（Peter Eisentraut）</p>", "text": "修复 pg_restore 读取目录格式归档时的内存和文件描述符泄漏（Peter Eisentraut）", "title": "修复 pg_restore 读取目录格式归档时的内存和文件描述符泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "3ca3b182ffd49bd4cdb2a4b5b9f88023e50cf8f053a76e3c554045e8eb7ffa72", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix memory and file descriptor leaks in pg_restore when reading a directory-format archive (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/036", "db_id": "3ae5179e03566c2502475f33fd78f19a", "patch_ids": [], "statement_hash": "9061ae73e6da88f904b1e39682172de0eb049d04e541bc251a6b0aac632d64da", "relations": [], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.1.4-891206aa6a7bb4b6", "cves": [], "html": "<p>修复 <span>pg_upgrade</span> 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况（Bruce Momjian）</p>", "text": "修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况（Bruce Momjian）", "title": "修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "3a5130d2f40e09ab624cebd62dfdebfddab087f3853ddfbded5155986a620e56", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix pg_upgrade for the case that a database stored in a non-default tablespace contains a table in the cluster's default tablespace (Bruce Momjian)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/037", "db_id": "c7ed7794cd7dd70f465e312ef9cf1d26", "patch_ids": [], "statement_hash": "8aad3c1d6704206ddf8218a7c0e100bc2566e7363ba0fcc9658c1870879f552d", "relations": [{"rule": 2, "type": "equivalent", "target": "01705f9cce568b7bae7577ad54fe41ee", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8aad3c1d6704206ddf8218a7c0e100bc2566e7363ba0fcc9658c1870879f552d"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "01705f9cce568b7bae7577ad54fe41ee", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8aad3c1d6704206ddf8218a7c0e100bc2566e7363ba0fcc9658c1870879f552d"}, "url": "/docs/compare/?release=9.0.8#9.0.8-891206aa6a7bb4b6", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-f27d2854a7c714d2", "cves": [], "html": "<p>在 <span>ecpg</span> 中，修复罕见的内存泄漏以及 <code>sqlca_t</code> 结构之后一个字节可能被覆写的问题（Peter Eisentraut）</p>", "text": "在 ecpg 中，修复罕见的内存泄漏以及 sqlca_t 结构之后一个字节可能被覆写的问题（Peter Eisentraut）", "title": "在 ecpg 中，修复罕见的内存泄漏以及 sqlca_t 结构之后一个字节可能被覆写的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "6c439c4f1d44043b85741512b28bdd168696c05a022adc48627638aef88e23ff", "section_path": ["变更"], "commit_groups": [], "identity_text": "In ecpg, fix rare memory leaks and possible overwrite of one byte after the sqlca_t structure (Peter Eisentraut)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/038", "db_id": "0e0311bb9e47ab1a5317107abd83681e", "patch_ids": [], "statement_hash": "cd0d7d48c81eb93b5adce5ca4e2079fcd7d857236d49b52474fb34287e7501f0", "relations": [{"rule": 2, "type": "equivalent", "target": "968b61bf5aa38dbfd77252a6036bdf7e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cd0d7d48c81eb93b5adce5ca4e2079fcd7d857236d49b52474fb34287e7501f0"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "968b61bf5aa38dbfd77252a6036bdf7e", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "在 ecpg 中，修复罕见的内存泄漏以及 sqlca_t 结构之后一个字节可能被覆写的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cd0d7d48c81eb93b5adce5ca4e2079fcd7d857236d49b52474fb34287e7501f0"}, "url": "/docs/compare/?release=9.0.8#9.0.8-f27d2854a7c714d2", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-9c9c5bf3e2935558", "cves": [], "html": "<p>修复 <code>contrib/dblink</code> 的 <code>dblink_exec()</code>，使其在出错时不泄漏临时数据库连接（Tom Lane）</p>", "text": "修复 contrib/dblink 的 dblink_exec()，使其在出错时不泄漏临时数据库连接（Tom Lane）", "title": "修复 contrib/dblink 的 dblink_exec()，使其在出错时不泄漏临时数据库连接", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "a470ae866f4e01750447f1fdf06ef55889b7db57a610b08252029e543c795568", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix contrib/dblink's dblink_exec() to not leak temporary database connections upon error (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/039", "db_id": "4a40399bde68729941fab650eecad469", "patch_ids": [], "statement_hash": "162444061d4bb632cb068bb4a6f0205104aeb64fea3c3c2a7ac8203c344b958e", "relations": [{"rule": 2, "type": "equivalent", "target": "0a4347750fa1fc8bdc0b002851db44ff", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "162444061d4bb632cb068bb4a6f0205104aeb64fea3c3c2a7ac8203c344b958e"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0a4347750fa1fc8bdc0b002851db44ff", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 contrib/dblink 的 dblink_exec()，使其在出错时不泄漏临时数据库连接", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "162444061d4bb632cb068bb4a6f0205104aeb64fea3c3c2a7ac8203c344b958e"}, "url": "/docs/compare/?release=9.0.8#9.0.8-9c9c5bf3e2935558", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-935f6fc4e1a844d9", "cves": [], "html": "<p>修复 <code>contrib/dblink</code>，使其在错误消息中报告正确的连接名（Kyotaro Horiguchi）</p>", "text": "修复 contrib/dblink，使其在错误消息中报告正确的连接名（Kyotaro Horiguchi）", "title": "修复 contrib/dblink，使其在错误消息中报告正确的连接名", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b9663f734e81c9170f9ba6ef52e2d1004f33b98d2a59f9df1f6e205f5ab8b572", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix contrib/dblink to report the correct connection name in error messages (Kyotaro Horiguchi)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/040", "db_id": "8f6f7773f98b1d3398f9747ac43e8ead", "patch_ids": [], "statement_hash": "73885a3938aa56d22a54a4a7b9f4738ae3ca9e973105cdf6dddb2d188782ee30", "relations": [{"rule": 2, "type": "equivalent", "target": "debb644b8744c4750b6f6786febb0987", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "73885a3938aa56d22a54a4a7b9f4738ae3ca9e973105cdf6dddb2d188782ee30"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "debb644b8744c4750b6f6786febb0987", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 contrib/dblink，使其在错误消息中报告正确的连接名", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "73885a3938aa56d22a54a4a7b9f4738ae3ca9e973105cdf6dddb2d188782ee30"}, "url": "/docs/compare/?release=9.0.8#9.0.8-935f6fc4e1a844d9", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-89556c862fe759a7", "cves": [], "html": "<p>修复 <code>contrib/vacuumlo</code>，使其在删除许多大对象时使用多个事务（Tim Lewis、Robert Haas、Tom Lane）</p>\n<p>此变更避免了需要删除许多对象时超出 <code>max_locks_per_transaction</code>。该行为可以通过新的 <code>-l</code>（limit）选项调整。</p>", "text": "修复 contrib/vacuumlo，使其在删除许多大对象时使用多个事务（Tim Lewis、Robert Haas、Tom Lane） 此变更避免了需要删除许多对象时超出 max_locks_per_transaction。该行为可以通过新的 -l（limit）选项调整。", "title": "修复 contrib/vacuumlo，使其在删除许多大对象时使用多个事务", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "b4a2df1eb0447802de26c326832d9843c2242374b13f375b386e450227910397", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix contrib/vacuumlo to use multiple transactions when dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) This change avoids exceeding max_locks_per_transaction when many objects need to be dropped. The behavior can be adjusted with the new -l (limit) option.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/041", "db_id": "041593791e94dea325e10e027f7ff0c2", "patch_ids": [], "statement_hash": "fa38809048291f61b64535c94125b01f22bbe03881cae84b7aa8f3448aa98433", "relations": [{"rule": 2, "type": "equivalent", "target": "9e65fef5790e9fb2e40776c0dce94ba1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fa38809048291f61b64535c94125b01f22bbe03881cae84b7aa8f3448aa98433"}}], "version": "9.1.4", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "9e65fef5790e9fb2e40776c0dce94ba1", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "修复 contrib/vacuumlo，使其在删除许多大对象时使用多个事务", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fa38809048291f61b64535c94125b01f22bbe03881cae84b7aa8f3448aa98433"}, "url": "/docs/compare/?release=9.0.8#9.0.8-89556c862fe759a7", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}, {"id": "9.1.4-7dd8898a26f7107e", "cves": [], "html": "<p>把时区数据文件更新为 <span>tzdata</span> 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。</p>", "text": "把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。", "title": "把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.1.4/#id-1.11.6.25.5", "source_hash": "dc0176a41c662846b8edd357cf239310d2889274a66ba9ecc80334be96fa97b7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Update time zone data files to tzdata release 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.1.4/changes/042", "db_id": "0a49d71104e76727e9d5ecdcfc06035e", "patch_ids": [], "statement_hash": "3f17c38061acf5621020544a0ed298975c38f8f64df80267f36868e3cdcb8114", "relations": [{"rule": 2, "type": "equivalent", "target": "545903ff595e4f4546424f7f487341da", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f17c38061acf5621020544a0ed298975c38f8f64df80267f36868e3cdcb8114"}}], "version": "9.1.4", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "545903ff595e4f4546424f7f487341da", "kind": "equivalent", "version": "9.0.8", "label": "9.0.8", "title": "把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f17c38061acf5621020544a0ed298975c38f8f64df80267f36868e3cdcb8114"}, "url": "/docs/compare/?release=9.0.8#9.0.8-7dd8898a26f7107e", "source_url": "/docs/release/9.0.8/#id-1.11.6.20.5"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 42}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 30}, {"key": "security", "label": "安全相关", "count": 2}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 10}], "total": 42, "release_count": 1, "cross_major": false, "cve_count": 2, "cves": [{"id": "CVE-2012-2655", "url": "https://www.postgresql.org/support/security/CVE-2012-2655/", "fixed": {"8.3": "8.3.19", "8.4": "8.4.12", "9.0": "9.0.8", "9.1": "9.1.4"}, "score": null, "title": "忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性", "vector": "", "affected": {"8.3": "8.3", "8.4": "8.4", "9.0": "9.0", "9.1": "9.1"}, "component": "", "published": {}, "introduced": {}, "cvss_version": "", "description_en": "", "first_published": null, "fixed_version": "9.1.4"}, {"id": "CVE-2012-2143", "url": "https://www.postgresql.org/support/security/CVE-2012-2143/", "fixed": {"8.3": "8.3.19", "8.4": "8.4.12", "9.0": "9.0.8", "9.1": "9.1.4"}, "score": null, "title": "修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换", "vector": "", "affected": {"8.3": "8.3", "8.4": "8.4", "9.0": "9.0", "9.1": "9.1"}, "component": "", "published": {}, "introduced": {}, "cvss_version": "", "description_en": "", "first_published": null, "fixed_version": "9.1.4"}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 42, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}