{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2015-02-05", "build": "9.0.19", "major": "9.0", "minor": 19, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.19", "eol_date": "2015-10-08", "date_text": "2015-02-05", "supported": false, "manual_url": "/docs/9.0/release-9-0-19.html", "source_url": "/docs/release/9.0.19/", "entry_count": 52, "placeholder": false, "content_hash": "056c9f9f8918839e1b930b82ec4e2c1668c48d12bbca867fe3c861b01f44e007", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 52, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于运行 9.0.X 的用户，不需要进行转储/恢复。</p>\n<p>不过，如果你是从早于 9.0.18 的版本升级，请参见<a href=\"/docs/9.0/release-9-0-18.html\" title=\"E.6. 版本 9.0.18\">第 E.6 节</a>。</p>", "compatibility_count": 0, "label": "9.0.19", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 4255, "support_days": -4010}, "groups": [{"date": "2015-02-05", "build": "9.0.19", "major": "9.0", "minor": 19, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.19", "eol_date": "2015-10-08", "date_text": "2015-02-05", "supported": false, "manual_url": "/docs/9.0/release-9-0-19.html", "source_url": "/docs/release/9.0.19/", "entry_count": 52, "placeholder": false, "content_hash": "056c9f9f8918839e1b930b82ec4e2c1668c48d12bbca867fe3c861b01f44e007", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 52, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于运行 9.0.X 的用户，不需要进行转储/恢复。</p>\n<p>不过，如果你是从早于 9.0.18 的版本升级，请参见<a href=\"/docs/9.0/release-9-0-18.html\" title=\"E.6. 版本 9.0.18\">第 E.6 节</a>。</p>", "compatibility_count": 0, "label": "9.0.19", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 4255, "support_days": -4010, "entries": [{"id": "9.0.19-5abdf545382b956d", "cves": ["CVE-2015-0241"], "html": "<p>修复<code>to_char()</code>中的缓冲区越界（Bruce Momjian）</p>\n<p>当<code>to_char()</code>处理要求数字位数很多的数字格式模板时，<span>PostgreSQL</span>会读取越过缓冲区末尾。当处理恶意构造的时间戳格式模板时，<span>PostgreSQL</span>会写入越过缓冲区末尾。两种情况都可能导致服务器崩溃。我们尚未排除导致权限提升攻击的可能性，尽管这种攻击似乎不太可能。（CVE-2015-0241）</p>", "text": "修复to_char()中的缓冲区越界（Bruce Momjian） 当to_char()处理要求数字位数很多的数字格式模板时，PostgreSQL会读取越过缓冲区末尾。当处理恶意构造的时间戳格式模板时，PostgreSQL会写入越过缓冲区末尾。两种情况都可能导致服务器崩溃。我们尚未排除导致权限提升攻击的可能性，尽管这种攻击似乎不太可能。（CVE-2015-0241）", "title": "修复to_char()中的缓冲区越界", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "a157f7c661ad1795b8f502da571420c55546c4ef56ac40f33766f0c94b1ec064", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix buffer overruns in to_char() (Bruce Momjian) When to_char() processes a numeric formatting template calling for a large number of digits, PostgreSQL would read past the end of a buffer. When processing a crafted timestamp formatting template, PostgreSQL would write past the end of a buffer. Either case could crash the server. We have not ruled out the possibility of attacks that lead to privilege escalation, though they seem unlikely. (CVE-2015-0241)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/001", "db_id": "00433c31ad068919dad0d185b0e0830b", "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc", "relations": [{"rule": 2, "type": "equivalent", "target": "7fbcc218f6fcc168e6abdb0c1a7eada0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}, {"rule": 2, "type": "equivalent", "target": "990e692bca9e900ed4c908bc797fc663", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}, {"rule": 2, "type": "equivalent", "target": "b9ffdfeacae629cd4f9feb83065e7139", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}, {"rule": 2, "type": "equivalent", "target": "c631a08d16c113f5569d11ae86171cd7", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "990e692bca9e900ed4c908bc797fc663", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}, "url": "/docs/compare/?release=9.4.1#9.4.1-5abdf545382b956d", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "c631a08d16c113f5569d11ae86171cd7", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}, "url": "/docs/compare/?release=9.3.6#9.3.6-5abdf545382b956d", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "b9ffdfeacae629cd4f9feb83065e7139", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}, "url": "/docs/compare/?release=9.2.10#9.2.10-5abdf545382b956d", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "7fbcc218f6fcc168e6abdb0c1a7eada0", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}, "url": "/docs/compare/?release=9.1.15#9.1.15-5abdf545382b956d", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-5682fb8f3ee1ede9", "cves": ["CVE-2015-0242"], "html": "<p>修复替换实现的<code>*printf()</code>函数中的缓冲区越界（Tom Lane）</p>\n<p><span>PostgreSQL</span>包含<code>printf</code>及相关函数的替换实现。当代码格式化浮点数（转换说明符<code>e</code>、<code>E</code>、<code>f</code>、<code>F</code>、<code>g</code>或<code>G</code>）且请求的精度超过约 500 时，会发生栈缓冲区越界。这会导致服务器崩溃，我们尚未排除导致权限提升攻击的可能性。数据库用户可以通过<code>to_char()</code>SQL 函数触发这种缓冲区越界。虽然这是唯一受影响的核心<span>PostgreSQL</span>功能，但使用 printf 族函数的扩展模块也可能存在风险。</p>\n<p>此问题主要影响 Windows 上的<span>PostgreSQL</span>。<span>PostgreSQL</span>在系统实现足够完善时会使用系统实现，而其他现代平台上正是如此。（CVE-2015-0242）</p>", "text": "修复替换实现的*printf()函数中的缓冲区越界（Tom Lane） PostgreSQL包含printf及相关函数的替换实现。当代码格式化浮点数（转换说明符e、E、f、F、g或G）且请求的精度超过约 500 时，会发生栈缓冲区越界。这会导致服务器崩溃，我们尚未排除导致权限提升攻击的可能性。数据库用户可以通过to_char()SQL 函数触发这种缓冲区越界。虽然这是唯一受影响的核心PostgreSQL功能，但使用 printf 族函数的扩展模块也可能存在风险。 此问题主要影响 Windows 上的PostgreSQL。PostgreSQL在系统实现足够完善时会使用系统实现，而其他现代平台上正是如此。（CVE-2015-0242）", "title": "修复替换实现的*printf()函数中的缓冲区越界", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "5f47e489d7749693fe5aa1a29c694d7974a60dd1287f042f49b84c30616a8a3e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix buffer overrun in replacement *printf() functions (Tom Lane) PostgreSQL includes a replacement implementation of printf and related functions. This code will overrun a stack buffer when formatting a floating point number (conversion specifiers e, E, f, F, g or G) with requested precision greater than about 500. This will crash the server, and we have not ruled out the possibility of attacks that lead to privilege escalation. A database user can trigger such a buffer overrun through the to_char() SQL function. While that is the only affected core PostgreSQL functionality, extension modules that use printf-family functions may be at risk as well. This issue primarily affects PostgreSQL on Windows. PostgreSQL uses the system implementation of these functions where adequate, which it is on other modern platforms. (CVE-2015-0242)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/002", "db_id": "b0c008a254ec058d02a2618bd567cf4c", "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd", "relations": [{"rule": 2, "type": "equivalent", "target": "20377b1aff86d05b63b56759b510d2ee", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "258b89db478fc51a49887ec39072dadd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "d75d745b8f5d780f4c0162a00c5eaabd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "e8f6fe7647398f6730a6866289021746", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "20377b1aff86d05b63b56759b510d2ee", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}, "url": "/docs/compare/?release=9.4.1#9.4.1-5682fb8f3ee1ede9", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "d75d745b8f5d780f4c0162a00c5eaabd", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}, "url": "/docs/compare/?release=9.3.6#9.3.6-5682fb8f3ee1ede9", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "258b89db478fc51a49887ec39072dadd", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}, "url": "/docs/compare/?release=9.2.10#9.2.10-5682fb8f3ee1ede9", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "e8f6fe7647398f6730a6866289021746", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}, "url": "/docs/compare/?release=9.1.15#9.1.15-5682fb8f3ee1ede9", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-ba8a921637c059ee", "cves": ["CVE-2015-0243"], "html": "<p>修复<code>contrib/pgcrypto</code>中的缓冲区越界（Marko Tiikkaja、Noah Misch）</p>\n<p><code>pgcrypto</code>模块中内存大小跟踪的错误导致了栈缓冲区越界和对未初始化内存内容的不当依赖。缓冲区越界情况可能导致服务器崩溃，我们尚未排除导致权限提升攻击的可能性。（CVE-2015-0243）</p>", "text": "修复contrib/pgcrypto中的缓冲区越界（Marko Tiikkaja、Noah Misch） pgcrypto模块中内存大小跟踪的错误导致了栈缓冲区越界和对未初始化内存内容的不当依赖。缓冲区越界情况可能导致服务器崩溃，我们尚未排除导致权限提升攻击的可能性。（CVE-2015-0243）", "title": "修复contrib/pgcrypto中的缓冲区越界", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "86edd1b7baf7d6ad7e9d4a8aa8a78d09fa3b30d46d8468ac4d8ba0e4557aac63", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix buffer overruns in contrib/pgcrypto (Marko Tiikkaja, Noah Misch) Errors in memory size tracking within the pgcrypto module permitted stack buffer overruns and improper dependence on the contents of uninitialized memory. The buffer overrun cases can crash the server, and we have not ruled out the possibility of attacks that lead to privilege escalation. (CVE-2015-0243)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/003", "db_id": "3ed48b6f2719f35041f836ac6e215fb0", "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a", "relations": [{"rule": 2, "type": "equivalent", "target": "33a5647981837b909c2bb075f8f38a0b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "6a3ee8f85359a8b979be3eb7a4ca87d6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "b63889e55d5fcf7ed29673a3f75e4ffb", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "f5f49269e786e76501353fb6c32e22bb", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "f5f49269e786e76501353fb6c32e22bb", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}, "url": "/docs/compare/?release=9.4.1#9.4.1-ba8a921637c059ee", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "6a3ee8f85359a8b979be3eb7a4ca87d6", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}, "url": "/docs/compare/?release=9.3.6#9.3.6-ba8a921637c059ee", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "33a5647981837b909c2bb075f8f38a0b", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}, "url": "/docs/compare/?release=9.2.10#9.2.10-ba8a921637c059ee", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "b63889e55d5fcf7ed29673a3f75e4ffb", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}, "url": "/docs/compare/?release=9.1.15#9.1.15-ba8a921637c059ee", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-5c8ec36fd01bef35", "cves": ["CVE-2015-0244"], "html": "<p>修复出错后前端/后端协议可能失去同步的问题（Heikki Linnakangas）</p>\n<p>如果服务器在从客户端读取协议消息中途发生任何错误，它可能失去同步，错误地把消息数据的一部分解释为新的协议消息。能够在命令参数中提交恶意构造二进制数据的攻击者可能借此注入自己的 SQL 命令。语句超时和查询取消是触发此场景最可能的错误来源。尤其容易受影响的是既使用超时又将任意用户构造数据作为二进制查询参数提交的应用程序。禁用语句超时会降低但不能消除被利用的风险。感谢 Emil Lenngren 报告此问题。（CVE-2015-0244）</p>", "text": "修复出错后前端/后端协议可能失去同步的问题（Heikki Linnakangas） 如果服务器在从客户端读取协议消息中途发生任何错误，它可能失去同步，错误地把消息数据的一部分解释为新的协议消息。能够在命令参数中提交恶意构造二进制数据的攻击者可能借此注入自己的 SQL 命令。语句超时和查询取消是触发此场景最可能的错误来源。尤其容易受影响的是既使用超时又将任意用户构造数据作为二进制查询参数提交的应用程序。禁用语句超时会降低但不能消除被利用的风险。感谢 Emil Lenngren 报告此问题。（CVE-2015-0244）", "title": "修复出错后前端/后端协议可能失去同步的问题", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "b6ba8159ac979144f6bc22585121f572db487e2f39a79a3d7069c31aaf961002", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix possible loss of frontend/backend protocol synchronization after an error (Heikki Linnakangas) If any error occurred while the server was in the middle of reading a protocol message from the client, it could lose synchronization and incorrectly try to interpret part of the message's data as a new protocol message. An attacker able to submit crafted binary data within a command parameter might succeed in injecting his own SQL commands this way. Statement timeout and query cancellation are the most likely sources of errors triggering this scenario. Particularly vulnerable are applications that use a timeout and also submit arbitrary user-crafted data as binary query parameters. Disabling statement timeout will reduce, but not eliminate, the risk of exploit. Our thanks to Emil Lenngren for reporting this issue. (CVE-2015-0244)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/004", "db_id": "1c2e17a917530e1056e37a0fd57770c8", "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0", "relations": [{"rule": 2, "type": "equivalent", "target": "52fd0db7fb421f3b0015c80774055b74", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}, {"rule": 2, "type": "equivalent", "target": "58ef80e95adca1b234c4943ae030d777", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}, {"rule": 2, "type": "equivalent", "target": "c30f7e4786dc10d32b60a9b2623b0f1b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}, {"rule": 2, "type": "equivalent", "target": "f341e3494142a5b46900f555e822f4b3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "c30f7e4786dc10d32b60a9b2623b0f1b", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}, "url": "/docs/compare/?release=9.4.1#9.4.1-5c8ec36fd01bef35", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "f341e3494142a5b46900f555e822f4b3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}, "url": "/docs/compare/?release=9.3.6#9.3.6-5c8ec36fd01bef35", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "52fd0db7fb421f3b0015c80774055b74", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}, "url": "/docs/compare/?release=9.2.10#9.2.10-5c8ec36fd01bef35", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "58ef80e95adca1b234c4943ae030d777", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}, "url": "/docs/compare/?release=9.1.15#9.1.15-5c8ec36fd01bef35", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-d6dd48b9aef647b0", "cves": ["CVE-2014-8161"], "html": "<p>修复通过约束违反错误消息的信息泄露（Stephen Frost）</p>\n<p>某些服务器错误消息会显示违反约束（如唯一约束）的列的值。如果用户对该表的所有列没有<code>SELECT</code>权限，这可能意味着暴露用户不应看到的值。我们调整了代码，使值仅在来自 SQL 命令本身或用户可以查询到时才显示。（CVE-2014-8161）</p>", "text": "修复通过约束违反错误消息的信息泄露（Stephen Frost） 某些服务器错误消息会显示违反约束（如唯一约束）的列的值。如果用户对该表的所有列没有SELECT权限，这可能意味着暴露用户不应看到的值。我们调整了代码，使值仅在来自 SQL 命令本身或用户可以查询到时才显示。（CVE-2014-8161）", "title": "修复通过约束违反错误消息的信息泄露", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "32f79c1afb24b91afe4cb279d629760313d220027dfc3787501c33dd579b449e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix information leak via constraint-violation error messages (Stephen Frost) Some server error messages show the values of columns that violate a constraint, such as a unique constraint. If the user does not have SELECT privilege on all columns of the table, this could mean exposing values that the user should not be able to see. Adjust the code so that values are displayed only when they came from the SQL command or could be selected by the user. (CVE-2014-8161)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/005", "db_id": "2ba0e0820371c50e724133f60a0846df", "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c", "relations": [{"rule": 2, "type": "equivalent", "target": "258c224c072d8571536846c0f589715b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}}, {"rule": 2, "type": "equivalent", "target": "707992cea29a842212624b2871eda46f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}}, {"rule": 2, "type": "equivalent", "target": "b5b170039eff8c708d777a87cc56f4ee", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}}, {"rule": 2, "type": "equivalent", "target": "cb23b2e67a0393165767d5061c7ff291", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "258c224c072d8571536846c0f589715b", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}, "url": "/docs/compare/?release=9.4.1#9.4.1-d6dd48b9aef647b0", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "707992cea29a842212624b2871eda46f", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}, "url": "/docs/compare/?release=9.3.6#9.3.6-d6dd48b9aef647b0", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "cb23b2e67a0393165767d5061c7ff291", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}, "url": "/docs/compare/?release=9.2.10#9.2.10-d6dd48b9aef647b0", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "b5b170039eff8c708d777a87cc56f4ee", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}, "url": "/docs/compare/?release=9.1.15#9.1.15-d6dd48b9aef647b0", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-f18a20a2bec524ef", "cves": ["CVE-2014-0067"], "html": "<p>锁定 Windows 上回归测试的临时安装（Noah Misch）</p>\n<p>使用 SSPI 认证，只允许启动测试套件的操作系统用户连接。这在 Windows 上关闭了此前已在其他平台上关闭的同一漏洞，即其他用户可能连接到测试 postmaster。（CVE-2014-0067）</p>", "text": "锁定 Windows 上回归测试的临时安装（Noah Misch） 使用 SSPI 认证，只允许启动测试套件的操作系统用户连接。这在 Windows 上关闭了此前已在其他平台上关闭的同一漏洞，即其他用户可能连接到测试 postmaster。（CVE-2014-0067）", "title": "锁定 Windows 上回归测试的临时安装", "commits": [], "section": "变更", "category": "security", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "b9e8d9bca46e10d5d0eba76f0382cf1347dcb30daad63a5f9e1ba659b291cea0", "section_path": ["变更"], "commit_groups": [], "identity_text": "Lock down regression testing's temporary installations on Windows (Noah Misch) Use SSPI authentication to allow connections only from the OS user who launched the test suite. This closes on Windows the same vulnerability previously closed on other platforms, namely that other users might be able to connect to the test postmaster. (CVE-2014-0067)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/006", "db_id": "c55d12255d904c843b58f7491c8c32f0", "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d", "relations": [{"rule": 2, "type": "equivalent", "target": "779b293b81f06e9a89366b402c92716f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}, {"rule": 2, "type": "equivalent", "target": "c9e6817fa33417170bff26fa71630be0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}, {"rule": 2, "type": "equivalent", "target": "d1316adb0f1a83d10b6bceddd551ca7d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}, {"rule": 2, "type": "equivalent", "target": "e40096ec33c08b11ceda62b0eeaed41b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}], "version": "9.0.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "e40096ec33c08b11ceda62b0eeaed41b", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}, "url": "/docs/compare/?release=9.4.1#9.4.1-f18a20a2bec524ef", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "d1316adb0f1a83d10b6bceddd551ca7d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}, "url": "/docs/compare/?release=9.3.6#9.3.6-f18a20a2bec524ef", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "779b293b81f06e9a89366b402c92716f", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}, "url": "/docs/compare/?release=9.2.10#9.2.10-f18a20a2bec524ef", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "c9e6817fa33417170bff26fa71630be0", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}, "url": "/docs/compare/?release=9.1.15#9.1.15-f18a20a2bec524ef", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-582ea016fa9f4158", "cves": [], "html": "<p>避免在使用 <code>ALTER DATABASE SET TABLESPACE</code> 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏（Tom Lane）</p>", "text": "避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏（Tom Lane）", "title": "避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "70fd72b4ea72ba4029d67c8f13d3080081900c59f6ad4e2cc8a6548c6ba47dcc", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid possible data corruption if ALTER DATABASE SET TABLESPACE is used to move a database to a new tablespace and then shortly later move it back to its original tablespace (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/007", "db_id": "413d24efd179754607333c77f109c91c", "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea", "relations": [{"rule": 2, "type": "equivalent", "target": "34a819efecd6cbded98343eed96ecd44", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}}, {"rule": 2, "type": "equivalent", "target": "45486756689bc9c137b3abbd2a8866d4", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}}, {"rule": 2, "type": "equivalent", "target": "7278db76e96b7e107724639fc17e62da", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7278db76e96b7e107724639fc17e62da", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}, "url": "/docs/compare/?release=9.3.6#9.3.6-582ea016fa9f4158", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "45486756689bc9c137b3abbd2a8866d4", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}, "url": "/docs/compare/?release=9.2.10#9.2.10-582ea016fa9f4158", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "34a819efecd6cbded98343eed96ecd44", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fdbacc0c7248772ecfddc674160c2748a9f5ee110d9ce2119b4e78bfa7c2bfea"}, "url": "/docs/compare/?release=9.1.15#9.1.15-582ea016fa9f4158", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-421e116b5aef5c99", "cves": [], "html": "<p>避免当事务内的 <code>ANALYZE</code> 被回滚时损坏表（Andres Freund、Tom Lane、Michael Paquier）</p>\n<p>如果失败的事务此前删除了表上的最后一个索引、规则或触发器，该表会处于损坏状态：相关的 <code>pg_class</code> 标志本应设置却未被设置。</p>", "text": "避免当事务内的 ANALYZE 被回滚时损坏表（Andres Freund、Tom Lane、Michael Paquier） 如果失败的事务此前删除了表上的最后一个索引、规则或触发器，该表会处于损坏状态：相关的 pg_class 标志本应设置却未被设置。", "title": "避免当事务内的 ANALYZE 被回滚时损坏表", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "9fea2c6377c3768797cd70e9f60c884679a8e254b6345821ba5fc33d5d503490", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid corrupting tables when ANALYZE inside a transaction is rolled back (Andres Freund, Tom Lane, Michael Paquier) If the failing transaction had earlier removed the last index, rule, or trigger from the table, the table would be left in a corrupted state with the relevant pg_class flags not set though they should be.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/008", "db_id": "e8e57e07476a94a6d6d8d7584f04f055", "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e", "relations": [{"rule": 2, "type": "equivalent", "target": "23b53ecd652d84dd2dd413294fd6521d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}}, {"rule": 2, "type": "equivalent", "target": "8caf71bc52ba8ad5f05273584f0dddd5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}}, {"rule": 2, "type": "equivalent", "target": "9a9d0dcf2f63e759f5380b51fd62a4ca", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8caf71bc52ba8ad5f05273584f0dddd5", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免当事务内的 ANALYZE 被回滚时损坏表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}, "url": "/docs/compare/?release=9.3.6#9.3.6-421e116b5aef5c99", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "9a9d0dcf2f63e759f5380b51fd62a4ca", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "避免当事务内的 ANALYZE 被回滚时损坏表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}, "url": "/docs/compare/?release=9.2.10#9.2.10-421e116b5aef5c99", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "23b53ecd652d84dd2dd413294fd6521d", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "避免当事务内的 ANALYZE 被回滚时损坏表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "316139d0974234907cd01c27df24264c574ded69c2b48264a6b98e2ddd03575e"}, "url": "/docs/compare/?release=9.1.15#9.1.15-421e116b5aef5c99", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-c8abbaf7927fce95", "cves": [], "html": "<p>修复 EvalPlanQual 处理中使用已释放内存的问题（Tom Lane）</p>\n<p>在<code>READ COMMITTED</code>模式下，锁定或更新最近更新过的行的查询可能因此缺陷崩溃。</p>", "text": "修复 EvalPlanQual 处理中使用已释放内存的问题（Tom Lane） 在READ COMMITTED模式下，锁定或更新最近更新过的行的查询可能因此缺陷崩溃。", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "36d067ad9cfb32b16eadf51fcf4be023de02358ae07224d1d7cc7509035c6f18", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix use-of-already-freed-memory problem in EvalPlanQual processing (Tom Lane) In READ COMMITTED mode, queries that lock or update recently-updated rows could crash as a result of this bug.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/009", "db_id": "0f099841cca4b33405c3ddc8f4fead00", "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910", "relations": [{"rule": 2, "type": "equivalent", "target": "086c756fd0e9397971b54d7a28c49444", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}}, {"rule": 2, "type": "equivalent", "target": "518b6f89d70c4bd72f57e27b1c90c8aa", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}}, {"rule": 2, "type": "equivalent", "target": "897dbd23f31c45b407d751eaf85051d7", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}}, {"rule": 2, "type": "equivalent", "target": "c232791f560eab5b20a7fd1cced3be9c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "518b6f89d70c4bd72f57e27b1c90c8aa", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}, "url": "/docs/compare/?release=9.4.1#9.4.1-c8abbaf7927fce95", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "086c756fd0e9397971b54d7a28c49444", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}, "url": "/docs/compare/?release=9.3.6#9.3.6-c8abbaf7927fce95", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "c232791f560eab5b20a7fd1cced3be9c", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}, "url": "/docs/compare/?release=9.2.10#9.2.10-c8abbaf7927fce95", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "897dbd23f31c45b407d751eaf85051d7", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}, "url": "/docs/compare/?release=9.1.15#9.1.15-c8abbaf7927fce95", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-b1d55e83cf4cc95d", "cves": [], "html": "<p>修复在子表上使用部分索引时 <code>SELECT FOR UPDATE</code> 的规划问题（Kyotaro Horiguchi）</p>\n<p>在 <code>READ COMMITTED</code> 模式下，<code>SELECT FOR UPDATE</code> 在重新检查最近更新的行以确认它是否仍满足查询的 <code>WHERE</code> 条件时，还必须重新检查部分索引的 <code>WHERE</code> 条件。如果索引属于继承子表，就会遗漏这一要求，因此有可能错误地返回已不再满足查询条件的行。</p>", "text": "修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题（Kyotaro Horiguchi） 在 READ COMMITTED 模式下，SELECT FOR UPDATE 在重新检查最近更新的行以确认它是否仍满足查询的 WHERE 条件时，还必须重新检查部分索引的 WHERE 条件。如果索引属于继承子表，就会遗漏这一要求，因此有可能错误地返回已不再满足查询条件的行。", "title": "修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "bc996767707e2361bc3f18f596c9eec0ee1d5fe39e8ae19435f9f7dae5624418", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix planning of SELECT FOR UPDATE when using a partial index on a child table (Kyotaro Horiguchi) In READ COMMITTED mode, SELECT FOR UPDATE must also recheck the partial index's WHERE condition when rechecking a recently-updated row to see if it still satisfies the query's WHERE condition. This requirement was missed if the index belonged to an inheritance child table, so that it was possible to incorrectly return rows that no longer satisfy the query condition.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/010", "db_id": "d7be3c4335349cd5c1a397c0f662487b", "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435", "relations": [{"rule": 2, "type": "equivalent", "target": "146aec752b81b2b4395318ac831a802d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}}, {"rule": 2, "type": "equivalent", "target": "59fd481145887a120dad83abb8869791", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}}, {"rule": 2, "type": "equivalent", "target": "5ddd034f28b89f798a4c7c670c6c478b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "146aec752b81b2b4395318ac831a802d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}, "url": "/docs/compare/?release=9.3.6#9.3.6-b1d55e83cf4cc95d", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "59fd481145887a120dad83abb8869791", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}, "url": "/docs/compare/?release=9.2.10#9.2.10-b1d55e83cf4cc95d", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "5ddd034f28b89f798a4c7c670c6c478b", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "36908b6ff0ae3603effb5d580a33f80dbaf095b34c33a38ec0653a51e0c34435"}, "url": "/docs/compare/?release=9.1.15#9.1.15-b1d55e83cf4cc95d", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-6b6979e576d5a10f", "cves": [], "html": "<p>修复 <code>SELECT FOR UPDATE</code> 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case（Tom Lane）</p>\n<p>在 <code>READ COMMITTED</code> 模式下，扫描继承树的 <code>SELECT FOR UPDATE</code> 可能错误地返回来自前一个子表的行，而不是本应从后一个子表返回的行。</p>", "text": "修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case（Tom Lane） 在 READ COMMITTED 模式下，扫描继承树的 SELECT FOR UPDATE 可能错误地返回来自前一个子表的行，而不是本应从后一个子表返回的行。", "title": "修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "84021473aab8be3d6294dcc7737c996fe92227622d5116af873f28b26affa75d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix corner case wherein SELECT FOR UPDATE could return a row twice, and possibly miss returning other rows (Tom Lane) In READ COMMITTED mode, a SELECT FOR UPDATE that is scanning an inheritance tree could incorrectly return a row from a prior child table instead of the one it should return from a later child table.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/011", "db_id": "fe162f08321da551b1a14893a637f697", "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6", "relations": [{"rule": 2, "type": "equivalent", "target": "aaeaed3b9b37367a610922fde7031533", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}}, {"rule": 2, "type": "equivalent", "target": "d2306970eb0b897986d601c730f7f559", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}}, {"rule": 2, "type": "equivalent", "target": "fbef46d750d950e659efa4e806de3441", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "fbef46d750d950e659efa4e806de3441", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}, "url": "/docs/compare/?release=9.3.6#9.3.6-6b6979e576d5a10f", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "aaeaed3b9b37367a610922fde7031533", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}, "url": "/docs/compare/?release=9.2.10#9.2.10-6b6979e576d5a10f", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "d2306970eb0b897986d601c730f7f559", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "50e0848c1827ba8c6efc14c54fba1123fe9547b2c4df6757f3537d4a8131b9d6"}, "url": "/docs/compare/?release=9.1.15#9.1.15-6b6979e576d5a10f", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-be10ee78f9d706c7", "cves": [], "html": "<p>拒绝 <code>FOREIGN KEY</code> 声明的被引用列列表中出现重复的列名（David Rowley）</p>\n<p>这一限制符合 SQL 标准。此前我们并未显式拒绝这种情况，但之后代码会以看起来很怪异的错误失败。</p>", "text": "拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名（David Rowley） 这一限制符合 SQL 标准。此前我们并未显式拒绝这种情况，但之后代码会以看起来很怪异的错误失败。", "title": "拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "a5194c55b9935e8f3a4d3ba5b355c816e136d16dc69954da1365317a6d486145", "section_path": ["变更"], "commit_groups": [], "identity_text": "Reject duplicate column names in the referenced-columns list of a FOREIGN KEY declaration (David Rowley) This restriction is per SQL standard. Previously we did not reject the case explicitly, but later on the code would fail with bizarre-looking errors.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/012", "db_id": "14d041c9b061879311a6d5818de548cd", "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f", "relations": [{"rule": 2, "type": "equivalent", "target": "41f72220da3db16a17eaec14c2e627a5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}}, {"rule": 2, "type": "equivalent", "target": "b0ae638906d62ba0cb7e686757b226b9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}}, {"rule": 2, "type": "equivalent", "target": "c35e86e1c1b6302743853aada4360120", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b0ae638906d62ba0cb7e686757b226b9", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}, "url": "/docs/compare/?release=9.3.6#9.3.6-be10ee78f9d706c7", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "41f72220da3db16a17eaec14c2e627a5", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}, "url": "/docs/compare/?release=9.2.10#9.2.10-be10ee78f9d706c7", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "c35e86e1c1b6302743853aada4360120", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3f94d513bde91f1a555ed53315658e982a8ac98d877b83f0919f02d3e28d9a8f"}, "url": "/docs/compare/?release=9.1.15#9.1.15-be10ee78f9d706c7", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-346213b07b974f37", "cves": [], "html": "<p>修复 <code>numeric</code> 值求大整数次幂时的缺陷（Tom Lane）</p>\n<p>之前的代码可能得到错误答案，或者在意识到结果必然溢出之前消耗过多的时间和内存。</p>", "text": "修复 numeric 值求大整数次幂时的缺陷（Tom Lane） 之前的代码可能得到错误答案，或者在意识到结果必然溢出之前消耗过多的时间和内存。", "title": "修复 numeric 值求大整数次幂时的缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "88168a773634c7ac151c23e83993e58b44c4ecbe58aa122c49b13e3fe6ad1f5f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix bugs in raising a numeric value to a large integral power (Tom Lane) The previous code could get a wrong answer, or consume excessive amounts of time and memory before realizing that the answer must overflow.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/013", "db_id": "226b0d2f03397d7dbf0638a08d8da624", "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180", "relations": [{"rule": 2, "type": "equivalent", "target": "7d0d18ac69223d1468f26a28418eefe6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}}, {"rule": 2, "type": "equivalent", "target": "c30ea11602d9305c6c10179bf6a5819f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}}, {"rule": 2, "type": "equivalent", "target": "ca1d795c6c39392c30dcb77106377778", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c30ea11602d9305c6c10179bf6a5819f", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 numeric 值求大整数次幂时的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}, "url": "/docs/compare/?release=9.3.6#9.3.6-346213b07b974f37", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "7d0d18ac69223d1468f26a28418eefe6", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 numeric 值求大整数次幂时的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}, "url": "/docs/compare/?release=9.2.10#9.2.10-346213b07b974f37", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "ca1d795c6c39392c30dcb77106377778", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 numeric 值求大整数次幂时的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6285d1d3128b3d16a0317de5d824d9cf7270ce1dd2bf93afdea25e3d34e180"}, "url": "/docs/compare/?release=9.1.15#9.1.15-346213b07b974f37", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-c2c0a9e71f032555", "cves": [], "html": "<p>在 <code>numeric_recv()</code> 中，按照值的 <code>dscale</code> 字段截去会被隐藏的小数位（Tom Lane）</p>\n<p><code>numeric</code> 值的显示标度（<code>dscale</code>）绝不应小于非零小数位的位数；但显然至少存在一个有缺陷的客户端应用，它发送的二进制 <code>numeric</code> 值违反了这一点。这会导致奇怪的行为，因为多余的数字位虽然不会被打印出来，却会被算术运算考虑在内。风险最小的修复方法似乎是在接收时把这类<span>“<span>隐藏的</span>”</span>数字位截去，使值确实与它打印出来的一致。</p>", "text": "在 numeric_recv() 中，按照值的 dscale 字段截去会被隐藏的小数位（Tom Lane） numeric 值的显示标度（dscale）绝不应小于非零小数位的位数；但显然至少存在一个有缺陷的客户端应用，它发送的二进制 numeric 值违反了这一点。这会导致奇怪的行为，因为多余的数字位虽然不会被打印出来，却会被算术运算考虑在内。风险最小的修复方法似乎是在接收时把这类“隐藏的”数字位截去，使值确实与它打印出来的一致。", "title": "在 numeric_recv() 中，按照值的 dscale 字段截去会被隐藏的小数位", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "266ed7ecc62946f2d9b7be44c50ab48c100cb08ece5dcaea758eac79caa8a631", "section_path": ["变更"], "commit_groups": [], "identity_text": "In numeric_recv(), truncate away any fractional digits that would be hidden according to the value's dscale field (Tom Lane) A numeric value's display scale (dscale) should never be less than the number of nonzero fractional digits; but apparently there's at least one broken client application that transmits binary numeric values in which that's true. This leads to strange behavior since the extra digits are taken into account by arithmetic operations even though they aren't printed. The least risky fix seems to be to truncate away such hidden digits on receipt, so that the value is indeed what it prints as.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/014", "db_id": "21fb91e361458197ee38691243863b4b", "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6", "relations": [{"rule": 2, "type": "equivalent", "target": "4834f26d14365fb568228674fbec047d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}}, {"rule": 2, "type": "equivalent", "target": "845e86021abbcc7c1b02acb5271bd874", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}}, {"rule": 2, "type": "equivalent", "target": "dd6854dbfb0e874f5cb956a1ec05afb5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4834f26d14365fb568228674fbec047d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "在 numeric_recv() 中，按照值的 dscale 字段截去会被隐藏的小数位", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}, "url": "/docs/compare/?release=9.3.6#9.3.6-c2c0a9e71f032555", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "845e86021abbcc7c1b02acb5271bd874", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "在 numeric_recv() 中，按照值的 dscale 字段截去会被隐藏的小数位", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}, "url": "/docs/compare/?release=9.2.10#9.2.10-c2c0a9e71f032555", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "dd6854dbfb0e874f5cb956a1ec05afb5", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "在 numeric_recv() 中，按照值的 dscale 字段截去会被隐藏的小数位", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d3bce8c380d14c365384a17ea6e41dfc2e4cd35690f37cc861cfbb0916d3c6c6"}, "url": "/docs/compare/?release=9.1.15#9.1.15-c2c0a9e71f032555", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-72077f08360f6c25", "cves": [], "html": "<p>拒绝超出范围的数字时区规范（Tom Lane）</p>\n<p>超过 +/- 168 小时（一周）的简单数字时区规范此前会被接受，但随后可能在某些操作中导致空指针解引用崩溃。如此大的 UTC 偏移没有实际使用场景，因此予以拒绝。</p>", "text": "拒绝超出范围的数字时区规范（Tom Lane） 超过 +/- 168 小时（一周）的简单数字时区规范此前会被接受，但随后可能在某些操作中导致空指针解引用崩溃。如此大的 UTC 偏移没有实际使用场景，因此予以拒绝。", "title": "拒绝超出范围的数字时区规范", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "41abc2abc81d19f9928d7d157c7e472f6b1e1f2cdf41e4189c66ac8507f3c290", "section_path": ["变更"], "commit_groups": [], "identity_text": "Reject out-of-range numeric timezone specifications (Tom Lane) Simple numeric timezone specifications exceeding +/- 168 hours (one week) would be accepted, but could then cause null-pointer dereference crashes in certain operations. There's no use-case for such large UTC offsets, so reject them.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/015", "db_id": "339967c45fa7f4dcd7b22794dae2b3be", "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491", "relations": [{"rule": 2, "type": "equivalent", "target": "616840fcef2dec6122d552f0c0182a76", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}}, {"rule": 2, "type": "equivalent", "target": "e8f6b0bd9c7bc0ac116bfb195304c0e6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}}, {"rule": 2, "type": "equivalent", "target": "ec3e5c8b8132753010f98027b961bf1c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "616840fcef2dec6122d552f0c0182a76", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "拒绝超出范围的数字时区规范", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}, "url": "/docs/compare/?release=9.3.6#9.3.6-72077f08360f6c25", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "ec3e5c8b8132753010f98027b961bf1c", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "拒绝超出范围的数字时区规范", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}, "url": "/docs/compare/?release=9.2.10#9.2.10-72077f08360f6c25", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "e8f6b0bd9c7bc0ac116bfb195304c0e6", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "拒绝超出范围的数字时区规范", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "2e9cfd0353b581050111091b8a05b8dda8f193ffb78ec52305943659206a1491"}, "url": "/docs/compare/?release=9.1.15#9.1.15-72077f08360f6c25", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-3646836441105e34", "cves": [], "html": "<p>修复 <code>tsquery</code> <code>@&gt;</code> <code>tsquery</code> 操作符中的缺陷（Heikki Linnakangas）</p>\n<p>两个不同的词如果 CRC 相同，就会被认为匹配。此外，如果第二个操作数的词条比第一个多，就会被假定不包含于第一个；这是错误的，因为它可能包含重复词条。</p>", "text": "修复 tsquery @> tsquery 操作符中的缺陷（Heikki Linnakangas） 两个不同的词如果 CRC 相同，就会被认为匹配。此外，如果第二个操作数的词条比第一个多，就会被假定不包含于第一个；这是错误的，因为它可能包含重复词条。", "title": "修复 tsquery @> tsquery 操作符中的缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "b0d33c96b2d6d490b313d4a9c43af74e09000b73db3c5fbdcdb9ea5078902a7b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix bugs in tsquery @> tsquery operator (Heikki Linnakangas) Two different terms would be considered to match if they had the same CRC. Also, if the second operand had more terms than the first, it would be assumed not to be contained in the first; which is wrong since it might contain duplicate terms.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/016", "db_id": "8b4d94e9c711372745f6e4bde08b6260", "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c", "relations": [{"rule": 2, "type": "equivalent", "target": "073908f63316621ce9f92daf5cd1cf99", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}}, {"rule": 2, "type": "equivalent", "target": "0b356da5acc14069e9074d5617ae6eb5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}}, {"rule": 2, "type": "equivalent", "target": "593eb443e8f3a2f59e5a0a7ff457e9a0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "073908f63316621ce9f92daf5cd1cf99", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 tsquery @> tsquery 操作符中的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}, "url": "/docs/compare/?release=9.3.6#9.3.6-3646836441105e34", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "0b356da5acc14069e9074d5617ae6eb5", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 tsquery @> tsquery 操作符中的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}, "url": "/docs/compare/?release=9.2.10#9.2.10-3646836441105e34", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "593eb443e8f3a2f59e5a0a7ff457e9a0", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 tsquery @> tsquery 操作符中的缺陷", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5f57753b4271a1bf7953422aa3a6f3bf14abae9655079807c17ebed56df3e18c"}, "url": "/docs/compare/?release=9.1.15#9.1.15-3646836441105e34", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-17572e8fc6e28797", "cves": [], "html": "<p>增强 ispell 词典对有问题的词缀文件的防御（Tom Lane）</p>", "text": "增强 ispell 词典对有问题的词缀文件的防御（Tom Lane）", "title": "增强 ispell 词典对有问题的词缀文件的防御", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "d9cfebb08027ff8d459138adc40bc0ce0dbbc1c91f5580beaa4bb69acca89ef6", "section_path": ["变更"], "commit_groups": [], "identity_text": "Improve ispell dictionary's defenses against bad affix files (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/017", "db_id": "7a03301f2c1d0351aad964b6396bc43c", "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b", "relations": [{"rule": 2, "type": "equivalent", "target": "6069d8e7563f29922ec06939c7c0cb97", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}}, {"rule": 2, "type": "equivalent", "target": "87198737c4c8031534103083ea445bd6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}}, {"rule": 2, "type": "equivalent", "target": "8e5a4722ccc9e5ab562e61c96a54009e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8e5a4722ccc9e5ab562e61c96a54009e", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "增强 ispell 词典对有问题的词缀文件的防御", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}, "url": "/docs/compare/?release=9.3.6#9.3.6-17572e8fc6e28797", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "6069d8e7563f29922ec06939c7c0cb97", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "增强 ispell 词典对有问题的词缀文件的防御", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}, "url": "/docs/compare/?release=9.2.10#9.2.10-17572e8fc6e28797", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "87198737c4c8031534103083ea445bd6", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "增强 ispell 词典对有问题的词缀文件的防御", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a6e2bb64a9d55946b95c6c16c51a92ec875e069f33efc63ecb9fb66403aea6b"}, "url": "/docs/compare/?release=9.1.15#9.1.15-17572e8fc6e28797", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-73efaff769c7f010", "cves": [], "html": "<p>允许词典（thesaurus）包含超过 64K 个短语（David Boutin）</p>\n<p>之前的代码在词典过大时会崩溃，因此这被视为一个可回移植的缺陷修复，而不是新特性。</p>", "text": "允许词典（thesaurus）包含超过 64K 个短语（David Boutin） 之前的代码在词典过大时会崩溃，因此这被视为一个可回移植的缺陷修复，而不是新特性。", "title": "允许词典（thesaurus）包含超过 64K 个短语", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "8ddc2c7bf4eca3c0d8cf5f4dcdb2ab3a5cd9fcbded0b3891cab194911491cd8d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Allow more than 64K phrases in a thesaurus dictionary (David Boutin) The previous coding could crash on an oversize dictionary, so this was deemed a back-patchable bug fix rather than a feature addition.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/018", "db_id": "cbd68185635558db05c9a186c164dd54", "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90", "relations": [{"rule": 2, "type": "equivalent", "target": "c2458801a6ce67d19f1f06934babf983", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}}, {"rule": 2, "type": "equivalent", "target": "dcd9cf15046d50a017d352f989a52ab0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}}, {"rule": 2, "type": "equivalent", "target": "e199b788726a407a7bf779038ca7a189", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c2458801a6ce67d19f1f06934babf983", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "允许词典（thesaurus）包含超过 64K 个短语", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}, "url": "/docs/compare/?release=9.3.6#9.3.6-73efaff769c7f010", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "e199b788726a407a7bf779038ca7a189", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "允许词典（thesaurus）包含超过 64K 个短语", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}, "url": "/docs/compare/?release=9.2.10#9.2.10-73efaff769c7f010", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "dcd9cf15046d50a017d352f989a52ab0", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "允许词典（thesaurus）包含超过 64K 个短语", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cddc90bbe8355fb1d2f6f42bc9c7be15e6551770a751e7afa7958447c89f9b90"}, "url": "/docs/compare/?release=9.1.15#9.1.15-73efaff769c7f010", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-0017727b7307a437", "cves": [], "html": "<p>修复<code>xpath()</code>中的命名空间处理（Ali Akbar）</p>\n<p>此前，如果命名空间声明附在输入<code>xml</code>值的祖先元素上而非被返回的特定元素上，<code>xpath()</code>调用产生的<code>xml</code>值就不会包含命名空间声明。我们将祖先声明传播下来，使结果在孤立考虑时也是正确的。</p>", "text": "修复xpath()中的命名空间处理（Ali Akbar） 此前，如果命名空间声明附在输入xml值的祖先元素上而非被返回的特定元素上，xpath()调用产生的xml值就不会包含命名空间声明。我们将祖先声明传播下来，使结果在孤立考虑时也是正确的。", "title": "修复xpath()中的命名空间处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "7ac603500dfc58d6564df309d6da3d444c956764581d16f3181a2aee86c5fcfb", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix namespace handling in xpath() (Ali Akbar) Previously, the xml value resulting from an xpath() call would not have namespace declarations if the namespace declarations were attached to an ancestor element in the input xml value, rather than to the specific element being returned. Propagate the ancestral declaration so that the result is correct when considered in isolation.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/019", "db_id": "e02e7ae3730aeb589ddb39a776a2c0bd", "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4", "relations": [{"rule": 2, "type": "equivalent", "target": "4f5d5dacfc520d2589717a919c2fcd88", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}, {"rule": 2, "type": "equivalent", "target": "5fa736d394abe62f83fa3c9db7f944fe", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}, {"rule": 2, "type": "equivalent", "target": "6f9cd2c1e9b116425ea46c74fab68a9b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}, {"rule": 2, "type": "equivalent", "target": "757dff59c4efdb461302def83729216c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "4f5d5dacfc520d2589717a919c2fcd88", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}, "url": "/docs/compare/?release=9.4.1#9.4.1-0017727b7307a437", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "6f9cd2c1e9b116425ea46c74fab68a9b", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}, "url": "/docs/compare/?release=9.3.6#9.3.6-0017727b7307a437", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "757dff59c4efdb461302def83729216c", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}, "url": "/docs/compare/?release=9.2.10#9.2.10-0017727b7307a437", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "5fa736d394abe62f83fa3c9db7f944fe", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}, "url": "/docs/compare/?release=9.1.15#9.1.15-0017727b7307a437", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-6dccd35019b5d86d", "cves": [], "html": "<p>修复嵌套 append 关系（例如 <code>UNION ALL</code> 子查询中的继承表）的规划器问题（Tom Lane）</p>", "text": "修复嵌套 append 关系（例如 UNION ALL 子查询中的继承表）的规划器问题（Tom Lane）", "title": "修复嵌套 append 关系（例如 UNION ALL 子查询中的继承表）的规划器问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "8156e38f210636e9025a8cc5c62a660e6c43dacd4d472fb8657c10fcf08670da", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix planner problems with nested append relations, such as inherited tables within UNION ALL subqueries (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/020", "db_id": "6786a15e534b5f80e0a3500d1dc889ff", "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc", "relations": [{"rule": 2, "type": "equivalent", "target": "578b2c370af1a37ba126b76d6f8d3c2a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}}, {"rule": 2, "type": "equivalent", "target": "d35026742dc052608b333f774e064754", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}}, {"rule": 2, "type": "equivalent", "target": "e4a28641d3f94493cc6a014bf16ab7a4", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "578b2c370af1a37ba126b76d6f8d3c2a", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复嵌套 append 关系（例如 UNION ALL 子查询中的继承表）的规划器问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}, "url": "/docs/compare/?release=9.3.6#9.3.6-6dccd35019b5d86d", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "e4a28641d3f94493cc6a014bf16ab7a4", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复嵌套 append 关系（例如 UNION ALL 子查询中的继承表）的规划器问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}, "url": "/docs/compare/?release=9.2.10#9.2.10-6dccd35019b5d86d", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "d35026742dc052608b333f774e064754", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复嵌套 append 关系（例如 UNION ALL 子查询中的继承表）的规划器问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a72a900e52604a6102568e9f327b239341cc465b13a30da5ae99135a6e327fc"}, "url": "/docs/compare/?release=9.1.15#9.1.15-6dccd35019b5d86d", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-323ce84089ff3d42", "cves": [], "html": "<p>当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归（Andrew Gierth）</p>", "text": "当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归（Andrew Gierth）", "title": "当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "de8a5a9c086b08c080ccbfc16fea13314ece31f14ea1ada035bf4a1fb1dfc1fa", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fail cleanly when a GiST index tuple doesn't fit on a page, rather than going into infinite recursion (Andrew Gierth)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/021", "db_id": "8ff81901ffd63447d66288aace0171c9", "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202", "relations": [{"rule": 2, "type": "equivalent", "target": "2a89c2a630bfe3801c6decd95a8602bd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}}, {"rule": 2, "type": "equivalent", "target": "a2c1f03fa4e2ce0cae9abf5f3f8aa6e1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}}, {"rule": 2, "type": "equivalent", "target": "c037035d6e4e6a7175e2e60b010a2a9a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "a2c1f03fa4e2ce0cae9abf5f3f8aa6e1", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}, "url": "/docs/compare/?release=9.3.6#9.3.6-323ce84089ff3d42", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "c037035d6e4e6a7175e2e60b010a2a9a", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}, "url": "/docs/compare/?release=9.2.10#9.2.10-323ce84089ff3d42", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "2a89c2a630bfe3801c6decd95a8602bd", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "当 GiST 索引元组放不进一个页面时干净地报错，而不是陷入无限递归", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6b59a6887fad265effd526836171db8562e60058729064be2f54fcd778904202"}, "url": "/docs/compare/?release=9.1.15#9.1.15-323ce84089ff3d42", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-b0f7f57a000a8576", "cves": [], "html": "<p>把设有逐表 <code>cost_limit</code> 和/或 <code>cost_delay</code> 设置的表排除在自动清理的全局代价平衡规则之外（Álvaro Herrera）</p>\n<p>先前的行为实质上忽略了这些逐表设置，这并非本意。现在，拥有这类设置的表将按照这些设置进行清理，独立于其他自动清理工作进程的状况。这可能导致比以前更重的总 I/O 负载，因此应当重新审视这类设置是否合理。</p>", "text": "把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外（Álvaro Herrera） 先前的行为实质上忽略了这些逐表设置，这并非本意。现在，拥有这类设置的表将按照这些设置进行清理，独立于其他自动清理工作进程的状况。这可能导致比以前更重的总 I/O 负载，因此应当重新审视这类设置是否合理。", "title": "把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "160140f905ffb989e5b71071d037d891413a45ae4c137f99fdb42585097b48cf", "section_path": ["变更"], "commit_groups": [], "identity_text": "Exempt tables that have per-table cost_limit and/or cost_delay settings from autovacuum's global cost balancing rules (Álvaro Herrera) The previous behavior resulted in basically ignoring these per-table settings, which was unintended. Now, a table having such settings will be vacuumed using those settings, independently of what is going on in other autovacuum workers. This may result in heavier total I/O load than before, so such settings should be re-examined for sanity.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/022", "db_id": "752436ccd6f81cb8be968c3b7e60ac30", "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd", "relations": [{"rule": 2, "type": "equivalent", "target": "56d5db1144cfc063b85f91bc6a0d7bf5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}}, {"rule": 2, "type": "equivalent", "target": "6fa7ebcd4913be2aaf2b370d81141ccd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}}, {"rule": 2, "type": "equivalent", "target": "ecfffbd33f49c11764c0f639e106a243", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "6fa7ebcd4913be2aaf2b370d81141ccd", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}, "url": "/docs/compare/?release=9.3.6#9.3.6-b0f7f57a000a8576", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "ecfffbd33f49c11764c0f639e106a243", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}, "url": "/docs/compare/?release=9.2.10#9.2.10-b0f7f57a000a8576", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "56d5db1144cfc063b85f91bc6a0d7bf5", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05ab5ca671c5fa63a75076111bedf822445ddefbfb6dc509f760fded9dc027dd"}, "url": "/docs/compare/?release=9.1.15#9.1.15-b0f7f57a000a8576", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-d1130ea15074dac2", "cves": [], "html": "<p>避免在自动清理名义上被关闭时仍然进行全面的自动清理（Tom Lane）</p>\n<p>即使自动清理名义上被关闭，我们仍会启动自动清理工作进程，去清理有 XID 回卷风险的表。然而，这样的工作进程随后会继续清理目标数据库中所有满足常规自动清理阈值的表。这往好里说是相当出乎意料，往坏里说会延误对回卷威胁的响应。现已修复：如果自动清理被关闭，工作进程<span><em>只</em></span>执行防回卷清理，不做任何其他工作。</p>", "text": "避免在自动清理名义上被关闭时仍然进行全面的自动清理（Tom Lane） 即使自动清理名义上被关闭，我们仍会启动自动清理工作进程，去清理有 XID 回卷风险的表。然而，这样的工作进程随后会继续清理目标数据库中所有满足常规自动清理阈值的表。这往好里说是相当出乎意料，往坏里说会延误对回卷威胁的响应。现已修复：如果自动清理被关闭，工作进程只执行防回卷清理，不做任何其他工作。", "title": "避免在自动清理名义上被关闭时仍然进行全面的自动清理", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "97fa61d66728343e4c897c17eb67417cb0321f322b0e52ee10c332b3b652f985", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid wholesale autovacuuming when autovacuum is nominally off (Tom Lane) Even when autovacuum is nominally off, we will still launch autovacuum worker processes to vacuum tables that are at risk of XID wraparound. However, such a worker process then proceeded to vacuum all tables in the target database, if they met the usual thresholds for autovacuuming. This is at best pretty unexpected; at worst it delays response to the wraparound threat. Fix it so that if autovacuum is turned off, workers only do anti-wraparound vacuums and not any other work.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/023", "db_id": "82cf724f9159190d006bc1596327a197", "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0", "relations": [{"rule": 2, "type": "equivalent", "target": "4021bf65a4b3bf1ea4f6bfdb6dc900e9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}}, {"rule": 2, "type": "equivalent", "target": "aee4d00422aeaf5bd89e855f09b8a5d2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}}, {"rule": 2, "type": "equivalent", "target": "c851c1ab8a2dc9e8932b5f25e7417219", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c851c1ab8a2dc9e8932b5f25e7417219", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免在自动清理名义上被关闭时仍然进行全面的自动清理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}, "url": "/docs/compare/?release=9.3.6#9.3.6-d1130ea15074dac2", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "aee4d00422aeaf5bd89e855f09b8a5d2", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "避免在自动清理名义上被关闭时仍然进行全面的自动清理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}, "url": "/docs/compare/?release=9.2.10#9.2.10-d1130ea15074dac2", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "4021bf65a4b3bf1ea4f6bfdb6dc900e9", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "避免在自动清理名义上被关闭时仍然进行全面的自动清理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f6a0932ed1423c95a0f69c862e00f9185b4444c11eb989bd7686cab28244de0"}, "url": "/docs/compare/?release=9.1.15#9.1.15-d1130ea15074dac2", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-ccf4e5cf65943d4b", "cves": [], "html": "<p>修复热备查询与重放整页镜像之间的竞态条件（Heikki Linnakangas）</p>\n<p>这一失误可能导致热备中正在执行的查询出现瞬时错误。</p>", "text": "修复热备查询与重放整页镜像之间的竞态条件（Heikki Linnakangas） 这一失误可能导致热备中正在执行的查询出现瞬时错误。", "title": "修复热备查询与重放整页镜像之间的竞态条件", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "ff75b1bc136cc42321b14804a857bf50e9029ec861166b372ad7e18e2d360db9", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix race condition between hot standby queries and replaying a full-page image (Heikki Linnakangas) This mistake could result in transient errors in queries being executed in hot standby.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/024", "db_id": "4b5dfc49ec998d2fc465eb58c75d725e", "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593", "relations": [{"rule": 2, "type": "equivalent", "target": "1bd1bad09b77ea48409873a7eeea80d1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}}, {"rule": 2, "type": "equivalent", "target": "4b29a174aae1beeef99fc80afd93f64c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}}, {"rule": 2, "type": "equivalent", "target": "5ea44d80df5105bfd05afc6f9c39e246", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "1bd1bad09b77ea48409873a7eeea80d1", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复热备查询与重放整页镜像之间的竞态条件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}, "url": "/docs/compare/?release=9.3.6#9.3.6-ccf4e5cf65943d4b", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "4b29a174aae1beeef99fc80afd93f64c", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复热备查询与重放整页镜像之间的竞态条件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}, "url": "/docs/compare/?release=9.2.10#9.2.10-ccf4e5cf65943d4b", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "5ea44d80df5105bfd05afc6f9c39e246", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复热备查询与重放整页镜像之间的竞态条件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "efc7aa39025dfeb03323743ae1e06ffaf163edec3cad5d324d6ffd19caf31593"}, "url": "/docs/compare/?release=9.1.15#9.1.15-ccf4e5cf65943d4b", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-b44a747ebd454cc6", "cves": [], "html": "<p>修复若干恢复逻辑不当忽略 <code>COMMIT/ABORT PREPARED</code> WAL 记录的情况（Heikki Linnakangas）</p>\n<p>最值得注意的疏漏是 <code>recovery_min_apply_delay</code> 未能延迟一次两阶段提交的应用。</p>", "text": "修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况（Heikki Linnakangas） 最值得注意的疏漏是 recovery_min_apply_delay 未能延迟一次两阶段提交的应用。", "title": "修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "0f1453b30ddda8d538d9ff6dd0ffad72443095bd7ba5f3f24d1ff67630d9642f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix several cases where recovery logic improperly ignored WAL records for COMMIT/ABORT PREPARED (Heikki Linnakangas) The most notable oversight was that recovery_min_apply_delay failed to delay application of a two-phase commit.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/025", "db_id": "7733d06f0af58c82840b00a770303d72", "patch_ids": [], "statement_hash": "fcc238ad32bcdb7b9ee2a01ff8fb478f1fc0627c8b71eeb02d555429acf036f9", "relations": [], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.19-99aa1bdc6e571fca", "cves": [], "html": "<p>避免为时间线历史文件创建不必要的 <code>.ready</code> 标记文件（Fujii Masao）</p>", "text": "避免为时间线历史文件创建不必要的 .ready 标记文件（Fujii Masao）", "title": "避免为时间线历史文件创建不必要的 .ready 标记文件", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "2da8e8677e411b584cbc684e4318e194875efeac1f55f6dc1a0ada95eec759b7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid creating unnecessary .ready marker files for timeline history files (Fujii Masao)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/026", "db_id": "9f6159c73a83f3abd22d7549db8622fd", "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73", "relations": [{"rule": 2, "type": "equivalent", "target": "5626ddd890f9da57afc15adf99201eb6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}}, {"rule": 2, "type": "equivalent", "target": "5dda04433a1fdbb90a67624a8cf43bb8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}}, {"rule": 2, "type": "equivalent", "target": "d058ab05f49b8043e2f2c69c112629db", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d058ab05f49b8043e2f2c69c112629db", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免为时间线历史文件创建不必要的 .ready 标记文件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}, "url": "/docs/compare/?release=9.3.6#9.3.6-99aa1bdc6e571fca", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "5626ddd890f9da57afc15adf99201eb6", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "避免为时间线历史文件创建不必要的 .ready 标记文件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}, "url": "/docs/compare/?release=9.2.10#9.2.10-99aa1bdc6e571fca", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "5dda04433a1fdbb90a67624a8cf43bb8", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "避免为时间线历史文件创建不必要的 .ready 标记文件", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05b47e6f45e602e3981b081d13456b0b2f12eda9da59db4f7918011a600a4e73"}, "url": "/docs/compare/?release=9.1.15#9.1.15-99aa1bdc6e571fca", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-11b141fe12caa562", "cves": [], "html": "<p>修复当使用空的预备语句且 <code>log_statement</code> 设置为 <code>mod</code> 或 <code>ddl</code> 时可能出现的空指针解引用（Fujii Masao）</p>", "text": "修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用（Fujii Masao）", "title": "修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "2d7a0be309fb5f7b2b9051f9311d7fd205573ec8d8830224f67429c31bbb465d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix possible null pointer dereference when an empty prepared statement is used and the log_statement setting is mod or ddl (Fujii Masao)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/027", "db_id": "aee5363880e440aa1fae90fda8e97ef5", "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509", "relations": [{"rule": 2, "type": "equivalent", "target": "43a4b956b83b1f3782c8fb2999348d92", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}}, {"rule": 2, "type": "equivalent", "target": "b2864447ef6fc392d6814fff230bd635", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}}, {"rule": 2, "type": "equivalent", "target": "c94832afdf3c4a7eeb0b3f20b4963e53", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c94832afdf3c4a7eeb0b3f20b4963e53", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}, "url": "/docs/compare/?release=9.3.6#9.3.6-11b141fe12caa562", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "b2864447ef6fc392d6814fff230bd635", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}, "url": "/docs/compare/?release=9.2.10#9.2.10-11b141fe12caa562", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "43a4b956b83b1f3782c8fb2999348d92", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "05c556fc9b663c22641cad8eac80810450ad172e09f19a15867bf3c09b3b3509"}, "url": "/docs/compare/?release=9.1.15#9.1.15-11b141fe12caa562", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-973a1a096e7244ed", "cves": [], "html": "<p>将 <span>“<span>pgstat wait timeout</span>”</span> 警告消息改为 LOG 级别，并重新措辞使其更易理解（Tom Lane）</p>\n<p>这条消息最初被认为基本属于不可能发生的情况，但它在我们较慢的 buildfarm 成员上出现得足够频繁，成了干扰。现已将其降为 LOG 级别，并在措辞上多下了一点功夫：现在它的内容为 <span>“<span>using stale statistics instead of current ones because stats collector is not responding</span>”</span>。</p>", "text": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解（Tom Lane） 这条消息最初被认为基本属于不可能发生的情况，但它在我们较慢的 buildfarm 成员上出现得足够频繁，成了干扰。现已将其降为 LOG 级别，并在措辞上多下了一点功夫：现在它的内容为 “using stale statistics instead of current ones because stats collector is not responding”。", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "ac8bc74e7f55b25d3daa5736d86a507fab2aa80715cbb1e8ed4017359881f17d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Change pgstat wait timeout warning message to be LOG level, and rephrase it to be more understandable (Tom Lane) This message was originally thought to be essentially a can't-happen case, but it occurs often enough on our slower buildfarm members to be a nuisance. Reduce it to LOG level, and expend a bit more effort on the wording: it now reads using stale statistics instead of current ones because stats collector is not responding.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/028", "db_id": "62eb1e3aaeb610d31969b8496b7dd78a", "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf", "relations": [{"rule": 2, "type": "equivalent", "target": "0474cd50c0922f5a041997400d962d1e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}, {"rule": 2, "type": "equivalent", "target": "0b651e33c4d526e69e239435ca24fcf9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}, {"rule": 2, "type": "equivalent", "target": "35162f08ef3a72d38987f0163e12f3e5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}, {"rule": 2, "type": "equivalent", "target": "6eab481f0c4e8b30bf398f7471b58468", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0474cd50c0922f5a041997400d962d1e", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}, "url": "/docs/compare/?release=9.4.1#9.4.1-973a1a096e7244ed", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "0b651e33c4d526e69e239435ca24fcf9", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}, "url": "/docs/compare/?release=9.3.6#9.3.6-973a1a096e7244ed", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "6eab481f0c4e8b30bf398f7471b58468", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "将“pgstat wait timeout”警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}, "url": "/docs/compare/?release=9.2.10#9.2.10-e24a6e1f6f169995", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "35162f08ef3a72d38987f0163e12f3e5", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}, "url": "/docs/compare/?release=9.1.15#9.1.15-973a1a096e7244ed", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-c9bca5fd9c2c817f", "cves": [], "html": "<p>修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性（Andres Freund）</p>", "text": "修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性（Andres Freund）", "title": "修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "2d92a2b21b738d8c0219817ba530673c22c9c1168b95b0cab4d2793775466bd4", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix SPARC spinlock implementation to ensure correctness if the CPU is being run in a non-TSO coherency mode, as some non-Solaris kernels do (Andres Freund)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/029", "db_id": "d5b8d25a68184225b1d75e10b77d2a0f", "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a", "relations": [{"rule": 2, "type": "equivalent", "target": "319eef87dc40a316cd10ec86f5d885c3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}}, {"rule": 2, "type": "equivalent", "target": "c353e481398d01be81553c69bf39bfdd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}}, {"rule": 2, "type": "equivalent", "target": "d10959407e154f7adf545eadb49401bd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "319eef87dc40a316cd10ec86f5d885c3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}, "url": "/docs/compare/?release=9.3.6#9.3.6-c9bca5fd9c2c817f", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "d10959407e154f7adf545eadb49401bd", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}, "url": "/docs/compare/?release=9.2.10#9.2.10-c9bca5fd9c2c817f", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "c353e481398d01be81553c69bf39bfdd", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 SPARC 自旋锁实现，确保当 CPU 以非 TSO 一致性模式运行时（如某些非 Solaris 内核所做的那样）其正确性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ff3d1bf2e727091664f6bf0db072a5c7550fe8a243ada6ef095494b74968508a"}, "url": "/docs/compare/?release=9.1.15#9.1.15-c9bca5fd9c2c817f", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-6121348ee91fbb51", "cves": [], "html": "<p>警告 OS X 的 <code>setlocale()</code> 在 postmaster 内启动多余线程的情况（Noah Misch）</p>", "text": "警告 OS X 的 setlocale() 在 postmaster 内启动多余线程的情况（Noah Misch）", "title": "警告 OS X 的 setlocale() 在 postmaster 内启动多余线程的情况", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "9dfefb8619ecc349b0f7d316f27ca074f7983e9afa49ad5220b5c63db3a98ebe", "section_path": ["变更"], "commit_groups": [], "identity_text": "Warn if OS X's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/030", "db_id": "50b397d1cd8f2766f8b981bc551207d3", "patch_ids": [], "statement_hash": "a42274d9e8e85516040da41a9a408733ea801d30ee7519c2860327a8cbe8e43c", "relations": [], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.19-9695d3d49e5eb963", "cves": [], "html": "<p>修复 <code>PQconnectdbParams()</code> 中重复 <code>dbname</code> 参数的处理（Alex Shulgin）</p>\n<p>如果第一个 <code>dbname</code> 出现处包含要展开的连接串或 URI，就会出现意外行为。</p>", "text": "修复 PQconnectdbParams() 中重复 dbname 参数的处理（Alex Shulgin） 如果第一个 dbname 出现处包含要展开的连接串或 URI，就会出现意外行为。", "title": "修复 PQconnectdbParams() 中重复 dbname 参数的处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "22df625bd9028a602c1d1f3b3de6d6828f9de7afe3906f333a60e8164af2c980", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix processing of repeated dbname parameters in PQconnectdbParams() (Alex Shulgin) Unexpected behavior ensued if the first occurrence of dbname contained a connection string or URI to be expanded.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/031", "db_id": "5535075e605e8c0c19c566809fa3e5c8", "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67", "relations": [{"rule": 2, "type": "equivalent", "target": "1ec13702362288c8cb7b3540e0deb270", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}}, {"rule": 2, "type": "equivalent", "target": "36c1a4788f4f14522706fd9200223785", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}}, {"rule": 2, "type": "equivalent", "target": "429fd1863dbd274ded147132bf138eb0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "429fd1863dbd274ded147132bf138eb0", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 PQconnectdbParams() 中重复 dbname 参数的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}, "url": "/docs/compare/?release=9.3.6#9.3.6-9695d3d49e5eb963", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "1ec13702362288c8cb7b3540e0deb270", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 PQconnectdbParams() 中重复 dbname 参数的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}, "url": "/docs/compare/?release=9.2.10#9.2.10-9695d3d49e5eb963", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "36c1a4788f4f14522706fd9200223785", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 PQconnectdbParams() 中重复 dbname 参数的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7ceba4bea8d0240359e4d29bc7b986d4a07d7763a8674fb1270a10dc82ef3a67"}, "url": "/docs/compare/?release=9.1.15#9.1.15-9695d3d49e5eb963", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-aebb5023702b7acf", "cves": [], "html": "<p>确保 <span>libpq</span> 在遇到意外的套接字 EOF 时报告合适的错误消息（Marko Tiikkaja、Tom Lane）</p>\n<p>取决于内核行为，当服务器意外关闭套接字时，<span>libpq</span> 可能返回空的错误字符串而不是有用的信息。</p>", "text": "确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息（Marko Tiikkaja、Tom Lane） 取决于内核行为，当服务器意外关闭套接字时，libpq 可能返回空的错误字符串而不是有用的信息。", "title": "确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "8ce9a73ce34980fbc611fa3388fc103d48d4fa4c262d9b046e82a3c436ff64d8", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure that libpq reports a suitable error message on unexpected socket EOF (Marko Tiikkaja, Tom Lane) Depending on kernel behavior, libpq might return an empty error string rather than something useful when the server unexpectedly closed the socket.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/032", "db_id": "bc1eee2995ef4bc97ef72bd0bb83f7d9", "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2", "relations": [{"rule": 2, "type": "equivalent", "target": "69925bd3fcd0c10bffa088f121766ee3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}}, {"rule": 2, "type": "equivalent", "target": "905c10a90927728d9e7a58be115b5bda", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}}, {"rule": 2, "type": "equivalent", "target": "931a577f6233c9dfa0b9f4a5b46f450e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "69925bd3fcd0c10bffa088f121766ee3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}, "url": "/docs/compare/?release=9.3.6#9.3.6-aebb5023702b7acf", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "931a577f6233c9dfa0b9f4a5b46f450e", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}, "url": "/docs/compare/?release=9.2.10#9.2.10-aebb5023702b7acf", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "905c10a90927728d9e7a58be115b5bda", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fd98673f71e6e40941059ed0738c306eb878019708436b45c80c4e60121809f2"}, "url": "/docs/compare/?release=9.1.15#9.1.15-aebb5023702b7acf", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-7a4f1e67fc561bce", "cves": [], "html": "<p>在 <code>PQreset()</code> 期间清除任何旧的错误消息（Heikki Linnakangas）</p>\n<p>如果反复调用 <code>PQreset()</code> 而连接始终无法重建，失败连接尝试的错误消息会在 <code>PGconn</code> 的错误字符串中不断累积。</p>", "text": "在 PQreset() 期间清除任何旧的错误消息（Heikki Linnakangas） 如果反复调用 PQreset() 而连接始终无法重建，失败连接尝试的错误消息会在 PGconn 的错误字符串中不断累积。", "title": "在 PQreset() 期间清除任何旧的错误消息", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "f78be59e7f7ef3bf6357424c81dd6b82ad11644fbcbfc4b55b81e4aa1332834b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Clear any old error message during PQreset() (Heikki Linnakangas) If PQreset() is called repeatedly, and the connection cannot be re-established, error messages from the failed connection attempts kept accumulating in the PGconn's error string.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/033", "db_id": "cab90edf3b85ffb5926159fe7de57166", "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0", "relations": [{"rule": 2, "type": "equivalent", "target": "960e6797c9197011d2898fc9e8d85a05", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}}, {"rule": 2, "type": "equivalent", "target": "b98cf3c852159bab7dc0775181034270", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}}, {"rule": 2, "type": "equivalent", "target": "c30ff216bec4a74e7f470d4d01042034", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b98cf3c852159bab7dc0775181034270", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "在 PQreset() 期间清除任何旧的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}, "url": "/docs/compare/?release=9.3.6#9.3.6-7a4f1e67fc561bce", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "c30ff216bec4a74e7f470d4d01042034", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "在 PQreset() 期间清除任何旧的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}, "url": "/docs/compare/?release=9.2.10#9.2.10-7a4f1e67fc561bce", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "960e6797c9197011d2898fc9e8d85a05", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "在 PQreset() 期间清除任何旧的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "df696ebc08e23ce5c97d0ca0762046fa6b86f96c3d6dac650584e2552935aee0"}, "url": "/docs/compare/?release=9.1.15#9.1.15-7a4f1e67fc561bce", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-1d46455402260c7d", "cves": [], "html": "<p>正确处理 <span>libpq</span> 解析连接选项期间的内存不足情况（Alex Shulgin、Heikki Linnakangas）</p>", "text": "正确处理 libpq 解析连接选项期间的内存不足情况（Alex Shulgin、Heikki Linnakangas）", "title": "正确处理 libpq 解析连接选项期间的内存不足情况", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "7f87a53c8703966808084fe0d7d9776552cf04171dbfca83796e7dc0b3952a83", "section_path": ["变更"], "commit_groups": [], "identity_text": "Properly handle out-of-memory conditions while parsing connection options in libpq (Alex Shulgin, Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/034", "db_id": "c5207154e564cef8a9fa0e50944287d6", "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a", "relations": [{"rule": 2, "type": "equivalent", "target": "73293bd1607fa18a4bd43ec76539c423", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}}, {"rule": 2, "type": "equivalent", "target": "9213565e1e2863749f4433b0c32824ab", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}}, {"rule": 2, "type": "equivalent", "target": "ff2ff23fd845e95265615670699b5e33", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ff2ff23fd845e95265615670699b5e33", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "正确处理 libpq 解析连接选项期间的内存不足情况", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}, "url": "/docs/compare/?release=9.3.6#9.3.6-1d46455402260c7d", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "9213565e1e2863749f4433b0c32824ab", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "正确处理 libpq 解析连接选项期间的内存不足情况", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}, "url": "/docs/compare/?release=9.2.10#9.2.10-1d46455402260c7d", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "73293bd1607fa18a4bd43ec76539c423", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "正确处理 libpq 解析连接选项期间的内存不足情况", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a996d059f0db0ccf017af25a0fe1db34242e8579fba35c6aa295f8f485254a9a"}, "url": "/docs/compare/?release=9.1.15#9.1.15-1d46455402260c7d", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-85752a1d91670ed8", "cves": [], "html": "<p>修复 <span>ecpg</span> 版 <code>ParseDateTime()</code> 中的数组越界（Michael Paquier）</p>", "text": "修复 ecpg 版 ParseDateTime() 中的数组越界（Michael Paquier）", "title": "修复 ecpg 版 ParseDateTime() 中的数组越界", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "238484a2b1dc772e720cabf1f217b466f21b46d09e8ac42a929a32222cf44967", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix array overrun in ecpg's version of ParseDateTime() (Michael Paquier)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/035", "db_id": "ac56a52bc22f77a1933b82006ef42391", "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2", "relations": [{"rule": 2, "type": "equivalent", "target": "7fba479cce1339bd2f646da92c078d50", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}}, {"rule": 2, "type": "equivalent", "target": "908c54fd4ec279884f38ce05b0d2ad88", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}}, {"rule": 2, "type": "equivalent", "target": "dcf9b81abf48d31da8d984f4426fc7ac", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7fba479cce1339bd2f646da92c078d50", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 ecpg 版 ParseDateTime() 中的数组越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}, "url": "/docs/compare/?release=9.3.6#9.3.6-85752a1d91670ed8", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "dcf9b81abf48d31da8d984f4426fc7ac", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 ecpg 版 ParseDateTime() 中的数组越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}, "url": "/docs/compare/?release=9.2.10#9.2.10-85752a1d91670ed8", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "908c54fd4ec279884f38ce05b0d2ad88", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 ecpg 版 ParseDateTime() 中的数组越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "81e3afc68d041031ef42e2ffb3a26b68f9f989de4e82eedc2118f5f2cd0cf9f2"}, "url": "/docs/compare/?release=9.1.15#9.1.15-85752a1d91670ed8", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-d3f661f7c0807dfc", "cves": [], "html": "<p>在 <span>initdb</span> 中，当指定的密码文件为空时给出更清晰的错误消息（Mats Erik Andersson）</p>", "text": "在 initdb 中，当指定的密码文件为空时给出更清晰的错误消息（Mats Erik Andersson）", "title": "在 initdb 中，当指定的密码文件为空时给出更清晰的错误消息", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "1ad618638095695b91078a2b82d92ed2d7df08c384a65af83bcfe06cb6766527", "section_path": ["变更"], "commit_groups": [], "identity_text": "In initdb, give a clearer error message if a password file is specified but is empty (Mats Erik Andersson)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/036", "db_id": "a9559aee91978fd59ff877e9805a2c45", "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8", "relations": [{"rule": 2, "type": "equivalent", "target": "974589163a17c6bb747036121730c0c6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}}, {"rule": 2, "type": "equivalent", "target": "a795460f251295767d33e073790eed3d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}}, {"rule": 2, "type": "equivalent", "target": "ae26abaab93a54279a6ce7f8e136ad07", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ae26abaab93a54279a6ce7f8e136ad07", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "在 initdb 中，当指定的密码文件为空时给出更清晰的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}, "url": "/docs/compare/?release=9.3.6#9.3.6-d3f661f7c0807dfc", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "974589163a17c6bb747036121730c0c6", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "在 initdb 中，当指定的密码文件为空时给出更清晰的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}, "url": "/docs/compare/?release=9.2.10#9.2.10-d3f661f7c0807dfc", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "a795460f251295767d33e073790eed3d", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "在 initdb 中，当指定的密码文件为空时给出更清晰的错误消息", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f5dccae8c244bb531458ce2d6b4b4ba44277e009c5f640307de6e660b0cc53f8"}, "url": "/docs/compare/?release=9.1.15#9.1.15-d3f661f7c0807dfc", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-22c5dc5d1b423d32", "cves": [], "html": "<p>修复 <span>psql</span> 的 <code>\\s</code> 命令，使其与 libedit 良好配合，并新增分页器支持（Stepan Rutz、Tom Lane）</p>\n<p>使用 libedit 而非 readline 时，<code>\\s</code> 会以一种相当难读的编码格式打印命令历史，而且在较新的 libedit 版本上可能完全失败。现已改为由我们自己打印历史而不是让库来做。一个令人愉快的副作用是，在合适的时候会使用分页器。</p>\n<p>此补丁还修复了一个在使用 libedit 保存命令历史时换行编码不一致的缺陷。旧版 <span>psql</span> 写出的多行历史条目在此补丁后可以干净地读取，但反过来未必可行，具体取决于所涉及的 libedit 版本。</p>", "text": "修复 psql 的 \\s 命令，使其与 libedit 良好配合，并新增分页器支持（Stepan Rutz、Tom Lane） 使用 libedit 而非 readline 时，\\s 会以一种相当难读的编码格式打印命令历史，而且在较新的 libedit 版本上可能完全失败。现已改为由我们自己打印历史而不是让库来做。一个令人愉快的副作用是，在合适的时候会使用分页器。 此补丁还修复了一个在使用 libedit 保存命令历史时换行编码不一致的缺陷。旧版 psql 写出的多行历史条目在此补丁后可以干净地读取，但反过来未必可行，具体取决于所涉及的 libedit 版本。", "title": "修复 psql 的 \\s 命令，使其与 libedit 良好配合，并新增分页器支持", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "e9a663c41108f759cd2de57b8d49aa014ac0f875d24f47886c0f5147d8d05d2b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix psql's \\s command to work nicely with libedit, and add pager support (Stepan Rutz, Tom Lane) When using libedit rather than readline, \\s printed the command history in a fairly unreadable encoded format, and on recent libedit versions might fail altogether. Fix that by printing the history ourselves rather than having the library do it. A pleasant side-effect is that the pager is used if appropriate. This patch also fixes a bug that caused newline encoding to be applied inconsistently when saving the command history with libedit. Multiline history entries written by older psql versions will be read cleanly with this patch, but perhaps not vice versa, depending on the exact libedit versions involved.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/037", "db_id": "d0b653e8011bfcc7e5d6bf63673fcb2c", "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5", "relations": [{"rule": 2, "type": "equivalent", "target": "02964a88cdd4606e839eeff016bf8979", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}}, {"rule": 2, "type": "equivalent", "target": "27a012123eafccd78fd4148b7d003897", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}}, {"rule": 2, "type": "equivalent", "target": "290ba69d6a7bf963e6ff4eea69530d6a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "290ba69d6a7bf963e6ff4eea69530d6a", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 psql 的 \\s 命令，使其与 libedit 良好配合，并新增分页器支持", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}, "url": "/docs/compare/?release=9.3.6#9.3.6-22c5dc5d1b423d32", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "27a012123eafccd78fd4148b7d003897", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 psql 的 \\s 命令，使其与 libedit 良好配合，并新增分页器支持", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}, "url": "/docs/compare/?release=9.2.10#9.2.10-22c5dc5d1b423d32", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "02964a88cdd4606e839eeff016bf8979", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 psql 的 \\s 命令，使其与 libedit 良好配合，并新增分页器支持", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "13c163b3c2affe207fece28813d56bf5fbadecdb5f69210129e68bf5a11498f5"}, "url": "/docs/compare/?release=9.1.15#9.1.15-22c5dc5d1b423d32", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-933ba28d99ae0cad", "cves": [], "html": "<p>改进 <span>psql</span> 特殊变量解析的一致性（Tom Lane）</p>\n<p>允许 <code>ECHO_HIDDEN</code> 和 <code>ON_ERROR_ROLLBACK</code> 使用 <code>on</code> 和 <code>off</code> 的变体拼写（如 <code>1</code>/<code>0</code>）。对 <code>COMP_KEYWORD_CASE</code>、<code>ECHO</code>、<code>ECHO_HIDDEN</code>、<code>HISTCONTROL</code>、<code>ON_ERROR_ROLLBACK</code> 和 <code>VERBOSITY</code> 的无法识别的值发出警告。对所有这些变量的所有值进行不区分大小写的识别；此前大小写敏感与不敏感的行为混杂在一起。</p>", "text": "改进 psql 特殊变量解析的一致性（Tom Lane） 允许 ECHO_HIDDEN 和 ON_ERROR_ROLLBACK 使用 on 和 off 的变体拼写（如 1/0）。对 COMP_KEYWORD_CASE、ECHO、ECHO_HIDDEN、HISTCONTROL、ON_ERROR_ROLLBACK 和 VERBOSITY 的无法识别的值发出警告。对所有这些变量的所有值进行不区分大小写的识别；此前大小写敏感与不敏感的行为混杂在一起。", "title": "改进 psql 特殊变量解析的一致性", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "befee15c5e3c14ceb2fd186d2f000e46dc5ba17cb987b7c48491cc5be7fb8cf5", "section_path": ["变更"], "commit_groups": [], "identity_text": "Improve consistency of parsing of psql's special variables (Tom Lane) Allow variant spellings of on and off (such as 1/0) for ECHO_HIDDEN and ON_ERROR_ROLLBACK. Report a warning for unrecognized values for COMP_KEYWORD_CASE, ECHO, ECHO_HIDDEN, HISTCONTROL, ON_ERROR_ROLLBACK, and VERBOSITY. Recognize all values for all these variables case-insensitively; previously there was a mishmash of case-sensitive and case-insensitive behaviors.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/038", "db_id": "d1293e0760f984f1b45e41b61d4b70d2", "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13", "relations": [{"rule": 2, "type": "equivalent", "target": "6b862f27f186fc8fdf2591fac34b4934", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}, {"rule": 2, "type": "equivalent", "target": "8457f5bc11a38b4a799092ba2f1545b6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}, {"rule": 2, "type": "equivalent", "target": "af5039a683c6a7e653cce3887d3626d2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}, {"rule": 2, "type": "equivalent", "target": "d59d691cdb6b5319e9be7cab3e536274", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8457f5bc11a38b4a799092ba2f1545b6", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}, "url": "/docs/compare/?release=9.4.1#9.4.1-933ba28d99ae0cad", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "d59d691cdb6b5319e9be7cab3e536274", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}, "url": "/docs/compare/?release=9.3.6#9.3.6-933ba28d99ae0cad", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "af5039a683c6a7e653cce3887d3626d2", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}, "url": "/docs/compare/?release=9.2.10#9.2.10-933ba28d99ae0cad", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "6b862f27f186fc8fdf2591fac34b4934", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}, "url": "/docs/compare/?release=9.1.15#9.1.15-933ba28d99ae0cad", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-4eba2ab45b7b3c33", "cves": [], "html": "<p>修复 <span>psql</span> 扩展模式显示在使用 <code>border</code> = 3 且 <code>linestyle</code> = <code>ascii</code> 或 <code>unicode</code> 时的一致性问题（Stephen Frost）</p>", "text": "修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题（Stephen Frost）", "title": "修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "7217e4604421c4804e435236b7f090020278bf8a00a7447d17f16fc98a0a50a8", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix psql's expanded-mode display to work consistently when using border = 3 and linestyle = ascii or unicode (Stephen Frost)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/039", "db_id": "2c3da90d7164c9dd244aa36b890d1216", "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9", "relations": [{"rule": 2, "type": "equivalent", "target": "34c1f1a9ca9bb94fd0844d7522b0f57f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}}, {"rule": 2, "type": "equivalent", "target": "b359ff590bc99913ca7a1b4bd65f094d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}}, {"rule": 2, "type": "equivalent", "target": "e1cecfa2bf0dbfc22ff01487c60201a4", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b359ff590bc99913ca7a1b4bd65f094d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}, "url": "/docs/compare/?release=9.3.6#9.3.6-4eba2ab45b7b3c33", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "e1cecfa2bf0dbfc22ff01487c60201a4", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}, "url": "/docs/compare/?release=9.2.10#9.2.10-4eba2ab45b7b3c33", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "34c1f1a9ca9bb94fd0844d7522b0f57f", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d05d54b7763f502c0c7e58a17c5a696fac6cc527045a69af075629f66fe4edb9"}, "url": "/docs/compare/?release=9.1.15#9.1.15-4eba2ab45b7b3c33", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-6bf477ecafdf9b4b", "cves": [], "html": "<p>修复并行恢复纯模式转储时可能出现的死锁（Robert Haas、Tom Lane）</p>", "text": "修复并行恢复纯模式转储时可能出现的死锁（Robert Haas、Tom Lane）", "title": "修复并行恢复纯模式转储时可能出现的死锁", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "8d904175b3bbe0c6f45766b497b7de864a7090cc217e652d94ea16a1b375df1f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix possible deadlock during parallel restore of a schema-only dump (Robert Haas, Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/040", "db_id": "dbcddf562b2cbe77538f45f2edf102f3", "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45", "relations": [{"rule": 2, "type": "equivalent", "target": "58ee380475fa28f09ecaf41e43f74d8b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}}, {"rule": 2, "type": "equivalent", "target": "6eb333d11c6d582ce3dd202a37f4194b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}}, {"rule": 2, "type": "equivalent", "target": "9f2c83b34e3cfe73bfcab264d8e2e926", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "9f2c83b34e3cfe73bfcab264d8e2e926", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复并行恢复纯模式转储时可能出现的死锁", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}, "url": "/docs/compare/?release=9.3.6#9.3.6-6bf477ecafdf9b4b", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "58ee380475fa28f09ecaf41e43f74d8b", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复并行恢复纯模式转储时可能出现的死锁", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}, "url": "/docs/compare/?release=9.2.10#9.2.10-6bf477ecafdf9b4b", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "6eb333d11c6d582ce3dd202a37f4194b", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复并行恢复纯模式转储时可能出现的死锁", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d2e0364e74e9a24ea45a95351481921cc85a67dbbd150f19038e5f0b3d6efa45"}, "url": "/docs/compare/?release=9.1.15#9.1.15-6bf477ecafdf9b4b", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-6671c8e45449c597", "cves": [], "html": "<p>修复 <code>pg_dump --binary-upgrade</code> 在零列组合类型上的核心转储（Rushabh Lathia）</p>", "text": "修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储（Rushabh Lathia）", "title": "修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "a5997f21a089dd290ff24dfcecb02dca0b8c9c33429843bbe189c40ae5adb347", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix core dump in pg_dump --binary-upgrade on zero-column composite type (Rushabh Lathia)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/041", "db_id": "a42c556b4c8ae7a58ee8036468a35823", "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c", "relations": [{"rule": 2, "type": "equivalent", "target": "23179df9ec3dbbf3bc4bcadaed80f32e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}}, {"rule": 2, "type": "equivalent", "target": "7937c4ae1b68553949f2a704ff0a8b15", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}}, {"rule": 2, "type": "equivalent", "target": "864879357283b1121b56454d7dc1c48e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "864879357283b1121b56454d7dc1c48e", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}, "url": "/docs/compare/?release=9.3.6#9.3.6-6671c8e45449c597", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "7937c4ae1b68553949f2a704ff0a8b15", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}, "url": "/docs/compare/?release=9.2.10#9.2.10-6671c8e45449c597", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "23179df9ec3dbbf3bc4bcadaed80f32e", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7cef21de2b663b8fcb5b1907b9258fb7bbd2d377c304de74be1ebba790f6657c"}, "url": "/docs/compare/?release=9.1.15#9.1.15-6671c8e45449c597", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-04f05895e1d6bbd6", "cves": [], "html": "<p>修复 <code>contrib/pageinspect</code> 的 <code>get_raw_page()</code> 中的块号检查（Tom Lane）</p>\n<p>错误的检查逻辑可能阻止访问非主关系分支中的某些页面。</p>", "text": "修复 contrib/pageinspect 的 get_raw_page() 中的块号检查（Tom Lane） 错误的检查逻辑可能阻止访问非主关系分支中的某些页面。", "title": "修复 contrib/pageinspect 的 get_raw_page() 中的块号检查", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "4de281b058e4b28da441fa4f7a4bc9dc1211f749a4f0e3921750e70913d83d4d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix block number checking in contrib/pageinspect's get_raw_page() (Tom Lane) The incorrect checking logic could prevent access to some pages in non-main relation forks.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/042", "db_id": "f0339297b7e6afe8e77c299dbb905dfc", "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a", "relations": [{"rule": 2, "type": "equivalent", "target": "9e217fbd497cec2831c099fa83a38b5c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}}, {"rule": 2, "type": "equivalent", "target": "ba48e31797b3b09a0b2d9a3d707b4c53", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}}, {"rule": 2, "type": "equivalent", "target": "f0995d643272cf222f23311a0cccbac8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f0995d643272cf222f23311a0cccbac8", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 contrib/pageinspect 的 get_raw_page() 中的块号检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}, "url": "/docs/compare/?release=9.3.6#9.3.6-04f05895e1d6bbd6", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "ba48e31797b3b09a0b2d9a3d707b4c53", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 contrib/pageinspect 的 get_raw_page() 中的块号检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}, "url": "/docs/compare/?release=9.2.10#9.2.10-04f05895e1d6bbd6", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "9e217fbd497cec2831c099fa83a38b5c", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 contrib/pageinspect 的 get_raw_page() 中的块号检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d9cf7939f3b575d0c96ced6029d1c43059b8d6bd02bfd6c43656cb2dda598b9a"}, "url": "/docs/compare/?release=9.1.15#9.1.15-04f05895e1d6bbd6", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-26694b0787ba2682", "cves": [], "html": "<p>修复 <code>contrib/pgcrypto</code> 的 <code>pgp_sym_decrypt()</code>，使其在消息长度比 2 的幂小 6 时不再失败（Marko Tiikkaja）</p>", "text": "修复 contrib/pgcrypto 的 pgp_sym_decrypt()，使其在消息长度比 2 的幂小 6 时不再失败（Marko Tiikkaja）", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt()，使其在消息长度比 2 的幂小 6 时不再失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "884ccc9a0990fb25587ad9dce1cd2ededacd91aceb2d5fc62b896f3e744a96db", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix contrib/pgcrypto's pgp_sym_decrypt() to not fail on messages whose length is 6 less than a power of 2 (Marko Tiikkaja)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/043", "db_id": "d5d6f1e8428e9b7961a20fbdf71e1891", "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4", "relations": [{"rule": 2, "type": "equivalent", "target": "5471e9acf040392515f6c47d09bbff7b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}}, {"rule": 2, "type": "equivalent", "target": "5e7d1d638b65429f916f7bfbe132d440", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}}, {"rule": 2, "type": "equivalent", "target": "ee61fdabf015150c1a79b27a40eae0cb", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "ee61fdabf015150c1a79b27a40eae0cb", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt()，使其在消息长度比 2 的幂小 6 时不再失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}, "url": "/docs/compare/?release=9.3.6#9.3.6-26694b0787ba2682", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "5e7d1d638b65429f916f7bfbe132d440", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt()，使其在消息长度比 2 的幂小 6 时不再失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}, "url": "/docs/compare/?release=9.2.10#9.2.10-26694b0787ba2682", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "5471e9acf040392515f6c47d09bbff7b", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "修复 contrib/pgcrypto 的 pgp_sym_decrypt()，使其在消息长度比 2 的幂小 6 时不再失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4b10794c6f34ab3b038e7b46005d31d86c769d27695d9d3e2070fca3ccbb2d4"}, "url": "/docs/compare/?release=9.1.15#9.1.15-26694b0787ba2682", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-bd7b14c67353f4dd", "cves": [], "html": "<p>安全地处理 <code>contrib/tablefunc</code> 的 <code>connectby()</code> 中的意外查询结果，尤其是 NULL（Michael Paquier）</p>\n<p>此前 <code>connectby()</code> 遇到 NULL 键值时会崩溃。现在它会打印该行但不再进一步递归。</p>", "text": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL（Michael Paquier） 此前 connectby() 遇到 NULL 键值时会崩溃。现在它会打印该行但不再进一步递归。", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "fe58586e3f0b43cae1ff17c5ae4a0a6bf9aad38683b3c934f15d4fdaa6456865", "section_path": ["变更"], "commit_groups": [], "identity_text": "Handle unexpected query results, especially NULLs, safely in contrib/tablefunc's connectby() (Michael Paquier) connectby() previously crashed if it encountered a NULL key value. It now prints that row but doesn't recurse further.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/044", "db_id": "067eb3e6a757e657b3b5527615fcb4ec", "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544", "relations": [{"rule": 2, "type": "equivalent", "target": "2c6aca44c0dcee7e3437799520e1e667", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "490569980196c2e8fc0b80c5f5022562", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "5189b93a8cf6cb0e00c3fcf1dbab030d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "80b793a52a226eb5e5ae486e51a6bca3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "490569980196c2e8fc0b80c5f5022562", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}, "url": "/docs/compare/?release=9.4.1#9.4.1-bd7b14c67353f4dd", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "5189b93a8cf6cb0e00c3fcf1dbab030d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}, "url": "/docs/compare/?release=9.3.6#9.3.6-bd7b14c67353f4dd", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "2c6aca44c0dcee7e3437799520e1e667", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}, "url": "/docs/compare/?release=9.2.10#9.2.10-bd7b14c67353f4dd", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "80b793a52a226eb5e5ae486e51a6bca3", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}, "url": "/docs/compare/?release=9.1.15#9.1.15-bd7b14c67353f4dd", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-16bd96d1b5443a9e", "cves": [], "html": "<p>避免 <code>contrib/xml2</code> 的 <code>xslt_process()</code> 中可能出现的崩溃（Mark Simonetti）</p>\n<p><span>libxslt</span> 似乎对资源释放顺序存在未记载的依赖；重新排列我们的调用以避免崩溃。</p>", "text": "避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃（Mark Simonetti） libxslt 似乎对资源释放顺序存在未记载的依赖；重新排列我们的调用以避免崩溃。", "title": "避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "51e7e7a6b7cae368a3be510b5548e6a4630007cd71d43efd23c78418b1ddb16d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid a possible crash in contrib/xml2's xslt_process() (Mark Simonetti) libxslt seems to have an undocumented dependency on the order in which resources are freed; reorder our calls to avoid a crash.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/045", "db_id": "5af728f73487987279bb4143394ed5c7", "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4", "relations": [{"rule": 2, "type": "equivalent", "target": "29cf6c481771d774d265144eae224bd8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}}, {"rule": 2, "type": "equivalent", "target": "48853351ecacaed5d6768613fbf3e7cf", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}}, {"rule": 2, "type": "equivalent", "target": "bc4ee3cc962cb26439a428b20a1904b2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}}], "version": "9.0.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "29cf6c481771d774d265144eae224bd8", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}, "url": "/docs/compare/?release=9.3.6#9.3.6-16bd96d1b5443a9e", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "bc4ee3cc962cb26439a428b20a1904b2", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}, "url": "/docs/compare/?release=9.2.10#9.2.10-16bd96d1b5443a9e", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "48853351ecacaed5d6768613fbf3e7cf", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "b6793b5c6b6c7ea8509b5eedd285785cfce1ab0c45c109f3fb0da2d87a9a65b4"}, "url": "/docs/compare/?release=9.1.15#9.1.15-16bd96d1b5443a9e", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-210d95847fc2d9c5", "cves": [], "html": "<p>大量清理 Coverity 静态代码分析器的警告（Andres Freund、Tatsuo Ishii、Marko Kreen、Tom Lane、Michael Paquier）</p>\n<p>这些变更大多只是表面性的，但在某些情况下修复了极端情况的缺陷，例如内存不足失败后崩溃而不是正确报告错误。据信它们都不构成安全问题。</p>", "text": "大量清理 Coverity 静态代码分析器的警告（Andres Freund、Tatsuo Ishii、Marko Kreen、Tom Lane、Michael Paquier） 这些变更大多只是表面性的，但在某些情况下修复了极端情况的缺陷，例如内存不足失败后崩溃而不是正确报告错误。据信它们都不构成安全问题。", "title": "大量清理 Coverity 静态代码分析器的警告", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "446a1dd7e2e6dfd1abff77145b75741c6dc93ddf88272da460b23d612413aff3", "section_path": ["变更"], "commit_groups": [], "identity_text": "Numerous cleanups of warnings from Coverity static code analyzer (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier) These changes are mostly cosmetic but in some cases fix corner-case bugs, for example a crash rather than a proper error report after an out-of-memory failure. None are believed to represent security issues.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/046", "db_id": "52c3d51c1d613490a4737cc67d575159", "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16", "relations": [{"rule": 2, "type": "equivalent", "target": "12e33c2f4f0e430ce044b6c5ba7659e9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}, {"rule": 2, "type": "equivalent", "target": "4c8bc0c63a589cdc2848abaf2c856854", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}, {"rule": 2, "type": "equivalent", "target": "c0dea398485ffb3ab2ee0b2344343d54", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}, {"rule": 2, "type": "equivalent", "target": "ee40bf4e7114e983b86aef19f50a756d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c0dea398485ffb3ab2ee0b2344343d54", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}, "url": "/docs/compare/?release=9.4.1#9.4.1-210d95847fc2d9c5", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "12e33c2f4f0e430ce044b6c5ba7659e9", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}, "url": "/docs/compare/?release=9.3.6#9.3.6-210d95847fc2d9c5", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "ee40bf4e7114e983b86aef19f50a756d", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}, "url": "/docs/compare/?release=9.2.10#9.2.10-210d95847fc2d9c5", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "4c8bc0c63a589cdc2848abaf2c856854", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}, "url": "/docs/compare/?release=9.1.15#9.1.15-210d95847fc2d9c5", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-39cf90228ff2c6d6", "cves": [], "html": "<p>在构建期间检测不兼容的 OpenLDAP 版本（Noah Misch）</p>\n<p>对于 2.4.24 到 2.4.31（含）之间的 OpenLDAP 版本，<span>PostgreSQL</span> 后端进程可能在退出时崩溃。现在会根据编译时的 OpenLDAP 版本号在 <span>configure</span> 期间发出警告，并在 <code>contrib/dblink</code> 回归测试中测试该崩溃场景。</p>", "text": "在构建期间检测不兼容的 OpenLDAP 版本（Noah Misch） 对于 2.4.24 到 2.4.31（含）之间的 OpenLDAP 版本，PostgreSQL 后端进程可能在退出时崩溃。现在会根据编译时的 OpenLDAP 版本号在 configure 期间发出警告，并在 contrib/dblink 回归测试中测试该崩溃场景。", "title": "在构建期间检测不兼容的 OpenLDAP 版本", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "5fb7429dfd885c4d994f69d56c40132191dd154ef7d13a64e5359bc75afbf085", "section_path": ["变更"], "commit_groups": [], "identity_text": "Detect incompatible OpenLDAP versions during build (Noah Misch) With OpenLDAP versions 2.4.24 through 2.4.31, inclusive, PostgreSQL backends can crash at exit. Raise a warning during configure based on the compile-time OpenLDAP version number, and test the crashing scenario in the contrib/dblink regression test.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/047", "db_id": "683140e5c1ecc12f0ea43d872bd098ea", "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1", "relations": [{"rule": 2, "type": "equivalent", "target": "79ac97dd69845b99033f6ee8bcc77cb1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}}, {"rule": 2, "type": "equivalent", "target": "c24848632f8fe17c9f5cfb8c353abc23", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}}, {"rule": 2, "type": "equivalent", "target": "dd89a54e049b842da00d4fe92a80425a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "dd89a54e049b842da00d4fe92a80425a", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "在构建期间检测不兼容的 OpenLDAP 版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}, "url": "/docs/compare/?release=9.3.6#9.3.6-39cf90228ff2c6d6", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "79ac97dd69845b99033f6ee8bcc77cb1", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "在构建期间检测不兼容的 OpenLDAP 版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}, "url": "/docs/compare/?release=9.2.10#9.2.10-39cf90228ff2c6d6", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "c24848632f8fe17c9f5cfb8c353abc23", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "在构建期间检测不兼容的 OpenLDAP 版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0d065bbeb86f700a618de8e8d237089a131521696632720be7a6ac97377a41d1"}, "url": "/docs/compare/?release=9.1.15#9.1.15-39cf90228ff2c6d6", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-0c0d4359830e76b8", "cves": [], "html": "<p>在非 MSVC 的 Windows 构建中，确保安装的 <code>libpq.dll</code> 带有执行权限（Noah Misch）</p>", "text": "在非 MSVC 的 Windows 构建中，确保安装的 libpq.dll 带有执行权限（Noah Misch）", "title": "在非 MSVC 的 Windows 构建中，确保安装的 libpq.dll 带有执行权限", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "7b278a93af318f4ccb7ecd85bf145d1889e6c511f2d3877e52ebcfad7e5beb17", "section_path": ["变更"], "commit_groups": [], "identity_text": "In non-MSVC Windows builds, ensure libpq.dll is installed with execute permissions (Noah Misch)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/048", "db_id": "e377f519b858553b153c1e7082d3a479", "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e", "relations": [{"rule": 2, "type": "equivalent", "target": "226af100e754c994ca40d8f93abcdd6f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}}, {"rule": 2, "type": "equivalent", "target": "7556256b3c127b4489aa25e04b1ae5d6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}}, {"rule": 2, "type": "equivalent", "target": "9d39c42de62004fc65b9ee9ae06eda1d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "226af100e754c994ca40d8f93abcdd6f", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "在非 MSVC 的 Windows 构建中，确保安装的 libpq.dll 带有执行权限", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}, "url": "/docs/compare/?release=9.3.6#9.3.6-0c0d4359830e76b8", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "7556256b3c127b4489aa25e04b1ae5d6", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "在非 MSVC 的 Windows 构建中，确保安装的 libpq.dll 带有执行权限", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}, "url": "/docs/compare/?release=9.2.10#9.2.10-0c0d4359830e76b8", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "9d39c42de62004fc65b9ee9ae06eda1d", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "在非 MSVC 的 Windows 构建中，确保安装的 libpq.dll 带有执行权限", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ba116a1a91d979fda4e6a890869fb980d0832321c68478e928f711046b37739e"}, "url": "/docs/compare/?release=9.1.15#9.1.15-0c0d4359830e76b8", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-f47c85fceb5543ce", "cves": [], "html": "<p>使 <span>pg_regress</span> 成功退出时删除其创建的任何临时安装（Tom Lane）</p>\n<p>这使 <code>make check-world</code> 期间的磁盘空间用量大幅减少，因为该序列会创建大量临时安装。</p>", "text": "使 pg_regress 成功退出时删除其创建的任何临时安装（Tom Lane） 这使 make check-world 期间的磁盘空间用量大幅减少，因为该序列会创建大量临时安装。", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "fbcebfcbdaa9df663aac90e74851baf3e3e1ce4773d9210434ab8e653e351f20", "section_path": ["变更"], "commit_groups": [], "identity_text": "Make pg_regress remove any temporary installation it created upon successful exit (Tom Lane) This results in a very substantial reduction in disk space usage during make check-world, since that sequence involves creation of numerous temporary installations.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/049", "db_id": "f93cb3800fc70d52a0eaf7ac3db017d0", "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03", "relations": [{"rule": 2, "type": "equivalent", "target": "0f21fd45378823224fb8cd2c35018e1d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}, {"rule": 2, "type": "equivalent", "target": "4a7e136d6a905f01773a4c148760dc26", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}, {"rule": 2, "type": "equivalent", "target": "90cf5b9ee2356d5408f6174d793511a2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}, {"rule": 2, "type": "equivalent", "target": "f80a99586906e281b180c32f9f1f8305", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0f21fd45378823224fb8cd2c35018e1d", "kind": "equivalent", "version": "9.4.1", "label": "9.4.1", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}, "url": "/docs/compare/?release=9.4.1#9.4.1-f47c85fceb5543ce", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5"}, {"db_id": "90cf5b9ee2356d5408f6174d793511a2", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}, "url": "/docs/compare/?release=9.3.6#9.3.6-f47c85fceb5543ce", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "f80a99586906e281b180c32f9f1f8305", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}, "url": "/docs/compare/?release=9.2.10#9.2.10-f47c85fceb5543ce", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "4a7e136d6a905f01773a4c148760dc26", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}, "url": "/docs/compare/?release=9.1.15#9.1.15-f47c85fceb5543ce", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-77723f91da6d14c0", "cves": [], "html": "<p>支持随时间改变 UTC 偏移的时区缩写（Tom Lane）</p>\n<p>此前，<span>PostgreSQL</span> 假定时区缩写（如 <code>EST</code>）关联的 UTC 偏移在任何特定区域设置的用法中永不改变。然而这一假设在现实世界中并不成立，因此引入了让区域缩写表示有时会变化的 UTC 偏移的能力。更新了时区缩写定义文件，在自 1970 年以来缩写的 UTC 偏移发生过变化的时区区域设置中使用此功能（依据 IANA 时区数据库）。在此类时区中，<span>PostgreSQL</span> 现在会根据给定日期为缩写关联正确的 UTC 偏移。</p>", "text": "支持随时间改变 UTC 偏移的时区缩写（Tom Lane） 此前，PostgreSQL 假定时区缩写（如 EST）关联的 UTC 偏移在任何特定区域设置的用法中永不改变。然而这一假设在现实世界中并不成立，因此引入了让区域缩写表示有时会变化的 UTC 偏移的能力。更新了时区缩写定义文件，在自 1970 年以来缩写的 UTC 偏移发生过变化的时区区域设置中使用此功能（依据 IANA 时区数据库）。在此类时区中，PostgreSQL 现在会根据给定日期为缩写关联正确的 UTC 偏移。", "title": "支持随时间改变 UTC 偏移的时区缩写", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "37f5837e4d94ff2d4f597952bf4e68071d256cf607472d8da905c8f70d95a36d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Support time zone abbreviations that change UTC offset from time to time (Tom Lane) Previously, PostgreSQL assumed that the UTC offset associated with a time zone abbreviation (such as EST) never changes in the usage of any particular locale. However this assumption fails in the real world, so introduce the ability for a zone abbreviation to represent a UTC offset that sometimes changes. Update the zone abbreviation definition files to make use of this feature in timezone locales that have changed the UTC offset of their abbreviations since 1970 (according to the IANA timezone database). In such timezones, PostgreSQL will now associate the correct UTC offset with the abbreviation depending on the given date.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/050", "db_id": "b4cdc7057684904bbb5e7ccbfa582405", "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff", "relations": [{"rule": 2, "type": "equivalent", "target": "854ddf984dcdb9921b26d5ae0ee9de60", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}}, {"rule": 2, "type": "equivalent", "target": "9231b02c97705c0ca64095e3e093c6de", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}}, {"rule": 2, "type": "equivalent", "target": "f08e49dc6b542196f8383acd3b0b9c65", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "854ddf984dcdb9921b26d5ae0ee9de60", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "支持随时间改变 UTC 偏移的时区缩写", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}, "url": "/docs/compare/?release=9.3.6#9.3.6-77723f91da6d14c0", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "9231b02c97705c0ca64095e3e093c6de", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "支持随时间改变 UTC 偏移的时区缩写", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}, "url": "/docs/compare/?release=9.2.10#9.2.10-77723f91da6d14c0", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "f08e49dc6b542196f8383acd3b0b9c65", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "支持随时间改变 UTC 偏移的时区缩写", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a6501e3be8faaec1aef9006ff3436c99d826569caaba0e379a16ca0000209bff"}, "url": "/docs/compare/?release=9.1.15#9.1.15-77723f91da6d14c0", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-032540b2097e4592", "cves": [], "html": "<p>更新时区缩写列表（Tom Lane）</p>\n<p>把 CST（中国标准时间）加入列表。移除 ADT 作为<span>“<span>阿拉伯夏令时</span>”</span>的引用——这个缩写自 2007 年起已不再使用；因此，声称它与<span>“<span>大西洋夏令时</span>”</span>冲突似乎没有特别的帮助。修正 CKT（库克群岛）、FJT 和 FJST（斐济）完全错误的 GMT 偏移；此前我们甚至把它们放到了日期变更线的错误一侧。</p>", "text": "更新时区缩写列表（Tom Lane） 把 CST（中国标准时间）加入列表。移除 ADT 作为“阿拉伯夏令时”的引用——这个缩写自 2007 年起已不再使用；因此，声称它与“大西洋夏令时”冲突似乎没有特别的帮助。修正 CKT（库克群岛）、FJT 和 FJST（斐济）完全错误的 GMT 偏移；此前我们甚至把它们放到了日期变更线的错误一侧。", "title": "更新时区缩写列表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "62eb29478137c34690e7bfb0f041a9d373272d8140386f23cf3181bd5c015219", "section_path": ["变更"], "commit_groups": [], "identity_text": "Update time zone abbreviations lists (Tom Lane) Add CST (China Standard Time) to our lists. Remove references to ADT as Arabia Daylight Time, an abbreviation that's been out of use since 2007; therefore, claiming there is a conflict with Atlantic Daylight Time doesn't seem especially helpful. Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST (Fiji); we didn't even have them on the proper side of the date line.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/051", "db_id": "f4166fde9bded9b1fc5f96fb69019308", "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c", "relations": [{"rule": 2, "type": "equivalent", "target": "25cb740945059a2a5b40cb5773d4c0b1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}}, {"rule": 2, "type": "equivalent", "target": "494c4fbd0c9ea7e750866c69da07da6b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}}, {"rule": 2, "type": "equivalent", "target": "92a800a5f70e680321cac35d4c4bd97e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "92a800a5f70e680321cac35d4c4bd97e", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "更新时区缩写列表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}, "url": "/docs/compare/?release=9.3.6#9.3.6-032540b2097e4592", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "494c4fbd0c9ea7e750866c69da07da6b", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "更新时区缩写列表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}, "url": "/docs/compare/?release=9.2.10#9.2.10-032540b2097e4592", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "25cb740945059a2a5b40cb5773d4c0b1", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "更新时区缩写列表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e01d16beb0301981dff1bb6ff34c6f2da9b0baeb108e73d27dbe4698e6b8bc4c"}, "url": "/docs/compare/?release=9.1.15#9.1.15-032540b2097e4592", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.0.19-75a4e432b9ec73f2", "cves": [], "html": "<p>把时区数据文件更新为 <span>tzdata</span> 版本 2015a。</p>\n<p>IANA 时区数据库为所有澳大利亚时区采用了 <code>A<em><code>x</code></em>ST</code>/<code>A<em><code>x</code></em>DT</code> 形式的缩写，以反映他们认为的当地当前多数用法。这些名称与其他地方的用法不冲突（唯一例外是表示 Acre 夏令时的 ACST，该用法自 1994 年起已废弃）。因此，我们把这些名称采纳进<span>“<span>默认</span>”</span>时区缩写集。<span>“<span>澳大利亚</span>”</span>缩写集现在只包含 CST、EAST、EST、SAST、SAT 和 WST，这些被认为主要是历史用法。注意，在<span>“<span>默认</span>”</span>缩写集中，SAST 也已改为南非标准时间。</p>\n<p>此外，新增时区缩写 SRET（Asia/Srednekolymsk）和 XJT（Asia/Urumqi），并对西萨摩亚使用 WSST/WSDT。同时，智利、墨西哥、特克斯和凯科斯群岛（America/Grand_Turk）以及斐济的夏令时法规有变更。还为巴布亚新几内亚部分地区新增了时区 Pacific/Bougainville。另外还有大量针对历史（1970 年以前）时区数据的修正。</p>", "text": "把时区数据文件更新为 tzdata 版本 2015a。 IANA 时区数据库为所有澳大利亚时区采用了 AxST/AxDT 形式的缩写，以反映他们认为的当地当前多数用法。这些名称与其他地方的用法不冲突（唯一例外是表示 Acre 夏令时的 ACST，该用法自 1994 年起已废弃）。因此，我们把这些名称采纳进“默认”时区缩写集。“澳大利亚”缩写集现在只包含 CST、EAST、EST、SAST、SAT 和 WST，这些被认为主要是历史用法。注意，在“默认”缩写集中，SAST 也已改为南非标准时间。 此外，新增时区缩写 SRET（Asia/Srednekolymsk）和 XJT（Asia/Urumqi），并对西萨摩亚使用 WSST/WSDT。同时，智利、墨西哥、特克斯和凯科斯群岛（America/Grand_Turk）以及斐济的夏令时法规有变更。还为巴布亚新几内亚部分地区新增了时区 Pacific/Bougainville。另外还有大量针对历史（1970 年以前）时区数据的修正。", "title": "把时区数据文件更新为 tzdata 版本 2015a。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5", "source_hash": "83e5ecb974e959239ee6a7726116927441ffa698206fe7f5b4a8c88068ac90d4", "section_path": ["变更"], "commit_groups": [], "identity_text": "Update time zone data files to tzdata release 2015a. The IANA timezone database has adopted abbreviations of the form AxST/AxDT for all Australian time zones, reflecting what they believe to be current majority practice Down Under. These names do not conflict with usage elsewhere (other than ACST for Acre Summer Time, which has been in disuse since 1994). Accordingly, adopt these names into our Default timezone abbreviation set. The Australia abbreviation set now contains only CST, EAST, EST, SAST, SAT, and WST, all of which are thought to be mostly historical usage. Note that SAST has also been changed to be South Africa Standard Time in the Default abbreviation set. Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were DST law changes in Chile, Mexico, the Turks & Caicos Islands (America/Grand_Turk), and Fiji. There is a new zone Pacific/Bougainville for portions of Papua New Guinea. Also, numerous corrections for historical (pre-1970) time zone data.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.19/changes/052", "db_id": "3e80abb929ccd280ce8be6e8d43d4b7b", "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346", "relations": [{"rule": 2, "type": "equivalent", "target": "1bea67b9bb186fcda99a837258183e3c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}}, {"rule": 2, "type": "equivalent", "target": "4fd9baa5e7f7c8b8ac2b40971340517c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}}, {"rule": 2, "type": "equivalent", "target": "87ee59fa9d13e6f01840f0900a31de50", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}}], "version": "9.0.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "87ee59fa9d13e6f01840f0900a31de50", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "把时区数据文件更新为 tzdata 版本 2015a。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}, "url": "/docs/compare/?release=9.3.6#9.3.6-75a4e432b9ec73f2", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "1bea67b9bb186fcda99a837258183e3c", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "把时区数据文件更新为 tzdata 版本 2015a。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}, "url": "/docs/compare/?release=9.2.10#9.2.10-75a4e432b9ec73f2", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "4fd9baa5e7f7c8b8ac2b40971340517c", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "把时区数据文件更新为 tzdata 版本 2015a。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e6fa98831ae8effbbe330002e232775d03710e117ba2b88169925b7e86f63346"}, "url": "/docs/compare/?release=9.1.15#9.1.15-75a4e432b9ec73f2", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 52}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 22}, {"key": "security", "label": "安全相关", "count": 6}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 24}], "total": 52, "release_count": 1, "cross_major": false, "cve_count": 6, "cves": [{"id": "CVE-2015-0244", "url": "https://www.postgresql.org/support/security/CVE-2015-0244/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 8.1, "title": "修复出错后前端/后端协议可能失去同步的问题", "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "core server", "published": {"9.0": "2015-02-05", "9.1": "2015-02-05", "9.2": "2015-02-05", "9.3": "2015-02-05", "9.4": "2015-02-05"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2015-02-05", "fixed_version": "9.0.19"}, {"id": "CVE-2014-0067", "url": "https://www.postgresql.org/support/security/CVE-2014-0067/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 7.0, "title": "锁定 Windows 上回归测试的临时安装", "vector": "AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "other", "published": {}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": null, "fixed_version": "9.0.19"}, {"id": "CVE-2015-0243", "url": "https://www.postgresql.org/support/security/CVE-2015-0243/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 6.5, "title": "修复contrib/pgcrypto中的缓冲区越界", "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "contrib module", "published": {"9.0": "2015-02-05", "9.1": "2015-02-05", "9.2": "2015-02-05", "9.3": "2015-02-05", "9.4": "2015-02-05"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2015-02-05", "fixed_version": "9.0.19"}, {"id": "CVE-2015-0242", "url": "https://www.postgresql.org/support/security/CVE-2015-0242/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 4.2, "title": "修复替换实现的*printf()函数中的缓冲区越界", "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "core server", "published": {"9.0": "2015-02-05", "9.1": "2015-02-05", "9.2": "2015-02-05", "9.3": "2015-02-05", "9.4": "2015-02-05"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2015-02-05", "fixed_version": "9.0.19"}, {"id": "CVE-2015-0241", "url": "https://www.postgresql.org/support/security/CVE-2015-0241/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 4.2, "title": "修复to_char()中的缓冲区越界", "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "core server", "published": {"9.0": "2015-02-05", "9.1": "2015-02-05", "9.2": "2015-02-05", "9.3": "2015-02-05", "9.4": "2015-02-05"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2015-02-05", "fixed_version": "9.0.19"}, {"id": "CVE-2014-8161", "url": "https://www.postgresql.org/support/security/CVE-2014-8161/", "fixed": {"9.0": "9.0.19", "9.1": "9.1.15", "9.2": "9.2.10", "9.3": "9.3.6", "9.4": "9.4.1"}, "score": 3.1, "title": "修复通过约束违反错误消息的信息泄露", "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "affected": {"9.0": "9.0", "9.1": "9.1", "9.2": "9.2", "9.3": "9.3", "9.4": "9.4"}, "component": "core server", "published": {}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": null, "fixed_version": "9.0.19"}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 52, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}