{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2015-02-05", "build": "9.4.1", "major": "9.4", "minor": 1, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.1", "eol_date": "2020-02-13", "date_text": "2015-02-05", "supported": false, "manual_url": "/docs/9.4/release-9-4-1.html", "source_url": "/docs/release/9.4.1/", "entry_count": 32, "placeholder": false, "content_hash": "dc091170a71da05f98af9478d28cea6ec71a744cf044f5c0e9bfb9288b219751", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 32, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是 Windows 用户且使用<span>“<span>Norwegian (Bokmål)</span>”</span>区域，升级后需要手工将<span>PostgreSQL</span>系统目录中存储的任何<span>“<span>Norwegian (Bokmål)_Norway</span>”</span>或<span>“<span>norwegian-bokmal</span>”</span>区域名替换为纯 ASCII 别名<span>“<span>Norwegian_Norway</span>”</span>。详情参见<a href=\"http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale\">http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale</a></p>", "compatibility_count": 0, "label": "9.4.1", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 4255, "support_days": -2421}, "groups": [{"date": "2015-02-05", "build": "9.4.1", "major": "9.4", "minor": 1, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.1", "eol_date": "2020-02-13", "date_text": "2015-02-05", "supported": false, "manual_url": "/docs/9.4/release-9-4-1.html", "source_url": "/docs/release/9.4.1/", "entry_count": 32, "placeholder": false, "content_hash": "dc091170a71da05f98af9478d28cea6ec71a744cf044f5c0e9bfb9288b219751", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 32, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是 Windows 用户且使用<span>“<span>Norwegian (Bokmål)</span>”</span>区域，升级后需要手工将<span>PostgreSQL</span>系统目录中存储的任何<span>“<span>Norwegian (Bokmål)_Norway</span>”</span>或<span>“<span>norwegian-bokmal</span>”</span>区域名替换为纯 ASCII 别名<span>“<span>Norwegian_Norway</span>”</span>。详情参见<a href=\"http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale\">http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale</a></p>", "compatibility_count": 0, "label": "9.4.1", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 4255, "support_days": -2421, "entries": [{"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "a157f7c661ad1795b8f502da571420c55546c4ef56ac40f33766f0c94b1ec064", "section_path": ["变更"], "commit_groups": [["0150ab567", "037529a11", "1628a0bbf", "5ae3bf1af", "611e110aa", "b8b580147"], ["2ceb63deb", "56b970f2e", "56d2bee9d", "9241c84cb", "e09651e9d", "fe2526990"]], "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": ["0150ab567", "037529a11", "1628a0bbf", "2ceb63deb", "56b970f2e", "56d2bee9d", "5ae3bf1af", "611e110aa", "9241c84cb", "b8b580147", "e09651e9d", "fe2526990"], "source_commits": ["1628a0bbf", "56d2bee9d"], "source_entry_id": "9.4.1/changes/001", "db_id": "990e692bca9e900ed4c908bc797fc663", "patch_ids": ["67c5e10ca1e46e70537e1a196bf6031d", "c5415403471cc7c37b6cef38e869d2b2"], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc", "relations": [{"rule": 2, "type": "equivalent", "target": "00433c31ad068919dad0d185b0e0830b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}, {"rule": 2, "type": "equivalent", "target": "7fbcc218f6fcc168e6abdb0c1a7eada0", "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": ["67c5e10ca1e46e70537e1a196bf6031d", "c5415403471cc7c37b6cef38e869d2b2"], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}}], "version": "9.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "c631a08d16c113f5569d11ae86171cd7", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": ["67c5e10ca1e46e70537e1a196bf6031d", "c5415403471cc7c37b6cef38e869d2b2"], "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"}, {"db_id": "00433c31ad068919dad0d185b0e0830b", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复to_char()中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "0b49ca898c6d415c3166eb73b67fa5eaf5f0fe783bf9f1382d2b0d585d9412bc"}, "url": "/docs/compare/?release=9.0.19#9.0.19-5abdf545382b956d", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "5f47e489d7749693fe5aa1a29c694d7974a60dd1287f042f49b84c30616a8a3e", "section_path": ["变更"], "commit_groups": [["29725b3db", "2ac95c83c", "98f2479d8", "9e05c5063", "bc4d5f2e5", "c6c6aa288"]], "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": ["29725b3db", "2ac95c83c", "98f2479d8", "9e05c5063", "bc4d5f2e5", "c6c6aa288"], "source_commits": ["2ac95c83c"], "source_entry_id": "9.4.1/changes/002", "db_id": "20377b1aff86d05b63b56759b510d2ee", "patch_ids": ["c221a358d134358905c06b24e9af8e5e"], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd", "relations": [{"rule": 2, "type": "equivalent", "target": "258b89db478fc51a49887ec39072dadd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "b0c008a254ec058d02a2618bd567cf4c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "d75d745b8f5d780f4c0162a00c5eaabd", "evidence": {"same_day": true, "patch_ids": ["c221a358d134358905c06b24e9af8e5e"], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}, {"rule": 2, "type": "equivalent", "target": "e8f6fe7647398f6730a6866289021746", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}}], "version": "9.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "d75d745b8f5d780f4c0162a00c5eaabd", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": ["c221a358d134358905c06b24e9af8e5e"], "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"}, {"db_id": "b0c008a254ec058d02a2618bd567cf4c", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复替换实现的*printf()函数中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6facd7936457ceefa6a83c5c66eca1a3f1ad14d6f02936eb2b530f3aa0f72fdd"}, "url": "/docs/compare/?release=9.0.19#9.0.19-5682fb8f3ee1ede9", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "86edd1b7baf7d6ad7e9d4a8aa8a78d09fa3b30d46d8468ac4d8ba0e4557aac63", "section_path": ["变更"], "commit_groups": [["0a3ee8a5f", "258e294db", "8b59672d8", "8d412e02e", "a558ad3a7", "d1972da8c"], ["11f738a8a", "1dc755158", "6994f0790", "82806cf4e", "ce6f261cd", "d95ebe0ac"]], "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": ["0a3ee8a5f", "11f738a8a", "1dc755158", "258e294db", "6994f0790", "82806cf4e", "8b59672d8", "8d412e02e", "a558ad3a7", "ce6f261cd", "d1972da8c", "d95ebe0ac"], "source_commits": ["258e294db", "82806cf4e"], "source_entry_id": "9.4.1/changes/003", "db_id": "f5f49269e786e76501353fb6c32e22bb", "patch_ids": ["92d27031b9a5fd06aa30421558b20208", "ca4aadac13ce7ba06d5b76c994420951"], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a", "relations": [{"rule": 2, "type": "equivalent", "target": "33a5647981837b909c2bb075f8f38a0b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "3ed48b6f2719f35041f836ac6e215fb0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "6a3ee8f85359a8b979be3eb7a4ca87d6", "evidence": {"same_day": true, "patch_ids": ["92d27031b9a5fd06aa30421558b20208", "ca4aadac13ce7ba06d5b76c994420951"], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}, {"rule": 2, "type": "equivalent", "target": "b63889e55d5fcf7ed29673a3f75e4ffb", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}}], "version": "9.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "6a3ee8f85359a8b979be3eb7a4ca87d6", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": ["92d27031b9a5fd06aa30421558b20208", "ca4aadac13ce7ba06d5b76c994420951"], "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"}, {"db_id": "3ed48b6f2719f35041f836ac6e215fb0", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复contrib/pgcrypto中的缓冲区越界", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bd8a10aa11b9ca6eafb69e0e4b9559deb38d5d2794efb5dedec97ae522d4da7a"}, "url": "/docs/compare/?release=9.0.19#9.0.19-ba8a921637c059ee", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "b6ba8159ac979144f6bc22585121f572db487e2f39a79a3d7069c31aaf961002", "section_path": ["变更"], "commit_groups": [["289592b23", "2b3a8b20c", "47ba0fbd7", "57ec87c6b", "af9c5c074", "cd19848bd"]], "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": ["289592b23", "2b3a8b20c", "47ba0fbd7", "57ec87c6b", "af9c5c074", "cd19848bd"], "source_commits": ["57ec87c6b"], "source_entry_id": "9.4.1/changes/004", "db_id": "c30f7e4786dc10d32b60a9b2623b0f1b", "patch_ids": ["54805dff1be23f2867fabd8fcd864b6f"], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0", "relations": [{"rule": 2, "type": "equivalent", "target": "1c2e17a917530e1056e37a0fd57770c8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}, {"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": "f341e3494142a5b46900f555e822f4b3", "evidence": {"same_day": true, "patch_ids": ["54805dff1be23f2867fabd8fcd864b6f"], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}}], "version": "9.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "f341e3494142a5b46900f555e822f4b3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": ["54805dff1be23f2867fabd8fcd864b6f"], "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"}, {"db_id": "1c2e17a917530e1056e37a0fd57770c8", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复出错后前端/后端协议可能失去同步的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "48ad257f35f4224a927c2505d1745f6abd99f358e996b644e00ab7263992a1c0"}, "url": "/docs/compare/?release=9.0.19#9.0.19-5c8ec36fd01bef35", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "32f79c1afb24b91afe4cb279d629760313d220027dfc3787501c33dd579b449e", "section_path": ["变更"], "commit_groups": [["3a2063369", "3cc74a3d6", "4b9874216", "804b6b6db", "9406884af", "d49f84b08"]], "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": ["3a2063369", "3cc74a3d6", "4b9874216", "804b6b6db", "9406884af", "d49f84b08"], "source_commits": ["3cc74a3d6"], "source_entry_id": "9.4.1/changes/005", "db_id": "258c224c072d8571536846c0f589715b", "patch_ids": ["db4ccd8340162a53fee0ae6e4356a7ad"], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c", "relations": [{"rule": 2, "type": "equivalent", "target": "2ba0e0820371c50e724133f60a0846df", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}}, {"rule": 2, "type": "equivalent", "target": "707992cea29a842212624b2871eda46f", "evidence": {"same_day": true, "patch_ids": ["db4ccd8340162a53fee0ae6e4356a7ad"], "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.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "707992cea29a842212624b2871eda46f", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": ["db4ccd8340162a53fee0ae6e4356a7ad"], "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"}, {"db_id": "2ba0e0820371c50e724133f60a0846df", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复通过约束违反错误消息的信息泄露", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dd2b73b11818dd3a1fff35706b46ac7cadcadcaa414dd330a192424304534f7c"}, "url": "/docs/compare/?release=9.0.19#9.0.19-d6dd48b9aef647b0", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "b9e8d9bca46e10d5d0eba76f0382cf1347dcb30daad63a5f9e1ba659b291cea0", "section_path": ["变更"], "commit_groups": [["0046f651d", "442dc2c35", "6aa98e957", "6b87d423d", "6d45ee572", "f6dc6dd5b"]], "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": ["0046f651d", "442dc2c35", "6aa98e957", "6b87d423d", "6d45ee572", "f6dc6dd5b"], "source_commits": ["6b87d423d"], "source_entry_id": "9.4.1/changes/006", "db_id": "e40096ec33c08b11ceda62b0eeaed41b", "patch_ids": ["91810f7f65814f11f573d6b3d6d77227"], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d", "relations": [{"rule": 2, "type": "equivalent", "target": "779b293b81f06e9a89366b402c92716f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}, {"rule": 2, "type": "equivalent", "target": "c55d12255d904c843b58f7491c8c32f0", "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": ["91810f7f65814f11f573d6b3d6d77227"], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}}], "version": "9.4.1", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "d1316adb0f1a83d10b6bceddd551ca7d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": ["91810f7f65814f11f573d6b3d6d77227"], "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"}, {"db_id": "c55d12255d904c843b58f7491c8c32f0", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "锁定 Windows 上回归测试的临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a634794025e560be39918325339ff67cd524350a326f395531d18ad3ef17869d"}, "url": "/docs/compare/?release=9.0.19#9.0.19-f18a20a2bec524ef", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-b30a144447e3dc30", "cves": [], "html": "<p>处理名为<span>“<span>Norwegian (Bokmål)</span>”</span>的 Windows 区域（Heikki Linnakangas）</p>\n<p>非 ASCII 区域名是有问题的，因为不清楚应该用什么编码表示它们。将这个麻烦的区域名映射为纯 ASCII 别名<span>“<span>Norwegian_Norway</span>”</span>。</p>\n<p>9.4.0 曾将这个麻烦的名称映射为<span>“<span>norwegian-bokmal</span>”</span>，但事实证明这并非在所有 Windows 配置上都有效。现在改为推荐<span>“<span>Norwegian_Norway</span>”</span>。</p>", "text": "处理名为“Norwegian (Bokmål)”的 Windows 区域（Heikki Linnakangas） 非 ASCII 区域名是有问题的，因为不清楚应该用什么编码表示它们。将这个麻烦的区域名映射为纯 ASCII 别名“Norwegian_Norway”。 9.4.0 曾将这个麻烦的名称映射为“norwegian-bokmal”，但事实证明这并非在所有 Windows 配置上都有效。现在改为推荐“Norwegian_Norway”。", "title": "处理名为“Norwegian (Bokmål)”的 Windows 区域", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "749f03f9f4bafacb9109d3d58b196cdff9ffd040dd34ebf426352a7646662621", "section_path": ["变更"], "commit_groups": [["1619442a1", "2049a7d82", "6bf343c6e", "aa1d2fc5e"], ["2a1b34959", "737ae3fc7"], ["8f80dcf3c", "d440c4b55"]], "identity_text": "Cope with the Windows locale named Norwegian (Bokmål) (Heikki Linnakangas) Non-ASCII locale names are problematic since it's not clear what encoding they should be represented in. Map the troublesome locale name to a plain-ASCII alias, Norwegian_Norway. 9.4.0 mapped the troublesome name to norwegian-bokmal, but that turns out not to work on all Windows configurations. Norwegian_Norway is now recommended instead.", "commit_aliases": ["1619442a1", "2049a7d82", "2a1b34959", "6bf343c6e", "737ae3fc7", "8f80dcf3c", "aa1d2fc5e", "d440c4b55"], "source_commits": ["2049a7d82", "2a1b34959", "8f80dcf3c"], "source_entry_id": "9.4.1/changes/007", "db_id": "dab55905cfec1ad1206d743256cb7e87", "patch_ids": ["2eaa5486be16c3f9353f385f397f8a77", "5a46bae12f3db15b90989e5e7c26d828", "abd8dc4c942f9b19083ca0145e2e0e58"], "statement_hash": "e5e1e214bc64ab69257c5b202484bf716ec90b2b48363426efcced18610de780", "relations": [{"rule": 2, "type": "equivalent", "target": "3d09100a497b27ee2c4ee12c45dfb973", "evidence": {"same_day": true, "patch_ids": ["2eaa5486be16c3f9353f385f397f8a77", "5a46bae12f3db15b90989e5e7c26d828", "abd8dc4c942f9b19083ca0145e2e0e58"]}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "3d09100a497b27ee2c4ee12c45dfb973", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "处理名为“Norwegian (Bokmål)”的 Windows 区域", "evidence": {"same_day": true, "patch_ids": ["2eaa5486be16c3f9353f385f397f8a77", "5a46bae12f3db15b90989e5e7c26d828", "abd8dc4c942f9b19083ca0145e2e0e58"]}, "url": "/docs/compare/?release=9.3.6#9.3.6-b30a144447e3dc30", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "36d067ad9cfb32b16eadf51fcf4be023de02358ae07224d1d7cc7509035c6f18", "section_path": ["变更"], "commit_groups": [["0acb32efb", "34668c8ec", "450530fce", "5308e085b", "b75d18bd4", "c480cb9d2"]], "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": ["0acb32efb", "34668c8ec", "450530fce", "5308e085b", "b75d18bd4", "c480cb9d2"], "source_commits": ["b75d18bd4"], "source_entry_id": "9.4.1/changes/008", "db_id": "518b6f89d70c4bd72f57e27b1c90c8aa", "patch_ids": ["7760ee10e3ad6d602bbef70a44b85398"], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910", "relations": [{"rule": 2, "type": "equivalent", "target": "086c756fd0e9397971b54d7a28c49444", "evidence": {"same_day": true, "patch_ids": ["7760ee10e3ad6d602bbef70a44b85398"], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}}, {"rule": 2, "type": "equivalent", "target": "0f099841cca4b33405c3ddc8f4fead00", "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.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "086c756fd0e9397971b54d7a28c49444", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": ["7760ee10e3ad6d602bbef70a44b85398"], "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"}, {"db_id": "0f099841cca4b33405c3ddc8f4fead00", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复 EvalPlanQual 处理中使用已释放内存的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "26c0a7d85f5805b580b6a294fb05aed11b824299101debe409c4d1842cd97910"}, "url": "/docs/compare/?release=9.0.19#9.0.19-c8abbaf7927fce95", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-7a69a1da7e500183", "cves": [], "html": "<p>避免在 EvalPlanQual 处理中试图获取元组锁时可能出现的死锁（Álvaro Herrera、Mark Kirkwood）</p>", "text": "避免在 EvalPlanQual 处理中试图获取元组锁时可能出现的死锁（Álvaro Herrera、Mark Kirkwood）", "title": "避免在 EvalPlanQual 处理中试图获取元组锁时可能出现的死锁", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "962edc54416adbda3f7679e8f5597270b418a54bc310cfeeeaaaf70219ae1d66", "section_path": ["变更"], "commit_groups": [["048912386", "0e3a1f71d", "0e5680f47"]], "identity_text": "Avoid possible deadlock while trying to acquire tuple locks in EvalPlanQual processing (Álvaro Herrera, Mark Kirkwood)", "commit_aliases": ["048912386", "0e3a1f71d", "0e5680f47"], "source_commits": ["0e3a1f71d"], "source_entry_id": "9.4.1/changes/009", "db_id": "d33c3e69cb37fb77e80868970de73b53", "patch_ids": ["1f035c72a3ee431e4e6d913847bb3788"], "statement_hash": "0a84b90ee93e3d449e6e1c5e80f39109f17c4919484dfff17f4f68187708f025", "relations": [{"rule": 2, "type": "equivalent", "target": "66fc9eff3619ec09ac81ddde99476ab3", "evidence": {"same_day": true, "patch_ids": ["1f035c72a3ee431e4e6d913847bb3788"], "statement_hash": "0a84b90ee93e3d449e6e1c5e80f39109f17c4919484dfff17f4f68187708f025"}}], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "66fc9eff3619ec09ac81ddde99476ab3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "避免 EvalPlanQual 处理中尝试获取元组锁时可能出现的死锁", "evidence": {"same_day": true, "patch_ids": ["1f035c72a3ee431e4e6d913847bb3788"], "statement_hash": "0a84b90ee93e3d449e6e1c5e80f39109f17c4919484dfff17f4f68187708f025"}, "url": "/docs/compare/?release=9.3.6#9.3.6-a8d981817f45b986", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-1407ddec17ca907a", "cves": [], "html": "<p>修复当某事务试图获取 <code>FOR NO KEY EXCLUSIVE</code> 元组锁而多个其他事务当前持有 <code>FOR SHARE</code> 锁时不等待的问题（Álvaro Herrera）</p>", "text": "修复当某事务试图获取 FOR NO KEY EXCLUSIVE 元组锁而多个其他事务当前持有 FOR SHARE 锁时不等待的问题（Álvaro Herrera）", "title": "修复当某事务试图获取 FOR NO KEY EXCLUSIVE 元组锁而多个其他事务当前持有 FOR SHARE 锁时不等待的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "af6680a8aebbdaf793c71001c2c550b7e6b69d3252bc8eb015e45bcbca9e4ea1", "section_path": ["变更"], "commit_groups": [["51742063b", "54a8abc2b", "d5e3d1e96"]], "identity_text": "Fix failure to wait when a transaction tries to acquire a FOR NO KEY EXCLUSIVE tuple lock, while multiple other transactions currently hold FOR SHARE locks (Álvaro Herrera)", "commit_aliases": ["51742063b", "54a8abc2b", "d5e3d1e96"], "source_commits": ["51742063b"], "source_entry_id": "9.4.1/changes/010", "db_id": "de480c35248b57e1ba10be3829f39df3", "patch_ids": ["92295a7e76f21c116b8f6044ddb44d82"], "statement_hash": "a94a748f3adf572cc5cc8decab9dc3f87659522c41754453f7db20c1c81486c3", "relations": [{"rule": 2, "type": "equivalent", "target": "635c4fb22bac6f189ca48bb68dfebf07", "evidence": {"same_day": true, "patch_ids": ["92295a7e76f21c116b8f6044ddb44d82"], "statement_hash": "a94a748f3adf572cc5cc8decab9dc3f87659522c41754453f7db20c1c81486c3"}}], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "635c4fb22bac6f189ca48bb68dfebf07", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复当一个事务尝试获取FOR NO KEY EXCLUSIVE元组锁而多个其他事务当前持有FOR SHARE锁时未能等待的问题", "evidence": {"same_day": true, "patch_ids": ["92295a7e76f21c116b8f6044ddb44d82"], "statement_hash": "a94a748f3adf572cc5cc8decab9dc3f87659522c41754453f7db20c1c81486c3"}, "url": "/docs/compare/?release=9.3.6#9.3.6-5b8daad7e5f74c40", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-f09120e6c0e495a4", "cves": [], "html": "<p>改进 <code>EXPLAIN</code> 在大型范围表上的性能（Tom Lane）</p>", "text": "改进 EXPLAIN 在大型范围表上的性能（Tom Lane）", "title": "改进 EXPLAIN 在大型范围表上的性能", "commits": [], "section": "变更", "category": "performance", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "c12ff966bf3d1dae97cea7b5988a01611d0890855ffa018ada0c192e3be4d67d", "section_path": ["变更"], "commit_groups": [["939f0fb67", "a5cd70dcb", "d25192892"]], "identity_text": "Improve performance of EXPLAIN with large range tables (Tom Lane)", "commit_aliases": ["939f0fb67", "a5cd70dcb", "d25192892"], "source_commits": ["d25192892"], "source_entry_id": "9.4.1/changes/011", "db_id": "3a9c53b21f560dd4514e81c768154d81", "patch_ids": ["3f9498208a16bb2134647308bd20a8d8"], "statement_hash": "129e74871e54430ddf1ce405d2a0b5a6733ac8d7b3b146abd8bf92114d9dc3ce", "relations": [{"rule": 2, "type": "equivalent", "target": "b96fed99b3cf112d4f530488ecad5697", "evidence": {"same_day": true, "patch_ids": ["3f9498208a16bb2134647308bd20a8d8"], "statement_hash": "129e74871e54430ddf1ce405d2a0b5a6733ac8d7b3b146abd8bf92114d9dc3ce"}}], "version": "9.4.1", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b96fed99b3cf112d4f530488ecad5697", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "改进EXPLAIN在大型范围表下的性能", "evidence": {"same_day": true, "patch_ids": ["3f9498208a16bb2134647308bd20a8d8"], "statement_hash": "129e74871e54430ddf1ce405d2a0b5a6733ac8d7b3b146abd8bf92114d9dc3ce"}, "url": "/docs/compare/?release=9.3.6#9.3.6-2d94403ddc92cf4c", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-2542097e039d1720", "cves": [], "html": "<p>修复<code>jsonb</code>的 Unicode 转义处理，并因此禁止<code>\\u0000</code>（Tom Lane）</p>\n<p>此前，JSON Unicode 转义<code>\\u0000</code>被接受并按这六个字符存储；但这与输入<code>\\\\u0000</code>时存储的内容无法区分，造成歧义。此外，在期望得到去转义文本输出的场合（如<code>-&gt;&gt;</code>操作符），该序列被打印为<code>\\u0000</code>，不符合去除 JSON 转义的预期。（一致的行为需要输出零字节，但<span>PostgreSQL</span>不支持文本字符串中嵌入零字节。）9.4.0 中曾有一次不明智的尝试，试图通过调整 JSON 输出转换规则来改善这一状况；但这当然无法修复根本性的歧义，而且事实证明它破坏了 Unicode 转义序列的其他用法。我们撤销了那项修改，并为避免核心问题，在<code>jsonb</code>输入中拒绝<code>\\u0000</code>。</p>\n<p>如果<code>jsonb</code>列包含 9.4.0 存储的<code>\\u0000</code>值，此后它将被读出为<code>\\\\u0000</code>，这是 9.4.0 为这种情况存储的数据的另一种有效解释。</p>\n<p><code>json</code>类型没有存储歧义问题，但确实存在去转义文本输出不一致的问题。因此，当需要转换为去转义形式时，<code>json</code>值中的<code>\\u0000</code>现在也会被拒绝。此变更并不破坏在<code>json</code>列中存储<code>\\u0000</code>的能力，只要不对这些值做任何处理。这与数据库编码不是 UTF8 时允许非 ASCII Unicode 转义的情况完全类似。</p>", "text": "修复jsonb的 Unicode 转义处理，并因此禁止\\u0000（Tom Lane） 此前，JSON Unicode 转义\\u0000被接受并按这六个字符存储；但这与输入\\\\u0000时存储的内容无法区分，造成歧义。此外，在期望得到去转义文本输出的场合（如->>操作符），该序列被打印为\\u0000，不符合去除 JSON 转义的预期。（一致的行为需要输出零字节，但PostgreSQL不支持文本字符串中嵌入零字节。）9.4.0 中曾有一次不明智的尝试，试图通过调整 JSON 输出转换规则来改善这一状况；但这当然无法修复根本性的歧义，而且事实证明它破坏了 Unicode 转义序列的其他用法。我们撤销了那项修改，并为避免核心问题，在jsonb输入中拒绝\\u0000。 如果jsonb列包含 9.4.0 存储的\\u0000值，此后它将被读出为\\\\u0000，这是 9.4.0 为这种情况存储的数据的另一种有效解释。 json类型没有存储歧义问题，但确实存在去转义文本输出不一致的问题。因此，当需要转换为去转义形式时，json值中的\\u0000现在也会被拒绝。此变更并不破坏在json列中存储\\u0000的能力，只要不对这些值做任何处理。这与数据库编码不是 UTF8 时允许非 ASCII Unicode 转义的情况完全类似。", "title": "修复jsonb的 Unicode 转义处理，并因此禁止\\u0000", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "b1e01aed3505d8f2aff9697ace8f034279e2112b1dbff15cf6778068100c317c", "section_path": ["变更"], "commit_groups": [["451d28081", "4cbf390d5"]], "identity_text": "Fix jsonb Unicode escape processing, and in consequence disallow \\u0000 (Tom Lane) Previously, the JSON Unicode escape \\u0000 was accepted and was stored as those six characters; but that is indistinguishable from what is stored for the input \\\\u0000, resulting in ambiguity. Moreover, in cases where de-escaped textual output is expected, such as the ->> operator, the sequence was printed as \\u0000, which does not meet the expectation that JSON escaping would be removed. (Consistent behavior would require emitting a zero byte, but PostgreSQL does not support zero bytes embedded in text strings.) 9.4.0 included an ill-advised attempt to improve this situation by adjusting JSON output conversion rules; but of course that could not fix the fundamental ambiguity, and it turned out to break other usages of Unicode escape sequences. Revert that, and to avoid the core problem, reject \\u0000 in jsonb input. If a jsonb column contains a \\u0000 value stored with 9.4.0, it will henceforth read out as though it were \\\\u0000, which is the other valid interpretation of the data stored by 9.4.0 for this case. The json type did not have the storage-ambiguity problem, but it did have the problem of inconsistent de-escaped textual output. Therefore \\u0000 will now also be rejected in json values when conversion to de-escaped form is required. This change does not break the ability to store \\u0000 in json columns so long as no processing is done on the values. This is exactly parallel to the cases in which non-ASCII Unicode escapes are allowed when the database encoding is not UTF8.", "commit_aliases": ["451d28081", "4cbf390d5"], "source_commits": ["4cbf390d5"], "source_entry_id": "9.4.1/changes/012", "db_id": "a1c20e710273ed31a8fe7ec3c86c24aa", "patch_ids": ["84d2a4aa1a2f670d1037b54c8b91e5c2"], "statement_hash": "aade5dfc320e4d226f09fb54dbc1573baf3a6cbc0ca3fd92342b8867c9af44c8", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "7ac603500dfc58d6564df309d6da3d444c956764581d16f3181a2aee86c5fcfb", "section_path": ["变更"], "commit_groups": [["6bbf75192", "79af9a1d2", "c8ef5b1ac", "c975fa471", "cebb3f032", "e32cb8d0e"]], "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": ["6bbf75192", "79af9a1d2", "c8ef5b1ac", "c975fa471", "cebb3f032", "e32cb8d0e"], "source_commits": ["6bbf75192"], "source_entry_id": "9.4.1/changes/013", "db_id": "4f5d5dacfc520d2589717a919c2fcd88", "patch_ids": ["61de259a1e0e5320f2146cd012cdc2b2"], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4", "relations": [{"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": ["61de259a1e0e5320f2146cd012cdc2b2"], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}, {"rule": 2, "type": "equivalent", "target": "757dff59c4efdb461302def83729216c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}, {"rule": 2, "type": "equivalent", "target": "e02e7ae3730aeb589ddb39a776a2c0bd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}}], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "6f9cd2c1e9b116425ea46c74fab68a9b", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": ["61de259a1e0e5320f2146cd012cdc2b2"], "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"}, {"db_id": "e02e7ae3730aeb589ddb39a776a2c0bd", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "修复xpath()中的命名空间处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "f1095981c5514e207fc476a0e5c243c61b068273f93b3c2c5f2b54b0a9a5cba4"}, "url": "/docs/compare/?release=9.0.19#9.0.19-0017727b7307a437", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-fac591390192b14e", "cves": [], "html": "<p>修复范围操作符选择率估计中的各种疏漏（Emre Hasegeli）</p>\n<p>此补丁修复了极端情况下 <span>“<span>unexpected operator NNNN</span>”</span> 规划器错误，并改进了其他一些情况下的选择率估计。</p>", "text": "修复范围操作符选择率估计中的各种疏漏（Emre Hasegeli） 此补丁修复了极端情况下 “unexpected operator NNNN” 规划器错误，并改进了其他一些情况下的选择率估计。", "title": "修复范围操作符选择率估计中的各种疏漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "bfd6bfdb5eba056e80dfa0e33de3bd8dc3275a9b2dec79dafc994f372835cf8f", "section_path": ["变更"], "commit_groups": [["3d660d33a", "527ff8baf", "b6a164e5c"]], "identity_text": "Fix assorted oversights in range-operator selectivity estimation (Emre Hasegeli) This patch fixes corner-case unexpected operator NNNN planner errors, and improves the selectivity estimates for some other cases.", "commit_aliases": ["3d660d33a", "527ff8baf", "b6a164e5c"], "source_commits": ["b6a164e5c"], "source_entry_id": "9.4.1/changes/014", "db_id": "a07aa97593fb26929ee19f3099859acd", "patch_ids": ["ccf640ab730cca4e15d68295f202f55d"], "statement_hash": "2c57ae838c920b2a8c0a61da93111820dbe0ccebf135f2043f9f577c6766a1bf", "relations": [{"rule": 2, "type": "equivalent", "target": "f27a9e9d0611bc7c5d3936236583fae3", "evidence": {"same_day": true, "patch_ids": ["ccf640ab730cca4e15d68295f202f55d"], "statement_hash": "2c57ae838c920b2a8c0a61da93111820dbe0ccebf135f2043f9f577c6766a1bf"}}], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f27a9e9d0611bc7c5d3936236583fae3", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复范围操作符选择率估计中的各种疏漏", "evidence": {"same_day": true, "patch_ids": ["ccf640ab730cca4e15d68295f202f55d"], "statement_hash": "2c57ae838c920b2a8c0a61da93111820dbe0ccebf135f2043f9f577c6766a1bf"}, "url": "/docs/compare/?release=9.3.6#9.3.6-fac591390192b14e", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-e031d7042ca3fb3c", "cves": [], "html": "<p>恢复 GIN 索引项最大大小曾被无意间造成的缩减（Heikki Linnakangas）</p>\n<p>对于以前版本会接受的数据，9.4.0 可能报 <span>“<span>index row size exceeds maximum</span>”</span> 错误而失败。</p>", "text": "恢复 GIN 索引项最大大小曾被无意间造成的缩减（Heikki Linnakangas） 对于以前版本会接受的数据，9.4.0 可能报 “index row size exceeds maximum” 错误而失败。", "title": "恢复 GIN 索引项最大大小曾被无意间造成的缩减", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "39047ebc12a4e43298eef6d82332575238735456f40f7e7b13bb9971c0190e07", "section_path": ["变更"], "commit_groups": [["4e241f7cd", "930fd6845"]], "identity_text": "Revert unintended reduction in maximum size of a GIN index item (Heikki Linnakangas) 9.4.0 could fail with index row size exceeds maximum errors for data that previous versions would accept.", "commit_aliases": ["4e241f7cd", "930fd6845"], "source_commits": ["4e241f7cd"], "source_entry_id": "9.4.1/changes/015", "db_id": "2671a5a5c805fb2197fea4aa5e23a0e6", "patch_ids": ["9527efd08456332361038ed667bf23d5"], "statement_hash": "c04450039292c6001f71823d329771bb4b8780f771933fb8acebb1d68385704c", "relations": [], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-aa6f150cc19246b2", "cves": [], "html": "<p>修复重复重新扫描 GIN 索引期间查询时长的内存泄漏（Heikki Linnakangas）</p>", "text": "修复重复重新扫描 GIN 索引期间查询时长的内存泄漏（Heikki Linnakangas）", "title": "修复重复重新扫描 GIN 索引期间查询时长的内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "f1f0040e7e068793f6239a8bf76a4c9bb4a5ac5b95e555f3b8d20eb3eadaef92", "section_path": ["变更"], "commit_groups": [["68fa75f31", "dc40ca696"]], "identity_text": "Fix query-duration memory leak during repeated GIN index rescans (Heikki Linnakangas)", "commit_aliases": ["68fa75f31", "dc40ca696"], "source_commits": ["dc40ca696"], "source_entry_id": "9.4.1/changes/016", "db_id": "81bed1d86e435b5cc6c7f6029c242729", "patch_ids": ["f7f28ef6311e1121bc7c0237fe20ad2b"], "statement_hash": "863de89f6610332c720038384043250294a5e2e1caecdaa77b1b6fdb78addab5", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-7aad9f22da4210e3", "cves": [], "html": "<p>修复使用非零 <code>gin_fuzzy_search_limit</code> 时可能崩溃的问题（Heikki Linnakangas）</p>", "text": "修复使用非零 gin_fuzzy_search_limit 时可能崩溃的问题（Heikki Linnakangas）", "title": "修复使用非零 gin_fuzzy_search_limit 时可能崩溃的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "46e53e2ce4a0668a195f27faca3370c6466eacc0597a2091d4e7b629925fa426", "section_path": ["变更"], "commit_groups": [["1c2774f37", "28a37deab", "31ed42b9a", "37e0f13f2", "61729e99d"]], "identity_text": "Fix possible crash when using nonzero gin_fuzzy_search_limit (Heikki Linnakangas)", "commit_aliases": ["1c2774f37", "28a37deab", "31ed42b9a", "37e0f13f2", "61729e99d"], "source_commits": ["28a37deab"], "source_entry_id": "9.4.1/changes/017", "db_id": "973e74b5acc8d51b25506b038338f71f", "patch_ids": ["21c37a51d3af485a723085b56409a69c"], "statement_hash": "cdea76443a497c966a7a2100a387ae98d38d6d908bff1c78310de12d9e4367e1", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-937342434866fa72", "cves": [], "html": "<p>针对逻辑解码的多项修复（Andres Freund）</p>", "text": "针对逻辑解码的多项修复（Andres Freund）", "title": "针对逻辑解码的多项修复", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "f12b1045363376367a153067412a8066121a3ae6aa79c48435eb89483bd871b6", "section_path": ["变更"], "commit_groups": [["31912d01d", "84911ff51"], ["3fabed070", "7da102154"]], "identity_text": "Assorted fixes for logical decoding (Andres Freund)", "commit_aliases": ["31912d01d", "3fabed070", "7da102154", "84911ff51"], "source_commits": ["7da102154", "84911ff51"], "source_entry_id": "9.4.1/changes/018", "db_id": "f4c36a4484f7ce5098307fe22e1c8b14", "patch_ids": ["0dd85ec10a5a0fb0c3128e9405ba213f", "1623d59082bf89ccb685cf3c965cde1c"], "statement_hash": "905b939f01b1a20dbbae4e10ca5748ad1b1788592fe827d6d65ae43f7c76b2fb", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-900b26911d35b044", "cves": [], "html": "<p>修复报告 <code>wal_log_hints</code> 设置变更的 WAL 参数变更记录的不正确重放（Petr Jelinek）</p>", "text": "修复报告 wal_log_hints 设置变更的 WAL 参数变更记录的不正确重放（Petr Jelinek）", "title": "修复报告 wal_log_hints 设置变更的 WAL 参数变更记录的不正确重放", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "25aa6dfd4da8a56577c6d2bfea164faf401d5d06efa97ab4819925914c4199da", "section_path": ["变更"], "commit_groups": [["49b04188f", "b337d9657"]], "identity_text": "Fix incorrect replay of WAL parameter change records that report changes in the wal_log_hints setting (Petr Jelinek)", "commit_aliases": ["49b04188f", "b337d9657"], "source_commits": ["b337d9657"], "source_entry_id": "9.4.1/changes/019", "db_id": "aa6d3a37674458a2d599256c744e00ac", "patch_ids": ["477d03112274dc922ff7974ce4ceb107"], "statement_hash": "7045c4b080885393a34341d20ad9624bbd1db0cf81e4e65a7f335e749b837fb4", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "ac8bc74e7f55b25d3daa5736d86a507fab2aa80715cbb1e8ed4017359881f17d", "section_path": ["变更"], "commit_groups": [["19794e997", "3387cbbcb", "33b723538", "75b48e1ff", "a1a8d0249", "b87c1dcef"]], "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": ["19794e997", "3387cbbcb", "33b723538", "75b48e1ff", "a1a8d0249", "b87c1dcef"], "source_commits": ["3387cbbcb"], "source_entry_id": "9.4.1/changes/020", "db_id": "0474cd50c0922f5a041997400d962d1e", "patch_ids": ["ea68a9e94a4d1df7198fad1057181116"], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf", "relations": [{"rule": 2, "type": "equivalent", "target": "0b651e33c4d526e69e239435ca24fcf9", "evidence": {"same_day": true, "patch_ids": ["ea68a9e94a4d1df7198fad1057181116"], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}, {"rule": 2, "type": "equivalent", "target": "35162f08ef3a72d38987f0163e12f3e5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}}, {"rule": 2, "type": "equivalent", "target": "62eb1e3aaeb610d31969b8496b7dd78a", "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.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0b651e33c4d526e69e239435ca24fcf9", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": ["ea68a9e94a4d1df7198fad1057181116"], "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"}, {"db_id": "62eb1e3aaeb610d31969b8496b7dd78a", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "将 “pgstat wait timeout” 警告消息改为 LOG 级别，并重新措辞使其更易理解", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "be09e2d0ef78836a7fcb6aa09f4095f35050152d08f7e9bc5a4060e5ae30b2cf"}, "url": "/docs/compare/?release=9.0.19#9.0.19-973a1a096e7244ed", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-145f54c04491106f", "cves": [], "html": "<p>当 macOS 的 <code>setlocale()</code> 在 postmaster 内部启动多余的额外线程时发出警告（Noah Misch）</p>", "text": "当 macOS 的 setlocale() 在 postmaster 内部启动多余的额外线程时发出警告（Noah Misch）", "title": "当 macOS 的 setlocale() 在 postmaster 内部启动多余的额外线程时发出警告", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "68d16761a408fa50cd116708cc1d7cdaaa60db6eb7754c73a0a403405caa24d4", "section_path": ["变更"], "commit_groups": [["1a366d51e", "2e4946169", "5ca4e444c", "83fb1ca5c", "894459e59", "8dc83104e"]], "identity_text": "Warn if macOS's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch)", "commit_aliases": ["1a366d51e", "2e4946169", "5ca4e444c", "83fb1ca5c", "894459e59", "8dc83104e"], "source_commits": ["83fb1ca5c"], "source_entry_id": "9.4.1/changes/021", "db_id": "361e0cf1a49a0793420573a3a470712c", "patch_ids": ["498a4b2a58dff86458a7948a89baafbd"], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77", "relations": [{"rule": 2, "type": "equivalent", "target": "280cd3c47ac48d99b82e537149509cc8", "evidence": {"same_day": true, "patch_ids": ["498a4b2a58dff86458a7948a89baafbd"], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}}, {"rule": 2, "type": "equivalent", "target": "76c638badda1373ddd9539e8143b24d0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}}, {"rule": 2, "type": "equivalent", "target": "a20ef697cf014a8231a41b82ec46bbfe", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "280cd3c47ac48d99b82e537149509cc8", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告", "evidence": {"same_day": true, "patch_ids": ["498a4b2a58dff86458a7948a89baafbd"], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}, "url": "/docs/compare/?release=9.3.6#9.3.6-e43269b78dfb3dee", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "a20ef697cf014a8231a41b82ec46bbfe", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}, "url": "/docs/compare/?release=9.2.10#9.2.10-e43269b78dfb3dee", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "76c638badda1373ddd9539e8143b24d0", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "04baeba120c58a8529c6a98d7656feb8715d40cd5e5024ad4b70de417f372f77"}, "url": "/docs/compare/?release=9.1.15#9.1.15-e43269b78dfb3dee", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.4.1-4aee3ff21ddc0cea", "cves": [], "html": "<p>修复 <code>/etc/passwd</code> 不可读时 <span>libpq</span> 的行为（Tom Lane）</p>\n<p>在执行 <code>PQsetdbLogin()</code> 期间，<span>libpq</span> 会试图确定用户的操作系统用户名，在大多数 Unix 平台上这需要读取 <code>/etc/passwd</code>。从 9.4 起，读取失败被视为硬错误。现已恢复以前的行为：只有当应用程序未提供要连接的数据库角色名时才失败。这支持在缺少 <code>/etc/passwd</code> 文件的 chroot 环境中运行。</p>", "text": "修复 /etc/passwd 不可读时 libpq 的行为（Tom Lane） 在执行 PQsetdbLogin() 期间，libpq 会试图确定用户的操作系统用户名，在大多数 Unix 平台上这需要读取 /etc/passwd。从 9.4 起，读取失败被视为硬错误。现已恢复以前的行为：只有当应用程序未提供要连接的数据库角色名时才失败。这支持在缺少 /etc/passwd 文件的 chroot 环境中运行。", "title": "修复 /etc/passwd 不可读时 libpq 的行为", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "a6d9855b23c83ccf23ddca95082993ee6205862a82a4f4cac6cb23a449fff554", "section_path": ["变更"], "commit_groups": [["080eabe2e", "733728ff3"]], "identity_text": "Fix libpq's behavior when /etc/passwd isn't readable (Tom Lane) While doing PQsetdbLogin(), libpq attempts to ascertain the user's operating system name, which on most Unix platforms involves reading /etc/passwd. As of 9.4, failure to do that was treated as a hard error. Restore the previous behavior, which was to fail only if the application does not provide a database role name to connect as. This supports operation in chroot environments that lack an /etc/passwd file.", "commit_aliases": ["080eabe2e", "733728ff3"], "source_commits": ["733728ff3"], "source_entry_id": "9.4.1/changes/022", "db_id": "165856f8849073484618968b21010531", "patch_ids": ["8d6466a82325af82a21e0ec360b4cd70"], "statement_hash": "83d2294c79843bc4a5faf1279ef931c549141f99e3b5e2c04fe52a00a9f8158d", "relations": [], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "befee15c5e3c14ceb2fd186d2f000e46dc5ba17cb987b7c48491cc5be7fb8cf5", "section_path": ["变更"], "commit_groups": [["1773e0702", "2600e4436", "28551797a", "64c506535", "7582cce56", "c35249939"]], "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": ["1773e0702", "2600e4436", "28551797a", "64c506535", "7582cce56", "c35249939"], "source_commits": ["c35249939"], "source_entry_id": "9.4.1/changes/023", "db_id": "8457f5bc11a38b4a799092ba2f1545b6", "patch_ids": ["df8133cf502fe3e5255ae973b91aad3b"], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13", "relations": [{"rule": 2, "type": "equivalent", "target": "6b862f27f186fc8fdf2591fac34b4934", "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": "d1293e0760f984f1b45e41b61d4b70d2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}, {"rule": 2, "type": "equivalent", "target": "d59d691cdb6b5319e9be7cab3e536274", "evidence": {"same_day": true, "patch_ids": ["df8133cf502fe3e5255ae973b91aad3b"], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d59d691cdb6b5319e9be7cab3e536274", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": ["df8133cf502fe3e5255ae973b91aad3b"], "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"}, {"db_id": "d1293e0760f984f1b45e41b61d4b70d2", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "改进 psql 特殊变量解析的一致性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ab61658ff899e3c5d3d9358baf98c7bac86ab1b118ca97ffdb2776457dd6ba13"}, "url": "/docs/compare/?release=9.0.19#9.0.19-933ba28d99ae0cad", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-6ea3653a26a25fb3", "cves": [], "html": "<p>修复 <span>pg_dump</span> 使其处理事件触发器上的注释时不失败（Tom Lane）</p>", "text": "修复 pg_dump 使其处理事件触发器上的注释时不失败（Tom Lane）", "title": "修复 pg_dump 使其处理事件触发器上的注释时不失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "5259588d45a4b09c4149e3d5365a8ca1ce5e3d69ee3e98aa64bc02e470c36dcf", "section_path": ["变更"], "commit_groups": [["adfc157dd", "bb1e2426b", "c99e41f68"]], "identity_text": "Fix pg_dump to handle comments on event triggers without failing (Tom Lane)", "commit_aliases": ["adfc157dd", "bb1e2426b", "c99e41f68"], "source_commits": ["c99e41f68"], "source_entry_id": "9.4.1/changes/024", "db_id": "030504b8b230dfcf9a44229d9de48381", "patch_ids": ["e9df00c356a365cdd6c1c0f3b6ee19d7"], "statement_hash": "bdce89206462959957177c49d66aabbc23d92dc5aad3bb1b7df73963f1e98e01", "relations": [{"rule": 2, "type": "equivalent", "target": "127b0c8fc0411b87b5886aad3eca0eea", "evidence": {"same_day": true, "patch_ids": ["e9df00c356a365cdd6c1c0f3b6ee19d7"], "statement_hash": "bdce89206462959957177c49d66aabbc23d92dc5aad3bb1b7df73963f1e98e01"}}], "version": "9.4.1", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "127b0c8fc0411b87b5886aad3eca0eea", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "修复pg_dump处理事件触发器注释时失败的问题", "evidence": {"same_day": true, "patch_ids": ["e9df00c356a365cdd6c1c0f3b6ee19d7"], "statement_hash": "bdce89206462959957177c49d66aabbc23d92dc5aad3bb1b7df73963f1e98e01"}, "url": "/docs/compare/?release=9.3.6#9.3.6-6ded55368119fb4c", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-24d7704a6c2802c7", "cves": [], "html": "<p>允许并行 <span>pg_dump</span> 使用 <code>--serializable-deferrable</code>（Kevin Grittner）</p>", "text": "允许并行 pg_dump 使用 --serializable-deferrable（Kevin Grittner）", "title": "允许并行 pg_dump 使用 --serializable-deferrable", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "ad43b17b51b280e50c9ff7ddc92a2e12e1145cc44300ffacc158172eb7954bf0", "section_path": ["变更"], "commit_groups": [["cb0168528", "cc609c46f", "cff1bd2a3"]], "identity_text": "Allow parallel pg_dump to use --serializable-deferrable (Kevin Grittner)", "commit_aliases": ["cb0168528", "cc609c46f", "cff1bd2a3"], "source_commits": ["cb0168528"], "source_entry_id": "9.4.1/changes/025", "db_id": "496d3d6007a653c65906920b1b565af5", "patch_ids": ["4555591fd637b4e0613c5c3ecf056547"], "statement_hash": "093555a88a08660c2e71f4068f564da3e60bd4480b821f0362e2b33fdfb6a71c", "relations": [{"rule": 2, "type": "equivalent", "target": "3d924c7904664bb6145d97dc378f3ada", "evidence": {"same_day": true, "patch_ids": ["4555591fd637b4e0613c5c3ecf056547"], "statement_hash": "093555a88a08660c2e71f4068f564da3e60bd4480b821f0362e2b33fdfb6a71c"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "3d924c7904664bb6145d97dc378f3ada", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "允许并行pg_dump使用--serializable-deferrable", "evidence": {"same_day": true, "patch_ids": ["4555591fd637b4e0613c5c3ecf056547"], "statement_hash": "093555a88a08660c2e71f4068f564da3e60bd4480b821f0362e2b33fdfb6a71c"}, "url": "/docs/compare/?release=9.3.6#9.3.6-ab1d5d6da270d189", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}]}, {"id": "9.4.1-a7a0b10f490b146f", "cves": [], "html": "<p>防止备库提升为主库后 <code>pg_basebackup -x/-X</code> 创建的 WAL 文件被再次归档（Andres Freund）</p>", "text": "防止备库提升为主库后 pg_basebackup -x/-X 创建的 WAL 文件被再次归档（Andres Freund）", "title": "防止备库提升为主库后 pg_basebackup -x/-X 创建的 WAL 文件被再次归档", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "c3bd049c28c395fda460739b8e13b5d4d4624e6163519fd236ddced29f02adbf", "section_path": ["变更"], "commit_groups": [["2a0bfa4d6", "2c0a48589", "90e4a2bf9", "f6cea4502", "f961ad479"]], "identity_text": "Prevent WAL files created by pg_basebackup -x/-X from being archived again when the standby is promoted (Andres Freund)", "commit_aliases": ["2a0bfa4d6", "2c0a48589", "90e4a2bf9", "f6cea4502", "f961ad479"], "source_commits": ["90e4a2bf9"], "source_entry_id": "9.4.1/changes/026", "db_id": "a797e860b2b98a442a6af2c958faafe0", "patch_ids": ["cbdbeed7fea4e852e3710142e8eef678"], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb", "relations": [{"rule": 2, "type": "equivalent", "target": "0992c99442353c726c5ec5c3c95afcc6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}}, {"rule": 2, "type": "equivalent", "target": "1fa016f6402c7f3db3fb9a3f43ff1f40", "evidence": {"same_day": true, "patch_ids": ["cbdbeed7fea4e852e3710142e8eef678"], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}}, {"rule": 2, "type": "equivalent", "target": "bd65e05ffdfcc52803baeb984e770928", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "1fa016f6402c7f3db3fb9a3f43ff1f40", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档", "evidence": {"same_day": true, "patch_ids": ["cbdbeed7fea4e852e3710142e8eef678"], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}, "url": "/docs/compare/?release=9.3.6#9.3.6-16cefcefa593e0d8", "source_url": "/docs/release/9.3.6/#id-1.11.6.24.5"}, {"db_id": "bd65e05ffdfcc52803baeb984e770928", "kind": "equivalent", "version": "9.2.10", "label": "9.2.10", "title": "防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}, "url": "/docs/compare/?release=9.2.10#9.2.10-16cefcefa593e0d8", "source_url": "/docs/release/9.2.10/#id-1.11.6.19.5"}, {"db_id": "0992c99442353c726c5ec5c3c95afcc6", "kind": "equivalent", "version": "9.1.15", "label": "9.1.15", "title": "防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7a22fda7a5998f2d560a1d2473f27e45dff1d56e5912c9bef22ce9bdb6d2dcbb"}, "url": "/docs/compare/?release=9.1.15#9.1.15-16cefcefa593e0d8", "source_url": "/docs/release/9.1.15/#id-1.11.6.14.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "fe58586e3f0b43cae1ff17c5ae4a0a6bf9aad38683b3c934f15d4fdaa6456865", "section_path": ["变更"], "commit_groups": [["202621d04", "290c2daad", "37507962c", "53ae24692", "66cc74680", "dc9a506e6"]], "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": ["202621d04", "290c2daad", "37507962c", "53ae24692", "66cc74680", "dc9a506e6"], "source_commits": ["202621d04"], "source_entry_id": "9.4.1/changes/027", "db_id": "490569980196c2e8fc0b80c5f5022562", "patch_ids": ["0152b1ae50dec4b5fc3f60b4f35c9475"], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544", "relations": [{"rule": 2, "type": "equivalent", "target": "067eb3e6a757e657b3b5527615fcb4ec", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "2c6aca44c0dcee7e3437799520e1e667", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "5189b93a8cf6cb0e00c3fcf1dbab030d", "evidence": {"same_day": true, "patch_ids": ["0152b1ae50dec4b5fc3f60b4f35c9475"], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}, {"rule": 2, "type": "equivalent", "target": "80b793a52a226eb5e5ae486e51a6bca3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "5189b93a8cf6cb0e00c3fcf1dbab030d", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": ["0152b1ae50dec4b5fc3f60b4f35c9475"], "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"}, {"db_id": "067eb3e6a757e657b3b5527615fcb4ec", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果，尤其是 NULL", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "9c8e178e32c521ec5f76336818de13a8dd8a1c4826cb40f74b746e87c1094544"}, "url": "/docs/compare/?release=9.0.19#9.0.19-bd7b14c67353f4dd", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "446a1dd7e2e6dfd1abff77145b75741c6dc93ddf88272da460b23d612413aff3", "section_path": ["变更"], "commit_groups": [["029e41afd", "17797e18d", "2d8411a0a", "39cdf365a", "58bc4747b", "d33f36f16"], ["0398ece4c", "ec14f1601", "f4060db11", "ff7d46b85"], ["0a67c0018", "0b49642b9", "151fb75b0", "7b65f194e", "d452bfd1b", "ebbef4f39"], ["383d224a0", "53960e7eb", "5c784d96a", "66709133c", "a2969bd72", "e92c67ddc"], ["3a3ee655c", "502e5f9c3", "586dd5d6a", "7240f9200", "b00a08859", "d51d4ff31"], ["3b5a89c48", "458e8bc65", "4c136b0b6", "4db7eaae0", "9b74f3574", "ed0e03283"], ["3b750ec15", "5b2c8f04a", "6c75384ee", "926da211a", "961df1853", "d38e8d30c"], ["4ebb3494e", "e37d474f9"], ["6f9b84a40", "7ced1b6c5", "8cadeb792", "a68b8aec7"], ["70da7aeba", "7c41a32b3", "8f51c432c", "a59ee8819", "a97dfdfd9", "f08cf8ad9"], ["8824bae87"]], "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": ["029e41afd", "0398ece4c", "0a67c0018", "0b49642b9", "151fb75b0", "17797e18d", "2d8411a0a", "383d224a0", "39cdf365a", "3a3ee655c", "3b5a89c48", "3b750ec15", "458e8bc65", "4c136b0b6", "4db7eaae0", "4ebb3494e", "502e5f9c3", "53960e7eb", "586dd5d6a", "58bc4747b", "5b2c8f04a", "5c784d96a", "66709133c", "6c75384ee", "6f9b84a40", "70da7aeba", "7240f9200", "7b65f194e", "7c41a32b3", "7ced1b6c5", "8824bae87", "8cadeb792", "8f51c432c", "926da211a", "961df1853", "9b74f3574", "a2969bd72", "a59ee8819", "a68b8aec7", "a97dfdfd9", "b00a08859", "d33f36f16", "d38e8d30c", "d452bfd1b", "d51d4ff31", "e37d474f9", "e92c67ddc", "ebbef4f39", "ec14f1601", "ed0e03283", "f08cf8ad9", "f4060db11", "ff7d46b85"], "source_commits": ["2d8411a0a", "383d224a0", "458e8bc65", "4ebb3494e", "6c75384ee", "70da7aeba", "7b65f194e", "7ced1b6c5", "8824bae87", "d51d4ff31", "ff7d46b85"], "source_entry_id": "9.4.1/changes/028", "db_id": "c0dea398485ffb3ab2ee0b2344343d54", "patch_ids": ["175bc98efacf982d45fd97a95b26544f", "1dbf2fd4c35c82bb85765a66b59d325f", "392bbbb51d860a5ad65f1e33a8eb9abc", "4192536e0ae6893d51dbf6fcc4244db6", "4da90619f177c2712e522d91eb84f5dd", "6437dbc9cd2e92da1325909d7686cf9a", "6ef87a9d4c68476d4941917b8f2f5135", "779aa41ac8f9c9c36df95551889f996a", "95c09f5f6d9cf7d8cde63c4f6ccab8df", "ad537491a3b8587282919277029aa0b5", "e733d40d1de2ef1b107f235a07828fd1"], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16", "relations": [{"rule": 2, "type": "equivalent", "target": "12e33c2f4f0e430ce044b6c5ba7659e9", "evidence": {"same_day": true, "patch_ids": ["175bc98efacf982d45fd97a95b26544f", "1dbf2fd4c35c82bb85765a66b59d325f", "392bbbb51d860a5ad65f1e33a8eb9abc", "4192536e0ae6893d51dbf6fcc4244db6", "4da90619f177c2712e522d91eb84f5dd", "6437dbc9cd2e92da1325909d7686cf9a", "6ef87a9d4c68476d4941917b8f2f5135", "779aa41ac8f9c9c36df95551889f996a", "95c09f5f6d9cf7d8cde63c4f6ccab8df", "ad537491a3b8587282919277029aa0b5", "e733d40d1de2ef1b107f235a07828fd1"], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}, {"rule": 2, "type": "equivalent", "target": "4c8bc0c63a589cdc2848abaf2c856854", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}}, {"rule": 2, "type": "equivalent", "target": "52c3d51c1d613490a4737cc67d575159", "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.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "12e33c2f4f0e430ce044b6c5ba7659e9", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": ["175bc98efacf982d45fd97a95b26544f", "1dbf2fd4c35c82bb85765a66b59d325f", "392bbbb51d860a5ad65f1e33a8eb9abc", "4192536e0ae6893d51dbf6fcc4244db6", "4da90619f177c2712e522d91eb84f5dd", "6437dbc9cd2e92da1325909d7686cf9a", "6ef87a9d4c68476d4941917b8f2f5135", "779aa41ac8f9c9c36df95551889f996a", "95c09f5f6d9cf7d8cde63c4f6ccab8df", "ad537491a3b8587282919277029aa0b5", "e733d40d1de2ef1b107f235a07828fd1"], "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"}, {"db_id": "52c3d51c1d613490a4737cc67d575159", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "大量清理 Coverity 静态代码分析器的警告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e56a1015631e5a567dbe6b36b79f66bbf141543885654fc4906a0126c90f8e16"}, "url": "/docs/compare/?release=9.0.19#9.0.19-210d95847fc2d9c5", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-2b0855495575518b", "cves": [], "html": "<p>允许 <span>configure</span> 环境中的 <code>CFLAGS</code> 覆盖自动提供的 <code>CFLAGS</code>（Tom Lane）</p>\n<p>此前，<span>configure</span> 会把它自行选择的开关追加到用户指定的 <code>CFLAGS</code> 字符串末尾。由于大多数编译器从左到右处理开关，这意味着发生冲突时 configure 的选择会覆盖用户指定的标志。正确的方向应当相反，因此调整了逻辑，把用户的字符串放在末尾而不是开头。</p>", "text": "允许 configure 环境中的 CFLAGS 覆盖自动提供的 CFLAGS（Tom Lane） 此前，configure 会把它自行选择的开关追加到用户指定的 CFLAGS 字符串末尾。由于大多数编译器从左到右处理开关，这意味着发生冲突时 configure 的选择会覆盖用户指定的标志。正确的方向应当相反，因此调整了逻辑，把用户的字符串放在末尾而不是开头。", "title": "允许 configure 环境中的 CFLAGS 覆盖自动提供的 CFLAGS", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "66441129b149ac60fb27cb92cceb4fccecd8c83d767a6dbb2ff1eb2b3f4b392b", "section_path": ["变更"], "commit_groups": [["85a2a8903", "adb355106"]], "identity_text": "Allow CFLAGS from configure's environment to override automatically-supplied CFLAGS (Tom Lane) Previously, configure would add any switches that it chose of its own accord to the end of the user-specified CFLAGS string. Since most compilers process switches left-to-right, this meant that configure's choices would override the user-specified flags in case of conflicts. That should work the other way around, so adjust the logic to put the user's string at the end not the beginning.", "commit_aliases": ["85a2a8903", "adb355106"], "source_commits": ["adb355106"], "source_entry_id": "9.4.1/changes/029", "db_id": "d1d78c90b65a918d9a6d318cc3d2d83b", "patch_ids": ["74686a92a536fe6bf3b0c0ac554c55ff"], "statement_hash": "09a023e2612db34a898033006a06b6e1b5d484b71901ddcdd2c7115cf4dfc40e", "relations": [], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-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.4.1/#id-1.11.6.30.5", "source_hash": "fbcebfcbdaa9df663aac90e74851baf3e3e1ce4773d9210434ab8e653e351f20", "section_path": ["变更"], "commit_groups": [["1681e2f74", "338ff75fc", "3de9f22ac", "89b6a19e1", "aa719391d", "f4f522deb"]], "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": ["1681e2f74", "338ff75fc", "3de9f22ac", "89b6a19e1", "aa719391d", "f4f522deb"], "source_commits": ["3de9f22ac"], "source_entry_id": "9.4.1/changes/030", "db_id": "0f21fd45378823224fb8cd2c35018e1d", "patch_ids": ["9bc55c1024621f71865be614cffd1997"], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03", "relations": [{"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": ["9bc55c1024621f71865be614cffd1997"], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}, {"rule": 2, "type": "equivalent", "target": "f80a99586906e281b180c32f9f1f8305", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}, {"rule": 2, "type": "equivalent", "target": "f93cb3800fc70d52a0eaf7ac3db017d0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}}], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "90cf5b9ee2356d5408f6174d793511a2", "kind": "equivalent", "version": "9.3.6", "label": "9.3.6", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": ["9bc55c1024621f71865be614cffd1997"], "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"}, {"db_id": "f93cb3800fc70d52a0eaf7ac3db017d0", "kind": "equivalent", "version": "9.0.19", "label": "9.0.19", "title": "使 pg_regress 成功退出时删除其创建的任何临时安装", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ee2f2ab7ad29356e5dddb6ffb4676a5c8faf6faac6f66444faf34c6a824c8f03"}, "url": "/docs/compare/?release=9.0.19#9.0.19-f47c85fceb5543ce", "source_url": "/docs/release/9.0.19/#id-1.11.6.9.5"}]}, {"id": "9.4.1-dc8a1291fabec004", "cves": [], "html": "<p>将 CST（中国标准时间）加入我们的时区缩写列表（Tom Lane）</p>", "text": "将 CST（中国标准时间）加入我们的时区缩写列表（Tom Lane）", "title": "将 CST（中国标准时间）加入我们的时区缩写列表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "697fa3cee24a1ecd6b2a6275e63f2e9ef6f03f66db316481113b514aa8d46685", "section_path": ["变更"], "commit_groups": [["068024719", "5b89473d8"]], "identity_text": "Add CST (China Standard Time) to our lists of timezone abbreviations (Tom Lane)", "commit_aliases": ["068024719", "5b89473d8"], "source_commits": ["068024719"], "source_entry_id": "9.4.1/changes/031", "db_id": "5fb30459df9117c9596bf9e138be17e8", "patch_ids": ["d0ecf19ba1fd4ac2c1a283b0eb47126e"], "statement_hash": "342c57ea31dedd9e70ab4e19eb3efaad44f8915b9bb688f886cd1a7b48ae85e0", "relations": [], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.4.1-5841e5ce2a99e6b3", "cves": [], "html": "<p>将时区数据文件更新到 <span>tzdata</span> 发行版 2015a，涵盖智利和墨西哥的夏令时法规变更，以及冰岛的历史变更。</p>", "text": "将时区数据文件更新到 tzdata 发行版 2015a，涵盖智利和墨西哥的夏令时法规变更，以及冰岛的历史变更。", "title": "将时区数据文件更新到 tzdata 发行版 2015a，涵盖智利和墨西哥的夏令时法规变更，以及冰岛的历史变更。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.1/#id-1.11.6.30.5", "source_hash": "2105605553275ab00a3b1c4576821c95e7893621c3ba2e655148e55582723fc8", "section_path": ["变更"], "commit_groups": [["08bd0c581", "c2b06ab17"]], "identity_text": "Update time zone data files to tzdata release 2015a for DST law changes in Chile and Mexico, plus historical changes in Iceland.", "commit_aliases": ["08bd0c581", "c2b06ab17"], "source_commits": ["c2b06ab17"], "source_entry_id": "9.4.1/changes/032", "db_id": "b097b17baf9ba94ded7f97fd4d43c590", "patch_ids": ["a9df07855771d0bb2b5acdf9394b6cff"], "statement_hash": "0b6770d7daae5e892497a73c40e18dd12441148e9700204da763d4afa4dd5e33", "relations": [], "version": "9.4.1", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}]}], "stats": [{"key": "all", "label": "全部变更", "count": 32}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 12}, {"key": "security", "label": "安全相关", "count": 6}, {"key": "performance", "label": "性能改进", "count": 1}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 13}], "total": 32, "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.4.1"}, {"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.4.1"}, {"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.4.1"}, {"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.4.1"}, {"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.4.1"}, {"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.4.1"}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 32, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}