{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2022-02-10", "build": "10.20", "major": "10", "minor": 20, "manual": "10", "status": "stable", "doc_git": "", "version": "10.20", "eol_date": "2022-11-10", "date_text": "2022-02-10", "supported": false, "manual_url": "/docs/10/release-10-20.html", "source_url": "/docs/release/10.20/", "entry_count": 28, "placeholder": false, "content_hash": "ae2ba55825c4a8b81f7936d2a9ca41c0fb905a50a1f8bc80dfbe0d5943856d26", "manual_build": "10.23", "source_as_of": "", "changes_count": 28, "doc_loaded_at": "2026-09-26T02:56:43.207462", "migration_html": "<p>对于运行 10.X 的用户，不需要执行导出/恢复。</p>\n<p>但是，如果是从早于 10.19 的版本升级，请参见<a href=\"/docs/10/release-10-19.html\" title=\"E.5. 发布版本 10.19\">第 E.5 节</a>。</p>", "compatibility_count": 0, "label": "10.20", "status_label": "历史版本", "eol": "2022-11-10", "age_days": 1693, "support_days": -1420}, "groups": [{"date": "2022-02-10", "build": "10.20", "major": "10", "minor": 20, "manual": "10", "status": "stable", "doc_git": "", "version": "10.20", "eol_date": "2022-11-10", "date_text": "2022-02-10", "supported": false, "manual_url": "/docs/10/release-10-20.html", "source_url": "/docs/release/10.20/", "entry_count": 28, "placeholder": false, "content_hash": "ae2ba55825c4a8b81f7936d2a9ca41c0fb905a50a1f8bc80dfbe0d5943856d26", "manual_build": "10.23", "source_as_of": "", "changes_count": 28, "doc_loaded_at": "2026-09-26T02:56:43.207462", "migration_html": "<p>对于运行 10.X 的用户，不需要执行导出/恢复。</p>\n<p>但是，如果是从早于 10.19 的版本升级，请参见<a href=\"/docs/10/release-10-19.html\" title=\"E.5. 发布版本 10.19\">第 E.5 节</a>。</p>", "compatibility_count": 0, "label": "10.20", "status_label": "历史版本", "eol": "2022-11-10", "age_days": 1693, "support_days": -1420, "entries": [{"id": "10.20-806922f927b7d584", "cves": [], "html": "<p>修复当并非所有索引列都可返回时的仅索引扫描计划（Tom Lane）</p>\n<p>如果一个索引同时具有可返回列和不可返回列，且其中一个不可返回列是使用出现在可返回索引列中的表列的表达式，那么使用该表达式的查询可能会产生一个尝试读取不可返回列的仅索引扫描计划，而不是按预期从可返回列重新计算表达式。不可返回列将读取为 NULL，导致错误的查询结果。</p>", "text": "修复当并非所有索引列都可返回时的仅索引扫描计划（Tom Lane） 如果一个索引同时具有可返回列和不可返回列，且其中一个不可返回列是使用出现在可返回索引列中的表列的表达式，那么使用该表达式的查询可能会产生一个尝试读取不可返回列的仅索引扫描计划，而不是按预期从可返回列重新计算表达式。不可返回列将读取为 NULL，导致错误的查询结果。", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "8d0bd36834e6cc7891bbbe613bb7c5f63331a53efc76bf93cffc613e8e7f4df9", "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": ["70a31a0e3", "7d344f004"], "source_entry_id": "10.20/changes/001", "db_id": "3977d734db4098da431d57a7fdc66133", "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91", "relations": [{"rule": 2, "type": "equivalent", "target": "0c3546786dd2c50531ab322064119a54", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0c3546786dd2c50531ab322064119a54", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复当并非所有索引列都可返回时的仅索引扫描计划", "evidence": {"same_day": true, "patch_ids": ["6d6a4be5086626f54d18cda6266cba19", "760e4f485341b015946c41dd156f7932"], "statement_hash": "0eb73230454f43abdd194f1c7a2723c941bfef6f85f1ba751acac29a7b310f91"}, "url": "/docs/compare/?release=14.2#14.2-64f3cb827fa2f009", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-c0ed51fd463e361c", "cves": [], "html": "<p>确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用（Tom Lane）</p>\n<p>虽然强制函数应该做正确的事情（即什么都不做），但这种转换效率不必要地低下。</p>", "text": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用（Tom Lane） 虽然强制函数应该做正确的事情（即什么都不做），但这种转换效率不必要地低下。", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "981887287ffc1202cb654bf002b792aac0e37b83c527454534a010d4ca3f5ded", "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": ["1acf34586"], "source_entry_id": "10.20/changes/002", "db_id": "2a893e2cfd6603c7a75c0f088b5a6d60", "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d", "relations": [{"rule": 2, "type": "equivalent", "target": "2a7f8ea1f2220e76ca24779d0e546459", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "2a7f8ea1f2220e76ca24779d0e546459", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用", "evidence": {"same_day": true, "patch_ids": ["c28e7c0bf1d5d009f2e012a5a2fdae5e"], "statement_hash": "effe54fb67849059b520165d0bc2a8ff9433d63b67c41ce681780a957c1cc37d"}, "url": "/docs/compare/?release=14.2#14.2-a99150f111e767f4", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-b3b60040801ca437", "cves": [], "html": "<p>修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败（Álvaro Herrera）</p>", "text": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败（Álvaro Herrera）", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "5a0786e8014dcaacc051fad26ddd44bf078ccac4856d239f7ee32205ed9f4562", "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": ["72cf39d51"], "source_entry_id": "10.20/changes/003", "db_id": "2cc14dd2cde079eb0813d98ae4efc0eb", "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7", "relations": [{"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"}}, {"rule": 2, "type": "equivalent", "target": "c8ee9f05fcab261ea19e8e933fce2a56", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c8ee9f05fcab261ea19e8e933fce2a56", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败", "evidence": {"same_day": true, "patch_ids": ["afd24cd07c5f5b06f4a1e758059cb944"], "statement_hash": "9316113c43ed41782a5c3b28f3ba173d4cab64df113fad082125b66f139a86a7"}, "url": "/docs/compare/?release=14.2#14.2-6a2216d5121007db", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-028a149f048103a5", "cves": [], "html": "<p>修复物理副本的启动以容忍事务 ID 回卷（Abhijit Menon-Sen，Tomas Vondra）</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": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "293c785335b257ef25f5be24b3000dbd8f91f57a2e8d3b4b943c8a68c4aff705", "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": ["4ef38fbe8"], "source_entry_id": "10.20/changes/004", "db_id": "6fa4719966ba913196a04b36398afb6b", "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": "5e19ddb281299d561bac0326a173a9e8", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "5e19ddb281299d561bac0326a173a9e8", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复物理副本的启动以容忍事务 ID 回卷", "evidence": {"same_day": true, "patch_ids": ["21be964fe50f71e6d82659b01ea3f378"], "statement_hash": "e70f568730b7f58e3cdb9f89493055fe2b6262a942607c9523e5e685502510df"}, "url": "/docs/compare/?release=14.2#14.2-937704f82a03e216", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-c83544f428c06c8d", "cves": [], "html": "<p>移除在逻辑复制连接上发出的 SQL 命令的词法限制（Tom Lane）</p>\n<p>如果 SQL 命令包含未加引号的分号，或包含带有奇数个单引号或双引号的美元引用字面量，或以注释开头，walsender 进程就会失败。此外，错误恢复不正确也可能导致后续命令发生意外错误。</p>", "text": "移除在逻辑复制连接上发出的 SQL 命令的词法限制（Tom Lane） 如果 SQL 命令包含未加引号的分号，或包含带有奇数个单引号或双引号的美元引用字面量，或以注释开头，walsender 进程就会失败。此外，错误恢复不正确也可能导致后续命令发生意外错误。", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "6cc9ce57952bec6b9277ffeee77388f5d6fa3265621ed19f59f2a6e790e6f5d8", "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": ["9af6d4b5a", "daf658982"], "source_entry_id": "10.20/changes/005", "db_id": "702fbb9541c1100db24efa6c516ec49c", "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b", "relations": [{"rule": 2, "type": "equivalent", "target": "a6bb3449547ab2fe12c28aba92ca29c9", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}}, {"rule": 2, "type": "equivalent", "target": "b98ea3c8a532b6d7b0e925a6b6c75cf9", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b98ea3c8a532b6d7b0e925a6b6c75cf9", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "移除在逻辑复制连接上发出的 SQL 命令的词法限制", "evidence": {"same_day": true, "patch_ids": ["42ca0aa6a3655a1f62716d258e2406b6", "f025a3e43967cd493a53abf1ad69da60"], "statement_hash": "74357a6460815c3abf3d8c39a075609cb047397d9fea852fd18f587e9574d80b"}, "url": "/docs/compare/?release=14.2#14.2-34a8b0d995370b03", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-f3a9037e87d00abf", "cves": [], "html": "<p>修复事务的最后一个子事务的提交时间戳可能丢失的问题（Alex Kingsborough，Kyotaro Horiguchi）</p>", "text": "修复事务的最后一个子事务的提交时间戳可能丢失的问题（Alex Kingsborough，Kyotaro Horiguchi）", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "913d3828ca992df6a007b627996d271248b285e68f60d121abd0d1072fe4e2fc", "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": ["919be95c6"], "source_entry_id": "10.20/changes/006", "db_id": "c7e8f0b202e9f17e8eed39745cb6debd", "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae", "relations": [{"rule": 2, "type": "equivalent", "target": "15e4cdf07e04f4692c91156a3a5908bb", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}, {"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": "f7107e2d130e3710354c69e1af1dca32", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "15e4cdf07e04f4692c91156a3a5908bb", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复事务的最后一个子事务的提交时间戳可能丢失的问题", "evidence": {"same_day": true, "patch_ids": ["5e29229b3a41d4f5688448cc3ff3ce9a"], "statement_hash": "e37e21c1d32b098ac1c4d96a11585890ee50dc422f49080a5e9ebc6e47f654ae"}, "url": "/docs/compare/?release=14.2#14.2-1e7e518dc5790ff5", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-1f781ac2c4939236", "cves": [], "html": "<p>确保在检查点期间对 <code>pg_logical/mappings</code> 子目录执行 <code>fsync</code>（Nathan Bossart）</p>\n<p>在某些文件系统上，这一疏忽可能导致在系统崩溃后丢失逻辑重写状态文件。</p>", "text": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync（Nathan Bossart） 在某些文件系统上，这一疏忽可能导致在系统崩溃后丢失逻辑重写状态文件。", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "6867360fda5361879d9c5ff0e5ee0514401da62cd02482b5e2f239c99d8aefc2", "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": ["f862cc09f"], "source_entry_id": "10.20/changes/007", "db_id": "353fc59252a3b8ee5c068e5ae44976d5", "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db", "relations": [{"rule": 2, "type": "equivalent", "target": "72977b01e1df094cf40fd5ba331693af", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "72977b01e1df094cf40fd5ba331693af", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "确保在检查点期间对 pg_logical/mappings 子目录执行 fsync", "evidence": {"same_day": true, "patch_ids": ["5694260cf9b2bb223a04401f64c318f9"], "statement_hash": "1f1453bd8236e965be91e24abeb4e6f80bfbb755a93d5a93b1ba598d6872f3db"}, "url": "/docs/compare/?release=14.2#14.2-f45104475e56fc82", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-67870a7dff22dade", "cves": [], "html": "<p>为分区表构建扩展统计信息（Justin Pryzby）</p>\n<p>之前的一个错误修复禁用了为旧式继承树构建扩展统计信息，但它也阻止了为分区表构建这些统计信息，这是一个不必要的限制。此变更允许 <code>ANALYZE</code> 计算分区表的统计对象的值。（但请注意，自动清理本身不处理分区表，因此如果需要维护此类统计信息，必须定期对分区表发出手动 <code>ANALYZE</code>。）</p>", "text": "为分区表构建扩展统计信息（Justin Pryzby） 之前的一个错误修复禁用了为旧式继承树构建扩展统计信息，但它也阻止了为分区表构建这些统计信息，这是一个不必要的限制。此变更允许 ANALYZE 计算分区表的统计对象的值。（但请注意，自动清理本身不处理分区表，因此如果需要维护此类统计信息，必须定期对分区表发出手动 ANALYZE。）", "title": "为分区表构建扩展统计信息", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "2858b87c2fd27d39ed382047a7ee99abfc0e0335360362e1039f60971263d8cc", "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": ["9211c2e38"], "source_entry_id": "10.20/changes/008", "db_id": "c4acacecb3d0ac73df4d51781c2f252b", "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": "aae20dcb1ae1fa6bd3529412c04f97fb", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "aae20dcb1ae1fa6bd3529412c04f97fb", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "为分区表构建扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["5008b2ffcd6d0349e6db2417b953c8b6"], "statement_hash": "bc97ad1640073834e349e700728976f6f6967d08c4f1f7cfd2d053aa07de91e6"}, "url": "/docs/compare/?release=14.2#14.2-6916df499a6d9e97", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-10912216a6ee6584", "cves": [], "html": "<p>忽略继承树的扩展统计信息（Justin Pryzby）</p>\n<p>目前，扩展统计信息的值只是针对每个表本地计算的，而不是针对整个继承树。但是，在规划跨继承树的查询时，这些值被错误地参考了，可能导致比默认估计更差的结果。</p>", "text": "忽略继承树的扩展统计信息（Justin Pryzby） 目前，扩展统计信息的值只是针对每个表本地计算的，而不是针对整个继承树。但是，在规划跨继承树的查询时，这些值被错误地参考了，可能导致比默认估计更差的结果。", "title": "忽略继承树的扩展统计信息", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "7912764616026c0f1881f8618874383d390a184fa66fbf47c6d50c362b9c5412", "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": ["ff0e7c7e8"], "source_entry_id": "10.20/changes/009", "db_id": "3c7141c008821c2af8e2ddc97ba7103e", "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": "82d4f54d56de673bd30c82b48031e6ca", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}, {"rule": 2, "type": "equivalent", "target": "c91e705bc9c63403f2a68a5332385d72", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c91e705bc9c63403f2a68a5332385d72", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "忽略继承树的扩展统计信息", "evidence": {"same_day": true, "patch_ids": ["1a76dec3ba82f451e5040c344380c584"], "statement_hash": "eb32924f69c99c9546eadfceb8f59d8f321e57b348a93cb0e762d4483c0c8487"}, "url": "/docs/compare/?release=14.2#14.2-5a3b094ffe0486c4", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-b27284b3568a7888", "cves": [], "html": "<p>当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型（Tom Lane）</p>\n<p>这一限制对于普通表早已存在，但由于疏忽，对分区表未做检查。</p>", "text": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型（Tom Lane） 这一限制对于普通表早已存在，但由于疏忽，对分区表未做检查。", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "88c2ceea0c1d4864647ea2d75afa6cd85afe958571b79550cc2b33cf59c73b35", "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": ["e5b044c84"], "source_entry_id": "10.20/changes/010", "db_id": "9e3dd1393b83dffba6deb1f286edc44f", "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": "ccf6e7ed9a5f4c1b19f99ae662af15b6", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ccf6e7ed9a5f4c1b19f99ae662af15b6", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "当分区表的行类型在其他地方被用作复合类型时，禁止修改其列的数据类型", "evidence": {"same_day": true, "patch_ids": ["2ce4ffd927395a9e57aa907362ebc53a"], "statement_hash": "1c653a8768b9c658f71d14703c8351d2367bd31bcfd0f2036f035958fcd6fb5b"}, "url": "/docs/compare/?release=14.2#14.2-f83d313a8c8730e4", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-f229bfe85605d838", "cves": [], "html": "<p>禁止对作为副本标识索引一部分的列执行 <code>ALTER TABLE ... DROP NOT NULL</code>（Haiying Tang，Hou Zhijie）</p>\n<p>对于主键索引已经存在相同的禁止规则。</p>", "text": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL（Haiying Tang，Hou Zhijie） 对于主键索引已经存在相同的禁止规则。", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "acb9eca70b0a7858a92311758f23681ae7ee3173d21d713b7e3defa3b7bba60c", "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": ["817c469c2"], "source_entry_id": "10.20/changes/011", "db_id": "9eaa9fbd5ed4610197b51967455521dd", "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": "9aaada45efe13dbbd5639cea722957a4", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "9aaada45efe13dbbd5639cea722957a4", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL", "evidence": {"same_day": true, "patch_ids": ["8ce3d69167095be8298b4c35c85b0c7c"], "statement_hash": "4e81aeacf9acb2dfc15765c6e413de39aedacdcb33be099b233958cbcd628e7f"}, "url": "/docs/compare/?release=14.2#14.2-28ca15028588ec39", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-3448589edd418578", "cves": [], "html": "<p>在切换 <code>REPLICA IDENTITY</code> 索引时正确更新缓存的表状态（Tang Haiying，Hou Zhijie）</p>\n<p>并发会话未能更新其关于哪个索引是副本标识索引的判断，可能导致不正确的逻辑复制行为。</p>", "text": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态（Tang Haiying，Hou Zhijie） 并发会话未能更新其关于哪个索引是副本标识索引的判断，可能导致不正确的逻辑复制行为。", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "77abca92e0b4d1372ef629d96e2415bed144970277e559d78925a50885e7014c", "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": ["2c0443c59"], "source_entry_id": "10.20/changes/012", "db_id": "5ca4aa0bffa31b14b99d6599b93b687f", "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": "89dc1b256f0afc6b089d9df3d3e49da9", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "89dc1b256f0afc6b089d9df3d3e49da9", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态", "evidence": {"same_day": true, "patch_ids": ["66a4d84663fcea7f4a9b64afb656ead7"], "statement_hash": "5d8be96469fe1f59e118d33405de8d34495cdb1fce9f191f32539ec074837ea2"}, "url": "/docs/compare/?release=14.2#14.2-9fa55932b4079ce8", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-b19db14a059ca107", "cves": [], "html": "<p>避免在重新分配大量对象所有权的 <code>REASSIGN OWNED BY</code> 操作期间泄漏内存（Justin Pryzby）</p>", "text": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存（Justin Pryzby）", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "eaa6cfea29526b220a1594ca3caa850f8a51b8772dfa0267ff873d47215e5b9a", "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": ["fec187dc3"], "source_entry_id": "10.20/changes/013", "db_id": "a71f47eb94e35b9d5bd1b645de958939", "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": "7f3d22b6629a39b9172eca6526953aef", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f3d22b6629a39b9172eca6526953aef", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存", "evidence": {"same_day": true, "patch_ids": ["37389d29cbd3332b5562ed64a2d78fad"], "statement_hash": "cf5649ab73e8296f37f54dcc6c9210fd47af428027f5831aa1dbd646abaa2c7f"}, "url": "/docs/compare/?release=14.2#14.2-098d2ff1710ec9e2", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-8e2d21a6b95633e6", "cves": [], "html": "<p>修复出现在 <code>INSERT ... VALUES</code> 规则中的整行变量的显示（Tom Lane）</p>\n<p>整行变量会被打印为 <span>“<span>var.*</span>”</span>，但这允许在规则重新加载时将其展开为各个列，导致不同的语义。附加显式类型转换以防止这种情况，正如我们在其他地方所做的那样。</p>", "text": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示（Tom Lane） 整行变量会被打印为 “var.*”，但这允许在规则重新加载时将其展开为各个列，导致不同的语义。附加显式类型转换以防止这种情况，正如我们在其他地方所做的那样。", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "7f90aa9c668c5f8671b44f6781f33fe672077359cce94ab71b6c1c9d59e0e658", "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": ["3433a1fc7"], "source_entry_id": "10.20/changes/014", "db_id": "c630bddef5091737f500382c58d35124", "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": "06ea6dd217acc1044df7252b3c6403d8", "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"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "06ea6dd217acc1044df7252b3c6403d8", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复出现在 INSERT ... VALUES 规则中的整行变量的显示", "evidence": {"same_day": true, "patch_ids": ["10016c48c392ca321ec7b0ec029262f0"], "statement_hash": "051f78aa8f1b46e7fd1cb6cabb206923a29fae04d79d5064034cd5ebb5a5e739"}, "url": "/docs/compare/?release=14.2#14.2-02b98708eeb2cb49", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-fa57d971c2953099", "cves": [], "html": "<p>修复或移除一些不正确的断言（Simon Riggs，Michael Paquier，Alexander Lakhin）</p>\n<p>这些错误应该只影响调试构建，不影响生产环境。</p>", "text": "修复或移除一些不正确的断言（Simon Riggs，Michael Paquier，Alexander Lakhin） 这些错误应该只影响调试构建，不影响生产环境。", "title": "修复或移除一些不正确的断言", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "cf5e8dd39917d5526a9faf38ce3a143abef6305eaf34d59fbfec15ebdda3508a", "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": ["026a93727", "2e577c944", "4a8282425", "ece8c7619"], "source_entry_id": "10.20/changes/015", "db_id": "8acbefd35a3150a6fd49ba21ea43a2c9", "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": "caa33f6dfae24228955cb4409f9591f8", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "caa33f6dfae24228955cb4409f9591f8", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复或移除一些不正确的断言", "evidence": {"same_day": true, "patch_ids": ["e3a133f8f71a03785c4daec0b2078bba", "ea3bafa68b1c79d6d628ba9113e4c613", "f30cc8f3d5c4b1d61aeed19029a3e19a", "f898984782ea530315bc420e7ae60fa4"], "statement_hash": "269e94682c47bf30c4ced2e5004361ae311cc5a2c8392c1cd86643397769cfb3"}, "url": "/docs/compare/?release=14.2#14.2-32f44551b75f3534", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-3835054eedd5b8ad", "cves": [], "html": "<p>修复在多线程使用 <span>libpq</span> 或 <span>ecpglib</span> 早期报告的错误消息本地化失败的竞态条件（Tom Lane）</p>", "text": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件（Tom Lane）", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "ccae09cc67e0ffc44c68ffa094614fa7aa6015134d112b726b00801b51c28678", "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": ["0c7c94f90"], "source_entry_id": "10.20/changes/016", "db_id": "72f5d6a3c9065640cf57e7eac14b873f", "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb", "relations": [{"rule": 2, "type": "equivalent", "target": "179bbfac9e1a7f101bf6b5b1b793f278", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}}, {"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"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "179bbfac9e1a7f101bf6b5b1b793f278", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件", "evidence": {"same_day": true, "patch_ids": ["291c96a6e5cdb0e775f37d82c03ff284"], "statement_hash": "38c4ab2848c04c017f282aa34141cd5f591b0d60a661434e7a97f5c535293ceb"}, "url": "/docs/compare/?release=14.2#14.2-31af7e967c9886de", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-951a7587c3962a51", "cves": [], "html": "<p>避免从 <span>libpq</span> 的 <code>PQcancel</code> 函数中调用 <code>strerror</code>（Tom Lane）</p>\n<p><code>PQcancel</code> 应该可以安全地从信号处理程序中调用，但 <code>strerror</code> 不是安全的。这一错误用法仅在向服务器发送取消消息失败的不太可能的情况下才会发生，这也许解释了为什么没有相关报告。</p>", "text": "避免从 libpq 的 PQcancel 函数中调用 strerror（Tom Lane） PQcancel 应该可以安全地从信号处理程序中调用，但 strerror 不是安全的。这一错误用法仅在向服务器发送取消消息失败的不太可能的情况下才会发生，这也许解释了为什么没有相关报告。", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "7f4b58ac394795c418b94de867c2c0d1e6fe6f25689fe29470824dbdd57fcccb", "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": ["9d66c43eb"], "source_entry_id": "10.20/changes/017", "db_id": "c49de34fc6ec14b670436080a5f786bd", "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d", "relations": [{"rule": 2, "type": "equivalent", "target": "0513bf329f57f0ccc6396002eebe6830", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}}, {"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"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0513bf329f57f0ccc6396002eebe6830", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "避免从 libpq 的 PQcancel 函数中调用 strerror", "evidence": {"same_day": true, "patch_ids": ["e574dbc63a73eb38ad4e954d2923de41"], "statement_hash": "bddc059f60b29bdc960f7f36da8ff94f038127a5d5b295f3572911d5c07b805d"}, "url": "/docs/compare/?release=14.2#14.2-baf26e78d93d5f4d", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-d46e6601c7bc7fb4", "cves": [], "html": "<p>使 <span>psql</span> 的 <code>\\password</code> 命令默认设置 <code>CURRENT_USER</code> 的密码，而非连接的原始用户名（Tom Lane）</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": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "bb777a61c3a46a67145343ea2d6aee619a28b11d0f9f732226b654d21c6f8611", "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": ["3bc46e4e9"], "source_entry_id": "10.20/changes/018", "db_id": "4714c55d46149586b5d119ffc253a68f", "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae", "relations": [{"rule": 2, "type": "equivalent", "target": "84776f05de41df5238bb064738cd3a15", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "84776f05de41df5238bb064738cd3a15", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "使 psql 的 \\password 命令默认设置 CURRENT_USER 的密码，而非连接的原始用户名", "evidence": {"same_day": true, "patch_ids": ["c349f48ffad73008dc649739097e7b5b"], "statement_hash": "138af04193df6d38c372ce6872a1ea514a395e352428b55f70de73dbfa8fb5ae"}, "url": "/docs/compare/?release=14.2#14.2-58f8defda56b9983", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-28ca354cb54d3373", "cves": [], "html": "<p>在 <span>psql</span> 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 <code>gettext()</code>（Tom Lane）</p>\n<p>虽然没有已报告的失败可追溯到此错误，但这样做几乎不可能是安全的。</p>", "text": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()（Tom Lane） 虽然没有已报告的失败可追溯到此错误，但这样做几乎不可能是安全的。", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "8decdd5aa7fb0af905f93e90dcff34bdb290f6db1d48992882b0a04618ee4cb5", "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": ["62bfa554b"], "source_entry_id": "10.20/changes/019", "db_id": "ea3ea98a591682809f642b99c9f7dba3", "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69", "relations": [{"rule": 2, "type": "equivalent", "target": "312ae01f628686c8fbd78be0d62d01f4", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}}, {"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"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "312ae01f628686c8fbd78be0d62d01f4", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "在 psql 和其他一些客户端程序中，避免在 Ctrl-C 信号处理程序中尝试调用 gettext()", "evidence": {"same_day": true, "patch_ids": ["d3d696ce857e05183ad7d7d24f0a1067"], "statement_hash": "1a9ec1ec7a3c3dd555b08443ef8de8b018891816e9f70d07c794564fb046ce69"}, "url": "/docs/compare/?release=14.2#14.2-74283459e3ee0178", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-2008da08b857d08a", "cves": [], "html": "<p>允许取消 <span>pg_receivewal</span> 和 <span>pg_recvlogical</span> 中的初始密码提示（Tom Lane，Nathan Bossart）</p>\n<p>之前在这些程序提示输入密码时无法通过 Ctrl-C 终止它们。</p>", "text": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示（Tom Lane，Nathan Bossart） 之前在这些程序提示输入密码时无法通过 Ctrl-C 终止它们。", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "565bbea0be6c0a09a1093ce9e21e234831665c946e0b7f69955c3971591b7402", "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": ["3ce5d0884"], "source_entry_id": "10.20/changes/020", "db_id": "aa83da2c53e983eedecca77ec02209ae", "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": "c53751c7c334be5e96a114dceb8476f6", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}}, {"rule": 2, "type": "equivalent", "target": "cfccc237876315ee39750db65b9cf53e", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cfccc237876315ee39750db65b9cf53e", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示", "evidence": {"same_day": true, "patch_ids": ["45a975fe3124f0c6801da9a95fd8e72e"], "statement_hash": "b6941078b99b6a88a69507a9ea8f2de23f192f79de8d59cd08899f894d7aa416"}, "url": "/docs/compare/?release=14.2#14.2-bc3087b3722d70fc", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-87a7c65809a4cd71", "cves": [], "html": "<p>修复 <span>pg_dump</span> 对用户定义类型转换的转储顺序（Tom Lane）</p>\n<p>在极少数情况下，输出脚本可能在用户定义类型转换被创建之前就引用了它。</p>", "text": "修复 pg_dump 对用户定义类型转换的转储顺序（Tom Lane） 在极少数情况下，输出脚本可能在用户定义类型转换被创建之前就引用了它。", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "f506fb11484d1538033360937bedf77d275eb8988deb7b75d1d321dcbc7377cd", "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": ["2b36973d9"], "source_entry_id": "10.20/changes/021", "db_id": "9be0633436a9b2166bea9414e6b85cd4", "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": "aadb60c93cfb5e9a3383236d6d98449c", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}}, {"rule": 2, "type": "equivalent", "target": "c73f1aba1e86bd061e337e562306678f", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c73f1aba1e86bd061e337e562306678f", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复 pg_dump 对用户定义类型转换的转储顺序", "evidence": {"same_day": true, "patch_ids": ["e12fb6e77fcc4c97c954d511f65c482e"], "statement_hash": "d0d997ce7fe7c916864276b63126c62cba25251a4e299e3d17d55f0f6fea1bbb"}, "url": "/docs/compare/?release=14.2#14.2-b6538ff0586a0d84", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-1b4213230bd7a006", "cves": [], "html": "<p>修复 <span>pg_dump</span> 和 <span>pg_basebackup</span> 中可能错误报告错误的问题（Tom Lane）</p>\n<p>之前的代码未能检查某些内核调用的错误，并且在其他情况下可能报告错误的 errno 值。</p>", "text": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题（Tom Lane） 之前的代码未能检查某些内核调用的错误，并且在其他情况下可能报告错误的 errno 值。", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "da607d504258fcfd91d577e7a5eee2275c5835654920723ecd672a5098eafc36", "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": ["13799bb93", "3cac2c8ca"], "source_entry_id": "10.20/changes/022", "db_id": "4514ab4597d72767fa01ca9815f3676b", "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": "883afb080411efb9ae98687087cb38c4", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}, {"rule": 2, "type": "equivalent", "target": "d4f698690f870dffacbeecc8713a0b52", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "d4f698690f870dffacbeecc8713a0b52", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题", "evidence": {"same_day": true, "patch_ids": ["dd961137b321f7ff94d0824bd324035a", "ebf11e9edbefe0418df4bbc6a0cccb52"], "statement_hash": "93314841ae6b2fe7f5b77ed2246646519142fac3e8b6c6b6df89f40bb8f2ca46"}, "url": "/docs/compare/?release=14.2#14.2-30c43ac017b4ea8d", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-d20392782dcdf1ea", "cves": [], "html": "<p>修复 <code>char(<em><code>N</code></em>)</code> 列上 <code>contrib/btree_gist</code> 索引的仅索引扫描结果（Tom Lane）</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": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "aba4cb4f249e8fd6454f15bc4d1d20ec68a27c6935e667627ae66e76a989f433", "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": ["b21986908"], "source_entry_id": "10.20/changes/023", "db_id": "e55f5070f5852aab2dea15f201e4ed0d", "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0", "relations": [{"rule": 2, "type": "equivalent", "target": "3891eee4269b50ab61de96084586a9fa", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}, {"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": "e6b1208933ac3e7d3ef5a32d4dfae473", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}}], "version": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "3891eee4269b50ab61de96084586a9fa", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果", "evidence": {"same_day": true, "patch_ids": ["e63d9a4e56d10ab4fb3c60dc7ad26680"], "statement_hash": "cb779a0f1247638625893ef73cd2d7e2c16c73155d6631536c3c122191c60fc0"}, "url": "/docs/compare/?release=14.2#14.2-428f08466b0aaaa7", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-96f7c4813d25f750", "cves": [], "html": "<p>更改 <span>configure</span> 以使用 Python 的 <span>sysconfig</span> 模块代替已弃用的 <span>distutils</span> 模块来确定如何构建 PL/Python（Peter Eisentraut，Tom Lane，Andres Freund）</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": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "29e815aa2d72ec498a614a4a613bc9da328cf0815484246a153984c982556e6d", "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": ["a72c43012"], "source_entry_id": "10.20/changes/024", "db_id": "8f5f9065b07dfe76530953852679a6c2", "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3", "relations": [{"rule": 2, "type": "equivalent", "target": "35308604eec5e17cf86e540668d0bb97", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}}, {"rule": 2, "type": "equivalent", "target": "6575c0a3a5e7696b37917a7aa00a1fe0", "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": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "35308604eec5e17cf86e540668d0bb97", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python", "evidence": {"same_day": true, "patch_ids": ["17633f3b2e2107e99afa3a585ed0e74a"], "statement_hash": "bf905188b73d06f5cb2ecbe3d4b271f988be37a013dbcc8164a5af135ab9eff3"}, "url": "/docs/compare/?release=14.2#14.2-86a3be5c3dc22f51", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-33a60c7ece98c31c", "cves": [], "html": "<p>修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败（Victor Wagner）</p>", "text": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败（Victor Wagner）", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "69ee218e0fc73cee87d70879bacf3695b3418663971d9eaf429946d3998c4f54", "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": ["2557a03f8"], "source_entry_id": "10.20/changes/025", "db_id": "62fd56faadbe94d61da3dcdd06c226b1", "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": "8d6baf531e215f8a072402ae365789d1", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8d6baf531e215f8a072402ae365789d1", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败", "evidence": {"same_day": true, "patch_ids": ["b6bf3209370dcb328129d84ea5053166"], "statement_hash": "fa72a662ece43386bd3ae9823da55d714693d60e4a1bcbfa8adc30fb42ad76c9"}, "url": "/docs/compare/?release=14.2#14.2-627fd5cb2b89f37d", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-471d21c27f322d38", "cves": [], "html": "<p>修复在 Python 3.11 及更高版本上的 PL/Python 编译失败（Peter Eisentraut）</p>", "text": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败（Peter Eisentraut）", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "cefccc0a20ba113d76e5e9ea5b2292efccac9575db5d3346dc2ce4292741dac2", "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": ["4339e10f0"], "source_entry_id": "10.20/changes/026", "db_id": "7b1f486dc301f3e6d6d8577142e50624", "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": "3910a9190a9096ab5ee5b9e712f36e78", "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": "10.20", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "3910a9190a9096ab5ee5b9e712f36e78", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "修复在 Python 3.11 及更高版本上的 PL/Python 编译失败", "evidence": {"same_day": true, "patch_ids": ["7d4135084d39bc7e2e106621eaa276df"], "statement_hash": "7e781dcd910c484fd2707d645511b009a406b02f2e6b79a36e1668e6128cd102"}, "url": "/docs/compare/?release=14.2#14.2-cd090e0a6a47e8bc", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-5874cfe400f444dd", "cves": [], "html": "<p>增加对使用 Visual Studio 2022 构建的支持（Hans Buschmann）</p>", "text": "增加对使用 Visual Studio 2022 构建的支持（Hans Buschmann）", "title": "增加对使用 Visual Studio 2022 构建的支持", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "c3dde795c8bdfa5c42fee016c76695e46b30c2f13d91f6d57aaccf0edf9dc499", "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": ["82881a9b9"], "source_entry_id": "10.20/changes/027", "db_id": "fa47bdc36262034bc0dbbe6df7e51282", "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": "7b3bd9bc50ecd5773c9a397fffb0c304", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7b3bd9bc50ecd5773c9a397fffb0c304", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "增加对使用 Visual Studio 2022 构建的支持", "evidence": {"same_day": true, "patch_ids": ["d582ea74e4193a4c295e06a50423dc1f"], "statement_hash": "d804a77ca9d95c3910c2b2ccdb42f2330a1f70cbe3f2d7e38d958d109eb56443"}, "url": "/docs/compare/?release=14.2#14.2-4d53e4bd31504d36", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}, {"id": "10.20-02b5373b6a8421e0", "cves": [], "html": "<p>允许 MSVC 构建系统中的 <code>.bat</code> 包装脚本无需先切换到其所在目录即可调用（Anton Voloshin，Andrew Dunstan）</p>", "text": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用（Anton Voloshin，Andrew Dunstan）", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/10.20/#id-1.11.6.8.6", "source_hash": "1fd1c330c21ef22f8931227f55ceb2197a74d75b47ecf35cb1d423eb353d7094", "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": ["a5bd14d93", "d897361c7"], "source_entry_id": "10.20/changes/028", "db_id": "5fe587481566a0b581b28aa2d1fc2f08", "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": "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"}}, {"rule": 2, "type": "equivalent", "target": "f51ed18fa8b74327b7b0192f4117facd", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}}], "version": "10.20", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "f51ed18fa8b74327b7b0192f4117facd", "kind": "equivalent", "version": "14.2", "label": "14.2", "title": "允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用", "evidence": {"same_day": true, "patch_ids": ["98acb3e9fc6789bc2f255f99063a4f36", "d98a5c9a09005beb37472a230e016339"], "statement_hash": "74a0fa9ad0431273e05110a03879fb26b425d24655a8ae3840f8c1cb5b78399a"}, "url": "/docs/compare/?release=14.2#14.2-793be1be62743d22", "source_url": "/docs/release/14.2/#ZH-AUTO-RELEASE-14-SECT2-42"}, {"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"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 28}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 13}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 15}], "total": 28, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 28, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}