{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2022-02-10", "build": "14.2", "major": "14", "minor": 2, "manual": "14", "status": "stable", "doc_git": "", "version": "14.2", "eol_date": "2026-11-12", "date_text": "2022-02-10", "supported": true, "manual_url": "/docs/14/release-14-2.html", "source_url": "/docs/release/14.2/", "entry_count": 57, "placeholder": false, "content_hash": "3b6fb6bdfef233eb3964ceec2d6bfd462ba7bf7c54911dcad503deec8d0b5c96", "manual_build": "14.24", "source_as_of": "", "changes_count": 57, "doc_loaded_at": "2026-09-26T02:56:39.341991", "migration_html": "<p>对于运行 14.X 的用户，不需要执行导出/恢复。</p>\n<p>但是，已发现了一些可能导致索引损坏的错误，如前两个变更日志条目所述。如果存在上述任一情况，建议在更新后重建可能受影响的索引。</p>\n<p>此外，如果是从早于 14.1 的版本升级，请参见<a href=\"/docs/14/release-14-1.html\" title=\"E.24. 发布版本 14.1\">第 E.24 节</a>。</p>", "compatibility_count": 0, "label": "14.2", "status_label": "受支持版本", "eol": "2026-11-12", "age_days": 1693, "support_days": 43}, "groups": [{"date": "2022-02-10", "build": "14.2", "major": "14", "minor": 2, "manual": "14", "status": "stable", "doc_git": "", "version": "14.2", "eol_date": "2026-11-12", "date_text": "2022-02-10", "supported": true, "manual_url": "/docs/14/release-14-2.html", "source_url": "/docs/release/14.2/", "entry_count": 57, "placeholder": false, "content_hash": "3b6fb6bdfef233eb3964ceec2d6bfd462ba7bf7c54911dcad503deec8d0b5c96", "manual_build": "14.24", "source_as_of": "", "changes_count": 57, "doc_loaded_at": "2026-09-26T02:56:39.341991", "migration_html": "<p>对于运行 14.X 的用户，不需要执行导出/恢复。</p>\n<p>但是，已发现了一些可能导致索引损坏的错误，如前两个变更日志条目所述。如果存在上述任一情况，建议在更新后重建可能受影响的索引。</p>\n<p>此外，如果是从早于 14.1 的版本升级，请参见<a href=\"/docs/14/release-14-1.html\" title=\"E.24. 发布版本 14.1\">第 E.24 节</a>。</p>", "compatibility_count": 0, "label": "14.2", "status_label": "受支持版本", "eol": "2026-11-12", "age_days": 1693, "support_days": 43, "entries": [{"id": "14.2-223ee757c2216ddc", "cves": [], "html": "<p>对 TOAST 表更新强制使用标准锁定协议，以防止 <code>REINDEX CONCURRENTLY</code> 出现问题（Michael Paquier）<a href=\"https://postgr.es/c/64ab21f0e\">§</a></p>\n<p>如果对 TOAST 表或 TOAST 表的索引应用 <code>REINDEX CONCURRENTLY</code>，往往会产生损坏的索引。这是因为更新 TOAST 条目的会话立即释放了其 <code>ROW EXCLUSIVE</code> 锁，而不是像其他所有更新那样持有到事务提交。修复方法是使 TOAST 更新按照正常规则持有表锁。任何已损坏的索引都可以通过重建索引来修复。</p>", "text": "对 TOAST 表更新强制使用标准锁定协议，以防止 REINDEX CONCURRENTLY 出现问题（Michael Paquier）§ 如果对 TOAST 表或 TOAST 表的索引应用 REINDEX CONCURRENTLY，往往会产生损坏的索引。这是因为更新 TOAST 条目的会话立即释放了其 ROW EXCLUSIVE 锁，而不是像其他所有更新那样持有到事务提交。修复方法是使 TOAST 更新按照正常规则持有表锁。任何已损坏的索引都可以通过重建索引来修复。", "title": "对 TOAST 表更新强制使用标准锁定协议，以防止 REINDEX CONCURRENTLY 出现问题", "commits": ["64ab21f0e"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "d40bd3685074402765a68bdb3a9f2bfaa405e68d99921b12ea12e540c60eee39", "section_path": ["变更"], "commit_groups": [["5ed74d874", "64ab21f0e", "9acea52ea", "f99870dd8"]], "identity_text": "Enforce standard locking protocol for TOAST table updates, to prevent problems with REINDEX CONCURRENTLY (Michael Paquier) If applied to a TOAST table or TOAST table's index, REINDEX CONCURRENTLY tended to produce a corrupted index. This happened because sessions updating TOAST entries released their ROW EXCLUSIVE locks immediately, rather than holding them until transaction commit as all other updates do. The fix is to make TOAST updates hold the table lock according to the normal rule. Any existing corrupted indexes can be repaired by reindexing again.", "commit_aliases": ["5ed74d874", "64ab21f0e", "9acea52ea", "f99870dd8"], "source_commits": ["64ab21f0e"], "source_entry_id": "14.2/changes/001", "db_id": "a2cf1944e29d87d757200e43ba43520d", "patch_ids": ["975d5b1b3d223d485c53807d40bb1cfc"], "statement_hash": "1297528f4c76d19c5707ad78806ba77f793bf61108569939bb6e9cf07c14512a", "relations": [{"rule": 2, "type": "equivalent", "target": "1b9e90a52ace2d1ca22ee66de14c842e", "evidence": {"same_day": true, "patch_ids": ["975d5b1b3d223d485c53807d40bb1cfc"], "statement_hash": "1297528f4c76d19c5707ad78806ba77f793bf61108569939bb6e9cf07c14512a"}}, {"rule": 2, "type": "equivalent", "target": "6877da8b3bf78a126d7c3deb77091078", "evidence": {"same_day": true, "patch_ids": ["975d5b1b3d223d485c53807d40bb1cfc"], "statement_hash": "1297528f4c76d19c5707ad78806ba77f793bf61108569939bb6e9cf07c14512a"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "6877da8b3bf78a126d7c3deb77091078", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "对 TOAST 表更新强制使用标准锁定协议，以防止 REINDEX CONCURRENTLY 出现问题", "evidence": {"same_day": true, "patch_ids": ["975d5b1b3d223d485c53807d40bb1cfc"], "statement_hash": "1297528f4c76d19c5707ad78806ba77f793bf61108569939bb6e9cf07c14512a"}, "url": "/docs/compare/?release=13.6#13.6-e182c2620eb2e9c0", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "1b9e90a52ace2d1ca22ee66de14c842e", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "对 TOAST 表更新强制使用标准锁定协议，以防止 REINDEX CONCURRENTLY 出现问题", "evidence": {"same_day": true, "patch_ids": ["975d5b1b3d223d485c53807d40bb1cfc"], "statement_hash": "1297528f4c76d19c5707ad78806ba77f793bf61108569939bb6e9cf07c14512a"}, "url": "/docs/compare/?release=12.10#12.10-c9ebdfc0dc626009", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}]}, {"id": "14.2-75da4a127076a51e", "cves": [], "html": "<p>修复在页内剪枝期间 RECENTLY_DEAD 元组变为完全 DEAD 状态时 HOT 链的损坏（Andres Freund）<a href=\"https://postgr.es/c/dad1539ae\">§</a></p>\n<p><code>VACUUM</code> 有可能在留下指向它的重定向项的同时移除了最近死亡的元组。当该元组的项槽位后来被某个新元组重用时，该新元组会被视为已有 HOT 链的一部分，造成一种索引损坏。如果发生了这种情况，重建表的索引应该可以修复损坏。但是，这是一种发生概率极低的场景，因此我们不建议仅凭可能发生就进行重新索引。</p>", "text": "修复在页内剪枝期间 RECENTLY_DEAD 元组变为完全 DEAD 状态时 HOT 链的损坏（Andres Freund）§ VACUUM 有可能在留下指向它的重定向项的同时移除了最近死亡的元组。当该元组的项槽位后来被某个新元组重用时，该新元组会被视为已有 HOT 链的一部分，造成一种索引损坏。如果发生了这种情况，重建表的索引应该可以修复损坏。但是，这是一种发生概率极低的场景，因此我们不建议仅凭可能发生就进行重新索引。", "title": "修复在页内剪枝期间 RECENTLY_DEAD 元组变为完全 DEAD 状态时 HOT 链的损坏", "commits": ["dad1539ae"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "760bbfff5b519f8d0bb5404eed7a3a66153a887c20ce5980b4130e53e18adf0b", "section_path": ["变更"], "commit_groups": [["18b87b201", "dad1539ae"]], "identity_text": "Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes state to fully DEAD during page pruning (Andres Freund) It was possible for VACUUM to remove a recently-dead tuple while leaving behind a redirect item that pointed to it. When the tuple's item slot is later re-used by some new tuple, that tuple would be seen as part of the pre-existing HOT chain, creating a form of index corruption. If this has happened, reindexing the table should repair the damage. However, this is an extremely low-probability scenario, so we do not recommend reindexing just on the chance that it might have happened.", "commit_aliases": ["18b87b201", "dad1539ae"], "source_commits": ["dad1539ae"], "source_entry_id": "14.2/changes/002", "db_id": "6e0bd34ed4b0feb5d749db63e8d7ddbf", "patch_ids": ["03c9d1bdbaffacd1dc9aa4f1077915af"], "statement_hash": "2d0600edeb1c97e4e8db8148d57da573ed799a042f2add8f661459b8db7f6cd7", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-845af7d94362abbc", "cves": [], "html": "<p>修复对具有本地分区和外部分区混合的表进行 EvalPlanQual 重新检查时的崩溃（Etsuro Fujita）<a href=\"https://postgr.es/c/7b0cec2fa\">§</a> <a href=\"https://postgr.es/c/2a3958e4d\">§</a></p>", "text": "修复对具有本地分区和外部分区混合的表进行 EvalPlanQual 重新检查时的崩溃（Etsuro Fujita）§ §", "title": "修复对具有本地分区和外部分区混合的表进行 EvalPlanQual 重新检查时的崩溃", "commits": ["2a3958e4d", "7b0cec2fa"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "ed6c7248cfaddb8c89f115b2d9a544f90457c9319918a741406ec99a7aec2983", "section_path": ["变更"], "commit_groups": [["2a3958e4d", "7c1aead6c"], ["7b0cec2fa", "f862d5705"]], "identity_text": "Fix crash in EvalPlanQual rechecks for tables with a mix of local and foreign partitions (Etsuro Fujita)", "commit_aliases": ["2a3958e4d", "7b0cec2fa", "7c1aead6c", "f862d5705"], "source_commits": ["2a3958e4d", "7b0cec2fa"], "source_entry_id": "14.2/changes/003", "db_id": "d9db579e806ba9397b16397f770fb534", "patch_ids": ["3c6d3979ff0031be2a6d77c7d0827acc", "e49df071cccd21ef27c7fa43cc40b992"], "statement_hash": "4eca4f38151b5092c38b6fae3c8ff3e5263a78f1ec252d1c07757864064922be", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-b10a07662cfdd062", "cves": [], "html": "<p>修复 <code>COPY TO</code> 中的悬空指针（Bharath Rupireddy）<a href=\"https://postgr.es/c/b30282fcc\">§</a></p>\n<p>这一疏忽可能导致在 <code>COPY</code> 出错后出现不正确的错误消息或崩溃。</p>", "text": "修复 COPY TO 中的悬空指针（Bharath Rupireddy）§ 这一疏忽可能导致在 COPY 出错后出现不正确的错误消息或崩溃。", "title": "修复 COPY TO 中的悬空指针", "commits": ["b30282fcc"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "11d072587f5e064705257650cf0e78197f6f1f4fab1ea9469e7d49ac8858eb39", "section_path": ["变更"], "commit_groups": [["b30282fcc", "dc084d7c7"]], "identity_text": "Fix dangling pointer in COPY TO (Bharath Rupireddy) This oversight could cause an incorrect error message or a crash after an error in COPY.", "commit_aliases": ["b30282fcc", "dc084d7c7"], "source_commits": ["b30282fcc"], "source_entry_id": "14.2/changes/004", "db_id": "a982b8781f7943eb12d4c01eddf8e815", "patch_ids": ["160536182f3a8d25723bad372f5f8d09"], "statement_hash": "a9b4f4166ec78e4765e74a7571b15e1dffe5deca060893639f7278deeb891397", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-b4909ad3042706cb", "cves": [], "html": "<p>避免在统计对象被并发删除时 <code>ALTER STATISTICS</code> 出现空指针崩溃（Tomas Vondra）<a href=\"https://postgr.es/c/a192243c7\">§</a></p>", "text": "避免在统计对象被并发删除时 ALTER STATISTICS 出现空指针崩溃（Tomas Vondra）§", "title": "避免在统计对象被并发删除时 ALTER STATISTICS 出现空指针崩溃", "commits": ["a192243c7"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "3091152ab6a745a7e26d11b422f5c143a2badfdc7569644ca1ae7c83f4793193", "section_path": ["变更"], "commit_groups": [["267ccc38b", "6d554e3fc", "a192243c7"]], "identity_text": "Avoid null-pointer crash in ALTER STATISTICS when the statistics object is dropped concurrently (Tomas Vondra)", "commit_aliases": ["267ccc38b", "6d554e3fc", "a192243c7"], "source_commits": ["a192243c7"], "source_entry_id": "14.2/changes/005", "db_id": "a1c2b3649510a32ece98440e656a1b47", "patch_ids": ["30d0ea60e68b73870dc682b2fe02f3ff"], "statement_hash": "7288f43bd74e232362cac107685adfcc604677c134ac2134faf5187e7e460e48", "relations": [{"rule": 2, "type": "equivalent", "target": "cb4a0ca81935dc898d802bd0f02757ae", "evidence": {"same_day": true, "patch_ids": ["30d0ea60e68b73870dc682b2fe02f3ff"], "statement_hash": "7288f43bd74e232362cac107685adfcc604677c134ac2134faf5187e7e460e48"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cb4a0ca81935dc898d802bd0f02757ae", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "避免在统计对象被并发删除时 ALTER STATISTICS 出现空指针崩溃", "evidence": {"same_day": true, "patch_ids": ["30d0ea60e68b73870dc682b2fe02f3ff"], "statement_hash": "7288f43bd74e232362cac107685adfcc604677c134ac2134faf5187e7e460e48"}, "url": "/docs/compare/?release=13.6#13.6-feeba8df4d192b7c", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-03f9de7f43221c0c", "cves": [], "html": "<p>正确处理从多范围中提取范围时的对齐填充（Alexander Korotkov）<a href=\"https://postgr.es/c/7615edd1d\">§</a></p>\n<p>这一错误可能在处理可变长度数据类型上的多范围时导致崩溃。</p>", "text": "正确处理从多范围中提取范围时的对齐填充（Alexander Korotkov）§ 这一错误可能在处理可变长度数据类型上的多范围时导致崩溃。", "title": "正确处理从多范围中提取范围时的对齐填充", "commits": ["7615edd1d"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "a754146d7a16c25d85301d2d6fdcaea078ff51488020f152682c26b1de28684f", "section_path": ["变更"], "commit_groups": [["5cc9c8374", "7615edd1d"]], "identity_text": "Correctly handle alignment padding when extracting a range from a multirange (Alexander Korotkov) This error could cause crashes when handling multiranges over variable-length data types.", "commit_aliases": ["5cc9c8374", "7615edd1d"], "source_commits": ["7615edd1d"], "source_entry_id": "14.2/changes/006", "db_id": "8fa9880b02aec10260c075f92ba1b91d", "patch_ids": ["3f4826206ce6b6ade52c2399df5d08ef"], "statement_hash": "bc1e0562dfc7e8a74143d3085ce840b1c51cd33acb418be6e938edbcd6e0ff45", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-004c9e6d4f8d5053", "cves": [], "html": "<p>修复对匿名 <code>RECORD</code> 数据类型过于乐观地使用 hash 的问题（Tom Lane）<a href=\"https://postgr.es/c/17da9d4c2\">§</a></p>\n<p>这防止了某些情况下出现的 <span>“<span>could not identify a hash function for type record</span>”</span> 错误。</p>", "text": "修复对匿名 RECORD 数据类型过于乐观地使用 hash 的问题（Tom Lane）§ 这防止了某些情况下出现的 “could not identify a hash function for type record” 错误。", "title": "修复对匿名 RECORD 数据类型过于乐观地使用 hash 的问题", "commits": ["17da9d4c2"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "1da42d1ce8448c658c20868ceb343ff2ab41a4b7da496b5bd13dde0534f26b47", "section_path": ["变更"], "commit_groups": [["17da9d4c2", "647889667"]], "identity_text": "Fix over-optimistic use of hashing for anonymous RECORD data types (Tom Lane) This prevents some cases of could not identify a hash function for type record errors.", "commit_aliases": ["17da9d4c2", "647889667"], "source_commits": ["17da9d4c2"], "source_entry_id": "14.2/changes/007", "db_id": "e86eadb42b3db435ed06128680e28cf8", "patch_ids": ["acc4b22f5fdd85c002b96a46b268819b"], "statement_hash": "dc3160cf1e3ed1c99973f05d8471604184755520aba42b73706c8d9ab7c8f831", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-e564b4a4844bd24c", "cves": [], "html": "<p>修复并行单子节点 Append 节点的不正确计划创建（David Rowley）<a href=\"https://postgr.es/c/357ff6615\">§</a></p>\n<p>在某些情况下，Append 在不应该被简化时被简化了，导致错误的查询结果（重复行）。</p>", "text": "修复并行单子节点 Append 节点的不正确计划创建（David Rowley）§ 在某些情况下，Append 在不应该被简化时被简化了，导致错误的查询结果（重复行）。", "title": "修复并行单子节点 Append 节点的不正确计划创建", "commits": ["357ff6615"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "de46bfc83aaacd1d87b55ea01fabc889e5d0f4bffb3cecc95680f151ade3d352", "section_path": ["变更"], "commit_groups": [["2ccd8fb29", "357ff6615", "f8807e774", "f9a74c149"]], "identity_text": "Fix incorrect plan creation for parallel single-child Append nodes (David Rowley) In some cases the Append would be simplified away when it should not be, leading to wrong query results (duplicated rows).", "commit_aliases": ["2ccd8fb29", "357ff6615", "f8807e774", "f9a74c149"], "source_commits": ["357ff6615"], "source_entry_id": "14.2/changes/008", "db_id": "265a4d6ee8cc6da24988030ae52d6e6a", "patch_ids": ["824798e0131b37f7cdb2fde9e9e5da5b"], "statement_hash": "f6ac7ccbb7067f0f58f61b7c751b88f9788f94ff69a334c5909d252b95b09478", "relations": [{"rule": 2, "type": "equivalent", "target": "ac8261ab66eaba66676192bf6d5d1eaa", "evidence": {"same_day": true, "patch_ids": ["824798e0131b37f7cdb2fde9e9e5da5b"], "statement_hash": "f6ac7ccbb7067f0f58f61b7c751b88f9788f94ff69a334c5909d252b95b09478"}}, {"rule": 2, "type": "equivalent", "target": "e1fb660586dfc4dc98f59fae8a8b5298", "evidence": {"same_day": true, "patch_ids": ["824798e0131b37f7cdb2fde9e9e5da5b"], "statement_hash": "f6ac7ccbb7067f0f58f61b7c751b88f9788f94ff69a334c5909d252b95b09478"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "ac8261ab66eaba66676192bf6d5d1eaa", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复并行单子节点 Append 节点的不正确计划创建", "evidence": {"same_day": true, "patch_ids": ["824798e0131b37f7cdb2fde9e9e5da5b"], "statement_hash": "f6ac7ccbb7067f0f58f61b7c751b88f9788f94ff69a334c5909d252b95b09478"}, "url": "/docs/compare/?release=13.6#13.6-aee2a32333ec1325", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "e1fb660586dfc4dc98f59fae8a8b5298", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复并行单子节点 Append 节点的不正确计划创建", "evidence": {"same_day": true, "patch_ids": ["824798e0131b37f7cdb2fde9e9e5da5b"], "statement_hash": "f6ac7ccbb7067f0f58f61b7c751b88f9788f94ff69a334c5909d252b95b09478"}, "url": "/docs/compare/?release=12.10#12.10-c0f859c9433fbd35", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}]}, {"id": "14.2-64f3cb827fa2f009", "cves": [], "html": "<p>修复当并非所有索引列都可返回时的仅索引扫描计划（Tom Lane）<a href=\"https://postgr.es/c/cabea571d\">§</a> <a href=\"https://postgr.es/c/d228af79d\">§</a></p>\n<p>如果一个索引同时具有可返回列和不可返回列，且其中一个不可返回列是使用出现在可返回索引列中的表列的表达式，那么使用该表达式的查询可能会产生一个尝试读取不可返回列的仅索引扫描计划，而不是按预期从可返回列重新计算表达式。不可返回列将读取为 NULL，导致错误的查询结果。</p>", "text": "修复当并非所有索引列都可返回时的仅索引扫描计划（Tom Lane）§ § 如果一个索引同时具有可返回列和不可返回列，且其中一个不可返回列是使用出现在可返回索引列中的表列的表达式，那么使用该表达式的查询可能会产生一个尝试读取不可返回列的仅索引扫描计划，而不是按预期从可返回列重新计算表达式。不可返回列将读取为 NULL，导致错误的查询结果。", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "commits": ["cabea571d", "d228af79d"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "3d4a0db3de5c2989d10d04892360654edb44dcc611a4c731cfae3147393d4ec8", "section_path": ["变更"], "commit_groups": [["20d08b2c6", "7d344f004", "9a3ddeb51", "9c4f38908", "d228af79d", "ec3674521"], ["45ae42714", "4ace45677", "70a31a0e3", "cabea571d", "e3a4c7981", "f789b7732"]], "identity_text": "Fix index-only scan plans for cases where not all index columns can be returned (Tom Lane) If an index has both returnable and non-returnable columns, and one of the non-returnable columns is an expression using a table column that appears in a returnable index column, then a query using that expression could result in an index-only scan plan that attempts to read the non-returnable column, instead of recomputing the expression from the returnable column as intended. The non-returnable column would read as NULL, resulting in wrong query results.", "commit_aliases": ["20d08b2c6", "45ae42714", "4ace45677", "70a31a0e3", "7d344f004", "9a3ddeb51", "9c4f38908", "cabea571d", "d228af79d", "e3a4c7981", "ec3674521", "f789b7732"], "source_commits": ["cabea571d", "d228af79d"], "source_entry_id": "14.2/changes/009", "db_id": "0c3546786dd2c50531ab322064119a54", "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91", "relations": [{"rule": 2, "type": "equivalent", "target": "3977d734db4098da431d57a7fdc66133", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}}, {"rule": 2, "type": "equivalent", "target": "5559080180bd2f22df9d8a2f127c6c1c", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}}, {"rule": 2, "type": "equivalent", "target": "f0acdbf5115206fd7c14c5d95d3216c9", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}}, {"rule": 2, "type": "equivalent", "target": "f54ef2477e65cc077e969de79adec6bb", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f0acdbf5115206fd7c14c5d95d3216c9", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}, "url": "/docs/compare/?release=13.6#13.6-f12e79c353bc0af5", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "5559080180bd2f22df9d8a2f127c6c1c", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}, "url": "/docs/compare/?release=12.10#12.10-706d6ef31fbe403c", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "f54ef2477e65cc077e969de79adec6bb", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}, "url": "/docs/compare/?release=11.15#11.15-806922f927b7d584", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "3977d734db4098da431d57a7fdc66133", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}, "url": "/docs/compare/?release=10.20#10.20-806922f927b7d584", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-9ccc65890d5063f5", "cves": [], "html": "<p>修复 Memoize 计划节点以处理使用来自 Memoize 上层参数的子计划（David Rowley）<a href=\"https://postgr.es/c/c2dc7b9e1\">§</a></p>", "text": "修复 Memoize 计划节点以处理使用来自 Memoize 上层参数的子计划（David Rowley）§", "title": "修复 Memoize 计划节点以处理使用来自 Memoize 上层参数的子计划", "commits": ["c2dc7b9e1"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "5e8b8f0a4732be50dcff418b1b614ba3c0c9a30fe246c1915fe1ece3880a2c00", "section_path": ["变更"], "commit_groups": [["411137a42", "c2dc7b9e1"]], "identity_text": "Fix Memoize plan nodes to handle subplans that use parameters coming from above the Memoize (David Rowley)", "commit_aliases": ["411137a42", "c2dc7b9e1"], "source_commits": ["c2dc7b9e1"], "source_entry_id": "14.2/changes/010", "db_id": "015e7d97c01fea21170c0792f98ea478", "patch_ids": ["c8b9586ca49b15e3105917717d351ef0"], "statement_hash": "fd98a1341f55c612daa31e30adb3173bc26bcafb245d19adabfd82f960ed25c4", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-01e3b77f989b69fd", "cves": [], "html": "<p>修复 Memoize 计划节点以正确处理不支持 hash 运算的连接操作符（David Rowley）<a href=\"https://postgr.es/c/6c32c0977\">§</a></p>", "text": "修复 Memoize 计划节点以正确处理不支持 hash 运算的连接操作符（David Rowley）§", "title": "修复 Memoize 计划节点以正确处理不支持 hash 运算的连接操作符", "commits": ["6c32c0977"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "24d42d96e44a2dc4bba6fedd3b668027a128f5ee3d712fd556be5e3a134f5bd8", "section_path": ["变更"], "commit_groups": [["6c32c0977", "e502150f7"]], "identity_text": "Fix Memoize plan nodes to work correctly with non-hashable join operators (David Rowley)", "commit_aliases": ["6c32c0977", "e502150f7"], "source_commits": ["6c32c0977"], "source_entry_id": "14.2/changes/011", "db_id": "8cbc380f9d07fb8331510ae4daf33ba8", "patch_ids": ["18c82399191e1b3c2f8adf448e34e257"], "statement_hash": "07e01845342800c3ea53189e6081b67a7741f360b0efbf637c6097fd1afbae7f", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-a99150f111e767f4", "cves": [], "html": "<p>确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用（Tom Lane）<a href=\"https://postgr.es/c/f9a8bc9f2\">§</a></p>\n<p>虽然强制函数应该做正确的事情（即什么都不做），但这种转换效率不必要地低下。</p>", "text": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用（Tom Lane）§ 虽然强制函数应该做正确的事情（即什么都不做），但这种转换效率不必要地低下。", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "commits": ["f9a8bc9f2"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "f07cdbd644552147fdda8beba0319d03a81951a958b8aacdc146bf546b98f098", "section_path": ["变更"], "commit_groups": [["1acf34586", "9c356f4b2", "c43d72b24", "da0d8a454", "e1fd61c8c", "f9a8bc9f2"]], "identity_text": "Ensure that casting to an unspecified typmod generates a RelabelType node rather than a length-coercion function call (Tom Lane) While the coercion function should do the right thing (nothing), this translation is undesirably inefficient.", "commit_aliases": ["1acf34586", "9c356f4b2", "c43d72b24", "da0d8a454", "e1fd61c8c", "f9a8bc9f2"], "source_commits": ["f9a8bc9f2"], "source_entry_id": "14.2/changes/012", "db_id": "2a7f8ea1f2220e76ca24779d0e546459", "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d", "relations": [{"rule": 2, "type": "equivalent", "target": "2a893e2cfd6603c7a75c0f088b5a6d60", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}}, {"rule": 2, "type": "equivalent", "target": "3ffca40a718620457f7a3bf9d087d63b", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}}, {"rule": 2, "type": "equivalent", "target": "663a5984f62f161ff7a0d4cedd3dd429", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}}, {"rule": 2, "type": "equivalent", "target": "67da827eb004dcc40e31b9af0ab7ece8", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "663a5984f62f161ff7a0d4cedd3dd429", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}, "url": "/docs/compare/?release=13.6#13.6-9761aa54ac8f3c19", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "67da827eb004dcc40e31b9af0ab7ece8", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}, "url": "/docs/compare/?release=12.10#12.10-0bc0132862b52e28", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "3ffca40a718620457f7a3bf9d087d63b", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}, "url": "/docs/compare/?release=11.15#11.15-c0ed51fd463e361c", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "2a893e2cfd6603c7a75c0f088b5a6d60", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}, "url": "/docs/compare/?release=10.20#10.20-c0ed51fd463e361c", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-6fa658bfee0e3f95", "cves": [], "html": "<p>修复 <code>anycompatible</code> 系列数据类型匹配的检查（Tom Lane）<a href=\"https://postgr.es/c/c025067f6\">§</a></p>\n<p>在某些情况下，解析器会认为具有 <code>anycompatible</code> 系列多态参数的函数或操作符匹配了一组实际上不应匹配的参数。在已报告的案例中，这导致对一个调用匹配了多个操作符，引发操作符歧义错误；但之后出现失败也是可能的。</p>", "text": "修复 anycompatible 系列数据类型匹配的检查（Tom Lane）§ 在某些情况下，解析器会认为具有 anycompatible 系列多态参数的函数或操作符匹配了一组实际上不应匹配的参数。在已报告的案例中，这导致对一个调用匹配了多个操作符，引发操作符歧义错误；但之后出现失败也是可能的。", "title": "修复 anycompatible 系列数据类型匹配的检查", "commits": ["c025067f6"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "e01d49a79b4186b53ae753e7fe87529fd984c925f5139d49245996a919b33dc4", "section_path": ["变更"], "commit_groups": [["5ad70564f", "8e2e0f758", "c025067f6"]], "identity_text": "Fix checking of anycompatible-family data type matches (Tom Lane) In some cases the parser would think that a function or operator with anycompatible-family polymorphic parameters matches a set of arguments that it really shouldn't match. In reported cases, that led to matching more than one operator to a call, leading to ambiguous-operator errors; but a failure later on is also possible.", "commit_aliases": ["5ad70564f", "8e2e0f758", "c025067f6"], "source_commits": ["c025067f6"], "source_entry_id": "14.2/changes/013", "db_id": "e1111027f07b5102db1156306a34b048", "patch_ids": ["d9959906aa3103990a6449a0dda85b61"], "statement_hash": "a0af24173f65cb96b1bd0ae83731612477fa494a815bcdc2bfd08751c65a595f", "relations": [{"rule": 2, "type": "equivalent", "target": "cdfc2ed0ea6ff44d17752a1d16d5a1ce", "evidence": {"same_day": true, "patch_ids": ["d9959906aa3103990a6449a0dda85b61"], "statement_hash": "a0af24173f65cb96b1bd0ae83731612477fa494a815bcdc2bfd08751c65a595f"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cdfc2ed0ea6ff44d17752a1d16d5a1ce", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 anycompatible 系列数据类型匹配的检查", "evidence": {"same_day": true, "patch_ids": ["d9959906aa3103990a6449a0dda85b61"], "statement_hash": "a0af24173f65cb96b1bd0ae83731612477fa494a815bcdc2bfd08751c65a595f"}, "url": "/docs/compare/?release=13.6#13.6-340060dc4575a382", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-6a2216d5121007db", "cves": [], "html": "<p>修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败（Álvaro Herrera）<a href=\"https://postgr.es/c/d24dac954\">§</a></p>", "text": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败（Álvaro Herrera）§", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "commits": ["d24dac954"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "883d96773d19501589efa6a370949e112c83a024967fd14f82f20b3f56d79452", "section_path": ["变更"], "commit_groups": [["2c3fddcbb", "44bd3ed33", "72cf39d51", "9c6ab1ef3", "d24dac954", "ef41c3fd6"]], "identity_text": "Fix WAL replay failure when database consistency is reached exactly at a WAL page boundary (Álvaro Herrera)", "commit_aliases": ["2c3fddcbb", "44bd3ed33", "72cf39d51", "9c6ab1ef3", "d24dac954", "ef41c3fd6"], "source_commits": ["d24dac954"], "source_entry_id": "14.2/changes/014", "db_id": "c8ee9f05fcab261ea19e8e933fce2a56", "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7", "relations": [{"rule": 2, "type": "equivalent", "target": "2cc14dd2cde079eb0813d98ae4efc0eb", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}}, {"rule": 2, "type": "equivalent", "target": "835e2fdb54f88b0ae985e0cb4cae1a86", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}}, {"rule": 2, "type": "equivalent", "target": "bd3d61ccd0723fd56757dd1d72f63e7a", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}}, {"rule": 2, "type": "equivalent", "target": "c855dbf26945305b605c55a5904cde68", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bd3d61ccd0723fd56757dd1d72f63e7a", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}, "url": "/docs/compare/?release=13.6#13.6-51c48133cefb804d", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "835e2fdb54f88b0ae985e0cb4cae1a86", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}, "url": "/docs/compare/?release=12.10#12.10-ebcffd2b569aa583", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "c855dbf26945305b605c55a5904cde68", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}, "url": "/docs/compare/?release=11.15#11.15-b3b60040801ca437", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "2cc14dd2cde079eb0813d98ae4efc0eb", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}, "url": "/docs/compare/?release=10.20#10.20-b3b60040801ca437", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-937704f82a03e216", "cves": [], "html": "<p>修复物理副本的启动以容忍事务 ID 回卷（Abhijit Menon-Sen，Tomas Vondra）<a href=\"https://postgr.es/c/fb2f8e534\">§</a></p>\n<p>如果副本服务器在主库上的活跃事务集跨越回卷边界时启动（即有些较新的事务的 XID 比较旧的事务小），副本将因 <span>“<span>out-of-order XID insertion in KnownAssignedXids</span>”</span> 而失败。副本会重试，但永远无法越过该错误。</p>", "text": "修复物理副本的启动以容忍事务 ID 回卷（Abhijit Menon-Sen，Tomas Vondra）§ 如果副本服务器在主库上的活跃事务集跨越回卷边界时启动（即有些较新的事务的 XID 比较旧的事务小），副本将因 “out-of-order XID insertion in KnownAssignedXids” 而失败。副本会重试，但永远无法越过该错误。", "title": "修复物理副本的启动以容忍事务 ID 回卷", "commits": ["fb2f8e534"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "ea31ac06e104ab7b9a648e46bd45ad00cece79b12e1e7e1f3e70c2eae417e9a3", "section_path": ["变更"], "commit_groups": [["4b8af2bf8", "4ef38fbe8", "5cb88648e", "e90f258ac", "f192e1bdf", "fb2f8e534"]], "identity_text": "Fix startup of a physical replica to tolerate transaction ID wraparound (Abhijit Menon-Sen, Tomas Vondra) If a replica server is started while the set of active transactions on the primary crosses a wraparound boundary (so that there are some newer transactions with smaller XIDs than older ones), the replica would fail with out-of-order XID insertion in KnownAssignedXids. The replica would retry, but could never get past that error.", "commit_aliases": ["4b8af2bf8", "4ef38fbe8", "5cb88648e", "e90f258ac", "f192e1bdf", "fb2f8e534"], "source_commits": ["fb2f8e534"], "source_entry_id": "14.2/changes/015", "db_id": "5e19ddb281299d561bac0326a173a9e8", "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df", "relations": [{"rule": 2, "type": "equivalent", "target": "1c36481a930c06c7940ad0f6d5e1316f", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}}, {"rule": 2, "type": "equivalent", "target": "6fa4719966ba913196a04b36398afb6b", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}}, {"rule": 2, "type": "equivalent", "target": "dcc67cb4dbf1b8f9e7af4833c39e96b2", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}}, {"rule": 2, "type": "equivalent", "target": "e182eef561607dab0750d05cfbef3245", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "dcc67cb4dbf1b8f9e7af4833c39e96b2", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复物理副本的启动以容忍事务 ID 回卷", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}, "url": "/docs/compare/?release=13.6#13.6-eb0a7fc4d8a6d8fc", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "e182eef561607dab0750d05cfbef3245", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复物理副本的启动以容忍事务 ID 回卷", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}, "url": "/docs/compare/?release=12.10#12.10-272e53fb1458bc32", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "1c36481a930c06c7940ad0f6d5e1316f", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复物理副本的启动以容忍事务 ID 回卷", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}, "url": "/docs/compare/?release=11.15#11.15-028a149f048103a5", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "6fa4719966ba913196a04b36398afb6b", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复物理副本的启动以容忍事务 ID 回卷", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}, "url": "/docs/compare/?release=10.20#10.20-028a149f048103a5", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-27b0e32fbb24b5ce", "cves": [], "html": "<p>在逻辑复制中，避免重复传输子表的数据（Hou Zhijie）<a href=\"https://postgr.es/c/614b77d65\">§</a></p>\n<p>如果一个发布同时包含子表和父表，并且设置了 <code>publish_via_partition_root</code> 选项，订阅者会对子表和父表都无用地启动同步。确保在这种情况下只同步父表。</p>", "text": "在逻辑复制中，避免重复传输子表的数据（Hou Zhijie）§ 如果一个发布同时包含子表和父表，并且设置了 publish_via_partition_root 选项，订阅者会对子表和父表都无用地启动同步。确保在这种情况下只同步父表。", "title": "在逻辑复制中，避免重复传输子表的数据", "commits": ["614b77d65"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "ea37730eea91f16ed3be3dc67c389fa48797a8c20e8335be11c2a5f17bf954e3", "section_path": ["变更"], "commit_groups": [["3f06c00cf", "5e97905a2", "614b77d65"]], "identity_text": "In logical replication, avoid double transmission of a child table's data (Hou Zhijie) If a publication includes both child and parent tables, and has the publish_via_partition_root option set, subscribers uselessly initiated synchronization on both child and parent tables. Ensure that only the parent table is synchronized in such cases.", "commit_aliases": ["3f06c00cf", "5e97905a2", "614b77d65"], "source_commits": ["614b77d65"], "source_entry_id": "14.2/changes/016", "db_id": "a9477cf4ea60ef686900f10ee9d99ab0", "patch_ids": ["023c411fc6c9c27ee0e3ed022e27732d"], "statement_hash": "f3cd6a784be3fbab1674b461d053648a4d5c9ed1853f26fec12f67d3171ee8e0", "relations": [{"rule": 2, "type": "equivalent", "target": "3f2b16580e9d40a350b3249c6e85989d", "evidence": {"same_day": true, "patch_ids": ["023c411fc6c9c27ee0e3ed022e27732d"], "statement_hash": "f3cd6a784be3fbab1674b461d053648a4d5c9ed1853f26fec12f67d3171ee8e0"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "3f2b16580e9d40a350b3249c6e85989d", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "在逻辑复制中，避免重复传输子表的数据", "evidence": {"same_day": true, "patch_ids": ["023c411fc6c9c27ee0e3ed022e27732d"], "statement_hash": "f3cd6a784be3fbab1674b461d053648a4d5c9ed1853f26fec12f67d3171ee8e0"}, "url": "/docs/compare/?release=13.6#13.6-f2c700e2a0b72349", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-34a8b0d995370b03", "cves": [], "html": "<p>移除在逻辑复制连接上发出的 SQL 命令的词法限制（Tom Lane）<a href=\"https://postgr.es/c/1efcc5946\">§</a> <a href=\"https://postgr.es/c/ef9706bbc\">§</a></p>\n<p>如果 SQL 命令包含未加引号的分号，或包含带有奇数个单引号或双引号的美元引用字面量，或以注释开头，walsender 进程就会失败。此外，错误恢复不正确也可能导致后续命令发生意外错误。</p>", "text": "移除在逻辑复制连接上发出的 SQL 命令的词法限制（Tom Lane）§ § 如果 SQL 命令包含未加引号的分号，或包含带有奇数个单引号或双引号的美元引用字面量，或以注释开头，walsender 进程就会失败。此外，错误恢复不正确也可能导致后续命令发生意外错误。", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "commits": ["1efcc5946", "ef9706bbc"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "a835bb748c757944bb9b37f146331a1e81fa2c69b7f41d4cdb87e9c889c06b35", "section_path": ["变更"], "commit_groups": [["1efcc5946", "4ec54498c", "689f75d6e", "6aa518614", "9af6d4b5a", "d67354d87"], ["3c06ec6d1", "449a69623", "a8ce5c8d7", "c94c6612d", "daf658982", "ef9706bbc"]], "identity_text": "Remove lexical limitations for SQL commands issued on a logical replication connection (Tom Lane) The walsender process would fail for a SQL command containing an unquoted semicolon, or with dollar-quoted literals containing odd numbers of single or double quote marks, or when the SQL command starts with a comment. Moreover, faulty error recovery could lead to unexpected errors in later commands too.", "commit_aliases": ["1efcc5946", "3c06ec6d1", "449a69623", "4ec54498c", "689f75d6e", "6aa518614", "9af6d4b5a", "a8ce5c8d7", "c94c6612d", "d67354d87", "daf658982", "ef9706bbc"], "source_commits": ["1efcc5946", "ef9706bbc"], "source_entry_id": "14.2/changes/017", "db_id": "b98ea3c8a532b6d7b0e925a6b6c75cf9", "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b", "relations": [{"rule": 2, "type": "equivalent", "target": "702fbb9541c1100db24efa6c516ec49c", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}}, {"rule": 2, "type": "equivalent", "target": "a6bb3449547ab2fe12c28aba92ca29c9", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}}, {"rule": 2, "type": "equivalent", "target": "ded3756805bb59acbe7ce106258ed5d9", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}}, {"rule": 2, "type": "equivalent", "target": "f7c93b4c152223c085640674bceba58a", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ded3756805bb59acbe7ce106258ed5d9", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}, "url": "/docs/compare/?release=13.6#13.6-d14d4f7b3e46838d", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "a6bb3449547ab2fe12c28aba92ca29c9", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}, "url": "/docs/compare/?release=12.10#12.10-b8a115690569b698", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "f7c93b4c152223c085640674bceba58a", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}, "url": "/docs/compare/?release=11.15#11.15-c83544f428c06c8d", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "702fbb9541c1100db24efa6c516ec49c", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}, "url": "/docs/compare/?release=10.20#10.20-c83544f428c06c8d", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-8e00436c9643c395", "cves": [], "html": "<p>确保在复制 <code>ROLLBACK PREPARED</code> 操作时设置复制源时间戳（Masahiko Sawada）<a href=\"https://postgr.es/c/f2e1730ee\">§</a></p>", "text": "确保在复制 ROLLBACK PREPARED 操作时设置复制源时间戳（Masahiko Sawada）§", "title": "确保在复制 ROLLBACK PREPARED 操作时设置复制源时间戳", "commits": ["f2e1730ee"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "dd50de7ba2237574f1e759e9689d62b9bfd85afcc7d1e8b02413a840f8d37972", "section_path": ["变更"], "commit_groups": [["e464cb7af", "f2e1730ee"]], "identity_text": "Ensure that replication origin timestamp is set while replicating a ROLLBACK PREPARED operation (Masahiko Sawada)", "commit_aliases": ["e464cb7af", "f2e1730ee"], "source_commits": ["f2e1730ee"], "source_entry_id": "14.2/changes/018", "db_id": "3c03239499fb924210ed4edf11efb99d", "patch_ids": ["71bb2dda30260ea0252ea1dc2167d154"], "statement_hash": "9d987bb277ea99ae4c8ef252d0cc0d197024525f6c1280637ef20aba3d1862bb", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-1e7e518dc5790ff5", "cves": [], "html": "<p>修复事务的最后一个子事务的提交时间戳可能丢失的问题（Alex Kingsborough，Kyotaro Horiguchi）<a href=\"https://postgr.es/c/84db5169d\">§</a></p>", "text": "修复事务的最后一个子事务的提交时间戳可能丢失的问题（Alex Kingsborough，Kyotaro Horiguchi）§", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "commits": ["84db5169d"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "2cec020d0ea69da7b36d9d76c745fbf433aa720c3ec2475d6f4d41c5eacee2ff", "section_path": ["变更"], "commit_groups": [["0ffe2975c", "1c0452c48", "237d1f317", "84db5169d", "919be95c6", "b5f634116"]], "identity_text": "Fix possible loss of the commit timestamp for the last subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi)", "commit_aliases": ["0ffe2975c", "1c0452c48", "237d1f317", "84db5169d", "919be95c6", "b5f634116"], "source_commits": ["84db5169d"], "source_entry_id": "14.2/changes/019", "db_id": "15e4cdf07e04f4692c91156a3a5908bb", "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae", "relations": [{"rule": 2, "type": "equivalent", "target": "b8eac7e28755e73eb576db067bc4d9dc", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}, {"rule": 2, "type": "equivalent", "target": "bbe661559a462cb4f9b5f9207041cac8", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}, {"rule": 2, "type": "equivalent", "target": "c7e8f0b202e9f17e8eed39745cb6debd", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}, {"rule": 2, "type": "equivalent", "target": "f7107e2d130e3710354c69e1af1dca32", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bbe661559a462cb4f9b5f9207041cac8", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}, "url": "/docs/compare/?release=13.6#13.6-3587c5e0af0d56c6", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "f7107e2d130e3710354c69e1af1dca32", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}, "url": "/docs/compare/?release=12.10#12.10-66c96e177ff0bc30", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "b8eac7e28755e73eb576db067bc4d9dc", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}, "url": "/docs/compare/?release=11.15#11.15-f3a9037e87d00abf", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "c7e8f0b202e9f17e8eed39745cb6debd", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}, "url": "/docs/compare/?release=10.20#10.20-f3a9037e87d00abf", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-f45104475e56fc82", "cves": [], "html": "<p>确保在检查点期间对 <code>pg_logical/mappings</code> 子目录执行 <code>fsync</code>（Nathan Bossart）<a href=\"https://postgr.es/c/2b7dbe4bd\">§</a></p>\n<p>在某些文件系统上，这一疏忽可能导致在系统崩溃后丢失逻辑重写状态文件。</p>", "text": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync（Nathan Bossart）§ 在某些文件系统上，这一疏忽可能导致在系统崩溃后丢失逻辑重写状态文件。", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "commits": ["2b7dbe4bd"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "b5ddfaba35547176aa7f2d2eca2384b10a846a934395d5bfc3cbd679043b8745", "section_path": ["变更"], "commit_groups": [["1c6d055ba", "1fabec7d7", "2b7dbe4bd", "2c15b29f7", "f862cc09f", "fd48e5f5d"]], "identity_text": "Be sure to fsync the pg_logical/mappings subdirectory during checkpoints (Nathan Bossart) On some filesystems this oversight could lead to losing logical rewrite status files after a system crash.", "commit_aliases": ["1c6d055ba", "1fabec7d7", "2b7dbe4bd", "2c15b29f7", "f862cc09f", "fd48e5f5d"], "source_commits": ["2b7dbe4bd"], "source_entry_id": "14.2/changes/020", "db_id": "72977b01e1df094cf40fd5ba331693af", "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db", "relations": [{"rule": 2, "type": "equivalent", "target": "353fc59252a3b8ee5c068e5ae44976d5", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}}, {"rule": 2, "type": "equivalent", "target": "a9d08bee6a99170702c162e042d07eee", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}}, {"rule": 2, "type": "equivalent", "target": "aeba13b2c2363418e9446c0d419c8c28", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}}, {"rule": 2, "type": "equivalent", "target": "cd5e04f92c3bd097a11741b1a43a5ef2", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "aeba13b2c2363418e9446c0d419c8c28", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}, "url": "/docs/compare/?release=13.6#13.6-2f001a5bdf695b08", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "a9d08bee6a99170702c162e042d07eee", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}, "url": "/docs/compare/?release=12.10#12.10-9465ddf94b4619da", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "cd5e04f92c3bd097a11741b1a43a5ef2", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}, "url": "/docs/compare/?release=11.15#11.15-1f781ac2c4939236", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "353fc59252a3b8ee5c068e5ae44976d5", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}, "url": "/docs/compare/?release=10.20#10.20-1f781ac2c4939236", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-6916df499a6d9e97", "cves": [], "html": "<p>为分区表构建扩展统计信息（Justin Pryzby）<a href=\"https://postgr.es/c/ea212bd95\">§</a></p>\n<p>之前的一个错误修复禁用了为旧式继承树构建扩展统计信息，但它也阻止了为分区表构建这些统计信息，这是一个不必要的限制。此变更允许 <code>ANALYZE</code> 计算分区表的统计对象的值。（但请注意，自动清理本身不处理分区表，因此如果需要维护此类统计信息，必须定期对分区表发出手动 <code>ANALYZE</code>。）</p>", "text": "为分区表构建扩展统计信息（Justin Pryzby）§ 之前的一个错误修复禁用了为旧式继承树构建扩展统计信息，但它也阻止了为分区表构建这些统计信息，这是一个不必要的限制。此变更允许 ANALYZE 计算分区表的统计对象的值。（但请注意，自动清理本身不处理分区表，因此如果需要维护此类统计信息，必须定期对分区表发出手动 ANALYZE。）", "title": "为分区表构建扩展统计信息", "commits": ["ea212bd95"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "ef4dc2cf41f53bdbc2a69240bb52817f701dac7878bd25ead3772bd1b480c479", "section_path": ["变更"], "commit_groups": [["20b9fa308", "491182e52", "9211c2e38", "9d1bcf5dc", "d6817032d", "ea212bd95"]], "identity_text": "Build extended statistics for partitioned tables (Justin Pryzby) A previous bug fix disabled building of extended statistics for old-style inheritance trees, but it also prevented building them for partitioned tables, which was an unnecessary restriction. This change allows ANALYZE to compute values for statistics objects for partitioned tables. (But note that autovacuum does not process partitioned tables as such, so you must periodically issue manual ANALYZE on the partitioned table if you want to maintain such statistics.)", "commit_aliases": ["20b9fa308", "491182e52", "9211c2e38", "9d1bcf5dc", "d6817032d", "ea212bd95"], "source_commits": ["ea212bd95"], "source_entry_id": "14.2/changes/021", "db_id": "aae20dcb1ae1fa6bd3529412c04f97fb", "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6", "relations": [{"rule": 2, "type": "equivalent", "target": "8843b85ca94fbd9768cbf9c4db0197dd", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}}, {"rule": 2, "type": "equivalent", "target": "aa374d98da4fcd59ef0f1454458d4e48", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}}, {"rule": 2, "type": "equivalent", "target": "c4acacecb3d0ac73df4d51781c2f252b", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}}, {"rule": 2, "type": "equivalent", "target": "cc0037968bcdf035b8f620f0e0277a1a", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "aa374d98da4fcd59ef0f1454458d4e48", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "为分区表构建扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}, "url": "/docs/compare/?release=13.6#13.6-ab307f084403f36c", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "8843b85ca94fbd9768cbf9c4db0197dd", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "为分区表构建扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}, "url": "/docs/compare/?release=12.10#12.10-eaa41b2f9f420694", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "cc0037968bcdf035b8f620f0e0277a1a", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "为分区表构建扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}, "url": "/docs/compare/?release=11.15#11.15-67870a7dff22dade", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "c4acacecb3d0ac73df4d51781c2f252b", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "为分区表构建扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}, "url": "/docs/compare/?release=10.20#10.20-67870a7dff22dade", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-5a3b094ffe0486c4", "cves": [], "html": "<p>忽略继承树的扩展统计信息（Justin Pryzby）<a href=\"https://postgr.es/c/2cc007fd0\">§</a></p>\n<p>目前，扩展统计信息的值只是针对每个表本地计算的，而不是针对整个继承树。但是，在规划跨继承树的查询时，这些值被错误地参考了，可能导致比默认估计更差的结果。</p>", "text": "忽略继承树的扩展统计信息（Justin Pryzby）§ 目前，扩展统计信息的值只是针对每个表本地计算的，而不是针对整个继承树。但是，在规划跨继承树的查询时，这些值被错误地参考了，可能导致比默认估计更差的结果。", "title": "忽略继承树的扩展统计信息", "commits": ["2cc007fd0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "76f4965225ef0646df0c32183920ec0028363f4a5c6dff15f38f0580ab6fd242", "section_path": ["变更"], "commit_groups": [["2cc007fd0", "36c4bc6e7", "76569ad6f", "acfde7c58", "b3cac25f4", "ff0e7c7e8"]], "identity_text": "Ignore extended statistics for inheritance trees (Justin Pryzby) Currently, extended statistics values are only computed locally for each table, not for entire inheritance trees. However the values were mistakenly consulted when planning queries across inheritance trees, possibly resulting in worse-than-default estimates.", "commit_aliases": ["2cc007fd0", "36c4bc6e7", "76569ad6f", "acfde7c58", "b3cac25f4", "ff0e7c7e8"], "source_commits": ["2cc007fd0"], "source_entry_id": "14.2/changes/022", "db_id": "c91e705bc9c63403f2a68a5332385d72", "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487", "relations": [{"rule": 2, "type": "equivalent", "target": "12dccf5a2d38874c75631fdc6e2825ff", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}, {"rule": 2, "type": "equivalent", "target": "2517ef9fb5b245d35d9e3ea766191afc", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}, {"rule": 2, "type": "equivalent", "target": "3c7141c008821c2af8e2ddc97ba7103e", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}, {"rule": 2, "type": "equivalent", "target": "82d4f54d56de673bd30c82b48031e6ca", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "12dccf5a2d38874c75631fdc6e2825ff", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "忽略继承树的扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}, "url": "/docs/compare/?release=13.6#13.6-b2a884861b9489a7", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "82d4f54d56de673bd30c82b48031e6ca", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "忽略继承树的扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}, "url": "/docs/compare/?release=12.10#12.10-901c77d1f1fb71cb", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "2517ef9fb5b245d35d9e3ea766191afc", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "忽略继承树的扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}, "url": "/docs/compare/?release=11.15#11.15-10912216a6ee6584", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "3c7141c008821c2af8e2ddc97ba7103e", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "忽略继承树的扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}, "url": "/docs/compare/?release=10.20#10.20-10912216a6ee6584", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-f83d313a8c8730e4", "cves": [], "html": "<p>当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型（Tom Lane）<a href=\"https://postgr.es/c/f285d9583\">§</a></p>\n<p>这一限制对于普通表早已存在，但由于疏忽，对分区表未做检查。</p>", "text": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型（Tom Lane）§ 这一限制对于普通表早已存在，但由于疏忽，对分区表未做检查。", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "commits": ["f285d9583"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "24b001bc2b9b4b5c29b588be1e305c5fdcd36f28c63dc79b0191613fcd055776", "section_path": ["变更"], "commit_groups": [["2ce113a4f", "7ead9925f", "86d4bbb56", "ccc7c3ad8", "e5b044c84", "f285d9583"]], "identity_text": "Disallow altering data type of a partitioned table's columns when the partitioned table's row type is used as a composite type elsewhere (Tom Lane) This restriction has long existed for regular tables, but through an oversight it was not checked for partitioned tables.", "commit_aliases": ["2ce113a4f", "7ead9925f", "86d4bbb56", "ccc7c3ad8", "e5b044c84", "f285d9583"], "source_commits": ["f285d9583"], "source_entry_id": "14.2/changes/023", "db_id": "ccf6e7ed9a5f4c1b19f99ae662af15b6", "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b", "relations": [{"rule": 2, "type": "equivalent", "target": "0ca4e6b55209216d9e2fd11102432004", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}}, {"rule": 2, "type": "equivalent", "target": "576f15cdc43846a9dd9c25bb4b9f8a1e", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}}, {"rule": 2, "type": "equivalent", "target": "6722169d655e9575b4970f24c17404bf", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}}, {"rule": 2, "type": "equivalent", "target": "9e3dd1393b83dffba6deb1f286edc44f", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0ca4e6b55209216d9e2fd11102432004", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}, "url": "/docs/compare/?release=13.6#13.6-37d403b13f5f9c1e", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "6722169d655e9575b4970f24c17404bf", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}, "url": "/docs/compare/?release=12.10#12.10-0251ecb7f9a85e7e", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "576f15cdc43846a9dd9c25bb4b9f8a1e", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}, "url": "/docs/compare/?release=11.15#11.15-b27284b3568a7888", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "9e3dd1393b83dffba6deb1f286edc44f", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}, "url": "/docs/compare/?release=10.20#10.20-b27284b3568a7888", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-28ca15028588ec39", "cves": [], "html": "<p>禁止对作为副本标识索引一部分的列执行 <code>ALTER TABLE ... DROP NOT NULL</code>（Haiying Tang，Hou Zhijie）<a href=\"https://postgr.es/c/e415916e2\">§</a></p>\n<p>对于主键索引已经存在相同的禁止规则。</p>", "text": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL（Haiying Tang，Hou Zhijie）§ 对于主键索引已经存在相同的禁止规则。", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "commits": ["e415916e2"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "4fffe25030a68400b21cf81d6e8eaca6b4a8853bf440af302af5e91378100676", "section_path": ["变更"], "commit_groups": [["216156fec", "37827de43", "817c469c2", "dffe80e55", "e415916e2", "f0d43947a"]], "identity_text": "Disallow ALTER TABLE ... DROP NOT NULL for a column that is part of a replica identity index (Haiying Tang, Hou Zhijie) The same prohibition already existed for primary key indexes.", "commit_aliases": ["216156fec", "37827de43", "817c469c2", "dffe80e55", "e415916e2", "f0d43947a"], "source_commits": ["e415916e2"], "source_entry_id": "14.2/changes/024", "db_id": "9aaada45efe13dbbd5639cea722957a4", "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f", "relations": [{"rule": 2, "type": "equivalent", "target": "3c0b93cbf380e8e5e5ca43337ff71201", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}}, {"rule": 2, "type": "equivalent", "target": "5c006d06207b434b03dd553059716e71", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}}, {"rule": 2, "type": "equivalent", "target": "9eaa9fbd5ed4610197b51967455521dd", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}}, {"rule": 2, "type": "equivalent", "target": "b0bdbec7a3ec087b2cc76b8bfdf7c114", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "3c0b93cbf380e8e5e5ca43337ff71201", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}, "url": "/docs/compare/?release=13.6#13.6-69a2c1e764625c56", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "b0bdbec7a3ec087b2cc76b8bfdf7c114", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}, "url": "/docs/compare/?release=12.10#12.10-a9777f8d8c1fffe6", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "5c006d06207b434b03dd553059716e71", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}, "url": "/docs/compare/?release=11.15#11.15-f229bfe85605d838", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "9eaa9fbd5ed4610197b51967455521dd", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}, "url": "/docs/compare/?release=10.20#10.20-f229bfe85605d838", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-b1ab44c4c9d5582f", "cves": [], "html": "<p>在 <code>ALTER TABLE ADD PRIMARY KEY USING INDEX</code> 期间正确更新缓存的表状态（Hou Zhijie）<a href=\"https://postgr.es/c/3839e29c5\">§</a></p>\n<p>并发会话未能更新其关于表是否具有主键的判断，可能导致不正确的逻辑复制行为。</p>", "text": "在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态（Hou Zhijie）§ 并发会话未能更新其关于表是否具有主键的判断，可能导致不正确的逻辑复制行为。", "title": "在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态", "commits": ["3839e29c5"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "4c7968f969d3f0f136d9d76827dc5d7aed53afb63e84a74bbda566b33f453ce7", "section_path": ["变更"], "commit_groups": [["26c841ed1", "31b7b4d26", "3839e29c5", "d8fbbb925", "e2d53c876"]], "identity_text": "Correctly update cached table state during ALTER TABLE ADD PRIMARY KEY USING INDEX (Hou Zhijie) Concurrent sessions failed to update their opinion of whether the table has a primary key, possibly causing incorrect logical replication behavior.", "commit_aliases": ["26c841ed1", "31b7b4d26", "3839e29c5", "d8fbbb925", "e2d53c876"], "source_commits": ["3839e29c5"], "source_entry_id": "14.2/changes/025", "db_id": "bbc70a772e850789a40a9e845536dd33", "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b", "relations": [{"rule": 2, "type": "equivalent", "target": "33d2c2207378dd4911a436a62f79868f", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}}, {"rule": 2, "type": "equivalent", "target": "b10597301e7b6b307a774495aec8bfa1", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}}, {"rule": 2, "type": "equivalent", "target": "ee83a3c90bd5821a07aec9e927c4abe7", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "33d2c2207378dd4911a436a62f79868f", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}, "url": "/docs/compare/?release=13.6#13.6-8f2f9c0ca5d41c0d", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "b10597301e7b6b307a774495aec8bfa1", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}, "url": "/docs/compare/?release=12.10#12.10-4e74f878cc3bdc30", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "ee83a3c90bd5821a07aec9e927c4abe7", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["b069ef5a8af363aeb7334bca4cb37512"], "statement_hash": "338e1b83c9b06393a63836bc0c247e2f87ad740b9490f47d26ea9fae78bd078b"}, "url": "/docs/compare/?release=11.15#11.15-985063658f501afd", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}]}, {"id": "14.2-9fa55932b4079ce8", "cves": [], "html": "<p>在切换 <code>REPLICA IDENTITY</code> 索引时正确更新缓存的表状态（Tang Haiying，Hou Zhijie）<a href=\"https://postgr.es/c/232fd72a5\">§</a></p>\n<p>并发会话未能更新其关于哪个索引是副本标识索引的判断，可能导致不正确的逻辑复制行为。</p>", "text": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态（Tang Haiying，Hou Zhijie）§ 并发会话未能更新其关于哪个索引是副本标识索引的判断，可能导致不正确的逻辑复制行为。", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "commits": ["232fd72a5"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "6ef4853a20c5c29c4ad5abae8cab17fc7ecb57c4fc3f24cdf52fc989d38b48fc", "section_path": ["变更"], "commit_groups": [["232fd72a5", "2c0443c59", "354a1f8d2", "40fb634b1", "63c3eeddc", "9816e2d31"]], "identity_text": "Correctly update cached table state when switching REPLICA IDENTITY index (Tang Haiying, Hou Zhijie) Concurrent sessions failed to update their opinion of which index is the replica identity one, possibly causing incorrect logical replication behavior.", "commit_aliases": ["232fd72a5", "2c0443c59", "354a1f8d2", "40fb634b1", "63c3eeddc", "9816e2d31"], "source_commits": ["232fd72a5"], "source_entry_id": "14.2/changes/026", "db_id": "89dc1b256f0afc6b089d9df3d3e49da9", "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2", "relations": [{"rule": 2, "type": "equivalent", "target": "1378be9dfccb87e7b66e69689632e51a", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}}, {"rule": 2, "type": "equivalent", "target": "5ca4aa0bffa31b14b99d6599b93b687f", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}}, {"rule": 2, "type": "equivalent", "target": "89e90ea19d0ee1afb4af7e14fd35cd0e", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}}, {"rule": 2, "type": "equivalent", "target": "c26f7b0856872c055b742650418ff302", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "1378be9dfccb87e7b66e69689632e51a", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}, "url": "/docs/compare/?release=13.6#13.6-d6dfcaebb507fcdb", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "c26f7b0856872c055b742650418ff302", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}, "url": "/docs/compare/?release=12.10#12.10-a7d2fe5ed2403fce", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "89e90ea19d0ee1afb4af7e14fd35cd0e", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}, "url": "/docs/compare/?release=11.15#11.15-3448589edd418578", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "5ca4aa0bffa31b14b99d6599b93b687f", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}, "url": "/docs/compare/?release=10.20#10.20-3448589edd418578", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-fa31186b9e9f8ab2", "cves": [], "html": "<p>修复当索引列的数据类型与操作符类声明的输入类型二进制兼容时 SP-GiST 索引的失败（Tom Lane）<a href=\"https://postgr.es/c/6d07cbc50\">§</a></p>\n<p>这种情况应该可以工作，但失败并显示 <span>“<span>compress method must be defined when leaf type is different from input type</span>”</span>。</p>", "text": "修复当索引列的数据类型与操作符类声明的输入类型二进制兼容时 SP-GiST 索引的失败（Tom Lane）§ 这种情况应该可以工作，但失败并显示 “compress method must be defined when leaf type is different from input type”。", "title": "修复当索引列的数据类型与操作符类声明的输入类型二进制兼容时 SP-GiST 索引的失败", "commits": ["6d07cbc50"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "1eb4452f8a1dd12a8fa8ba9e07ef8e7d06f5e338cd421859cfe83fa4a041dbe5", "section_path": ["变更"], "commit_groups": [["6d07cbc50", "f4e7ae2b8"]], "identity_text": "Fix failure of SP-GiST indexes when the indexed column's data type is binary-compatible with the declared input type of the operator class (Tom Lane) Such cases should work, but failed with compress method must be defined when leaf type is different from input type.", "commit_aliases": ["6d07cbc50", "f4e7ae2b8"], "source_commits": ["6d07cbc50"], "source_entry_id": "14.2/changes/027", "db_id": "6b9fac743cc050ee537ef110ef6272cf", "patch_ids": ["b89a0ed7de8b2869bd26efabb9e29634"], "statement_hash": "97083442364d319f6ffbec0667cd627459c1dd6058f44614f264d8a8b8fa475c", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-a27219f4a40721b9", "cves": [], "html": "<p>允许在计算最旧 xmin 时忽略并行清理和并发索引构建（Masahiko Sawada）<a href=\"https://postgr.es/c/ead49ebc0\">§</a></p>\n<p>这些操作的非并行化实例已经被忽略了，但该逻辑对并行化的情况不起作用。推迟 xmin 范围会产生不良影响，例如延迟清理操作。</p>", "text": "允许在计算最旧 xmin 时忽略并行清理和并发索引构建（Masahiko Sawada）§ 这些操作的非并行化实例已经被忽略了，但该逻辑对并行化的情况不起作用。推迟 xmin 范围会产生不良影响，例如延迟清理操作。", "title": "允许在计算最旧 xmin 时忽略并行清理和并发索引构建", "commits": ["ead49ebc0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "1332714243258b98c83c6595dcb99bff202337e06680dbffca490cc72ee716d4", "section_path": ["变更"], "commit_groups": [["0f0cfb494", "33b6dd83e", "ead49ebc0"]], "identity_text": "Allow parallel vacuuming and concurrent index building to be ignored while computing oldest xmin (Masahiko Sawada) Non-parallelized instances of these operations were already ignored, but the logic did not work for parallelized cases. Holding back the xmin horizon has undesirable effects such as delaying vacuum cleanup.", "commit_aliases": ["0f0cfb494", "33b6dd83e", "ead49ebc0"], "source_commits": ["ead49ebc0"], "source_entry_id": "14.2/changes/028", "db_id": "bf53f775e66f84a5217eb425e780022d", "patch_ids": ["7d6c3a1dde333ea48f95d2f5916dd490"], "statement_hash": "92ee98bf387938a1d829c56c8c187d61837812d938be5b62c94f0905968cfe99", "relations": [{"rule": 2, "type": "equivalent", "target": "cf80364adfbefce8005c16b30e3e8f05", "evidence": {"same_day": true, "patch_ids": ["7d6c3a1dde333ea48f95d2f5916dd490"], "statement_hash": "92ee98bf387938a1d829c56c8c187d61837812d938be5b62c94f0905968cfe99"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cf80364adfbefce8005c16b30e3e8f05", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "允许在计算最旧 xmin 时忽略并行清理和并发索引构建", "evidence": {"same_day": true, "patch_ids": ["7d6c3a1dde333ea48f95d2f5916dd490"], "statement_hash": "92ee98bf387938a1d829c56c8c187d61837812d938be5b62c94f0905968cfe99"}, "url": "/docs/compare/?release=13.6#13.6-981090259f958991", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-29d7f493d475cd86", "cves": [], "html": "<p>修复更新表达式索引时的内存泄漏（Peter Geoghegan）<a href=\"https://postgr.es/c/41ee68a91\">§</a></p>\n<p>影响很多行的 <code>UPDATE</code> 可能会消耗大量内存。</p>", "text": "修复更新表达式索引时的内存泄漏（Peter Geoghegan）§ 影响很多行的 UPDATE 可能会消耗大量内存。", "title": "修复更新表达式索引时的内存泄漏", "commits": ["41ee68a91"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "b96db4d0cde1ba6c490e2b320792d83301bff26290077b3671771468b03f0f2e", "section_path": ["变更"], "commit_groups": [["41ee68a91", "db6736c93"]], "identity_text": "Fix memory leak when updating expression indexes (Peter Geoghegan) An UPDATE affecting many rows could consume significant amounts of memory.", "commit_aliases": ["41ee68a91", "db6736c93"], "source_commits": ["41ee68a91"], "source_entry_id": "14.2/changes/029", "db_id": "680aa83bd93dc12091382b9ac452f3d8", "patch_ids": ["ce9780a6769b19c0793312539a10a571"], "statement_hash": "3093aa10585afd5112e94bddf715af3c0f27b7934c0c8d3e8c77078e0f92b1eb", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-098d2ff1710ec9e2", "cves": [], "html": "<p>避免在重新分配大量对象所有权的 <code>REASSIGN OWNED BY</code> 操作期间泄漏内存（Justin Pryzby）<a href=\"https://postgr.es/c/8f4b0200e\">§</a></p>", "text": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存（Justin Pryzby）§", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "commits": ["8f4b0200e"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "89a264d8d53acaa0eb4a57349b143573f7470a732be09d08a7a7b20ae95d84fb", "section_path": ["变更"], "commit_groups": [["5cf08b4db", "7413caabe", "82d354411", "8f4b0200e", "babe545ca", "fec187dc3"]], "identity_text": "Avoid leaking memory during REASSIGN OWNED BY operations that reassign ownership of many objects (Justin Pryzby)", "commit_aliases": ["5cf08b4db", "7413caabe", "82d354411", "8f4b0200e", "babe545ca", "fec187dc3"], "source_commits": ["8f4b0200e"], "source_entry_id": "14.2/changes/030", "db_id": "7f3d22b6629a39b9172eca6526953aef", "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f", "relations": [{"rule": 2, "type": "equivalent", "target": "04c3a7cb22b7842a8e07d9fb7a917abf", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}}, {"rule": 2, "type": "equivalent", "target": "35401e367b3f1e8d809c1c90d1850958", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}}, {"rule": 2, "type": "equivalent", "target": "a71f47eb94e35b9d5bd1b645de958939", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}}, {"rule": 2, "type": "equivalent", "target": "ebb581903026a2135d7e0b955f76b9cb", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "ebb581903026a2135d7e0b955f76b9cb", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}, "url": "/docs/compare/?release=13.6#13.6-d8e25c1e6729d2cb", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "35401e367b3f1e8d809c1c90d1850958", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}, "url": "/docs/compare/?release=12.10#12.10-307c8b4270f1f3c5", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "04c3a7cb22b7842a8e07d9fb7a917abf", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}, "url": "/docs/compare/?release=11.15#11.15-b19db14a059ca107", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "a71f47eb94e35b9d5bd1b645de958939", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}, "url": "/docs/compare/?release=10.20#10.20-b19db14a059ca107", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-bc5ed175d640f687", "cves": [], "html": "<p>通过避免不必要的缓存访问，改进 walsender 发送逻辑变更的性能（Hou Zhijie）<a href=\"https://postgr.es/c/5ddfebded\">§</a></p>", "text": "通过避免不必要的缓存访问，改进 walsender 发送逻辑变更的性能（Hou Zhijie）§", "title": "通过避免不必要的缓存访问，改进 walsender 发送逻辑变更的性能", "commits": ["5ddfebded"], "section": "变更", "category": "performance", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "b99edad2d186f746e6a5adef08749dd29c7d07347ee5316e886419b9a83fe726", "section_path": ["变更"], "commit_groups": [["3f8062bcf", "5ddfebded", "6ce16088b"]], "identity_text": "Improve performance of walsenders sending logical changes by avoiding unnecessary cache accesses (Hou Zhijie)", "commit_aliases": ["3f8062bcf", "5ddfebded", "6ce16088b"], "source_commits": ["5ddfebded"], "source_entry_id": "14.2/changes/031", "db_id": "5fb3241febc54b7fbdea35be110fe0cf", "patch_ids": ["9d30157eb5233b8c1cf4e0782f26e442"], "statement_hash": "09ad0bae47f178c25480c676d4ff03cd346887f3d62d5c9e58577e980bcdf263", "relations": [{"rule": 2, "type": "equivalent", "target": "4528c188b40734429a65e9d662abefc3", "evidence": {"same_day": true, "patch_ids": ["9d30157eb5233b8c1cf4e0782f26e442"], "statement_hash": "09ad0bae47f178c25480c676d4ff03cd346887f3d62d5c9e58577e980bcdf263"}}], "version": "14.2", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4528c188b40734429a65e9d662abefc3", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "通过避免不必要的缓存访问，改进 walsender 发送逻辑变更的性能", "evidence": {"same_day": true, "patch_ids": ["9d30157eb5233b8c1cf4e0782f26e442"], "statement_hash": "09ad0bae47f178c25480c676d4ff03cd346887f3d62d5c9e58577e980bcdf263"}, "url": "/docs/compare/?release=13.6#13.6-0e29ddd86a4272b8", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-4759cdf137658e48", "cves": [], "html": "<p>修复 <code>pg_hba_file_rules</code> 视图中 <code>cert</code> 认证方法选项的显示（Magnus Hagander）<a href=\"https://postgr.es/c/4afae689e\">§</a></p>\n<p><code>cert</code> 认证方法隐含 <code>clientcert=verify-full</code>，但 <code>pg_hba_file_rules</code> 视图错误地报告了 <code>clientcert=verify-ca</code>。</p>", "text": "修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示（Magnus Hagander）§ cert 认证方法隐含 clientcert=verify-full，但 pg_hba_file_rules 视图错误地报告了 clientcert=verify-ca。", "title": "修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示", "commits": ["4afae689e"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "78636d2d0f41ba61bc69b931d725a1b30c225b6b7ae99b7e18c59f9787d3c95b", "section_path": ["变更"], "commit_groups": [["2dbb7b9b2", "4afae689e", "81596645c", "aa58f5c53"]], "identity_text": "Fix display of cert authentication method's options in pg_hba_file_rules view (Magnus Hagander) The cert authentication method implies clientcert=verify-full, but the pg_hba_file_rules view incorrectly reported clientcert=verify-ca.", "commit_aliases": ["2dbb7b9b2", "4afae689e", "81596645c", "aa58f5c53"], "source_commits": ["4afae689e"], "source_entry_id": "14.2/changes/032", "db_id": "de2a37cfaf7693a2ca35954a405e0e43", "patch_ids": ["277e49b1146ad9de62d8e20d8404efcc"], "statement_hash": "f01402e8387a41c92bfbdab95e1e6385eeec12d9e5a7a1734d02cef3311e6b72", "relations": [{"rule": 2, "type": "equivalent", "target": "0494caa8b67faac19416909df0e298bf", "evidence": {"same_day": true, "patch_ids": ["277e49b1146ad9de62d8e20d8404efcc"], "statement_hash": "f01402e8387a41c92bfbdab95e1e6385eeec12d9e5a7a1734d02cef3311e6b72"}}, {"rule": 2, "type": "equivalent", "target": "7e739464a36d8d715cf609e7ea2647b9", "evidence": {"same_day": true, "patch_ids": ["277e49b1146ad9de62d8e20d8404efcc"], "statement_hash": "f01402e8387a41c92bfbdab95e1e6385eeec12d9e5a7a1734d02cef3311e6b72"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0494caa8b67faac19416909df0e298bf", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示", "evidence": {"same_day": true, "patch_ids": ["277e49b1146ad9de62d8e20d8404efcc"], "statement_hash": "f01402e8387a41c92bfbdab95e1e6385eeec12d9e5a7a1734d02cef3311e6b72"}, "url": "/docs/compare/?release=13.6#13.6-145e50957d691dec", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "7e739464a36d8d715cf609e7ea2647b9", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示", "evidence": {"same_day": true, "patch_ids": ["277e49b1146ad9de62d8e20d8404efcc"], "statement_hash": "f01402e8387a41c92bfbdab95e1e6385eeec12d9e5a7a1734d02cef3311e6b72"}, "url": "/docs/compare/?release=12.10#12.10-9cc0c57318742d27", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}]}, {"id": "14.2-14158083fdab0181", "cves": [], "html": "<p>确保 <code>pg_log_backend_memory_contexts()</code> 所针对的会话仅将其结果发送到服务器日志（Fujii Masao）<a href=\"https://postgr.es/c/6e7ee55e7\">§</a></p>\n<p>之前，如果 <code>client_min_messages</code> 设置得足够高，日志消息也会被发送到已连接的客户端。由于该客户端并未请求该消息，这会令人惊讶（并且可能违反线路协议）。</p>", "text": "确保 pg_log_backend_memory_contexts() 所针对的会话仅将其结果发送到服务器日志（Fujii Masao）§ 之前，如果 client_min_messages 设置得足够高，日志消息也会被发送到已连接的客户端。由于该客户端并未请求该消息，这会令人惊讶（并且可能违反线路协议）。", "title": "确保 pg_log_backend_memory_contexts() 所针对的会话仅将其结果发送到服务器日志", "commits": ["6e7ee55e7"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "04091c7d2bba22d11bad786844348e38031dc88033051235324873537d43e438", "section_path": ["变更"], "commit_groups": [["108505d76", "6e7ee55e7"]], "identity_text": "Ensure that the session targeted by pg_log_backend_memory_contexts() sends its results only to the server's log (Fujii Masao) Previously, a sufficiently high setting of client_min_messages could result in the log message also being sent to the connected client. Since that client hadn't requested it, that would be surprising (and possibly a wire protocol violation).", "commit_aliases": ["108505d76", "6e7ee55e7"], "source_commits": ["6e7ee55e7"], "source_entry_id": "14.2/changes/033", "db_id": "83f383cf029492283e462e9f80a87b76", "patch_ids": ["1c47257b01c6994d916b08b3f5d0cfa1"], "statement_hash": "b9a39704669bf18d14425b5c8d77143e5e29c2a67bd33bbe6e833f9e1a34de26", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-02b98708eeb2cb49", "cves": [], "html": "<p>修复出现在 <code>INSERT ... VALUES</code> 规则中的整行变量的显示（Tom Lane）<a href=\"https://postgr.es/c/4aee39ddb\">§</a></p>\n<p>整行变量会被打印为 <span>“<span>var.*</span>”</span>，但这允许在规则重新加载时将其展开为各个列，导致不同的语义。附加显式类型转换以防止这种情况，正如我们在其他地方所做的那样。</p>", "text": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示（Tom Lane）§ 整行变量会被打印为 “var.*”，但这允许在规则重新加载时将其展开为各个列，导致不同的语义。附加显式类型转换以防止这种情况，正如我们在其他地方所做的那样。", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "commits": ["4aee39ddb"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "af2895ef2ba33ae5798fdcaf9306c948f7756d5aecc9010aec87f9f4593dbe70", "section_path": ["变更"], "commit_groups": [["3433a1fc7", "3a1bfe256", "43c217512", "45a3cefad", "4aee39ddb", "ca14c4184"]], "identity_text": "Fix display of whole-row variables appearing in INSERT ... VALUES rules (Tom Lane) A whole-row variable would be printed as var.*, but that allows it to be expanded to individual columns when the rule is reloaded, resulting in different semantics. Attach an explicit cast to prevent that, as we do elsewhere.", "commit_aliases": ["3433a1fc7", "3a1bfe256", "43c217512", "45a3cefad", "4aee39ddb", "ca14c4184"], "source_commits": ["4aee39ddb"], "source_entry_id": "14.2/changes/034", "db_id": "06ea6dd217acc1044df7252b3c6403d8", "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739", "relations": [{"rule": 2, "type": "equivalent", "target": "030ecea9b763ff7e1be818ec5f1af00a", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}}, {"rule": 2, "type": "equivalent", "target": "8e41418d131a080ea708bdb94388136b", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}}, {"rule": 2, "type": "equivalent", "target": "92aa437edd4a51d207d7c4fffd579af6", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}}, {"rule": 2, "type": "equivalent", "target": "c630bddef5091737f500382c58d35124", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "92aa437edd4a51d207d7c4fffd579af6", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}, "url": "/docs/compare/?release=13.6#13.6-45c4efa4c459cb98", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "030ecea9b763ff7e1be818ec5f1af00a", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}, "url": "/docs/compare/?release=12.10#12.10-4e8531d8724e4c1f", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "8e41418d131a080ea708bdb94388136b", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}, "url": "/docs/compare/?release=11.15#11.15-8e2d21a6b95633e6", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "c630bddef5091737f500382c58d35124", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}, "url": "/docs/compare/?release=10.20#10.20-8e2d21a6b95633e6", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-44049aa235e3c71f", "cves": [], "html": "<p>在反向列出 SQL 标准函数体时，在 <code>INSERT ... SELECT</code> 中适当显示函数参数（Tom Lane）<a href=\"https://postgr.es/c/5d5779aea\">§</a></p>\n<p>之前，即使参数有名称，它们也会显示为 <code>$<em><code>N</code></em></code>。</p>", "text": "在反向列出 SQL 标准函数体时，在 INSERT ... SELECT 中适当显示函数参数（Tom Lane）§ 之前，即使参数有名称，它们也会显示为 $N。", "title": "在反向列出 SQL 标准函数体时，在 INSERT ... SELECT 中适当显示函数参数", "commits": ["5d5779aea"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "b55409253d471dc60a7c9b96d1fb34628432e26ff182bfc32f0d5bf7ac1ccde4", "section_path": ["变更"], "commit_groups": [["5d5779aea", "a8d8445a7"]], "identity_text": "When reverse-listing a SQL-standard function body, display function parameters appropriately within INSERT ... SELECT (Tom Lane) Previously, they'd come out as $N even when the parameter had a name.", "commit_aliases": ["5d5779aea", "a8d8445a7"], "source_commits": ["5d5779aea"], "source_entry_id": "14.2/changes/035", "db_id": "0d821735259be030cbed8a24a2395f69", "patch_ids": ["46de0418be68993d988762e59766315a"], "statement_hash": "99a3bdad89f672bdec3d4c46672acf7f78b54eeb26da3d07c9ff6ff43fb20279", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-f8cb3da168dbddd6", "cves": [], "html": "<p>修复对空字符串应用 Unicode 字符串规范化时的一字节缓冲区溢出（Michael Paquier）<a href=\"https://postgr.es/c/b609db715\">§</a></p>\n<p>由于对齐的考虑，这在实际中的影响是有限的；但在调试构建中，会引发警告。</p>", "text": "修复对空字符串应用 Unicode 字符串规范化时的一字节缓冲区溢出（Michael Paquier）§ 由于对齐的考虑，这在实际中的影响是有限的；但在调试构建中，会引发警告。", "title": "修复对空字符串应用 Unicode 字符串规范化时的一字节缓冲区溢出", "commits": ["b609db715"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "ee69cbf13f09ad6fa59154dafa9fef3d9ab7f59374e7e2bee5d7d256a7ef7be6", "section_path": ["变更"], "commit_groups": [["098c13455", "13c8adf90", "b609db715"]], "identity_text": "Fix one-byte buffer overrun when applying Unicode string normalization to an empty string (Michael Paquier) The practical impact of this is limited thanks to alignment considerations; but in debug builds, a warning was raised.", "commit_aliases": ["098c13455", "13c8adf90", "b609db715"], "source_commits": ["b609db715"], "source_entry_id": "14.2/changes/036", "db_id": "60fa7fbad5785710ef8c0faced143832", "patch_ids": ["f2655a0a41a65d6337258763938c25f7"], "statement_hash": "46585fc44a10727d2b01cab246424b2f67c24c4e35b8a865a8e2931f2d6e4f60", "relations": [{"rule": 2, "type": "equivalent", "target": "b4bbc248627debb045e263c05e34b4fb", "evidence": {"same_day": true, "patch_ids": ["f2655a0a41a65d6337258763938c25f7"], "statement_hash": "46585fc44a10727d2b01cab246424b2f67c24c4e35b8a865a8e2931f2d6e4f60"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b4bbc248627debb045e263c05e34b4fb", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复对空字符串应用 Unicode 字符串规范化时的一字节缓冲区溢出", "evidence": {"same_day": true, "patch_ids": ["f2655a0a41a65d6337258763938c25f7"], "statement_hash": "46585fc44a10727d2b01cab246424b2f67c24c4e35b8a865a8e2931f2d6e4f60"}, "url": "/docs/compare/?release=13.6#13.6-77126c54381e6a63", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-32f44551b75f3534", "cves": [], "html": "<p>修复或移除一些不正确的断言（Simon Riggs，Michael Paquier，Alexander Lakhin）<a href=\"https://postgr.es/c/f185f35a8\">§</a> <a href=\"https://postgr.es/c/f9db153c2\">§</a> <a href=\"https://postgr.es/c/8a22a40b2\">§</a> <a href=\"https://postgr.es/c/4be3e005e\">§</a></p>\n<p>这些错误应该只影响调试构建，不影响生产环境。</p>", "text": "修复或移除一些不正确的断言（Simon Riggs，Michael Paquier，Alexander Lakhin）§ § § § 这些错误应该只影响调试构建，不影响生产环境。", "title": "修复或移除一些不正确的断言", "commits": ["4be3e005e", "8a22a40b2", "f185f35a8", "f9db153c2"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "2a280bf1a2ea967f1d499023099b91f53eef9a06b2207b2edc6a08c5ad0a6ca1", "section_path": ["变更"], "commit_groups": [["026a93727", "28cd57416", "29f9fb8fe", "6b681cd05", "f185f35a8", "f66885bec"], ["2e577c944", "8a22a40b2"], ["33fdd9f85", "397b43948", "4a8282425", "67a8cb5cb", "b63851a45", "f9db153c2"], ["3f710fc2b", "4be3e005e", "65af1e842", "8abb6c27e", "ece8c7619"]], "identity_text": "Fix or remove some incorrect assertions (Simon Riggs, Michael Paquier, Alexander Lakhin) These errors should affect only debug builds, not production.", "commit_aliases": ["026a93727", "28cd57416", "29f9fb8fe", "2e577c944", "33fdd9f85", "397b43948", "3f710fc2b", "4a8282425", "4be3e005e", "65af1e842", "67a8cb5cb", "6b681cd05", "8a22a40b2", "8abb6c27e", "b63851a45", "ece8c7619", "f185f35a8", "f66885bec", "f9db153c2"], "source_commits": ["4be3e005e", "8a22a40b2", "f185f35a8", "f9db153c2"], "source_entry_id": "14.2/changes/037", "db_id": "caa33f6dfae24228955cb4409f9591f8", "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3", "relations": [{"rule": 2, "type": "equivalent", "target": "3fc6cd941e93a9bfb1e5d292cd017484", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}}, {"rule": 2, "type": "equivalent", "target": "6b0f11f753b770ec01c92dc5192e219e", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}}, {"rule": 2, "type": "equivalent", "target": "8acbefd35a3150a6fd49ba21ea43a2c9", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}}, {"rule": 2, "type": "equivalent", "target": "f96e8261510301b7e6b4e596429c3f48", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f96e8261510301b7e6b4e596429c3f48", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复或移除一些不正确的断言", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}, "url": "/docs/compare/?release=13.6#13.6-3b40b4cf01d04af2", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "3fc6cd941e93a9bfb1e5d292cd017484", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复或移除一些不正确的断言", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}, "url": "/docs/compare/?release=12.10#12.10-c95981fc934469d5", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "6b0f11f753b770ec01c92dc5192e219e", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复或移除一些不正确的断言", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}, "url": "/docs/compare/?release=11.15#11.15-fa57d971c2953099", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "8acbefd35a3150a6fd49ba21ea43a2c9", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复或移除一些不正确的断言", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}, "url": "/docs/compare/?release=10.20#10.20-fa57d971c2953099", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-31af7e967c9886de", "cves": [], "html": "<p>修复在多线程使用 <span>libpq</span> 或 <span>ecpglib</span> 早期报告的错误消息本地化失败的竞态条件（Tom Lane）<a href=\"https://postgr.es/c/f4ebf0dbe\">§</a></p>", "text": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件（Tom Lane）§", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "commits": ["f4ebf0dbe"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "d5da21a8d8a8816a1f3b39a7bc1ee1011c769fd77bd9acd4178ff9bd8f8ea294", "section_path": ["变更"], "commit_groups": [["0c7c94f90", "1f655fdc3", "37f5dc8b8", "5521d8139", "64ebb43df", "f4ebf0dbe"]], "identity_text": "Fix race condition that could lead to failure to localize error messages that are reported early in multi-threaded use of libpq or ecpglib (Tom Lane)", "commit_aliases": ["0c7c94f90", "1f655fdc3", "37f5dc8b8", "5521d8139", "64ebb43df", "f4ebf0dbe"], "source_commits": ["f4ebf0dbe"], "source_entry_id": "14.2/changes/038", "db_id": "179bbfac9e1a7f101bf6b5b1b793f278", "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb", "relations": [{"rule": 2, "type": "equivalent", "target": "560c16a372995eaed073f2e7d67b407c", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}}, {"rule": 2, "type": "equivalent", "target": "61b0d747dede1df3344b2e845449d7bf", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}}, {"rule": 2, "type": "equivalent", "target": "68fea31ddb048a05fde17e75029fb6f3", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}}, {"rule": 2, "type": "equivalent", "target": "72f5d6a3c9065640cf57e7eac14b873f", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "61b0d747dede1df3344b2e845449d7bf", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}, "url": "/docs/compare/?release=13.6#13.6-fc8b603deec8e7b2", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "68fea31ddb048a05fde17e75029fb6f3", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}, "url": "/docs/compare/?release=12.10#12.10-f8266aed82b21418", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "560c16a372995eaed073f2e7d67b407c", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}, "url": "/docs/compare/?release=11.15#11.15-3835054eedd5b8ad", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "72f5d6a3c9065640cf57e7eac14b873f", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}, "url": "/docs/compare/?release=10.20#10.20-3835054eedd5b8ad", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-baf26e78d93d5f4d", "cves": [], "html": "<p>避免从 <span>libpq</span> 的 <code>PQcancel</code> 函数中调用 <code>strerror</code>（Tom Lane）<a href=\"https://postgr.es/c/050949877\">§</a></p>\n<p><code>PQcancel</code> 应该可以安全地从信号处理程序中调用，但 <code>strerror</code> 不是安全的。这一错误用法仅在向服务器发送取消消息失败的不太可能的情况下才会发生，这也许解释了为什么没有相关报告。</p>", "text": "避免从 libpq 的 PQcancel 函数中调用 strerror（Tom Lane）§ PQcancel 应该可以安全地从信号处理程序中调用，但 strerror 不是安全的。这一错误用法仅在向服务器发送取消消息失败的不太可能的情况下才会发生，这也许解释了为什么没有相关报告。", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "commits": ["050949877"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "0aa6f19dfa1f30b5e7efde1c44cee8a924f2f44f699a58ecd7c324d2fc02d4fc", "section_path": ["变更"], "commit_groups": [["050949877", "38f099ef9", "8b107467c", "9d66c43eb", "f27af7b88", "f3f467b8f"]], "identity_text": "Avoid calling strerror from libpq's PQcancel function (Tom Lane) PQcancel is supposed to be safe to call from a signal handler, but strerror is not safe. The faulty usage only occurred in the unlikely event of failure to send the cancel message to the server, perhaps explaining the lack of reports.", "commit_aliases": ["050949877", "38f099ef9", "8b107467c", "9d66c43eb", "f27af7b88", "f3f467b8f"], "source_commits": ["050949877"], "source_entry_id": "14.2/changes/039", "db_id": "0513bf329f57f0ccc6396002eebe6830", "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d", "relations": [{"rule": 2, "type": "equivalent", "target": "2fb976585cb4ce0c6e80fd570f6305e6", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}}, {"rule": 2, "type": "equivalent", "target": "7cfb5e36fd110a32db9e68c942b1bc92", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}}, {"rule": 2, "type": "equivalent", "target": "8908f4ff2810107f35f96425443600dc", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}}, {"rule": 2, "type": "equivalent", "target": "c49de34fc6ec14b670436080a5f786bd", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8908f4ff2810107f35f96425443600dc", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}, "url": "/docs/compare/?release=13.6#13.6-27b0859303cacd2b", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "2fb976585cb4ce0c6e80fd570f6305e6", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}, "url": "/docs/compare/?release=12.10#12.10-fc892f22c4302a28", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "7cfb5e36fd110a32db9e68c942b1bc92", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}, "url": "/docs/compare/?release=11.15#11.15-951a7587c3962a51", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "c49de34fc6ec14b670436080a5f786bd", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}, "url": "/docs/compare/?release=10.20#10.20-951a7587c3962a51", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-58f8defda56b9983", "cves": [], "html": "<p>使 <span>psql</span> 的 <code>\\password</code> 命令默认设置 <code>CURRENT_USER</code> 的密码，而非连接的原始用户名（Tom Lane）<a href=\"https://postgr.es/c/99389cb66\">§</a></p>\n<p>这与文档中描述的行为一致，并且避免了在会话开始后执行了 <code>SET ROLE</code> 或 <code>SET SESSION AUTHORIZATION</code> 时可能出现的权限失败。为防止混淆，现在密码提示中包含了要操作的角色名称。</p>", "text": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名（Tom Lane）§ 这与文档中描述的行为一致，并且避免了在会话开始后执行了 SET ROLE 或 SET SESSION AUTHORIZATION 时可能出现的权限失败。为防止混淆，现在密码提示中包含了要操作的角色名称。", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "commits": ["99389cb66"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "10b31a185f01101754b0a17ee494ba36a2ff386623cfa9d9141b6edadf031dee", "section_path": ["变更"], "commit_groups": [["3bc46e4e9", "523adcc12", "843925fad", "99389cb66", "b062ca508", "d6eb5a0c2"]], "identity_text": "Make psql's \\password command default to setting the password for CURRENT_USER, not the connection's original user name (Tom Lane) This agrees with the documented behavior, and avoids probable permissions failure if SET ROLE or SET SESSION AUTHORIZATION has been done since the session began. To prevent confusion, the role name to be acted on is now included in the password prompt.", "commit_aliases": ["3bc46e4e9", "523adcc12", "843925fad", "99389cb66", "b062ca508", "d6eb5a0c2"], "source_commits": ["99389cb66"], "source_entry_id": "14.2/changes/040", "db_id": "84776f05de41df5238bb064738cd3a15", "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae", "relations": [{"rule": 2, "type": "equivalent", "target": "4714c55d46149586b5d119ffc253a68f", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}}, {"rule": 2, "type": "equivalent", "target": "84f08b3e4458dc4a884e3495b6687a08", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}}, {"rule": 2, "type": "equivalent", "target": "e719c1b76bfb3c977de8c80d54db8af0", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}}, {"rule": 2, "type": "equivalent", "target": "ee796632fca28b8125aeb77642ff8793", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ee796632fca28b8125aeb77642ff8793", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}, "url": "/docs/compare/?release=13.6#13.6-59cc72f6fd5d3e59", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "e719c1b76bfb3c977de8c80d54db8af0", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}, "url": "/docs/compare/?release=12.10#12.10-2e845f724f6247bd", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "84f08b3e4458dc4a884e3495b6687a08", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}, "url": "/docs/compare/?release=11.15#11.15-d46e6601c7bc7fb4", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "4714c55d46149586b5d119ffc253a68f", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}, "url": "/docs/compare/?release=10.20#10.20-d46e6601c7bc7fb4", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-8793603593068cff", "cves": [], "html": "<p>修复 <span>psql</span> <code>\\d</code> 命令中用于识别父触发器的查询（Justin Pryzby）<a href=\"https://postgr.es/c/3886785b4\">§</a></p>\n<p>之前的代码在分区具有触发器且某个父分区表上存在同名的不相关语句级触发器时，会失败并显示 <span>“<span>more than one row returned by a subquery used as an expression</span>”</span>。</p>", "text": "修复 psql \\d 命令中用于识别父触发器的查询（Justin Pryzby）§ 之前的代码在分区具有触发器且某个父分区表上存在同名的不相关语句级触发器时，会失败并显示 “more than one row returned by a subquery used as an expression”。", "title": "修复 psql \\d 命令中用于识别父触发器的查询", "commits": ["3886785b4"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "af4103cf3d01409a9d69ffb6552717824f3744695a9be4a5db6a8426094270f7", "section_path": ["变更"], "commit_groups": [["3886785b4", "9007d4ea7", "90e0f9fd8"]], "identity_text": "Fix psql \\d command's query for identifying parent triggers (Justin Pryzby) The previous coding failed with more than one row returned by a subquery used as an expression if a partition had triggers and there were unrelated statement-level triggers of the same name on some parent partitioned table.", "commit_aliases": ["3886785b4", "9007d4ea7", "90e0f9fd8"], "source_commits": ["3886785b4"], "source_entry_id": "14.2/changes/041", "db_id": "979769df816c7cd40afe2c4a76ffa8a8", "patch_ids": ["5d27576305f3d0ffb590a746a5dd6bde"], "statement_hash": "892dc45cdc9014a575ac0f6cf3f61712830a7800348215f25f18a5f92fb5493e", "relations": [{"rule": 2, "type": "equivalent", "target": "83b894a00f7a3ae83b40be9540490453", "evidence": {"same_day": true, "patch_ids": ["5d27576305f3d0ffb590a746a5dd6bde"], "statement_hash": "892dc45cdc9014a575ac0f6cf3f61712830a7800348215f25f18a5f92fb5493e"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "83b894a00f7a3ae83b40be9540490453", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 psql \\d 命令中用于识别父触发器的查询", "evidence": {"same_day": true, "patch_ids": ["5d27576305f3d0ffb590a746a5dd6bde"], "statement_hash": "892dc45cdc9014a575ac0f6cf3f61712830a7800348215f25f18a5f92fb5493e"}, "url": "/docs/compare/?release=13.6#13.6-5840f139b1608d8f", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-7d692c6086bcd5f2", "cves": [], "html": "<p>使 <span>psql</span> 的 <code>\\d</code> 命令按名称而非 OID 排序表的扩展统计对象（Justin Pryzby）<a href=\"https://postgr.es/c/f5bea8360\">§</a></p>", "text": "使 psql 的 \\d 命令按名称而非 OID 排序表的扩展统计对象（Justin Pryzby）§", "title": "使 psql 的 \\d 命令按名称而非 OID 排序表的扩展统计对象", "commits": ["f5bea8360"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "58ceba4621e1513eb4cae0df801b047f27af8fab1d8031b6e64219ea535ed6d5", "section_path": ["变更"], "commit_groups": [["f5bea8360", "fe594abf7"]], "identity_text": "Make psql's \\d command sort a table's extended statistics objects by name not OID (Justin Pryzby)", "commit_aliases": ["f5bea8360", "fe594abf7"], "source_commits": ["f5bea8360"], "source_entry_id": "14.2/changes/042", "db_id": "e8dfc19641be19ea14e4be7e2e6160c4", "patch_ids": ["1578ad4cad570f8a2849270b66e5e637"], "statement_hash": "7db6e8c083b673c96dc3f8c0849f12f8d09d3ebb5b1eebb6f9175fed99f1e1b6", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-697dace403d3b991", "cves": [], "html": "<p>修复 <span>psql</span> 对枚举类型标签值的 Tab 补全（Tom Lane）<a href=\"https://postgr.es/c/d91d4338e\">§</a></p>", "text": "修复 psql 对枚举类型标签值的 Tab 补全（Tom Lane）§", "title": "修复 psql 对枚举类型标签值的 Tab 补全", "commits": ["d91d4338e"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "86646227d3d290b31610733ed84f48271270a616453b74853d68f2820db88f4c", "section_path": ["变更"], "commit_groups": [["90a847e6d", "d91d4338e", "fe7551744"]], "identity_text": "Fix psql's tab-completion of label values for enum types (Tom Lane)", "commit_aliases": ["90a847e6d", "d91d4338e", "fe7551744"], "source_commits": ["d91d4338e"], "source_entry_id": "14.2/changes/043", "db_id": "25058b6c57003b47fe304a09db495070", "patch_ids": ["85c74fbc7fa64553b61f45e12d241088"], "statement_hash": "0c2ff4c06bbbfd643a5375c29ed2067013966a0c3c3b9c2d49062525187f6ff6", "relations": [{"rule": 2, "type": "equivalent", "target": "7f3f2e0a10767a9eb35a52047c5b4b42", "evidence": {"same_day": true, "patch_ids": ["85c74fbc7fa64553b61f45e12d241088"], "statement_hash": "0c2ff4c06bbbfd643a5375c29ed2067013966a0c3c3b9c2d49062525187f6ff6"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f3f2e0a10767a9eb35a52047c5b4b42", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 psql 对枚举类型标签值的 Tab 补全", "evidence": {"same_day": true, "patch_ids": ["85c74fbc7fa64553b61f45e12d241088"], "statement_hash": "0c2ff4c06bbbfd643a5375c29ed2067013966a0c3c3b9c2d49062525187f6ff6"}, "url": "/docs/compare/?release=13.6#13.6-cf646c0847bb4da3", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}]}, {"id": "14.2-f7aad6a103ee15e9", "cves": [], "html": "<p>修复在 Windows 上使用终端作为数据源或目标时的失败（Dmitry Koval，Juan José Santamaría Flecha，Michael Paquier）<a href=\"https://postgr.es/c/d2198b459\">§</a> <a href=\"https://postgr.es/c/5550a9c38\">§</a></p>\n<p>这影响 <span>psql</span> 的 <code>\\copy</code> 命令，以及带有 <code>-f -</code> 的 <span>pg_recvlogical</span>。</p>", "text": "修复在 Windows 上使用终端作为数据源或目标时的失败（Dmitry Koval，Juan José Santamaría Flecha，Michael Paquier）§ § 这影响 psql 的 \\copy 命令，以及带有 -f - 的 pg_recvlogical。", "title": "修复在 Windows 上使用终端作为数据源或目标时的失败", "commits": ["5550a9c38", "d2198b459"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "6bc9c3528ab85d9a8c06784a689a788b93fa9ab5ac74983c59254ddc0d0fe6a7", "section_path": ["变更"], "commit_groups": [["10260c794", "d2198b459"], ["5550a9c38", "58651d8dd"]], "identity_text": "Fix failures on Windows when using the terminal as data source or destination (Dmitry Koval, Juan José Santamaría Flecha, Michael Paquier) This affects psql's \\copy command, as well as pg_recvlogical with -f -.", "commit_aliases": ["10260c794", "5550a9c38", "58651d8dd", "d2198b459"], "source_commits": ["5550a9c38", "d2198b459"], "source_entry_id": "14.2/changes/044", "db_id": "c7dff23b495b97ef5d1bb2c82f39f31a", "patch_ids": ["22dda8f6226724cd88a7885c6dafb984", "d839d9a5a331a0a3d0f98e39316d4b19"], "statement_hash": "c98755b745b7e425ca7b780f19fe63359d2b46487e52b22387eaa77506f03f0b", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-74283459e3ee0178", "cves": [], "html": "<p>在 <span>psql</span> 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 <code>gettext()</code>（Tom Lane）<a href=\"https://postgr.es/c/4e8726566\">§</a></p>\n<p>虽然没有已报告的失败可追溯到此错误，但这样做几乎不可能是安全的。</p>", "text": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()（Tom Lane）§ 虽然没有已报告的失败可追溯到此错误，但这样做几乎不可能是安全的。", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "commits": ["4e8726566"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "e99ada3ac98513640e597eae17c0c2e9c095737a99e57574e94302935b28e334", "section_path": ["变更"], "commit_groups": [["2131c049d", "4e8726566", "62bfa554b", "6d1a854c1", "92e6c1c9b", "d18ec312f"]], "identity_text": "In psql and some other client programs, avoid trying to invoke gettext() from a control-C signal handler (Tom Lane) While no reported failures have been traced to this mistake, it seems highly unlikely to be a safe thing to do.", "commit_aliases": ["2131c049d", "4e8726566", "62bfa554b", "6d1a854c1", "92e6c1c9b", "d18ec312f"], "source_commits": ["4e8726566"], "source_entry_id": "14.2/changes/045", "db_id": "312ae01f628686c8fbd78be0d62d01f4", "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69", "relations": [{"rule": 2, "type": "equivalent", "target": "37aa52c0f37aed6323482336d0a3fa1a", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}}, {"rule": 2, "type": "equivalent", "target": "d2544048b97f15efc5d1d94a9769cc76", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}}, {"rule": 2, "type": "equivalent", "target": "dd81ede7bc9d22fbbf70e4d7896d3105", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}}, {"rule": 2, "type": "equivalent", "target": "ea3ea98a591682809f642b99c9f7dba3", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "dd81ede7bc9d22fbbf70e4d7896d3105", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}, "url": "/docs/compare/?release=13.6#13.6-4a660a5011a14f27", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "37aa52c0f37aed6323482336d0a3fa1a", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}, "url": "/docs/compare/?release=12.10#12.10-6eb20bafdeefa6a5", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "d2544048b97f15efc5d1d94a9769cc76", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}, "url": "/docs/compare/?release=11.15#11.15-28ca354cb54d3373", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "ea3ea98a591682809f642b99c9f7dba3", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}, "url": "/docs/compare/?release=10.20#10.20-28ca354cb54d3373", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-bc3087b3722d70fc", "cves": [], "html": "<p>允许取消 <span>pg_receivewal</span> 和 <span>pg_recvlogical</span> 中的初始密码提示（Tom Lane，Nathan Bossart）<a href=\"https://postgr.es/c/3bd7556bb\">§</a></p>\n<p>之前在这些程序提示输入密码时无法通过 Ctrl-C 终止它们。</p>", "text": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示（Tom Lane，Nathan Bossart）§ 之前在这些程序提示输入密码时无法通过 Ctrl-C 终止它们。", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "commits": ["3bd7556bb"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "15c69148cc08af2224ffd923fda4ef98990af2bc85d39a6d6a2c4128c42193e8", "section_path": ["变更"], "commit_groups": [["282b6d00a", "33edf4a3c", "3bd7556bb", "3ce5d0884", "93295932d", "c2242d364"]], "identity_text": "Allow canceling the initial password prompt in pg_receivewal and pg_recvlogical (Tom Lane, Nathan Bossart) Previously it was impossible to terminate these programs via control-C while they were prompting for a password.", "commit_aliases": ["282b6d00a", "33edf4a3c", "3bd7556bb", "3ce5d0884", "93295932d", "c2242d364"], "source_commits": ["3bd7556bb"], "source_entry_id": "14.2/changes/046", "db_id": "cfccc237876315ee39750db65b9cf53e", "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416", "relations": [{"rule": 2, "type": "equivalent", "target": "6a1681b9e213913b7216a8740b8d8008", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}}, {"rule": 2, "type": "equivalent", "target": "aa83da2c53e983eedecca77ec02209ae", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}}, {"rule": 2, "type": "equivalent", "target": "c53751c7c334be5e96a114dceb8476f6", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}}, {"rule": 2, "type": "equivalent", "target": "eeb31efce1bcaf4eb179ec2bfc622f67", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c53751c7c334be5e96a114dceb8476f6", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}, "url": "/docs/compare/?release=13.6#13.6-02827deb1d8f4563", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "6a1681b9e213913b7216a8740b8d8008", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}, "url": "/docs/compare/?release=12.10#12.10-e27c741cf731bb76", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "eeb31efce1bcaf4eb179ec2bfc622f67", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}, "url": "/docs/compare/?release=11.15#11.15-2008da08b857d08a", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "aa83da2c53e983eedecca77ec02209ae", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}, "url": "/docs/compare/?release=10.20#10.20-2008da08b857d08a", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-b6538ff0586a0d84", "cves": [], "html": "<p>修复 <span>pg_dump</span> 对用户定义类型转换的转储顺序（Tom Lane）<a href=\"https://postgr.es/c/0fdf67476\">§</a></p>\n<p>在极少数情况下，输出脚本可能在用户定义类型转换被创建之前就引用了它。</p>", "text": "修复 pg_dump 对用户定义类型转换的转储顺序（Tom Lane）§ 在极少数情况下，输出脚本可能在用户定义类型转换被创建之前就引用了它。", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "commits": ["0fdf67476"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "9d58eec18555784ee9c5a0be078e212994d658f7388cd90c6d5c09dd8fb50ad6", "section_path": ["变更"], "commit_groups": [["0fdf67476", "2b36973d9", "54619a25d", "69949ea68", "b55f2b692", "d4f6a36d8"]], "identity_text": "Fix pg_dump's dump ordering for user-defined casts (Tom Lane) In rare cases, the output script might refer to a user-defined cast before it had been created.", "commit_aliases": ["0fdf67476", "2b36973d9", "54619a25d", "69949ea68", "b55f2b692", "d4f6a36d8"], "source_commits": ["0fdf67476"], "source_entry_id": "14.2/changes/047", "db_id": "c73f1aba1e86bd061e337e562306678f", "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb", "relations": [{"rule": 2, "type": "equivalent", "target": "72eed9190b395e011284743716f963c5", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}}, {"rule": 2, "type": "equivalent", "target": "9be0633436a9b2166bea9414e6b85cd4", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}}, {"rule": 2, "type": "equivalent", "target": "aadb60c93cfb5e9a3383236d6d98449c", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}}, {"rule": 2, "type": "equivalent", "target": "db01bca554a7ceb79aed44d07a65ba6d", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "db01bca554a7ceb79aed44d07a65ba6d", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}, "url": "/docs/compare/?release=13.6#13.6-847f8ad7e5efe2e7", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "aadb60c93cfb5e9a3383236d6d98449c", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}, "url": "/docs/compare/?release=12.10#12.10-ba262cb2e2c4d968", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "72eed9190b395e011284743716f963c5", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}, "url": "/docs/compare/?release=11.15#11.15-87a7c65809a4cd71", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "9be0633436a9b2166bea9414e6b85cd4", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}, "url": "/docs/compare/?release=10.20#10.20-87a7c65809a4cd71", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-a82c9c961a2c21db", "cves": [], "html": "<p>修复 <span>pg_dump</span> 的 <code>--inserts</code> 和 <code>--column-inserts</code> 模式以处理同时包含生成列和已删除列的表（Tom Lane）<a href=\"https://postgr.es/c/aedc4600d\">§</a> <a href=\"https://postgr.es/c/72842a575\">§</a></p>", "text": "修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表（Tom Lane）§ §", "title": "修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表", "commits": ["72842a575", "aedc4600d"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "69abe28a7efc4fd9143a5abbd84e2e6084d606e3e348ade6f1b8a9951743aaad", "section_path": ["变更"], "commit_groups": [["0b126c6a4", "1e7f588ad", "6fc8b145e", "aedc4600d"], ["22d2b6611", "72582531b", "72842a575", "b542e4596", "b599b8f39", "db3a660c6"]], "identity_text": "Fix pg_dump's --inserts and --column-inserts modes to handle tables containing both generated columns and dropped columns (Tom Lane)", "commit_aliases": ["0b126c6a4", "1e7f588ad", "22d2b6611", "6fc8b145e", "72582531b", "72842a575", "aedc4600d", "b542e4596", "b599b8f39", "db3a660c6"], "source_commits": ["72842a575", "aedc4600d"], "source_entry_id": "14.2/changes/048", "db_id": "562a38597bd86e286be3a3a54c084136", "patch_ids": ["13555be6773b5e3cb635e3a96e662f2f", "422677b514ffc74f177f6e57536c0cfa"], "statement_hash": "41d02f661e6a5d153b92192f358bfa041b0a4e87fbf8f31dba2e50133a404bcf", "relations": [{"rule": 2, "type": "equivalent", "target": "19493c411759ab76b9b84729b3e0e13d", "evidence": {"same_day": true, "patch_ids": ["13555be6773b5e3cb635e3a96e662f2f", "422677b514ffc74f177f6e57536c0cfa"], "statement_hash": "41d02f661e6a5d153b92192f358bfa041b0a4e87fbf8f31dba2e50133a404bcf"}}, {"rule": 2, "type": "equivalent", "target": "dcb69a229f862719edcdbdff71a9dbb4", "evidence": {"same_day": true, "patch_ids": ["13555be6773b5e3cb635e3a96e662f2f", "422677b514ffc74f177f6e57536c0cfa"], "statement_hash": "41d02f661e6a5d153b92192f358bfa041b0a4e87fbf8f31dba2e50133a404bcf"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "dcb69a229f862719edcdbdff71a9dbb4", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表", "evidence": {"same_day": true, "patch_ids": ["13555be6773b5e3cb635e3a96e662f2f", "422677b514ffc74f177f6e57536c0cfa"], "statement_hash": "41d02f661e6a5d153b92192f358bfa041b0a4e87fbf8f31dba2e50133a404bcf"}, "url": "/docs/compare/?release=13.6#13.6-0b7e0db17b06f94e", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "19493c411759ab76b9b84729b3e0e13d", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表", "evidence": {"same_day": true, "patch_ids": ["13555be6773b5e3cb635e3a96e662f2f", "422677b514ffc74f177f6e57536c0cfa"], "statement_hash": "41d02f661e6a5d153b92192f358bfa041b0a4e87fbf8f31dba2e50133a404bcf"}, "url": "/docs/compare/?release=12.10#12.10-52b8fb77a604ac4f", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}]}, {"id": "14.2-30c43ac017b4ea8d", "cves": [], "html": "<p>修复 <span>pg_dump</span> 和 <span>pg_basebackup</span> 中可能错误报告错误的问题（Tom Lane）<a href=\"https://postgr.es/c/53c4a580e\">§</a> <a href=\"https://postgr.es/c/6b413b41b\">§</a></p>\n<p>之前的代码未能检查某些内核调用的错误，并且在其他情况下可能报告错误的 errno 值。</p>", "text": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题（Tom Lane）§ § 之前的代码未能检查某些内核调用的错误，并且在其他情况下可能报告错误的 errno 值。", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "commits": ["53c4a580e", "6b413b41b"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "b8abde440334c9bdc7f7d19aee4a9844e9f43bccfcfe4ce26bc33d6e2c1fe2d0", "section_path": ["变更"], "commit_groups": [["12bf11889", "3cac2c8ca", "6b413b41b", "bbda88c33"], ["13799bb93", "248c3a937", "53c4a580e", "8378dad4c", "a414eb850", "c8b5221b5"]], "identity_text": "Fix possible mis-reporting of errors in pg_dump and pg_basebackup (Tom Lane) The previous code failed to check for errors from some kernel calls, and could report the wrong errno values in other cases.", "commit_aliases": ["12bf11889", "13799bb93", "248c3a937", "3cac2c8ca", "53c4a580e", "6b413b41b", "8378dad4c", "a414eb850", "bbda88c33", "c8b5221b5"], "source_commits": ["53c4a580e", "6b413b41b"], "source_entry_id": "14.2/changes/049", "db_id": "d4f698690f870dffacbeecc8713a0b52", "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46", "relations": [{"rule": 2, "type": "equivalent", "target": "0545e39302be21d3a0609ae723549064", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}, {"rule": 2, "type": "equivalent", "target": "39e7289518c605fbb031bfac93cfe4e0", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}, {"rule": 2, "type": "equivalent", "target": "4514ab4597d72767fa01ca9815f3676b", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}, {"rule": 2, "type": "equivalent", "target": "883afb080411efb9ae98687087cb38c4", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0545e39302be21d3a0609ae723549064", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}, "url": "/docs/compare/?release=13.6#13.6-e400f727e74b3c59", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "39e7289518c605fbb031bfac93cfe4e0", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}, "url": "/docs/compare/?release=12.10#12.10-95d1b0c9952bfc4e", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "883afb080411efb9ae98687087cb38c4", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}, "url": "/docs/compare/?release=11.15#11.15-1b4213230bd7a006", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "4514ab4597d72767fa01ca9815f3676b", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}, "url": "/docs/compare/?release=10.20#10.20-1b4213230bd7a006", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-428f08466b0aaaa7", "cves": [], "html": "<p>修复 <code>char(<em><code>N</code></em>)</code> 列上 <code>contrib/btree_gist</code> 索引的仅索引扫描结果（Tom Lane）<a href=\"https://postgr.es/c/043c1e1a7\">§</a></p>\n<p>仅索引扫描返回的列值去除了尾部空格，这不是预期的行为。这是因为数据就是以这种方式存储在索引中的。此修复更改代码以使用预期的空格填充来存储 <code>char(<em><code>N</code></em>)</code> 值。除非你执行 <code>REINDEX</code>，否则此类索引的行为不会立即改变；在更新过程中，去除空格的值将逐渐被替换。不使用仅索引扫描计划的查询在任何情况下都不受影响。</p>", "text": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果（Tom Lane）§ 仅索引扫描返回的列值去除了尾部空格，这不是预期的行为。这是因为数据就是以这种方式存储在索引中的。此修复更改代码以使用预期的空格填充来存储 char(N) 值。除非你执行 REINDEX，否则此类索引的行为不会立即改变；在更新过程中，去除空格的值将逐渐被替换。不使用仅索引扫描计划的查询在任何情况下都不受影响。", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "commits": ["043c1e1a7"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "76b863b73ba3a991182c03394f5bbe91c7db92b5d3da78c174e67e7b51ee788d", "section_path": ["变更"], "commit_groups": [["043c1e1a7", "38cbdd22d", "3a69d45af", "54b1cb7eb", "823d4c7e2", "b21986908"]], "identity_text": "Fix results of index-only scans on contrib/btree_gist indexes on char(N) columns (Tom Lane) Index-only scans returned column values with trailing spaces removed, which is not the expected behavior. That happened because that's how the data was stored in the index. This fix changes the code to store char(N) values with the expected amount of space padding. The behavior of such an index will not change immediately unless you REINDEX it; otherwise space-stripped values will be gradually replaced over time during updates. Queries that do not use index-only scan plans will be unaffected in any case.", "commit_aliases": ["043c1e1a7", "38cbdd22d", "3a69d45af", "54b1cb7eb", "823d4c7e2", "b21986908"], "source_commits": ["043c1e1a7"], "source_entry_id": "14.2/changes/050", "db_id": "3891eee4269b50ab61de96084586a9fa", "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0", "relations": [{"rule": 2, "type": "equivalent", "target": "c0154161a375b794afca8de5e9f0bc84", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}, {"rule": 2, "type": "equivalent", "target": "dbfab918acba23fe9652fe35f4cadcb6", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}, {"rule": 2, "type": "equivalent", "target": "e55f5070f5852aab2dea15f201e4ed0d", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}, {"rule": 2, "type": "equivalent", "target": "e6b1208933ac3e7d3ef5a32d4dfae473", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "e6b1208933ac3e7d3ef5a32d4dfae473", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}, "url": "/docs/compare/?release=13.6#13.6-60f8c4c632319538", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "c0154161a375b794afca8de5e9f0bc84", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}, "url": "/docs/compare/?release=12.10#12.10-1edd3b473816d39d", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "dbfab918acba23fe9652fe35f4cadcb6", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}, "url": "/docs/compare/?release=11.15#11.15-d20392782dcdf1ea", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "e55f5070f5852aab2dea15f201e4ed0d", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}, "url": "/docs/compare/?release=10.20#10.20-d20392782dcdf1ea", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-174fbb273186f0bb", "cves": [], "html": "<p>修复 <code>postgres_fdw</code> 处理异步查询时的边界情况（Etsuro Fujita）<a href=\"https://postgr.es/c/d1cca9441\">§</a> <a href=\"https://postgr.es/c/700e8fe6d\">§</a></p>\n<p>这些错误可能在尝试并行扫描外部表时导致崩溃或不正确的结果。</p>", "text": "修复 postgres_fdw 处理异步查询时的边界情况（Etsuro Fujita）§ § 这些错误可能在尝试并行扫描外部表时导致崩溃或不正确的结果。", "title": "修复 postgres_fdw 处理异步查询时的边界情况", "commits": ["700e8fe6d", "d1cca9441"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "0bbfae1af9aa75a9a637a4db1708c40e4c61d08de61f2d90aae2df5cb26bc553", "section_path": ["变更"], "commit_groups": [["6c07f9ebc", "700e8fe6d"], ["9e283fc85", "d1cca9441"]], "identity_text": "Fix edge cases in postgres_fdw's handling of asynchronous queries (Etsuro Fujita) These errors could lead to crashes or incorrect results when attempting to parallelize scans of foreign tables.", "commit_aliases": ["6c07f9ebc", "700e8fe6d", "9e283fc85", "d1cca9441"], "source_commits": ["700e8fe6d", "d1cca9441"], "source_entry_id": "14.2/changes/051", "db_id": "aab29572467f90965de33d931f00aa33", "patch_ids": ["02a65df6c31e8e43b1fcb81ac818a7ae", "3968f600a6a703fdbf8fa9efff2f361f"], "statement_hash": "df0795a207242eb038cb98f721a8a2dcfa11f14e4046e3720a4a9ee54080af24", "relations": [], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-86a3be5c3dc22f51", "cves": [], "html": "<p>更改 <span>configure</span> 以使用 Python 的 <span>sysconfig</span> 模块代替已弃用的 <span>distutils</span> 模块来确定如何构建 PL/Python（Peter Eisentraut，Tom Lane，Andres Freund）<a href=\"https://postgr.es/c/803f0b173\">§</a></p>\n<p>对于 Python 3.10，这避免了在 <span>configure</span> 时出现关于 <span>distutils</span> 已弃用并计划在 Python 3.12 中移除的警告。想必一旦 3.12 发布，<code>configure --with-python</code> 将会完全失败。这种面向未来的改进确实有一个代价：<span>sysconfig</span> 在 Python 2.7 之前不存在，在 Python 3 分支中在 3.2 之前也不存在，因此不再可能针对早已停止维护的 Python 版本构建 PL/Python。</p>", "text": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python（Peter Eisentraut，Tom Lane，Andres Freund）§ 对于 Python 3.10，这避免了在 configure 时出现关于 distutils 已弃用并计划在 Python 3.12 中移除的警告。想必一旦 3.12 发布，configure --with-python 将会完全失败。这种面向未来的改进确实有一个代价：sysconfig 在 Python 2.7 之前不存在，在 Python 3 分支中在 3.2 之前也不存在，因此不再可能针对早已停止维护的 Python 版本构建 PL/Python。", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "commits": ["803f0b173"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "56a49f3aeec70b7cdd9488e307e0422afbe06a801d6d3c0c76804332c139d980", "section_path": ["变更"], "commit_groups": [["4d7d196ff", "803f0b173", "a72c43012", "aa2215d6b", "bd233bdd8", "e41176bd6"]], "identity_text": "Change configure to use Python's sysconfig module, rather than the deprecated distutils module, to determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres Freund) With Python 3.10, this avoids configure-time warnings about distutils being deprecated and scheduled for removal in Python 3.12. Presumably, once 3.12 is out, configure --with-python would fail altogether. This future-proofing does come at a cost: sysconfig did not exist before Python 2.7, nor before 3.2 in the Python 3 branch, so it is no longer possible to build PL/Python against long-dead Python versions.", "commit_aliases": ["4d7d196ff", "803f0b173", "a72c43012", "aa2215d6b", "bd233bdd8", "e41176bd6"], "source_commits": ["803f0b173"], "source_entry_id": "14.2/changes/052", "db_id": "35308604eec5e17cf86e540668d0bb97", "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3", "relations": [{"rule": 2, "type": "equivalent", "target": "6575c0a3a5e7696b37917a7aa00a1fe0", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}}, {"rule": 2, "type": "equivalent", "target": "8f5f9065b07dfe76530953852679a6c2", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}}, {"rule": 2, "type": "equivalent", "target": "cd104a52ed9b478baa5b2fd6f6ba0df6", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}}, {"rule": 2, "type": "equivalent", "target": "e5f8d0d7a1840cdff9346c8a6796bd1d", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cd104a52ed9b478baa5b2fd6f6ba0df6", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}, "url": "/docs/compare/?release=13.6#13.6-1e8af647ff73e997", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "e5f8d0d7a1840cdff9346c8a6796bd1d", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}, "url": "/docs/compare/?release=12.10#12.10-bb059011c3952eed", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "6575c0a3a5e7696b37917a7aa00a1fe0", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}, "url": "/docs/compare/?release=11.15#11.15-96f7c4813d25f750", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "8f5f9065b07dfe76530953852679a6c2", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}, "url": "/docs/compare/?release=10.20#10.20-96f7c4813d25f750", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-c5558981a4a7ecf7", "cves": [], "html": "<p>重新允许在没有 <span>OpenSSL</span> 的情况下进行交叉编译（Tom Lane）<a href=\"https://postgr.es/c/175edafd1\">§</a></p>\n<p><span>configure</span> 应该假定目标系统上有 <code>/dev/urandom</code> 可用，但实际上却失败了。</p>", "text": "重新允许在没有 OpenSSL 的情况下进行交叉编译（Tom Lane）§ configure 应该假定目标系统上有 /dev/urandom 可用，但实际上却失败了。", "title": "重新允许在没有 OpenSSL 的情况下进行交叉编译", "commits": ["175edafd1"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "f560a391874dac5e57cf9ec1901e421d6b4f6021de9d0a46f3b22f002e2a3d6d", "section_path": ["变更"], "commit_groups": [["175edafd1", "b63710164"]], "identity_text": "Re-allow cross-compilation without OpenSSL (Tom Lane) configure should assume that /dev/urandom will be available on the target system, but it failed instead.", "commit_aliases": ["175edafd1", "b63710164"], "source_commits": ["175edafd1"], "source_entry_id": "14.2/changes/053", "db_id": "01b73921a279691611180d66a3e938ac", "patch_ids": ["12d63f405207cf9322cbb319457195eb"], "statement_hash": "b338b3621b214d3f3c9783765940dc7e36c4e7466d533ed8cd8e6581cbec2eb5", "relations": [], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "14.2-627fd5cb2b89f37d", "cves": [], "html": "<p>修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败（Victor Wagner）<a href=\"https://postgr.es/c/8484e3812\">§</a></p>", "text": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败（Victor Wagner）§", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "commits": ["8484e3812"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "eb1cdb0b83402cc5066dedfff4cfba87279b70de1cd250d716f7e741107178cc", "section_path": ["变更"], "commit_groups": [["0dc0fe7b6", "2557a03f8", "8484e3812", "ad95a639a", "c89f40974", "f173738d5"]], "identity_text": "Fix PL/Perl compile failure on Windows with Perl 5.28 and later (Victor Wagner)", "commit_aliases": ["0dc0fe7b6", "2557a03f8", "8484e3812", "ad95a639a", "c89f40974", "f173738d5"], "source_commits": ["8484e3812"], "source_entry_id": "14.2/changes/054", "db_id": "8d6baf531e215f8a072402ae365789d1", "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9", "relations": [{"rule": 2, "type": "equivalent", "target": "14d39d737ef3b8ff08f97f3a376b8c2e", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}}, {"rule": 2, "type": "equivalent", "target": "62fd56faadbe94d61da3dcdd06c226b1", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}}, {"rule": 2, "type": "equivalent", "target": "c3e3e800da305ed5949455967311a3b1", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}}, {"rule": 2, "type": "equivalent", "target": "cf6de335c517ee0115f5122a94bed039", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cf6de335c517ee0115f5122a94bed039", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}, "url": "/docs/compare/?release=13.6#13.6-5999b888f740dace", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "14d39d737ef3b8ff08f97f3a376b8c2e", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}, "url": "/docs/compare/?release=12.10#12.10-91ab34438772d051", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "c3e3e800da305ed5949455967311a3b1", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}, "url": "/docs/compare/?release=11.15#11.15-33a60c7ece98c31c", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "62fd56faadbe94d61da3dcdd06c226b1", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}, "url": "/docs/compare/?release=10.20#10.20-33a60c7ece98c31c", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-cd090e0a6a47e8bc", "cves": [], "html": "<p>修复在 Python 3.11 及更高版本上的 PL/Python 编译失败（Peter Eisentraut）<a href=\"https://postgr.es/c/1cc13b83e\">§</a></p>", "text": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败（Peter Eisentraut）§", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "commits": ["1cc13b83e"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "49406224493574695698dee9abfd5a0bd6b7b7af6adc8c3df30483cb57b1fc9c", "section_path": ["变更"], "commit_groups": [["04875ae92", "0d335cbd5", "1cc13b83e", "4339e10f0", "99e4d24a9", "a83b1bab0"]], "identity_text": "Fix PL/Python compile failure with Python 3.11 and later (Peter Eisentraut)", "commit_aliases": ["04875ae92", "0d335cbd5", "1cc13b83e", "4339e10f0", "99e4d24a9", "a83b1bab0"], "source_commits": ["1cc13b83e"], "source_entry_id": "14.2/changes/055", "db_id": "3910a9190a9096ab5ee5b9e712f36e78", "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102", "relations": [{"rule": 2, "type": "equivalent", "target": "13a04fb18f319baf0cb11dfb357a845e", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}}, {"rule": 2, "type": "equivalent", "target": "7b1f486dc301f3e6d6d8577142e50624", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}}, {"rule": 2, "type": "equivalent", "target": "c3d76301262c05d2eeb89dd4fef74911", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}}, {"rule": 2, "type": "equivalent", "target": "cc51e79e171e73873d1f720c845c6758", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}}], "version": "14.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cc51e79e171e73873d1f720c845c6758", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}, "url": "/docs/compare/?release=13.6#13.6-af0245c0acb29b17", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "13a04fb18f319baf0cb11dfb357a845e", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}, "url": "/docs/compare/?release=12.10#12.10-327f34dc5d14308b", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "c3d76301262c05d2eeb89dd4fef74911", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}, "url": "/docs/compare/?release=11.15#11.15-471d21c27f322d38", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "7b1f486dc301f3e6d6d8577142e50624", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}, "url": "/docs/compare/?release=10.20#10.20-471d21c27f322d38", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-4d53e4bd31504d36", "cves": [], "html": "<p>增加对使用 Visual Studio 2022 构建的支持（Hans Buschmann）<a href=\"https://postgr.es/c/0e681fa45\">§</a></p>", "text": "增加对使用 Visual Studio 2022 构建的支持（Hans Buschmann）§", "title": "增加对使用 Visual Studio 2022 构建的支持", "commits": ["0e681fa45"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "7948f026795e2442a5c0ece7c0cbab645882839c48c17f55c316ff34121ee00d", "section_path": ["变更"], "commit_groups": [["0e681fa45", "1061e41ff", "420d5e40b", "82881a9b9", "b2265d305", "baef657d3"]], "identity_text": "Add support for building with Visual Studio 2022 (Hans Buschmann)", "commit_aliases": ["0e681fa45", "1061e41ff", "420d5e40b", "82881a9b9", "b2265d305", "baef657d3"], "source_commits": ["0e681fa45"], "source_entry_id": "14.2/changes/056", "db_id": "7b3bd9bc50ecd5773c9a397fffb0c304", "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443", "relations": [{"rule": 2, "type": "equivalent", "target": "06c788e089a803781c51bd01dbdcd963", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}}, {"rule": 2, "type": "equivalent", "target": "3fcbfa1a55a79d20d519ca8e6dc5de17", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}}, {"rule": 2, "type": "equivalent", "target": "6fa75044ec137fbe6a2b518ab58b29a2", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}}, {"rule": 2, "type": "equivalent", "target": "fa47bdc36262034bc0dbbe6df7e51282", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "3fcbfa1a55a79d20d519ca8e6dc5de17", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "增加对使用 Visual Studio 2022 构建的支持", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}, "url": "/docs/compare/?release=13.6#13.6-cf38a7a54e0e5de1", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "06c788e089a803781c51bd01dbdcd963", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "增加对使用 Visual Studio 2022 构建的支持", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}, "url": "/docs/compare/?release=12.10#12.10-a5e4edbc625bac47", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "6fa75044ec137fbe6a2b518ab58b29a2", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "增加对使用 Visual Studio 2022 构建的支持", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}, "url": "/docs/compare/?release=11.15#11.15-5874cfe400f444dd", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "fa47bdc36262034bc0dbbe6df7e51282", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "增加对使用 Visual Studio 2022 构建的支持", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}, "url": "/docs/compare/?release=10.20#10.20-5874cfe400f444dd", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}, {"id": "14.2-793be1be62743d22", "cves": [], "html": "<p>允许 MSVC 构建系统中的 <code>.bat</code> 包装脚本无需先切换到其所在目录即可调用（Anton Voloshin，Andrew Dunstan）<a href=\"https://postgr.es/c/a7772e874\">§</a> <a href=\"https://postgr.es/c/156a846d9\">§</a></p>", "text": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用（Anton Voloshin，Andrew Dunstan）§ §", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "commits": ["156a846d9", "a7772e874"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42", "source_hash": "36b7714a3ecd2ee01e3e132d4d93c631b3826b43794aafb9ee1174cbae7c3cb1", "section_path": ["变更"], "commit_groups": [["0a79feeca", "156a846d9", "22d8c2570", "31680730e", "a5bd14d93", "f80900be0"], ["a4cde9153", "a7772e874", "c3879a7b4", "c7fa0f55d", "d897361c7", "f3ded9c46"]], "identity_text": "Allow the .bat wrapper scripts in our MSVC build system to be called without first changing into their directory (Anton Voloshin, Andrew Dunstan)", "commit_aliases": ["0a79feeca", "156a846d9", "22d8c2570", "31680730e", "a4cde9153", "a5bd14d93", "a7772e874", "c3879a7b4", "c7fa0f55d", "d897361c7", "f3ded9c46", "f80900be0"], "source_commits": ["156a846d9", "a7772e874"], "source_entry_id": "14.2/changes/057", "db_id": "f51ed18fa8b74327b7b0192f4117facd", "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a", "relations": [{"rule": 2, "type": "equivalent", "target": "357e1dce6f8e3fcf96ba664524b6357e", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}}, {"rule": 2, "type": "equivalent", "target": "5fe587481566a0b581b28aa2d1fc2f08", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}}, {"rule": 2, "type": "equivalent", "target": "baf4039910310a3004179932096ce9fb", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}}, {"rule": 2, "type": "equivalent", "target": "decb7196802a8995e15d6d5170ac6598", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}}], "version": "14.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "baf4039910310a3004179932096ce9fb", "kind": "equivalent", "version": "13.6", "label": "13.6", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}, "url": "/docs/compare/?release=13.6#13.6-c9d016367d2f2887", "source_url": "/docs/release/13.6/#id-1.11.6.23.5"}, {"db_id": "decb7196802a8995e15d6d5170ac6598", "kind": "equivalent", "version": "12.10", "label": "12.10", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}, "url": "/docs/compare/?release=12.10#12.10-8a10d70710c3e16e", "source_url": "/docs/release/12.10/#id-1.11.6.18.5"}, {"db_id": "357e1dce6f8e3fcf96ba664524b6357e", "kind": "equivalent", "version": "11.15", "label": "11.15", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}, "url": "/docs/compare/?release=11.15#11.15-02b5373b6a8421e0", "source_url": "/docs/release/11.15/#id-1.11.6.12.5"}, {"db_id": "5fe587481566a0b581b28aa2d1fc2f08", "kind": "equivalent", "version": "10.20", "label": "10.20", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}, "url": "/docs/compare/?release=10.20#10.20-02b5373b6a8421e0", "source_url": "/docs/release/10.20/#id-1.11.6.8.6"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 57}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 31}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 1}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 25}], "total": 57, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 57, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}