{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2020-08-13", "build": "9.6.19", "major": "9.6", "minor": 19, "manual": "9.6", "status": "stable", "doc_git": "", "version": "9.6.19", "eol_date": "2021-11-11", "date_text": "2020-08-13", "supported": false, "manual_url": "/docs/9.6/release-9-6-19.html", "source_url": "/docs/release/9.6.19/", "entry_count": 27, "placeholder": false, "content_hash": "b945aad531f3d3e0c77e1eeddb891028abbdda3992c5e8d27474d92b881677cc", "manual_build": "9.6.24", "source_as_of": "", "changes_count": 27, "doc_loaded_at": "2026-09-26T02:56:43.973460", "migration_html": "<p>对于运行 9.6.X 的用户，不需要转储/恢复。</p>\n<p>不过，如果你是从 9.6.16 之前的版本升级，参见<a href=\"/docs/9.6/release-9-6-16.html\" title=\"E.9. 版本 9.6.16\">第 E.9 节</a>。</p>", "compatibility_count": 0, "label": "9.6.19", "status_label": "历史版本", "eol": "2021-11-11", "age_days": 2239, "support_days": -1784}, "groups": [{"date": "2020-08-13", "build": "9.6.19", "major": "9.6", "minor": 19, "manual": "9.6", "status": "stable", "doc_git": "", "version": "9.6.19", "eol_date": "2021-11-11", "date_text": "2020-08-13", "supported": false, "manual_url": "/docs/9.6/release-9-6-19.html", "source_url": "/docs/release/9.6.19/", "entry_count": 27, "placeholder": false, "content_hash": "b945aad531f3d3e0c77e1eeddb891028abbdda3992c5e8d27474d92b881677cc", "manual_build": "9.6.24", "source_as_of": "", "changes_count": 27, "doc_loaded_at": "2026-09-26T02:56:43.973460", "migration_html": "<p>对于运行 9.6.X 的用户，不需要转储/恢复。</p>\n<p>不过，如果你是从 9.6.16 之前的版本升级，参见<a href=\"/docs/9.6/release-9-6-16.html\" title=\"E.9. 版本 9.6.16\">第 E.9 节</a>。</p>", "compatibility_count": 0, "label": "9.6.19", "status_label": "历史版本", "eol": "2021-11-11", "age_days": 2239, "support_days": -1784, "entries": [{"id": "9.6.19-781ce435b7e40fa2", "cves": ["CVE-2018-1058", "CVE-2020-14350"], "html": "<p>使 contrib 模块的安装脚本更安全（Tom Lane）</p>\n<p>如果攻击者能在扩展的目标模式或某个前置扩展的模式中创建对象，就可以对扩展安装脚本发动类似 CVE-2018-1058 所述的攻击。由于扩展的安装通常需要超级用户权限，这就开辟了一条获得超级用户权限的路径。为降低此风险，我们更加谨慎地处理运行安装脚本所用的 <code>search_path</code>；在脚本内禁用 <code>check_function_bodies</code>；并修复部分 contrib 模块中使用的目录调整查询以确保其安全。同时提供文档帮助第三方扩展作者使其安装脚本安全。这不是完整的解决方案；依赖其他扩展的扩展如果安装时不小心，仍然可能有风险。（CVE-2020-14350）</p>", "text": "使 contrib 模块的安装脚本更安全（Tom Lane） 如果攻击者能在扩展的目标模式或某个前置扩展的模式中创建对象，就可以对扩展安装脚本发动类似 CVE-2018-1058 所述的攻击。由于扩展的安装通常需要超级用户权限，这就开辟了一条获得超级用户权限的路径。为降低此风险，我们更加谨慎地处理运行安装脚本所用的 search_path；在脚本内禁用 check_function_bodies；并修复部分 contrib 模块中使用的目录调整查询以确保其安全。同时提供文档帮助第三方扩展作者使其安装脚本安全。这不是完整的解决方案；依赖其他扩展的扩展如果安装时不小心，仍然可能有风险。（CVE-2020-14350）", "title": "使 contrib 模块的安装脚本更安全", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "641f118ab88a1eae885f23e308fa24073b7b643ec64a145a8a06c5e41680e1d5", "section_path": ["变更"], "commit_groups": [["2ea8a60fc", "3ba967084", "6b11a4687", "7eeb1d986", "96cbfe92d", "98ca64899", "afa358786"]], "identity_text": "Make contrib modules' installation scripts more secure (Tom Lane) Attacks similar to those described in CVE-2018-1058 could be carried out against an extension installation script, if the attacker can create objects in either the extension's target schema or the schema of some prerequisite extension. Since extensions often require superuser privilege to install, this can open a path to obtaining superuser privilege. To mitigate this risk, be more careful about the search_path used to run an installation script; disable check_function_bodies within the script; and fix catalog-adjustment queries used in some contrib modules to ensure they are secure. Also provide documentation to help third-party extension authors make their installation scripts secure. This is not a complete solution; extensions that depend on other extensions can still be at risk if installed carelessly. (CVE-2020-14350)", "commit_aliases": ["2ea8a60fc", "3ba967084", "6b11a4687", "7eeb1d986", "96cbfe92d", "98ca64899", "afa358786"], "source_commits": ["2ea8a60fc"], "source_entry_id": "9.6.19/changes/001", "db_id": "719efe348b34d6b22cc8b21765cddeb0", "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf", "relations": [{"rule": 2, "type": "equivalent", "target": "18cf5409de16d861fde3ac6d27bd135e", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}}, {"rule": 2, "type": "equivalent", "target": "6f776698fb9e7668f490543cb90859bb", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}}, {"rule": 2, "type": "equivalent", "target": "8377f2e90aa926ed72be984f89dc8aa4", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}}, {"rule": 2, "type": "equivalent", "target": "b3ef8ce8154cffacc73ec6326dbc1607", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}}], "version": "9.6.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "8377f2e90aa926ed72be984f89dc8aa4", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "提高 contrib 模块安装脚本的安全性", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}, "url": "/docs/compare/?release=12.4#12.4-5dfe16e1743c0c3d", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "6f776698fb9e7668f490543cb90859bb", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "提高 contrib 模块安装脚本的安全性", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}, "url": "/docs/compare/?release=11.9#11.9-3ae0ed313be57173", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "b3ef8ce8154cffacc73ec6326dbc1607", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "提高 contrib 模块安装脚本的安全性", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}, "url": "/docs/compare/?release=10.14#10.14-3ae0ed313be57173", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "18cf5409de16d861fde3ac6d27bd135e", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "使 contrib 模块的安装脚本更安全", "evidence": {"same_day": true, "patch_ids": ["ee963513d01d5da2f56347e9a5e977d1"], "statement_hash": "72bc96feb7b321b3936e8e59c3c9140d5205fa59dcccfd38f357e6419436a7cf"}, "url": "/docs/compare/?release=9.5.23#9.5.23-781ce435b7e40fa2", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-37a06f1dc47f50aa", "cves": [], "html": "<p>修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题（Álvaro Herrera）</p>\n<p>在使用内置逻辑复制时这是个相对次要的问题，因为内置 walreceiver 本来就会相当频繁地发送反馈应答（从而清除错误状态）。但在使用 <span>pglogical</span> 等其他复制系统时，它会导致显著的性能问题。</p>", "text": "修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题（Álvaro Herrera） 在使用内置逻辑复制时这是个相对次要的问题，因为内置 walreceiver 本来就会相当频繁地发送反馈应答（从而清除错误状态）。但在使用 pglogical 等其他复制系统时，它会导致显著的性能问题。", "title": "修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "63a075b4a274ce32cf770e7b98ea05afd71e3e822d104be87e754b4ecbcf1c7a", "section_path": ["变更"], "commit_groups": [["1fa6eec97", "470687b4a", "55d42c917", "85cb4ec50", "900429d0c", "ca8e87ea0", "d81387da9"]], "identity_text": "In logical replication walsender, fix failure to send feedback messages after sending a keepalive message (Álvaro Herrera) This is a relatively minor problem when using built-in logical replication, because the built-in walreceiver will send a feedback reply (which clears the incorrect state) fairly frequently anyway. But with some other replication systems, such as pglogical, it causes significant performance issues.", "commit_aliases": ["1fa6eec97", "470687b4a", "55d42c917", "85cb4ec50", "900429d0c", "ca8e87ea0", "d81387da9"], "source_commits": ["55d42c917"], "source_entry_id": "9.6.19/changes/002", "db_id": "26d0301c25e8ff9458d315d4fd36dc12", "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305", "relations": [{"rule": 2, "type": "equivalent", "target": "0f8294d4511e6191c83434f1d7d3f675", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}}, {"rule": 2, "type": "equivalent", "target": "bf7ce45c7e479e2754cb90d6dc92e697", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}}, {"rule": 2, "type": "equivalent", "target": "cabe354a4208fbcbb835fca837dc4c3f", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}}, {"rule": 2, "type": "equivalent", "target": "e90504cd0a2ff10b93ddac26b1dfa3dc", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0f8294d4511e6191c83434f1d7d3f675", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "在逻辑复制 WAL 发送进程中，修复发送保活消息后未能发送反馈消息的问题", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}, "url": "/docs/compare/?release=12.4#12.4-87adc0f482e81c62", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "e90504cd0a2ff10b93ddac26b1dfa3dc", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "在逻辑复制 WAL 发送进程中，修复发送保活消息后未能发送反馈消息的问题", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}, "url": "/docs/compare/?release=11.9#11.9-e4ea67f7f949aa8d", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "cabe354a4208fbcbb835fca837dc4c3f", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "在逻辑复制 WAL 发送进程中，修复发送保活消息后未能发送反馈消息的问题", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}, "url": "/docs/compare/?release=10.14#10.14-e4ea67f7f949aa8d", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "bf7ce45c7e479e2754cb90d6dc92e697", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题", "evidence": {"same_day": true, "patch_ids": ["838ee285907cf70653d5136c563a4a64"], "statement_hash": "78da1dce2a46c2301983dd99575b9c7d468b780be37c0d23a591172aa024a305"}, "url": "/docs/compare/?release=9.5.23#9.5.23-37a06f1dc47f50aa", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-fba032e16a76b93b", "cves": [], "html": "<p>修复 <code>ts_headline()</code> 执行缓慢的问题（Tom Lane）</p>\n<p>上一批小版本中加入的短语搜索修复可能导致 <code>ts_headline()</code> 对长文档花费不合理的时间；更糟的是，该查询在有问题的循环内不可取消。</p>", "text": "修复 ts_headline() 执行缓慢的问题（Tom Lane） 上一批小版本中加入的短语搜索修复可能导致 ts_headline() 对长文档花费不合理的时间；更糟的是，该查询在有问题的循环内不可取消。", "title": "修复 ts_headline() 执行缓慢的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "ddb905b3de74b4d997efb740a98982f7f0c61037f6ac1c592f6d9c6415619c80", "section_path": ["变更"], "commit_groups": [["11dce63d6", "5e724125a", "70248d8f5", "78e73e875", "8ab00b9fe", "da596fb4b"]], "identity_text": "Fix slow execution of ts_headline() (Tom Lane) The phrase-search fix added in our previous set of minor releases could cause ts_headline() to take unreasonable amounts of time for long documents; to make matters worse, the query was not cancellable within the troublesome loop.", "commit_aliases": ["11dce63d6", "5e724125a", "70248d8f5", "78e73e875", "8ab00b9fe", "da596fb4b"], "source_commits": ["8ab00b9fe"], "source_entry_id": "9.6.19/changes/003", "db_id": "2903b0e2b8b517aa2358e9c39bd0edef", "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd", "relations": [{"rule": 2, "type": "equivalent", "target": "3a6bd7f257642f29dfd5b17705d8273e", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}}, {"rule": 2, "type": "equivalent", "target": "af3cb895615673e2019ab1a456e05cbc", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}}, {"rule": 2, "type": "equivalent", "target": "c01eed12150b02f68a4db66c612558b1", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "3a6bd7f257642f29dfd5b17705d8273e", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 ts_headline() 执行缓慢的问题", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}, "url": "/docs/compare/?release=12.4#12.4-0483a3a3f7fc0ce4", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "af3cb895615673e2019ab1a456e05cbc", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 ts_headline() 执行缓慢的问题", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}, "url": "/docs/compare/?release=11.9#11.9-fba032e16a76b93b", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "c01eed12150b02f68a4db66c612558b1", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 ts_headline() 执行缓慢的问题", "evidence": {"same_day": true, "patch_ids": ["8322acde7b8b6b69b09ff453a5c47bad"], "statement_hash": "0f7876de56ba91c7213ee4d7ef5c736c75448ebe1c88943bd7af2114630f61bd"}, "url": "/docs/compare/?release=10.14#10.14-fba032e16a76b93b", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}]}, {"id": "9.6.19-3dea74ebc61ab921", "cves": [], "html": "<p>确保 <code>repeat()</code> 函数可以被查询取消中断（Joe Conway）</p>", "text": "确保 repeat() 函数可以被查询取消中断（Joe Conway）", "title": "确保 repeat() 函数可以被查询取消中断", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "c4c870bb6c01fbafbd3d5ad5e7c7d102aa67305159bc6116fc59c6130cef41e6", "section_path": ["变更"], "commit_groups": [["28e2c6eac", "2cbe3a954", "36758c472", "3ccae5445", "887cdff4d", "bfb9595a7"]], "identity_text": "Ensure the repeat() function can be interrupted by query cancel (Joe Conway)", "commit_aliases": ["28e2c6eac", "2cbe3a954", "36758c472", "3ccae5445", "887cdff4d", "bfb9595a7"], "source_commits": ["28e2c6eac"], "source_entry_id": "9.6.19/changes/004", "db_id": "2894d36583a162925688dafe9493c932", "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558", "relations": [{"rule": 2, "type": "equivalent", "target": "15590131856ea79ace85971af4f361ce", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}}, {"rule": 2, "type": "equivalent", "target": "4d5a1085e5fe26c29b807e655f12e460", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}}, {"rule": 2, "type": "equivalent", "target": "d9948925bfe5a457879a410568ae0724", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}}, {"rule": 2, "type": "equivalent", "target": "d9d7373454e44d4651cf6d3584ec5cd2", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d9948925bfe5a457879a410568ae0724", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "确保 repeat() 函数可以被查询取消中断", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}, "url": "/docs/compare/?release=12.4#12.4-1696fc1f133a0290", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "d9d7373454e44d4651cf6d3584ec5cd2", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "确保 repeat() 函数可以被查询取消中断", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}, "url": "/docs/compare/?release=11.9#11.9-3dea74ebc61ab921", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "15590131856ea79ace85971af4f361ce", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "确保 repeat() 函数可以被查询取消中断", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}, "url": "/docs/compare/?release=10.14#10.14-3dea74ebc61ab921", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "4d5a1085e5fe26c29b807e655f12e460", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "确保 repeat() 函数可以被查询取消中断", "evidence": {"same_day": true, "patch_ids": ["dbe397e5b04b09dc9905e418f5e5447b"], "statement_hash": "80f387e3113963f9e5f61df238bc01044b908d1c7118370baa5fd727e5e76558"}, "url": "/docs/compare/?release=9.5.23#9.5.23-3dea74ebc61ab921", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-7cf193c4e5adfe9e", "cves": [], "html": "<p>修复 <code>numeric</code> 类型列并行聚合时对 <code>NaN</code> 输入的错误处理（Tom Lane）</p>\n<p>如果某些部分聚合工作者只遇到 <code>NaN</code> 而另一些只遇到非 <code>NaN</code>，结果的合并是错误的，可能导致错误的总体结果（即本应为 <code>NaN</code> 时不是）。</p>", "text": "修复 numeric 类型列并行聚合时对 NaN 输入的错误处理（Tom Lane） 如果某些部分聚合工作者只遇到 NaN 而另一些只遇到非 NaN，结果的合并是错误的，可能导致错误的总体结果（即本应为 NaN 时不是）。", "title": "修复 numeric 类型列并行聚合时对 NaN 输入的错误处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "7c806206db96dcf2d04ca90d1674abdb1e2b77eb41686b43d1a9bfc2addff2c0", "section_path": ["变更"], "commit_groups": [["36df06e25", "411a4626e", "4284e1184", "49e0a42dd", "77a3be32f", "ee788ba99"]], "identity_text": "Fix mis-handling of NaN inputs during parallel aggregation on numeric-type columns (Tom Lane) If some partial aggregation workers found only NaNs while others found only non-NaNs, the results were combined incorrectly, possibly leading to the wrong overall result (i.e., not NaN when it should be).", "commit_aliases": ["36df06e25", "411a4626e", "4284e1184", "49e0a42dd", "77a3be32f", "ee788ba99"], "source_commits": ["36df06e25"], "source_entry_id": "9.6.19/changes/005", "db_id": "54421606eedc972d78b8211ccef16057", "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5", "relations": [{"rule": 2, "type": "equivalent", "target": "115465b505e68c4f7ee5a54b04440a2f", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}}, {"rule": 2, "type": "equivalent", "target": "8816f5a56079fd900dbc62d961f15191", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}}, {"rule": 2, "type": "equivalent", "target": "d86e84f2c21284e9036e37da06e39c2f", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "d86e84f2c21284e9036e37da06e39c2f", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复对 numeric 类型列进行并行聚合时对 NaN 输入的错误处理", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}, "url": "/docs/compare/?release=12.4#12.4-61e54fcb719bd8df", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "8816f5a56079fd900dbc62d961f15191", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复对 numeric 类型列进行并行聚合时对 NaN 输入的错误处理", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}, "url": "/docs/compare/?release=11.9#11.9-538b1f2a7b50c47f", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "115465b505e68c4f7ee5a54b04440a2f", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复对 numeric 类型列进行并行聚合时对 NaN 输入的错误处理", "evidence": {"same_day": true, "patch_ids": ["6b493e5a0009b33497690821d4cd18a3"], "statement_hash": "276c0fb2fb3bf4049e914f7a786c802044a803f579e8a686a079d33226ae9dd5"}, "url": "/docs/compare/?release=10.14#10.14-538b1f2a7b50c47f", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}]}, {"id": "9.6.19-a6a7ef93c2c1dc36", "cves": [], "html": "<p>撤销 <code>EXPLAIN</code> 非文本输出格式中对索引名的双重引号（Tom Lane、Euler Taveira）</p>", "text": "撤销 EXPLAIN 非文本输出格式中对索引名的双重引号（Tom Lane、Euler Taveira）", "title": "撤销 EXPLAIN 非文本输出格式中对索引名的双重引号", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "9789ce8ceb15ed285c8bccd1e8b6b3e840380254c5f3e5835d07296e0069536f", "section_path": ["变更"], "commit_groups": [["35a8e227e", "57f8b9913", "63d2ac23b", "6d9f7a094", "bd53ea2b2", "d3d875518", "dda25c599"]], "identity_text": "Undo double-quoting of index names in EXPLAIN's non-text output formats (Tom Lane, Euler Taveira)", "commit_aliases": ["35a8e227e", "57f8b9913", "63d2ac23b", "6d9f7a094", "bd53ea2b2", "d3d875518", "dda25c599"], "source_commits": ["bd53ea2b2"], "source_entry_id": "9.6.19/changes/006", "db_id": "59ad7e26b0dbce1e812dfd5c4323c057", "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c", "relations": [{"rule": 2, "type": "equivalent", "target": "011162654ab589bcdcdc140fdaf08bac", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}}, {"rule": 2, "type": "equivalent", "target": "22d4b5a3aaf064d42438c0ab2b0aa8bc", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}}, {"rule": 2, "type": "equivalent", "target": "83aea5e38bc3569d62122d9c586ba273", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}}, {"rule": 2, "type": "equivalent", "target": "ddb6a1a686d5e87d667272bf9f2be994", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ddb6a1a686d5e87d667272bf9f2be994", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "撤销 EXPLAIN 非文本输出格式中为索引名称添加双引号的行为", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}, "url": "/docs/compare/?release=12.4#12.4-5b4591cebb679f3a", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "83aea5e38bc3569d62122d9c586ba273", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "撤销 EXPLAIN 非文本输出格式中为索引名称添加双引号的行为", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}, "url": "/docs/compare/?release=11.9#11.9-3d9a2136bc15fdbb", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "011162654ab589bcdcdc140fdaf08bac", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "撤销 EXPLAIN 非文本输出格式中为索引名称添加双引号的行为", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}, "url": "/docs/compare/?release=10.14#10.14-3d9a2136bc15fdbb", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "22d4b5a3aaf064d42438c0ab2b0aa8bc", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "撤销 EXPLAIN 非文本输出格式中对索引名的双重引号", "evidence": {"same_day": true, "patch_ids": ["3dcb6f38666b8f8fc786881aae1a8f73"], "statement_hash": "156c0c86e9280a437e95682cbe16ec3a72beb945ead97808f01aeb4df6dca95c"}, "url": "/docs/compare/?release=9.5.23#9.5.23-a6a7ef93c2c1dc36", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-85e01238f9ff3c85", "cves": [], "html": "<p>修复 <code>ALTER TABLE</code> 中约束重新验证的时机（David Rowley）</p>\n<p>如果 <code>ALTER TABLE</code> 既需要完全重写表内容（例如因为更改列的数据类型），又需要扫描表以重新验证外键或 <code>CHECK</code> 约束，它有时会以错误的顺序行事，导致诸如 <span>“<span>could not read block 0 in file \"base/nnnnn/nnnnn\": read only 0 of 8192 bytes</span>”</span> 之类的奇怪错误。</p>", "text": "修复 ALTER TABLE 中约束重新验证的时机（David Rowley） 如果 ALTER TABLE 既需要完全重写表内容（例如因为更改列的数据类型），又需要扫描表以重新验证外键或 CHECK 约束，它有时会以错误的顺序行事，导致诸如 “could not read block 0 in file \"base/nnnnn/nnnnn\": read only 0 of 8192 bytes” 之类的奇怪错误。", "title": "修复 ALTER TABLE 中约束重新验证的时机", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "f909317eb0e1e8c5fc231fef9f0ed301433c1e5e7dc2d4e08450b4f5e9da883a", "section_path": ["变更"], "commit_groups": [["1231a0b0e", "4e02f88a4", "b82730429", "c732df133", "d2761b680", "e20003fa0", "f1fcf2d3b"]], "identity_text": "Fix timing of constraint revalidation in ALTER TABLE (David Rowley) If ALTER TABLE needs to fully rewrite the table's contents (for example, due to change of a column's data type) and also needs to scan the table to re-validate foreign keys or CHECK constraints, it sometimes did things in the wrong order, leading to odd errors such as could not read block 0 in file \"base/nnnnn/nnnnn\": read only 0 of 8192 bytes.", "commit_aliases": ["1231a0b0e", "4e02f88a4", "b82730429", "c732df133", "d2761b680", "e20003fa0", "f1fcf2d3b"], "source_commits": ["c732df133"], "source_entry_id": "9.6.19/changes/007", "db_id": "7ed9ce2430e727ad9838dcfd2cfb5bdb", "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c", "relations": [{"rule": 2, "type": "equivalent", "target": "0274fabb0bf25d05d42e8ffe40c0f534", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}}, {"rule": 2, "type": "equivalent", "target": "18f5d381707525c995a95b216fb986ab", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}}, {"rule": 2, "type": "equivalent", "target": "650585e53a9a45b27f8e5169b83839a8", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}}, {"rule": 2, "type": "equivalent", "target": "d9ed901b6505a3d692a1664fb900b5d2", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "18f5d381707525c995a95b216fb986ab", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 ALTER TABLE 中重新验证约束的时机", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}, "url": "/docs/compare/?release=12.4#12.4-d59e20076dcde465", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "d9ed901b6505a3d692a1664fb900b5d2", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 ALTER TABLE 中重新验证约束的时机", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}, "url": "/docs/compare/?release=11.9#11.9-82fef7cf6beac3ff", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "650585e53a9a45b27f8e5169b83839a8", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 ALTER TABLE 中重新验证约束的时机", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}, "url": "/docs/compare/?release=10.14#10.14-82fef7cf6beac3ff", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "0274fabb0bf25d05d42e8ffe40c0f534", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 ALTER TABLE 中约束重新验证的时机", "evidence": {"same_day": true, "patch_ids": ["be0b530bb3bbcfe75ad800c4de8c01cc"], "statement_hash": "14e4c4d9c85acc0b496a4b265809a1fcb471b1e6b160dd5e4d3b39009cabe84c"}, "url": "/docs/compare/?release=9.5.23#9.5.23-85e01238f9ff3c85", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-f1fe92045666a9c2", "cves": [], "html": "<p>正确处理 <code>FROM</code> 子句中未展平子 <code>SELECT</code> 上附加的限定子句中的 <code>LATERAL</code> 引用（Tom Lane）</p>\n<p>这一疏漏可能导致查询执行时的断言失败或崩溃。</p>", "text": "正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用（Tom Lane） 这一疏漏可能导致查询执行时的断言失败或崩溃。", "title": "正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "1dc1103f67c34fa219ed45884f54556815bb4d9395425fdab5526bd36ae37d94", "section_path": ["变更"], "commit_groups": [["0734dbc45", "3753df8f8", "6443cd2e2", "80d8f6d1d", "a742ecf9c", "d3b642ad9", "dc6bb0994"]], "identity_text": "Cope with LATERAL references in restriction clauses attached to an un-flattened sub-SELECT in the FROM clause (Tom Lane) This oversight could result in assertion failures or crashes at query execution.", "commit_aliases": ["0734dbc45", "3753df8f8", "6443cd2e2", "80d8f6d1d", "a742ecf9c", "d3b642ad9", "dc6bb0994"], "source_commits": ["dc6bb0994"], "source_entry_id": "9.6.19/changes/008", "db_id": "91d8f4ed8ce0a5718851159438cb8a31", "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe", "relations": [{"rule": 2, "type": "equivalent", "target": "d8c7357f304b21f9fc1ebf108bbf6a5a", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}}, {"rule": 2, "type": "equivalent", "target": "e606d5a48ac34be50b0f673b8d4782f3", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}}, {"rule": 2, "type": "equivalent", "target": "fded70ef2a9174c6d7c72c000533182c", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}}, {"rule": 2, "type": "equivalent", "target": "ff4bab21f50db780d6cd4d93f8659b2c", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d8c7357f304b21f9fc1ebf108bbf6a5a", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "处理附加到 FROM 子句中未扁平化的子 SELECT 上的限制子句里的 LATERAL 引用", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}, "url": "/docs/compare/?release=12.4#12.4-1f16cdd10f8a5230", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "ff4bab21f50db780d6cd4d93f8659b2c", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "处理附加到 FROM 子句中未扁平化的子 SELECT 上的限制子句里的 LATERAL 引用", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}, "url": "/docs/compare/?release=11.9#11.9-d6df8bcf969a57d0", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "e606d5a48ac34be50b0f673b8d4782f3", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "处理附加到 FROM 子句中未扁平化的子 SELECT 上的限制子句里的 LATERAL 引用", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}, "url": "/docs/compare/?release=10.14#10.14-d6df8bcf969a57d0", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "fded70ef2a9174c6d7c72c000533182c", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用", "evidence": {"same_day": true, "patch_ids": ["76aa4cd9f96f3951664a29a6e03efa0a"], "statement_hash": "6aaf7fb09bf7d0ed8f0129c28a10df00d91d1e13a018ac16e5d8f79dbe278abe"}, "url": "/docs/compare/?release=9.5.23#9.5.23-f1fe92045666a9c2", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-ae76464e5d135a1e", "cves": [], "html": "<p>避免认为从未分析过的外部表有零个元组（Tom Lane）</p>\n<p>这主要影响规划器对 <code>GROUP BY</code> 将得到的分组数的估计。</p>", "text": "避免认为从未分析过的外部表有零个元组（Tom Lane） 这主要影响规划器对 GROUP BY 将得到的分组数的估计。", "title": "避免认为从未分析过的外部表有零个元组", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "00a24459b51d2f60394ca719703fe441c7f2bf3de00ebf37648c744169a82252", "section_path": ["变更"], "commit_groups": [["153c14cdd", "5144a40f3", "69a3fe6e6", "9233624b1", "ca5e93f76", "d83d59e42", "ef799bdd0"]], "identity_text": "Avoid believing that a never-analyzed foreign table has zero tuples (Tom Lane) This primarily affected the planner's estimate of the number of groups that would be obtained by GROUP BY.", "commit_aliases": ["153c14cdd", "5144a40f3", "69a3fe6e6", "9233624b1", "ca5e93f76", "d83d59e42", "ef799bdd0"], "source_commits": ["69a3fe6e6"], "source_entry_id": "9.6.19/changes/009", "db_id": "509f6265362c993246154f7e6d416f7b", "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc", "relations": [{"rule": 2, "type": "equivalent", "target": "025fc1c7ae7c871b4afc7e1f16e37657", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}}, {"rule": 2, "type": "equivalent", "target": "132ce6a798fd1a76c44f79f80e7cc51f", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}}, {"rule": 2, "type": "equivalent", "target": "5629ff9fbbbff59243125adbc75788a8", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}}, {"rule": 2, "type": "equivalent", "target": "7fc348056e7166c8dd44664a79827fbe", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7fc348056e7166c8dd44664a79827fbe", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "避免认为从未分析过的外部表具有零个元组", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}, "url": "/docs/compare/?release=12.4#12.4-e1a1948006c90799", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "5629ff9fbbbff59243125adbc75788a8", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "避免认为从未分析过的外部表具有零个元组", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}, "url": "/docs/compare/?release=11.9#11.9-c7ffcf70bb332364", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "132ce6a798fd1a76c44f79f80e7cc51f", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "避免认为从未分析过的外部表具有零个元组", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}, "url": "/docs/compare/?release=10.14#10.14-c7ffcf70bb332364", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "025fc1c7ae7c871b4afc7e1f16e37657", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "避免认为从未分析过的外部表有零个元组", "evidence": {"same_day": true, "patch_ids": ["fd340f8bf089002ade33d19a7c76826e"], "statement_hash": "a56d32ce8f1efc3401e21bbba4ad88925758252d0b4fe2dbcde6ceaa0b1c31fc"}, "url": "/docs/compare/?release=9.5.23#9.5.23-ae76464e5d135a1e", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-44ca8519b07ffb6e", "cves": [], "html": "<p>改进服务器 <code>buffile</code> 模块中的错误处理（Thomas Munro）</p>\n<p>修复了一些 I/O 错误与到达 EOF 无法区分、或者根本不被报告的情况。还在适当之处添加了块号和字节数等细节。</p>", "text": "改进服务器 buffile 模块中的错误处理（Thomas Munro） 修复了一些 I/O 错误与到达 EOF 无法区分、或者根本不被报告的情况。还在适当之处添加了块号和字节数等细节。", "title": "改进服务器 buffile 模块中的错误处理", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "88a943dbae0b9006fcaf90297bcf7d6c640adad9dbd4bf16985955fe3d91225b", "section_path": ["变更"], "commit_groups": [["028f0c3a8", "3725c8ce4", "42dee8b8e", "47adb2488", "6b366190d", "8bf4e69a7", "fac4145bf"], ["02b71f06b", "28ee12669", "3e0b08c40", "7897e3bb9", "89020a92f", "95647a1c7", "9c14d6024"]], "identity_text": "Improve error handling in the server's buffile module (Thomas Munro) Fix some cases where I/O errors were indistinguishable from reaching EOF, or were not reported at all. Also add details such as block numbers and byte counts where appropriate.", "commit_aliases": ["028f0c3a8", "02b71f06b", "28ee12669", "3725c8ce4", "3e0b08c40", "42dee8b8e", "47adb2488", "6b366190d", "7897e3bb9", "89020a92f", "8bf4e69a7", "95647a1c7", "9c14d6024", "fac4145bf"], "source_commits": ["02b71f06b", "47adb2488"], "source_entry_id": "9.6.19/changes/010", "db_id": "14be8fb2c3f982fe6b1b6dbcbb0ff804", "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa", "relations": [{"rule": 2, "type": "equivalent", "target": "3c69e549c4dfbe5e9ac8979f5d13b214", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}}, {"rule": 2, "type": "equivalent", "target": "42f60f7617299a4bf6748fafe11efad2", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}}, {"rule": 2, "type": "equivalent", "target": "cfae48ffbb34b721ed501b88a22ec505", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}}, {"rule": 2, "type": "equivalent", "target": "dba1ef7cc327183b7c89863c61a64da1", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "dba1ef7cc327183b7c89863c61a64da1", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "改进服务器 buffile 模块中的错误处理", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}, "url": "/docs/compare/?release=12.4#12.4-b29baed8c244c3d3", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "3c69e549c4dfbe5e9ac8979f5d13b214", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "改进服务器 buffile 模块中的错误处理", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}, "url": "/docs/compare/?release=11.9#11.9-44ca8519b07ffb6e", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "cfae48ffbb34b721ed501b88a22ec505", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "改进服务器 buffile 模块中的错误处理", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}, "url": "/docs/compare/?release=10.14#10.14-44ca8519b07ffb6e", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "42f60f7617299a4bf6748fafe11efad2", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "改进服务器 buffile 模块中的错误处理", "evidence": {"same_day": true, "patch_ids": ["3cfa5dd68e4213eeb0063dccd0f61037", "3efe2002531599381d76d0da2ce97ce7"], "statement_hash": "9b959c59b636685cb7c0d1617182325c48d28e9c774d749107837a830c2a6faa"}, "url": "/docs/compare/?release=9.5.23#9.5.23-44ca8519b07ffb6e", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-2815ad76a363781c", "cves": [], "html": "<p>修复 <code>SERIALIZABLE</code> 隔离模式下的冲突检查异常（Peter Geoghegan）</p>\n<p>如果一个并发插入的元组被另一个并发事务更新，而这两个元组版本对当前事务的快照都不可见，序列化冲突检查可能就元组是否与当前事务的结果相关得出错误结论。这可能使一个可序列化事务在不该提交时（本应报序列化错误）成功提交。</p>", "text": "修复 SERIALIZABLE 隔离模式下的冲突检查异常（Peter Geoghegan） 如果一个并发插入的元组被另一个并发事务更新，而这两个元组版本对当前事务的快照都不可见，序列化冲突检查可能就元组是否与当前事务的结果相关得出错误结论。这可能使一个可序列化事务在不该提交时（本应报序列化错误）成功提交。", "title": "修复 SERIALIZABLE 隔离模式下的冲突检查异常", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "04199ec9e2a853b43ae8e368fac42601291d92363b6e94c60f7ba1ee8d60f4fc", "section_path": ["变更"], "commit_groups": [["19a6e1bc3", "5940ffb22", "6df7105e5", "c05f6b354", "dd616f2ec", "e620a38c2", "e81dc2b7e"]], "identity_text": "Fix conflict-checking anomalies in SERIALIZABLE isolation mode (Peter Geoghegan) If a concurrently-inserted tuple was updated by a different concurrent transaction, and neither tuple version was visible to the current transaction's snapshot, serialization conflict checking could draw the wrong conclusions about whether the tuple was relevant to the results of the current transaction. This could allow a serializable transaction to commit when it should have failed with a serialization error.", "commit_aliases": ["19a6e1bc3", "5940ffb22", "6df7105e5", "c05f6b354", "dd616f2ec", "e620a38c2", "e81dc2b7e"], "source_commits": ["e81dc2b7e"], "source_entry_id": "9.6.19/changes/011", "db_id": "6c34af70afc8367885d279059a8c7678", "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137", "relations": [{"rule": 2, "type": "equivalent", "target": "138c43e0ae188ef556140730c361821d", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}}, {"rule": 2, "type": "equivalent", "target": "282bd64770b1b7dd5335d8829c504008", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}}, {"rule": 2, "type": "equivalent", "target": "709ab5266dc4930684d28fe6b9d24c51", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}}, {"rule": 2, "type": "equivalent", "target": "98761d6491ab87fdd228d1d2bbcb1ff2", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "138c43e0ae188ef556140730c361821d", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 SERIALIZABLE 隔离模式中的冲突检查异常", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}, "url": "/docs/compare/?release=12.4#12.4-45fab7df1be57512", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "98761d6491ab87fdd228d1d2bbcb1ff2", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 SERIALIZABLE 隔离模式中的冲突检查异常", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}, "url": "/docs/compare/?release=11.9#11.9-9785d8b8cef9c4a9", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "709ab5266dc4930684d28fe6b9d24c51", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 SERIALIZABLE 隔离模式中的冲突检查异常", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}, "url": "/docs/compare/?release=10.14#10.14-9785d8b8cef9c4a9", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "282bd64770b1b7dd5335d8829c504008", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 SERIALIZABLE 隔离模式下的冲突检查异常", "evidence": {"same_day": true, "patch_ids": ["63b3781076b1620a95f6998eaf9d6ea8"], "statement_hash": "13ac0bd21db252a6b2ccfd02526cde6ab024a70861a86aabb2f64693fc634137"}, "url": "/docs/compare/?release=9.5.23#9.5.23-2815ad76a363781c", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-e2d239f429422919", "cves": [], "html": "<p>避免重复把死 btree 索引条目标记为死（Masahiko Sawada）</p>\n<p>虽然功能上无害，但在启用校验和或打开 <code>wal_log_hints</code> 时，这会导致无用的 WAL 流量。</p>", "text": "避免重复把死 btree 索引条目标记为死（Masahiko Sawada） 虽然功能上无害，但在启用校验和或打开 wal_log_hints 时，这会导致无用的 WAL 流量。", "title": "避免重复把死 btree 索引条目标记为死", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "ab3395166b739b543326e43746c3314375f2b549c3113487aa16d5c778bc6d8e", "section_path": ["变更"], "commit_groups": [["09f2752b0", "0a319699d", "1d84751c6", "242dfcbaf", "37b5c5fde", "4649eb919"]], "identity_text": "Avoid repeated marking of dead btree index entries as dead (Masahiko Sawada) While functionally harmless, this led to useless WAL traffic when checksums are enabled or wal_log_hints is on.", "commit_aliases": ["09f2752b0", "0a319699d", "1d84751c6", "242dfcbaf", "37b5c5fde", "4649eb919"], "source_commits": ["4649eb919"], "source_entry_id": "9.6.19/changes/012", "db_id": "7bd481af76e7894efd9e627af3b8595a", "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4", "relations": [{"rule": 2, "type": "equivalent", "target": "033d22474f002ecfe8030d3e5033a189", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}}, {"rule": 2, "type": "equivalent", "target": "2906e5fb50454b32c0b892457ec23c14", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}}, {"rule": 2, "type": "equivalent", "target": "5e0a40f96ba835b9ecff811dd8702e1a", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}}, {"rule": 2, "type": "equivalent", "target": "a25347ec5c2c32d229fea4a88611e4e0", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "5e0a40f96ba835b9ecff811dd8702e1a", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "避免将已失效的 B-树索引条目反复标记为失效", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}, "url": "/docs/compare/?release=12.4#12.4-7a0efc383eed6820", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "033d22474f002ecfe8030d3e5033a189", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "避免将已失效的 B-树索引条目反复标记为失效", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}, "url": "/docs/compare/?release=11.9#11.9-db254ba445f0275d", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "a25347ec5c2c32d229fea4a88611e4e0", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "避免将已失效的 B-树索引条目反复标记为失效", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}, "url": "/docs/compare/?release=10.14#10.14-db254ba445f0275d", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "2906e5fb50454b32c0b892457ec23c14", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "避免重复把死 btree 索引条目标记为死", "evidence": {"same_day": true, "patch_ids": ["64dcf709d1b1dce4fc1941bc3f20f2ab"], "statement_hash": "cd2ec7e3869ff3059a5f2db520104c85be6b1da7513840160c253325e92704d4"}, "url": "/docs/compare/?release=9.5.23#9.5.23-e2d239f429422919", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-5d123fa449660c85", "cves": [], "html": "<p>修复某些代码路径在修改 <code>pg_control</code> 之前未获取正确锁的问题（Nathan Bossart、Fujii Masao）</p>\n<p>这一疏漏可能使 <code>pg_control</code> 以不一致的校验和写出，之后可能引起麻烦，包括在下一次 <code>pg_control</code> 更新之前崩溃时无法重启数据库。</p>", "text": "修复某些代码路径在修改 pg_control 之前未获取正确锁的问题（Nathan Bossart、Fujii Masao） 这一疏漏可能使 pg_control 以不一致的校验和写出，之后可能引起麻烦，包括在下一次 pg_control 更新之前崩溃时无法重启数据库。", "title": "修复某些代码路径在修改 pg_control 之前未获取正确锁的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "696f813620c099c3552b03daac0e6b5269e53a9f6ab482efbdb6fa7b8b92f9a6", "section_path": ["变更"], "commit_groups": [["09dc17486", "48eb6a3c8", "57cb80630", "644cac32a", "72766ad63", "acefa2cca", "fd11b842e"]], "identity_text": "Fix failure of some code paths to acquire the correct lock before modifying pg_control (Nathan Bossart, Fujii Masao) This oversight could allow pg_control to be written out with an inconsistent checksum, possibly causing trouble later, including inability to restart the database if it crashed before the next pg_control update.", "commit_aliases": ["09dc17486", "48eb6a3c8", "57cb80630", "644cac32a", "72766ad63", "acefa2cca", "fd11b842e"], "source_commits": ["644cac32a"], "source_entry_id": "9.6.19/changes/013", "db_id": "bd811e0b3435a1c993681d54b70f3910", "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02", "relations": [{"rule": 2, "type": "equivalent", "target": "433e4a2cc9e4f98815c5c9d4a2bde523", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}}, {"rule": 2, "type": "equivalent", "target": "7243515f84270761166407e65daa9451", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}}, {"rule": 2, "type": "equivalent", "target": "9d62bcac7998b528e307d472fe674a0e", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}}, {"rule": 2, "type": "equivalent", "target": "e24da9b240d6a97b8a81f152cb9fb97e", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "e24da9b240d6a97b8a81f152cb9fb97e", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复某些代码路径修改 pg_control 前未获取正确锁的问题", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}, "url": "/docs/compare/?release=12.4#12.4-39f524ab36db0b02", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "433e4a2cc9e4f98815c5c9d4a2bde523", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复某些代码路径修改 pg_control 前未获取正确锁的问题", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}, "url": "/docs/compare/?release=11.9#11.9-c3b6f7cdb9a5a569", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "7243515f84270761166407e65daa9451", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复某些代码路径修改 pg_control 前未获取正确锁的问题", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}, "url": "/docs/compare/?release=10.14#10.14-c3b6f7cdb9a5a569", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "9d62bcac7998b528e307d472fe674a0e", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复某些代码路径在修改 pg_control 之前未获取正确锁的问题", "evidence": {"same_day": true, "patch_ids": ["d7a107aa9b62c095395a4ad42a44eebc"], "statement_hash": "939d569f3741be6f7269da9408c893507c52e3d0581d2670eecf58bf95c87a02"}, "url": "/docs/compare/?release=9.5.23#9.5.23-5d123fa449660c85", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-8880427fca0301c2", "cves": [], "html": "<p>修复 <code>currtid()</code> 和 <code>currtid2()</code> 中的错误（Michael Paquier）</p>\n<p>这些函数（未写入文档且只被古老版本的 ODBC 驱动使用）包含可导致崩溃的编码错误，或者在应用于没有存储的关系时产生诸如 <span>“<span>could not open file</span>”</span> 之类令人困惑的错误消息。</p>", "text": "修复 currtid() 和 currtid2() 中的错误（Michael Paquier） 这些函数（未写入文档且只被古老版本的 ODBC 驱动使用）包含可导致崩溃的编码错误，或者在应用于没有存储的关系时产生诸如 “could not open file” 之类令人困惑的错误消息。", "title": "修复 currtid() 和 currtid2() 中的错误", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "d190ec2582ddf2e149472c71d5f1f61d48772b832eb4e83175601e1a662ae904", "section_path": ["变更"], "commit_groups": [["894041eb2", "8bc74490d", "a36f21620", "a8c6eb5b4", "ce1c5b9ae", "e2fa9732f"], ["95e389b3c", "e786be5fc"]], "identity_text": "Fix errors in currtid() and currtid2() (Michael Paquier) These functions (which are undocumented and used only by ancient versions of the ODBC driver) contained coding errors that could result in crashes, or in confusing error messages such as could not open file when applied to a relation having no storage.", "commit_aliases": ["894041eb2", "8bc74490d", "95e389b3c", "a36f21620", "a8c6eb5b4", "ce1c5b9ae", "e2fa9732f", "e786be5fc"], "source_commits": ["e2fa9732f", "e786be5fc"], "source_entry_id": "9.6.19/changes/014", "db_id": "4b9438976fc11a64def60e2e14c652c8", "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e", "relations": [{"rule": 2, "type": "equivalent", "target": "4d15a7ac89a61a2fffe20006bd28ae46", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}}, {"rule": 2, "type": "equivalent", "target": "552c322559e6002617a1451a657e45d3", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}}, {"rule": 2, "type": "equivalent", "target": "70795be678e21023800cb9753e241fd3", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}}, {"rule": 2, "type": "equivalent", "target": "aaa48914a0c8e3c550f7d7992dd674eb", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "70795be678e21023800cb9753e241fd3", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 currtid() 和 currtid2() 中的错误", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}, "url": "/docs/compare/?release=12.4#12.4-9851c4fef48f4afb", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "aaa48914a0c8e3c550f7d7992dd674eb", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 currtid() 和 currtid2() 中的错误", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}, "url": "/docs/compare/?release=11.9#11.9-8880427fca0301c2", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "552c322559e6002617a1451a657e45d3", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 currtid() 和 currtid2() 中的错误", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}, "url": "/docs/compare/?release=10.14#10.14-8880427fca0301c2", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "4d15a7ac89a61a2fffe20006bd28ae46", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 currtid() 和 currtid2() 中的错误", "evidence": {"same_day": true, "patch_ids": ["27b2dcabf26eaf1c7674e7a13a96398d", "a7dea211061f215b8cdf044872714d4f"], "statement_hash": "7316ade9ee367fcf2766788a37169597556db8ce5091e1b5b0ac0124f9dc2c1e"}, "url": "/docs/compare/?release=9.5.23#9.5.23-8880427fca0301c2", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-1dd7aea73c9ed756", "cves": [], "html": "<p>避免在持有自旋锁时调用 <code>elog()</code> 或 <code>palloc()</code>（Michael Paquier、Tom Lane）</p>\n<p>与复制槽相关的逻辑有几处违反了这一编码规则。虽然出问题的几率很低，但被调用函数中的错误会导致自旋锁卡死。</p>", "text": "避免在持有自旋锁时调用 elog() 或 palloc()（Michael Paquier、Tom Lane） 与复制槽相关的逻辑有几处违反了这一编码规则。虽然出问题的几率很低，但被调用函数中的错误会导致自旋锁卡死。", "title": "避免在持有自旋锁时调用 elog() 或 palloc()", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "a33c2c78408c1dd1a2234148cb1ecfdce72deeb91017a24a596507dd946bfdc4", "section_path": ["变更"], "commit_groups": [["03aa25b6e", "4a9809e34", "5ed8b4a98", "b41a85f53", "c1669fd58", "e7a134b58"], ["0c735c686", "3d474a079", "7a8cb4a61", "f88bd3139"]], "identity_text": "Avoid calling elog() or palloc() while holding a spinlock (Michael Paquier, Tom Lane) Logic associated with replication slots had several violations of this coding rule. While the odds of trouble are quite low, an error in the called function would lead to a stuck spinlock.", "commit_aliases": ["03aa25b6e", "0c735c686", "3d474a079", "4a9809e34", "5ed8b4a98", "7a8cb4a61", "b41a85f53", "c1669fd58", "e7a134b58", "f88bd3139"], "source_commits": ["e7a134b58", "f88bd3139"], "source_entry_id": "9.6.19/changes/015", "db_id": "df3daeeb0faa8cca216633e36c3b3a40", "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa", "relations": [{"rule": 2, "type": "equivalent", "target": "273e54be3953e1f9eb204765452993e3", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}}, {"rule": 2, "type": "equivalent", "target": "27a280a730fb0fcdb290872f1203c1b5", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}}, {"rule": 2, "type": "equivalent", "target": "855df8283d480b191956104315e45be1", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}}, {"rule": 2, "type": "equivalent", "target": "e70d7d936f76c777484f5273067ac6f5", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "27a280a730fb0fcdb290872f1203c1b5", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "避免持有自旋锁时调用 elog() 或 palloc()", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}, "url": "/docs/compare/?release=12.4#12.4-e98082ace3e3bb8c", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "e70d7d936f76c777484f5273067ac6f5", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "避免持有自旋锁时调用 elog() 或 palloc()", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}, "url": "/docs/compare/?release=11.9#11.9-ebbc29f772fc9f55", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "273e54be3953e1f9eb204765452993e3", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "避免持有自旋锁时调用 elog() 或 palloc()", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}, "url": "/docs/compare/?release=10.14#10.14-ebbc29f772fc9f55", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "855df8283d480b191956104315e45be1", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "避免在持有自旋锁时调用 elog() 或 palloc()", "evidence": {"same_day": true, "patch_ids": ["7b8a6d0c9a6cc48f6b25baa0ad760128", "c4aea02cbcfbc000949bf778b61af270"], "statement_hash": "81ffb82d876dcf112322599128dceaeadcd558ff62e24ed871ed78320da6a1aa"}, "url": "/docs/compare/?release=9.5.23#9.5.23-1dd7aea73c9ed756", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-35bcfccc4c8e8a31", "cves": [], "html": "<p>在 <span>pg_dump</span> 和 <span>pg_basebackup</span> 中正确报告磁盘空间不足错误（Justin Pryzby、Tom Lane、Álvaro Herrera）</p>\n<p>某些代码路径会产生诸如 <span>“<span>could not write file: Success</span>”</span> 之类的可笑报告。</p>", "text": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误（Justin Pryzby、Tom Lane、Álvaro Herrera） 某些代码路径会产生诸如 “could not write file: Success” 之类的可笑报告。", "title": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "13d77b8f4d64824f2b1cd39ed2aac5f8d69b1bcda587c7204cddf4dcf0d4bb61", "section_path": ["变更"], "commit_groups": [["2e155d90d", "411febd53", "5b52008a6", "83762d0a9", "ae3259c55", "bbbce94dc", "e74559c97"]], "identity_text": "Report out-of-disk-space errors properly in pg_dump and pg_basebackup (Justin Pryzby, Tom Lane, Álvaro Herrera) Some code paths could produce silly reports like could not write file: Success.", "commit_aliases": ["2e155d90d", "411febd53", "5b52008a6", "83762d0a9", "ae3259c55", "bbbce94dc", "e74559c97"], "source_commits": ["83762d0a9"], "source_entry_id": "9.6.19/changes/016", "db_id": "7e050f5c0843580f658aabff79c8b235", "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482", "relations": [{"rule": 2, "type": "equivalent", "target": "49d37d1b7dedb9dd758f522fd1f10fc3", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}}, {"rule": 2, "type": "equivalent", "target": "816aa6194d1480bdbf0300ca564778bd", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}}, {"rule": 2, "type": "equivalent", "target": "97d7d04b2ecc6d3a2e86a0f6843f12c1", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}}, {"rule": 2, "type": "equivalent", "target": "a3216795e64fd0a84bf6514a41fdbf68", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "a3216795e64fd0a84bf6514a41fdbf68", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}, "url": "/docs/compare/?release=12.4#12.4-408b798dd21d79f4", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "816aa6194d1480bdbf0300ca564778bd", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}, "url": "/docs/compare/?release=11.9#11.9-35bcfccc4c8e8a31", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "97d7d04b2ecc6d3a2e86a0f6843f12c1", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}, "url": "/docs/compare/?release=10.14#10.14-35bcfccc4c8e8a31", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "49d37d1b7dedb9dd758f522fd1f10fc3", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误", "evidence": {"same_day": true, "patch_ids": ["35d198e9f9b3e496eefade6e41d625b9"], "statement_hash": "db1a02b7055edcec6bcca7aaf801b30a336bbd5fd379bf86909423d9272d4482"}, "url": "/docs/compare/?release=9.5.23#9.5.23-35bcfccc4c8e8a31", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-a3f80256e4336bb6", "cves": [], "html": "<p>修复同时具有表级权限和列级权限的表的并行恢复（Tom Lane）</p>\n<p>表级权限授予必须先被应用，但并行恢复不能可靠地按此排序；这可能导致 <span>“<span>tuple concurrently updated</span>”</span> 错误，或某些列级权限授予消失。修复方法是在归档文件中的此类条目之间包含依赖链接，这意味着必须用修正后的 <span>pg_dump</span> 重新转储，以确保问题不会复发。</p>", "text": "修复同时具有表级权限和列级权限的表的并行恢复（Tom Lane） 表级权限授予必须先被应用，但并行恢复不能可靠地按此排序；这可能导致 “tuple concurrently updated” 错误，或某些列级权限授予消失。修复方法是在归档文件中的此类条目之间包含依赖链接，这意味着必须用修正后的 pg_dump 重新转储，以确保问题不会复发。", "title": "修复同时具有表级权限和列级权限的表的并行恢复", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "c92c859680e980b21cab09e1530e88ce7aa6606b8e8747fa3e779f7d18d6cf5c", "section_path": ["变更"], "commit_groups": [["2d43c3057", "303322c5a", "4fdc559c8", "5fea14f4b", "bc9aaac1a", "db820b9a9", "ea9125304"]], "identity_text": "Fix parallel restore of tables having both table-level privileges and per-column privileges (Tom Lane) The table-level privilege grants have to be applied first, but a parallel restore did not reliably order them that way; this could lead to tuple concurrently updated errors, or to disappearance of some per-column privilege grants. The fix for this is to include dependency links between such entries in the archive file, meaning that a new dump has to be taken with a corrected pg_dump to ensure that the problem will not recur.", "commit_aliases": ["2d43c3057", "303322c5a", "4fdc559c8", "5fea14f4b", "bc9aaac1a", "db820b9a9", "ea9125304"], "source_commits": ["303322c5a"], "source_entry_id": "9.6.19/changes/017", "db_id": "b0f033bc567b79af6912da8a9b851249", "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f", "relations": [{"rule": 2, "type": "equivalent", "target": "6747b5e78db70a510d6064262fc45727", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}}, {"rule": 2, "type": "equivalent", "target": "6b7ffb66793c929fb75d5305434cc701", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}}, {"rule": 2, "type": "equivalent", "target": "d2b27ac2b44e756e280154aab82b9f16", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}}, {"rule": 2, "type": "equivalent", "target": "ec4ff64a62c56fab736ff690d4c2325b", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "ec4ff64a62c56fab736ff690d4c2325b", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复同时具有表级权限和逐列权限的表的并行恢复", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}, "url": "/docs/compare/?release=12.4#12.4-f21be96544e8e42e", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "6b7ffb66793c929fb75d5305434cc701", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复同时具有表级权限和逐列权限的表的并行恢复", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}, "url": "/docs/compare/?release=11.9#11.9-e9e714167d3e4211", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "6747b5e78db70a510d6064262fc45727", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复同时具有表级权限和逐列权限的表的并行恢复", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}, "url": "/docs/compare/?release=10.14#10.14-e9e714167d3e4211", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "d2b27ac2b44e756e280154aab82b9f16", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复同时具有表级权限和列级权限的表的并行恢复", "evidence": {"same_day": true, "patch_ids": ["483cb11346131b13cd9681ce8d606ba5"], "statement_hash": "b203809ad3b9fe21738c3e6bc8139c263eae1bf4f2299fa486fcb2963b6a939f"}, "url": "/docs/compare/?release=9.5.23#9.5.23-a3f80256e4336bb6", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-4028204c112b0892", "cves": [], "html": "<p>确保 <span>pg_upgrade</span> 在目标集簇中运行时 <code>vacuum_defer_cleanup_age</code> 被设为零（Bruce Momjian）</p>\n<p>如果目标集簇的配置被修改为把 <code>vacuum_defer_cleanup_age</code> 设为非零值，会妨碍系统目录的冻结正常工作，导致升级以令人困惑的方式失败。确保升级期间覆盖任何此类设置。</p>", "text": "确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零（Bruce Momjian） 如果目标集簇的配置被修改为把 vacuum_defer_cleanup_age 设为非零值，会妨碍系统目录的冻结正常工作，导致升级以令人困惑的方式失败。确保升级期间覆盖任何此类设置。", "title": "确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "611b2336f765c81890b1de71a08933c7dd7af6323338bf78a592e7e6005fbd76", "section_path": ["变更"], "commit_groups": [["39c698cff", "3f5863e15", "5c1bfd627", "8e933596c", "9170da96d", "a2c72851a", "aeb785c0f"]], "identity_text": "Ensure that pg_upgrade runs with vacuum_defer_cleanup_age set to zero in the target cluster (Bruce Momjian) If the target cluster's configuration has been modified to set vacuum_defer_cleanup_age to a nonzero value, that prevented freezing of the system catalogs from working properly, which caused the upgrade to fail in confusing ways. Ensure that any such setting is overridden for the duration of the upgrade.", "commit_aliases": ["39c698cff", "3f5863e15", "5c1bfd627", "8e933596c", "9170da96d", "a2c72851a", "aeb785c0f"], "source_commits": ["5c1bfd627"], "source_entry_id": "9.6.19/changes/018", "db_id": "fd3219318bdac20b2e41ff3632b076f9", "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748", "relations": [{"rule": 2, "type": "equivalent", "target": "59d36c4a54d742189212fa483f320346", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}}, {"rule": 2, "type": "equivalent", "target": "642d5e8d27e0c6f02a7fbadafce573be", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}}, {"rule": 2, "type": "equivalent", "target": "665e0bfbae089802b6bd3c8dd8b5faaf", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}}, {"rule": 2, "type": "equivalent", "target": "7e6ceb1eb07affde79b46b2a279cb38d", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "59d36c4a54d742189212fa483f320346", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "确保 pg_upgrade 运行时，将目标集群中的 vacuum_defer_cleanup_age 设为零", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}, "url": "/docs/compare/?release=12.4#12.4-cd259605abab70fd", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "665e0bfbae089802b6bd3c8dd8b5faaf", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "确保 pg_upgrade 运行时，将目标集群中的 vacuum_defer_cleanup_age 设为零", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}, "url": "/docs/compare/?release=11.9#11.9-e1e311b29f42aec4", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "7e6ceb1eb07affde79b46b2a279cb38d", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "确保 pg_upgrade 运行时，将目标集群中的 vacuum_defer_cleanup_age 设为零", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}, "url": "/docs/compare/?release=10.14#10.14-e1e311b29f42aec4", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "642d5e8d27e0c6f02a7fbadafce573be", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零", "evidence": {"same_day": true, "patch_ids": ["c3b9dd773fa38ed393bec0b3f5342139"], "statement_hash": "4492eab8a7263a56a09e69ef539fd88dd7dd72cf5292a97939b1f90482b93748"}, "url": "/docs/compare/?release=9.5.23#9.5.23-4028204c112b0892", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-c41aefd874abd8ed", "cves": [], "html": "<p>修复 <span>pg_recvlogical</span> 在退出前排空未决消息的问题（Noah Misch）</p>\n<p>没有这一修复，复制发送端可能检测到发送失败并在对复制槽 LSN 位置进行预期的最终更新之前退出。这导致下次连接之后重新传输数据。还可能错过 <span>pg_recvlogical</span> 想消费的最后数据之后发送的错误消息。</p>", "text": "修复 pg_recvlogical 在退出前排空未决消息的问题（Noah Misch） 没有这一修复，复制发送端可能检测到发送失败并在对复制槽 LSN 位置进行预期的最终更新之前退出。这导致下次连接之后重新传输数据。还可能错过 pg_recvlogical 想消费的最后数据之后发送的错误消息。", "title": "修复 pg_recvlogical 在退出前排空未决消息的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "b048d1038f01f0c0e99a0a9dbb590ba23f10975cb5f7a34f206721aadcf9f29f", "section_path": ["变更"], "commit_groups": [["1ab5b672e", "595b4115c", "73a5c0d81", "970ed4493", "a26789452", "cee9cadb5"], ["357012e17", "7130be8aa", "8222a9d9a", "a28db2081"]], "identity_text": "Fix pg_recvlogical to drain pending messages before exiting (Noah Misch) Without this, the replication sender might detect a send failure and exit without making the expected final update to the replication slot's LSN position. That led to re-transmitting data after the next connection. It was also possible to miss error messages sent after the last data that pg_recvlogical wants to consume.", "commit_aliases": ["1ab5b672e", "357012e17", "595b4115c", "7130be8aa", "73a5c0d81", "8222a9d9a", "970ed4493", "a26789452", "a28db2081", "cee9cadb5"], "source_commits": ["1ab5b672e", "8222a9d9a"], "source_entry_id": "9.6.19/changes/019", "db_id": "661f36f02121caf181a09d07f2b16ac3", "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e", "relations": [{"rule": 2, "type": "equivalent", "target": "3f03e2858ed25def99c4ba9a8de84c0c", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}}, {"rule": 2, "type": "equivalent", "target": "42c474d377d40ad2929968a29b7fa7de", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}}, {"rule": 2, "type": "equivalent", "target": "9e63a4ff6399dbedc4c73a9b981d185d", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}}, {"rule": 2, "type": "equivalent", "target": "cda54712abe9745e3b7b483355640060", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cda54712abe9745e3b7b483355640060", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 pg_recvlogical，使其在退出前读取完待处理消息", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}, "url": "/docs/compare/?release=12.4#12.4-7d5f05eb4a0f2c7b", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "3f03e2858ed25def99c4ba9a8de84c0c", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 pg_recvlogical，使其在退出前读取完待处理消息", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}, "url": "/docs/compare/?release=11.9#11.9-3bcb1320a04bd275", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "42c474d377d40ad2929968a29b7fa7de", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 pg_recvlogical，使其在退出前读取完待处理消息", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}, "url": "/docs/compare/?release=10.14#10.14-3bcb1320a04bd275", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "9e63a4ff6399dbedc4c73a9b981d185d", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 pg_recvlogical 在退出前排空未决消息的问题", "evidence": {"same_day": true, "patch_ids": ["622954ed1f0e4eb81efda83543b5c515", "b3753579c98b38e9d96c4303019b6c28"], "statement_hash": "8426a68951fe3f32978ae46e92debb32d4177246f5a6f9252bb6b0d035f28b9e"}, "url": "/docs/compare/?release=9.5.23#9.5.23-c41aefd874abd8ed", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-da550c9e85393596", "cves": [], "html": "<p>修复 <span>pg_rewind</span> 对源数据目录中刚被删除文件的处理（Justin Pryzby、Michael Paquier）</p>\n<p>使用在线源数据库工作时，并发文件删除是可能的，但如果删除恰好发生在看到文件目录项与用 <code>stat()</code> 检查它之间， <span>pg_rewind</span> 就会困惑。</p>", "text": "修复 pg_rewind 对源数据目录中刚被删除文件的处理（Justin Pryzby、Michael Paquier） 使用在线源数据库工作时，并发文件删除是可能的，但如果删除恰好发生在看到文件目录项与用 stat() 检查它之间， pg_rewind 就会困惑。", "title": "修复 pg_rewind 对源数据目录中刚被删除文件的处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "1b1b4c433deb9363c32d3b51ebae9a81126a2e9b0a2aad9c529e24d4cf5b57a0", "section_path": ["变更"], "commit_groups": [["14fe80413", "18ec25412", "1d09fb1f0", "23924feca", "5f89bb4cf", "92927477f", "c6d33d144"]], "identity_text": "Fix pg_rewind's handling of just-deleted files in the source data directory (Justin Pryzby, Michael Paquier) When working with an on-line source database, concurrent file deletions are possible, but pg_rewind would get confused if deletion happened between seeing a file's directory entry and examining it with stat().", "commit_aliases": ["14fe80413", "18ec25412", "1d09fb1f0", "23924feca", "5f89bb4cf", "92927477f", "c6d33d144"], "source_commits": ["14fe80413"], "source_entry_id": "9.6.19/changes/020", "db_id": "c52576da644edded7b31204bd8e0f9d1", "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f", "relations": [{"rule": 2, "type": "equivalent", "target": "423a5e98056171752639b9c3b2ef463e", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}}, {"rule": 2, "type": "equivalent", "target": "8b5e9612827204adac9507d77c98be37", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}}, {"rule": 2, "type": "equivalent", "target": "b7fab023f441a7e955aede15032fb065", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}}, {"rule": 2, "type": "equivalent", "target": "f23b125b1b287c3962119a086b6788c0", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b7fab023f441a7e955aede15032fb065", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 pg_rewind 对源数据目录中刚删除的文件的处理", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}, "url": "/docs/compare/?release=12.4#12.4-8d166a1ede28e23a", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "8b5e9612827204adac9507d77c98be37", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 pg_rewind 对源数据目录中刚删除的文件的处理", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}, "url": "/docs/compare/?release=11.9#11.9-22dcf45ade8af2a4", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "f23b125b1b287c3962119a086b6788c0", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 pg_rewind 对源数据目录中刚删除的文件的处理", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}, "url": "/docs/compare/?release=10.14#10.14-22dcf45ade8af2a4", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "423a5e98056171752639b9c3b2ef463e", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 pg_rewind 对源数据目录中刚被删除文件的处理", "evidence": {"same_day": true, "patch_ids": ["843d02cd3d60b7c4a9b93852f58b6af5"], "statement_hash": "cda6e58c8f9d2638b48239be399a5802122288d9d2bbd2a0ba7e10337edd6c5f"}, "url": "/docs/compare/?release=9.5.23#9.5.23-da550c9e85393596", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-bcd81073169d22d5", "cves": [], "html": "<p>让 <span>pg_test_fsync</span> 在 Windows 上使用二进制 I/O 模式（Michael Paquier）</p>\n<p>此前它以文本模式写测试文件，这不能准确反映 <span>PostgreSQL</span> 的实际用法。</p>", "text": "让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式（Michael Paquier） 此前它以文本模式写测试文件，这不能准确反映 PostgreSQL 的实际用法。", "title": "让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "2fd36749592ba0863d620c2dd06ed45761293a1db2a2ac1e593803fd9fa1872f", "section_path": ["变更"], "commit_groups": [["800ec48f5", "932f9fb50", "a452b239e", "ab7ce97ec", "beebbb39d", "cd113a0b4", "de559c2b0"]], "identity_text": "Make pg_test_fsync use binary I/O mode on Windows (Michael Paquier) Previously it wrote the test file in text mode, which is not an accurate reflection of PostgreSQL's actual usage.", "commit_aliases": ["800ec48f5", "932f9fb50", "a452b239e", "ab7ce97ec", "beebbb39d", "cd113a0b4", "de559c2b0"], "source_commits": ["a452b239e"], "source_entry_id": "9.6.19/changes/021", "db_id": "3135e3c9d723243c6bd93805f24d69b9", "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647", "relations": [{"rule": 2, "type": "equivalent", "target": "780a9579c719cf7fcfa5a878c70af3ab", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}}, {"rule": 2, "type": "equivalent", "target": "b16acde76c53f00bcd28b7bd9319c717", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}}, {"rule": 2, "type": "equivalent", "target": "ba808e0b274d529a9318d7dc31100455", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}}, {"rule": 2, "type": "equivalent", "target": "f367982a55f859e29a9e4cb61ef463f2", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b16acde76c53f00bcd28b7bd9319c717", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "使 pg_test_fsync 在 Windows 上使用二进制 I/O 模式", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}, "url": "/docs/compare/?release=12.4#12.4-ed4b723fa77f9343", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "f367982a55f859e29a9e4cb61ef463f2", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "使 pg_test_fsync 在 Windows 上使用二进制 I/O 模式", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}, "url": "/docs/compare/?release=11.9#11.9-d3e3b67792604d61", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "780a9579c719cf7fcfa5a878c70af3ab", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "使 pg_test_fsync 在 Windows 上使用二进制 I/O 模式", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}, "url": "/docs/compare/?release=10.14#10.14-d3e3b67792604d61", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "ba808e0b274d529a9318d7dc31100455", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式", "evidence": {"same_day": true, "patch_ids": ["6fb0c57fa5dcc20f7e429e860ef1bfbe"], "statement_hash": "4618ab0945e540cfd17b971caa82ec45092c83f12fdde01e7f61a67ef5be4647"}, "url": "/docs/compare/?release=9.5.23#9.5.23-bcd81073169d22d5", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-0ea9376ebe5ef835", "cves": [], "html": "<p>修复 <code>contrib/dblink</code> 未能正确初始化本地状态的问题（Joe Conway）</p>\n<p>在恰当的环境组合下，这可能导致 <code>dblink_close()</code> 发出意外的远程 <code>COMMIT</code>。</p>", "text": "修复 contrib/dblink 未能正确初始化本地状态的问题（Joe Conway） 在恰当的环境组合下，这可能导致 dblink_close() 发出意外的远程 COMMIT。", "title": "修复 contrib/dblink 未能正确初始化本地状态的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "1fcceb1d633060781a2c1dd767e4c2bd66d44967e4e86d872b1436588cedd7cb", "section_path": ["变更"], "commit_groups": [["43d3d7318", "43d7934a3", "49a00e07c", "9003b76e1", "e8eb48595", "f140d9b6e"]], "identity_text": "Fix failure to initialize local state correctly in contrib/dblink (Joe Conway) With the right combination of circumstances, this could lead to dblink_close() issuing an unexpected remote COMMIT.", "commit_aliases": ["43d3d7318", "43d7934a3", "49a00e07c", "9003b76e1", "e8eb48595", "f140d9b6e"], "source_commits": ["43d7934a3"], "source_entry_id": "9.6.19/changes/022", "db_id": "3d7c21d661753de7c04efe9e8180dae4", "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb", "relations": [{"rule": 2, "type": "equivalent", "target": "5f5604a421f793ccda86a39947d0b0f8", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}}, {"rule": 2, "type": "equivalent", "target": "694e0bfe6a45e34b9bb0e939b878084c", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}}, {"rule": 2, "type": "equivalent", "target": "9fe028914bd32b13bfcb52ff54d768a4", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}}, {"rule": 2, "type": "equivalent", "target": "c5b653fb8275ef23b759c81bebb72138", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "9fe028914bd32b13bfcb52ff54d768a4", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 contrib/dblink 未能正确初始化本地状态的问题", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}, "url": "/docs/compare/?release=12.4#12.4-31b2ce6886fd1cb1", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "5f5604a421f793ccda86a39947d0b0f8", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 contrib/dblink 未能正确初始化本地状态的问题", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}, "url": "/docs/compare/?release=11.9#11.9-0ea9376ebe5ef835", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "c5b653fb8275ef23b759c81bebb72138", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 contrib/dblink 未能正确初始化本地状态的问题", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}, "url": "/docs/compare/?release=10.14#10.14-0ea9376ebe5ef835", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "694e0bfe6a45e34b9bb0e939b878084c", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 contrib/dblink 未能正确初始化本地状态的问题", "evidence": {"same_day": true, "patch_ids": ["823e9ac1b4747f4b70d29a203e6599a3"], "statement_hash": "153036545f32a848a91997f4c15072198778589eddb7db59974683fd49b299eb"}, "url": "/docs/compare/?release=9.5.23#9.5.23-0ea9376ebe5ef835", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-5c9a7d9c06f17743", "cves": [], "html": "<p>修复 <code>contrib/pgcrypto</code> 对 <code>deflate()</code> 的误用（Tom Lane）</p>\n<p>由于错误处理 <span>zlib</span> 的 API 要求，<code>pgp_sym_encrypt</code> 函数可能产生错误的压缩数据。我们没有收到过这个错误在原版 <span>zlib</span> 下显现的报告，但在使用 IBM 的 <span>zlibNX</span> 实现时可以看到。</p>", "text": "修复 contrib/pgcrypto 对 deflate() 的误用（Tom Lane） 由于错误处理 zlib 的 API 要求，pgp_sym_encrypt 函数可能产生错误的压缩数据。我们没有收到过这个错误在原版 zlib 下显现的报告，但在使用 IBM 的 zlibNX 实现时可以看到。", "title": "修复 contrib/pgcrypto 对 deflate() 的误用", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "529b136ed6953e0c8401adfbd45df080746b21e7a7604c7316b2ac626ef7a6c5", "section_path": ["变更"], "commit_groups": [["3d4a77815", "475c69c97", "7dab4569d", "b9b610577", "ccf964a80", "d0519e9fe", "d8ec3b126"]], "identity_text": "Fix contrib/pgcrypto's misuse of deflate() (Tom Lane) The pgp_sym_encrypt functions could produce incorrect compressed data due to mishandling of zlib's API requirements. We have no reports of this error manifesting with stock zlib, but it can be seen when using IBM's zlibNX implementation.", "commit_aliases": ["3d4a77815", "475c69c97", "7dab4569d", "b9b610577", "ccf964a80", "d0519e9fe", "d8ec3b126"], "source_commits": ["ccf964a80"], "source_entry_id": "9.6.19/changes/023", "db_id": "9b8a7f4ef7320656fa1778b6c988e0b3", "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b", "relations": [{"rule": 2, "type": "equivalent", "target": "2cfc769b52e3b07c540770d8283bad5b", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}}, {"rule": 2, "type": "equivalent", "target": "30ed2bb590f94a7150a5174047c4c46e", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}}, {"rule": 2, "type": "equivalent", "target": "3242f866b02f758989303ae7152085c6", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}}, {"rule": 2, "type": "equivalent", "target": "cece28d53d5ccaba7d257ead3597a228", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "30ed2bb590f94a7150a5174047c4c46e", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 contrib/pgcrypto 对 deflate() 的错误使用", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}, "url": "/docs/compare/?release=12.4#12.4-735fb83115b00403", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "3242f866b02f758989303ae7152085c6", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 contrib/pgcrypto 对 deflate() 的错误使用", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}, "url": "/docs/compare/?release=11.9#11.9-a6be2c33bf5dd43b", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "2cfc769b52e3b07c540770d8283bad5b", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 contrib/pgcrypto 对 deflate() 的错误使用", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}, "url": "/docs/compare/?release=10.14#10.14-a6be2c33bf5dd43b", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "cece28d53d5ccaba7d257ead3597a228", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 contrib/pgcrypto 对 deflate() 的误用", "evidence": {"same_day": true, "patch_ids": ["087f44a663efed6f1d4571ac678b572a"], "statement_hash": "52db2818133c10c81f88c1f897519c4c2b29b2f346466b1b4570ebafb687358b"}, "url": "/docs/compare/?release=9.5.23#9.5.23-5c9a7d9c06f17743", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-d338711d701e80b8", "cves": [], "html": "<p>修复 <code>contrib/pgcrypto</code> 的 <code>pgp_sym_decrypt</code> 函数中解压逻辑的边界情况（Kyotaro Horiguchi、Michael Paquier）</p>\n<p>压缩流可以合法地以空包结束，但解压器未能处理这一点，会抱怨数据损坏。</p>", "text": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况（Kyotaro Horiguchi、Michael Paquier） 压缩流可以合法地以空包结束，但解压器未能处理这一点，会抱怨数据损坏。", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "445dd32ff8e4cbeae53dbc9682cfc8afb77a2855a9be37747f6dc3523538679f", "section_path": ["变更"], "commit_groups": [["0caf1fc6e", "202fc4ca5", "5bd087eb5", "8a60f541f", "9729f9979", "a3ab7a707", "aaa132a65"], ["1785ac8ad", "e1b4135cf"]], "identity_text": "Fix corner case in decompression logic in contrib/pgcrypto's pgp_sym_decrypt functions (Kyotaro Horiguchi, Michael Paquier) A compressed stream can validly end with an empty packet, but the decompressor failed to handle this and would complain about corrupt data.", "commit_aliases": ["0caf1fc6e", "1785ac8ad", "202fc4ca5", "5bd087eb5", "8a60f541f", "9729f9979", "a3ab7a707", "aaa132a65", "e1b4135cf"], "source_commits": ["1785ac8ad", "8a60f541f"], "source_entry_id": "9.6.19/changes/024", "db_id": "69a4ff8bc694aa26df8362ad2f30e65f", "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7", "relations": [{"rule": 2, "type": "equivalent", "target": "6eedd6b7f3936c1d43da147811fe4a2e", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}}, {"rule": 2, "type": "equivalent", "target": "8bf29fde1686423ed401a4b399872762", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}}, {"rule": 2, "type": "equivalent", "target": "a347b27d5d31e5c242a6e9e4844240eb", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}}, {"rule": 2, "type": "equivalent", "target": "b794019002cfa4cfd994ac78451bd99d", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}}], "version": "9.6.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b794019002cfa4cfd994ac78451bd99d", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压缩逻辑的边界情况", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}, "url": "/docs/compare/?release=12.4#12.4-95c9d9cc4ef44537", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "6eedd6b7f3936c1d43da147811fe4a2e", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压缩逻辑的边界情况", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}, "url": "/docs/compare/?release=11.9#11.9-bc929af91332cf40", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "a347b27d5d31e5c242a6e9e4844240eb", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压缩逻辑的边界情况", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}, "url": "/docs/compare/?release=10.14#10.14-bc929af91332cf40", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "8bf29fde1686423ed401a4b399872762", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况", "evidence": {"same_day": true, "patch_ids": ["61d82dcc8c38e53faf8364e391734fe1", "9c392716155fc2eb2bae306a88822441"], "statement_hash": "1ecdd9e3b54b8c7d8e46289ae2edd1e4bc6beea4db3de9460f01ba41a54c41e7"}, "url": "/docs/compare/?release=9.5.23#9.5.23-d338711d701e80b8", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-bf16b9da3b7a579d", "cves": [], "html": "<p>用 POSIX 标准的 <code>strsignal()</code> 取代 BSD 风格的 <code>sys_siglist[]</code>（Tom Lane）</p>\n<p>这避免了在非常新的 <span>glibc</span> 版本下的构建失败。</p>", "text": "用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[]（Tom Lane） 这避免了在非常新的 glibc 版本下的构建失败。", "title": "用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[]", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "1b96b79edd2f39467268e818d3af473138070266900f9047c9c5fdf9ad9a6c72", "section_path": ["变更"], "commit_groups": [["0140dec18", "9e043d93c", "c6d43ffab", "d61dcccaf"]], "identity_text": "Use POSIX-standard strsignal() in place of the BSD-ish sys_siglist[] (Tom Lane) This avoids build failures with very recent versions of glibc.", "commit_aliases": ["0140dec18", "9e043d93c", "c6d43ffab", "d61dcccaf"], "source_commits": ["9e043d93c"], "source_entry_id": "9.6.19/changes/025", "db_id": "46e5daea2f0847cec44a18497ff6126c", "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727", "relations": [{"rule": 2, "type": "equivalent", "target": "0e1ef68c98289abd4464164b89ed8fc6", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}}, {"rule": 2, "type": "equivalent", "target": "11c8390d1363c2ad27288a93b9e12f4d", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}}, {"rule": 2, "type": "equivalent", "target": "2e3f3ff9857fd9a01af97181e3c53926", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "11c8390d1363c2ad27288a93b9e12f4d", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "使用 POSIX 标准的 strsignal() 代替 BSD 风格的 sys_siglist[]", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}, "url": "/docs/compare/?release=11.9#11.9-5c30a5f3e596c441", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "0e1ef68c98289abd4464164b89ed8fc6", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "使用 POSIX 标准的 strsignal() 代替 BSD 风格的 sys_siglist[]", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}, "url": "/docs/compare/?release=10.14#10.14-5c30a5f3e596c441", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "2e3f3ff9857fd9a01af97181e3c53926", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[]", "evidence": {"same_day": true, "patch_ids": ["8b4b174fbfc5c320414b8d1090768229"], "statement_hash": "35774db9837bbe4977831b19e301689547363e99eab364396688bb26d62c2727"}, "url": "/docs/compare/?release=9.5.23#9.5.23-bf16b9da3b7a579d", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-9ee9b115482b6daa", "cves": [], "html": "<p>支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码（Juan José Santamaría Flecha、Davinder Singh、Amit Kapila）</p>", "text": "支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码（Juan José Santamaría Flecha、Davinder Singh、Amit Kapila）", "title": "支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "91c9783ff803ed9451b6e288ef17f19609903d6015cf0c49458c0fb3b2647ae5", "section_path": ["变更"], "commit_groups": [["1fbfc3d8a", "33b772801", "650952aeb", "98171e59a", "a1466e194", "a16915545"]], "identity_text": "Support building our NLS code with Microsoft Visual Studio 2015 or later (Juan José Santamaría Flecha, Davinder Singh, Amit Kapila)", "commit_aliases": ["1fbfc3d8a", "33b772801", "650952aeb", "98171e59a", "a1466e194", "a16915545"], "source_commits": ["a1466e194"], "source_entry_id": "9.6.19/changes/026", "db_id": "814a7e63822d73a1c68beb16e8364c98", "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247", "relations": [{"rule": 2, "type": "equivalent", "target": "5e8328bd2c68165315f21ff3129b48bd", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}}, {"rule": 2, "type": "equivalent", "target": "7a6e7b9b3a637f86c82de6f4b558b6a7", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}}, {"rule": 2, "type": "equivalent", "target": "7fcdeb83f6c5f8f71c7139afaa23b33b", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}}, {"rule": 2, "type": "equivalent", "target": "e4c66e7ff3064c0cbe27c65be6d1acc9", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "5e8328bd2c68165315f21ff3129b48bd", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "支持使用 Microsoft Visual Studio 2015 及更新版本构建我们的 NLS 代码", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}, "url": "/docs/compare/?release=12.4#12.4-a0295a56e16600b4", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "e4c66e7ff3064c0cbe27c65be6d1acc9", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "支持使用 Microsoft Visual Studio 2015 及更新版本构建我们的 NLS 代码", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}, "url": "/docs/compare/?release=11.9#11.9-faefe54ad3081668", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "7a6e7b9b3a637f86c82de6f4b558b6a7", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "支持使用 Microsoft Visual Studio 2015 及更新版本构建我们的 NLS 代码", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}, "url": "/docs/compare/?release=10.14#10.14-faefe54ad3081668", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "7fcdeb83f6c5f8f71c7139afaa23b33b", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码", "evidence": {"same_day": true, "patch_ids": ["29c2e08d0a2c29f552c731dd9bcc98c8"], "statement_hash": "9c793d4eef81b10eff8ed2ec31b24a42fc2218018d4a48e08538ac6a6e313247"}, "url": "/docs/compare/?release=9.5.23#9.5.23-9ee9b115482b6daa", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}, {"id": "9.6.19-fc10bc0a2cbeb4a2", "cves": [], "html": "<p>避免源代码树之上若干层存在名为 <code>configure</code> 的文件时我们的 MSVC 安装脚本可能失败的问题（Arnold Müller）</p>\n<p>这可能干扰某些通过寻找 <code>configure</code> 来识别源代码树顶层的逻辑。</p>", "text": "避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题（Arnold Müller） 这可能干扰某些通过寻找 configure 来识别源代码树顶层的逻辑。", "title": "避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.6.19/#id-1.11.6.10.5", "source_hash": "c946708268137e7b5d7a8201d4923263bb583291486391098e287829429cf6f0", "section_path": ["变更"], "commit_groups": [["089baec6f", "57dc672c2", "8de137017", "8dfc7d888", "bb24af50d", "d2a995990"]], "identity_text": "Avoid possible failure of our MSVC install script when there is a file named configure several levels above the source code tree (Arnold Müller) This could confuse some logic that looked for configure to identify the top level of the source tree.", "commit_aliases": ["089baec6f", "57dc672c2", "8de137017", "8dfc7d888", "bb24af50d", "d2a995990"], "source_commits": ["57dc672c2"], "source_entry_id": "9.6.19/changes/027", "db_id": "5a089c519a74010d8f68abcb082f9f80", "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c", "relations": [{"rule": 2, "type": "equivalent", "target": "49af0f329df4d0658c7f13de20eaea19", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}}, {"rule": 2, "type": "equivalent", "target": "7e1d74c3902963942f3cc35a944362c7", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}}, {"rule": 2, "type": "equivalent", "target": "9b06130ba16057cabf80b9788e09efdf", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}}, {"rule": 2, "type": "equivalent", "target": "f6d196b7059fdce8b38b8f34ab16fa29", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}}], "version": "9.6.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "f6d196b7059fdce8b38b8f34ab16fa29", "kind": "equivalent", "version": "12.4", "label": "12.4", "title": "避免源代码树上方数级目录中存在名为 configure 的文件时，MSVC 安装脚本可能发生的失败", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}, "url": "/docs/compare/?release=12.4#12.4-ec32180a01a307a3", "source_url": "/docs/release/12.4/#id-1.11.6.24.5"}, {"db_id": "9b06130ba16057cabf80b9788e09efdf", "kind": "equivalent", "version": "11.9", "label": "11.9", "title": "避免源代码树上方数级目录中存在名为 configure 的文件时，MSVC 安装脚本可能发生的失败", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}, "url": "/docs/compare/?release=11.9#11.9-5602feb7d8813647", "source_url": "/docs/release/11.9/#id-1.11.6.18.5"}, {"db_id": "7e1d74c3902963942f3cc35a944362c7", "kind": "equivalent", "version": "10.14", "label": "10.14", "title": "避免源代码树上方数级目录中存在名为 configure 的文件时，MSVC 安装脚本可能发生的失败", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}, "url": "/docs/compare/?release=10.14#10.14-5602feb7d8813647", "source_url": "/docs/release/10.14/#id-1.11.6.14.5"}, {"db_id": "49af0f329df4d0658c7f13de20eaea19", "kind": "equivalent", "version": "9.5.23", "label": "9.5.23", "title": "避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题", "evidence": {"same_day": true, "patch_ids": ["33d02dc79563883aa8b39226b08f0af4"], "statement_hash": "180711604c7bdb67464d7f68349556b50b1819f8da9705e30bcaeb82dadd2f6c"}, "url": "/docs/compare/?release=9.5.23#9.5.23-fc10bc0a2cbeb4a2", "source_url": "/docs/release/9.5.23/#id-1.11.6.7.6"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 27}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 13}, {"key": "security", "label": "安全相关", "count": 1}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 13}], "total": 27, "release_count": 1, "cross_major": false, "cve_count": 2, "cves": [{"id": "CVE-2018-1058", "url": "https://www.postgresql.org/support/security/CVE-2018-1058/", "fixed": {"10": "10.3", "9.3": "9.3.22", "9.4": "9.4.17", "9.5": "9.5.12", "9.6": "9.6.8"}, "score": 8.8, "title": "使 contrib 模块的安装脚本更安全", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "affected": {"10": "10", "9.3": "9.3", "9.4": "9.4", "9.5": "9.5", "9.6": "9.6"}, "component": "client", "published": {"10": "2018-03-01", "9.3": "2018-03-01", "9.4": "2018-03-01", "9.5": "2018-03-01", "9.6": "2018-03-01"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2018-03-01", "fixed_version": "9.6.8"}, {"id": "CVE-2020-14350", "url": "https://www.postgresql.org/support/security/CVE-2020-14350/", "fixed": {"10": "10.14", "11": "11.9", "12": "12.4", "9.5": "9.5.23", "9.6": "9.6.19"}, "score": 7.1, "title": "使 contrib 模块的安装脚本更安全", "vector": "AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "affected": {"10": "10", "11": "11", "12": "12", "9.5": "9.5", "9.6": "9.6"}, "component": "core server", "published": {"10": "2020-08-13", "11": "2020-08-13", "12": "2020-08-13", "9.5": "2020-08-13", "9.6": "2020-08-13"}, "introduced": {}, "cvss_version": "3.0", "description_en": "When a superuser runs certain CREATE EXTENSION statements, users may be able to execute arbitrary SQL functions under the identity of that superuser. The attacker must have permission to create objects in the new extension's schema or a schema of a prerequisite extension. Not all extensions are vulnerable.\n\nIn addition to correcting the extensions provided with PostgreSQL, the PostgreSQL Global Development Group is issuing guidance for third-party extension authors to secure their own work.\n\nThe PostgreSQL project thanks Andres Freund for reporting this problem.", "first_published": "2020-08-13", "fixed_version": "9.6.19"}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 27, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}