{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2026-05-14", "build": "17.10", "major": "17", "minor": 10, "manual": "17", "status": "stable", "doc_git": "", "version": "17.10", "eol_date": "2029-11-08", "date_text": "2026-05-14", "supported": true, "manual_url": "/docs/17/release-17-10.html", "source_url": "/docs/release/17.10/", "entry_count": 58, "placeholder": false, "content_hash": "09a88585edea345fa81699fb56f19704ab17f15b89adab467c5b97513c89d510", "manual_build": "17.11", "source_as_of": "", "changes_count": 58, "doc_loaded_at": "2026-09-26T02:56:35.922301", "migration_html": "<p>对于运行 17.X 的用户，无需执行转储/恢复。</p>\n<p>但是，如果你从早于 17.6 的版本升级，请参见<a href=\"/docs/17/release-17-6.html\" title=\"E.6. 17.6 发布\">第 E.6 节</a>。</p>", "compatibility_count": 0, "label": "17.10", "status_label": "受支持版本", "eol": "2029-11-08", "age_days": 136, "support_days": 1138}, "groups": [{"date": "2026-05-14", "build": "17.10", "major": "17", "minor": 10, "manual": "17", "status": "stable", "doc_git": "", "version": "17.10", "eol_date": "2029-11-08", "date_text": "2026-05-14", "supported": true, "manual_url": "/docs/17/release-17-10.html", "source_url": "/docs/release/17.10/", "entry_count": 58, "placeholder": false, "content_hash": "09a88585edea345fa81699fb56f19704ab17f15b89adab467c5b97513c89d510", "manual_build": "17.11", "source_as_of": "", "changes_count": 58, "doc_loaded_at": "2026-09-26T02:56:35.922301", "migration_html": "<p>对于运行 17.X 的用户，无需执行转储/恢复。</p>\n<p>但是，如果你从早于 17.6 的版本升级，请参见<a href=\"/docs/17/release-17-6.html\" title=\"E.6. 17.6 发布\">第 E.6 节</a>。</p>", "compatibility_count": 0, "label": "17.10", "status_label": "受支持版本", "eol": "2029-11-08", "age_days": 136, "support_days": 1138, "entries": [{"id": "17.10-11e46f0b0085f2d6", "cves": ["CVE-2026-6479"], "html": "<p>防止处理启动包时发生无界递归（Michael Paquier）<a href=\"https://postgr.es/c/32a4ce55c\">§</a> <a href=\"https://postgr.es/c/6dffaeb8e\">§</a></p>\n<p>恶意客户端可以通过无限交替发送被拒绝的 SSL 和 GSS 加密请求，使已连接的后端崩溃。</p>\n<p><span>PostgreSQL</span> 项目感谢 Calif.io（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-6479）</p>", "text": "防止处理启动包时发生无界递归（Michael Paquier）§ § 恶意客户端可以通过无限交替发送被拒绝的 SSL 和 GSS 加密请求，使已连接的后端崩溃。 PostgreSQL 项目感谢 Calif.io（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-6479）", "title": "防止处理启动包时发生无界递归", "commits": ["32a4ce55c", "6dffaeb8e"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "1ada86bdd425dd2259fe80bbe1aeb47ff43298d44b1fe94b2fe87651e78d0424", "section_path": ["变更"], "commit_groups": [["14a4a7040", "16fda4df6", "6dffaeb8e", "c2e6ef863"], ["32a4ce55c", "3b4e66739", "3fb66d302", "66cf26b9e", "b63f25bdd", "f7a191f53"]], "identity_text": "Prevent unbounded recursion while processing startup packets (Michael Paquier) A malicious client could crash the connected backend by alternating rejected SSL and GSS encryption requests indefinitely. The PostgreSQL Project thanks Calif.io (in collaboration with Claude and Anthropic Research) for reporting this problem. (CVE-2026-6479)", "commit_aliases": ["14a4a7040", "16fda4df6", "32a4ce55c", "3b4e66739", "3fb66d302", "66cf26b9e", "6dffaeb8e", "b63f25bdd", "c2e6ef863", "f7a191f53"], "source_commits": ["32a4ce55c", "6dffaeb8e"], "source_entry_id": "17.10/changes/001", "db_id": "91cb80c58929d3256c8543b647d98328", "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4", "relations": [{"rule": 2, "type": "equivalent", "target": "1ca6ff4a849ed2960fad43a403e2b932", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}}, {"rule": 2, "type": "equivalent", "target": "3d1e0d9f6f6214fb84bb4b9d4f9402aa", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}}, {"rule": 2, "type": "equivalent", "target": "473b135d9b59dfa88e1611d1141570ee", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}}, {"rule": 2, "type": "equivalent", "target": "e49a23129f6590195a74fcbcc51115f9", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "1ca6ff4a849ed2960fad43a403e2b932", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止处理启动包时发生无界递归", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}, "url": "/docs/compare/?release=18.4#18.4-63ab78ae660e7424", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "473b135d9b59dfa88e1611d1141570ee", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防止处理启动包时发生无界递归", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}, "url": "/docs/compare/?release=16.14#16.14-f224cad17d1e5128", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "e49a23129f6590195a74fcbcc51115f9", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防止处理启动包时发生无界递归", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}, "url": "/docs/compare/?release=15.18#15.18-6e37155a4c84008d", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "3d1e0d9f6f6214fb84bb4b9d4f9402aa", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防止处理启动包时发生无界递归", "evidence": {"same_day": true, "patch_ids": ["4309351724f2df44d6eb12d700f03a90", "fce882e6fdda4deccb44245cc5966b20"], "statement_hash": "879026f1f07a4d172337b9e457cc300e4ed2d558396bcc627770e4ef108f69d4"}, "url": "/docs/compare/?release=14.23#14.23-c632f730b154b207", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-a0bf50b47f7c6ba2", "cves": ["CVE-2026-6473"], "html": "<p>修复内存分配计算中的多处整数溢出问题（Tom Lane，Nathan Bossart，Heikki Linnakangas）<a href=\"https://postgr.es/c/fe2720c45\">§</a> <a href=\"https://postgr.es/c/01b5ef7df\">§</a> <a href=\"https://postgr.es/c/e3a2bea41\">§</a> <a href=\"https://postgr.es/c/26dd3cac2\">§</a> <a href=\"https://postgr.es/c/87357a606\">§</a> <a href=\"https://postgr.es/c/3c41f5534\">§</a> <a href=\"https://postgr.es/c/ebcfa7867\">§</a> <a href=\"https://postgr.es/c/00e243e67\">§</a> <a href=\"https://postgr.es/c/e5babf754\">§</a> <a href=\"https://postgr.es/c/8e909812d\">§</a></p>\n<p>多处代码在计算需要分配多少内存时，未充分注意整数溢出的可能性。溢出会导致分配过小的缓冲区，调用者随后会写过该缓冲区的末尾。这至少会触发服务器崩溃，并且很可能可被利用来执行任意代码。在许多但绝非所有情况下，这种风险只存在于 32 位构建中。</p>\n<p><span>PostgreSQL</span> 项目感谢 Xint Code、Bruce Dang、Sven Klemm 和 Pavel Kohout 报告这些问题。（CVE-2026-6473）</p>", "text": "修复内存分配计算中的多处整数溢出问题（Tom Lane，Nathan Bossart，Heikki Linnakangas）§ § § § § § § § § § 多处代码在计算需要分配多少内存时，未充分注意整数溢出的可能性。溢出会导致分配过小的缓冲区，调用者随后会写过该缓冲区的末尾。这至少会触发服务器崩溃，并且很可能可被利用来执行任意代码。在许多但绝非所有情况下，这种风险只存在于 32 位构建中。 PostgreSQL 项目感谢 Xint Code、Bruce Dang、Sven Klemm 和 Pavel Kohout 报告这些问题。（CVE-2026-6473）", "title": "修复内存分配计算中的多处整数溢出问题", "commits": ["00e243e67", "01b5ef7df", "26dd3cac2", "3c41f5534", "87357a606", "8e909812d", "e3a2bea41", "e5babf754", "ebcfa7867", "fe2720c45"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "d3d25a36426ef2cf407b32f949d6d22a9bfa12410999b2412e4136b5f1057a25", "section_path": ["变更"], "commit_groups": [["00e243e67", "37842f3dc", "924b3e943", "c7fb9f765", "d75b1dc96"], ["01b5ef7df", "01e568b8c", "4032c9d98", "aff71f87b", "c55cea529", "e31ef0720"], ["066b7b144", "3e0eba196", "8d1489d50", "b11c3eadf", "ebcfa7867", "f20b84081"], ["0dc1fdc75", "39bc8f2ca", "7fdb0907e", "a4f089c79", "e3a2bea41", "f3cee4dc4"], ["137013f60", "32c525eb6", "55328e3a9", "6a985e71e", "87357a606", "986753361"], ["26dd3cac2", "b2869ebc4", "bcfd848e7", "c25973124", "dd8af778d", "fb0bc321d"], ["3c41f5534", "67dd6243d", "6d68fcb28", "8e81995de", "e24fb3247", "e49e9590d"], ["3fbec9e50", "8e909812d", "c3f7dde39", "c9447b8bd", "dc6c85ff4", "e42598a41"], ["46593aea0", "61a9b4b6e", "bfc5cea76", "cfb610eaa", "e1c30458a", "fe2720c45"], ["47dae5e74", "6a423a256", "d106295b6", "e5babf754"]], "identity_text": "Fix assorted integer overflows in memory-allocation calculations (Tom Lane, Nathan Bossart, Heikki Linnakangas) Various places were incautious about the possibility of integer overflow in calculations of how much memory to allocate. Overflow would lead to allocating a too-small buffer which the caller would then write past the end of. This would at least trigger server crashes, and probably could be exploited for arbitrary code execution. In many but by no means all cases, the hazard exists only in 32-bit builds. The PostgreSQL Project thanks Xint Code, Bruce Dang, Sven Klemm, and Pavel Kohout for reporting these problems. (CVE-2026-6473)", "commit_aliases": ["00e243e67", "01b5ef7df", "01e568b8c", "066b7b144", "0dc1fdc75", "137013f60", "26dd3cac2", "32c525eb6", "37842f3dc", "39bc8f2ca", "3c41f5534", "3e0eba196", "3fbec9e50", "4032c9d98", "46593aea0", "47dae5e74", "55328e3a9", "61a9b4b6e", "67dd6243d", "6a423a256", "6a985e71e", "6d68fcb28", "7fdb0907e", "87357a606", "8d1489d50", "8e81995de", "8e909812d", "924b3e943", "986753361", "a4f089c79", "aff71f87b", "b11c3eadf", "b2869ebc4", "bcfd848e7", "bfc5cea76", "c25973124", "c3f7dde39", "c55cea529", "c7fb9f765", "c9447b8bd", "cfb610eaa", "d106295b6", "d75b1dc96", "dc6c85ff4", "dd8af778d", "e1c30458a", "e24fb3247", "e31ef0720", "e3a2bea41", "e42598a41", "e49e9590d", "e5babf754", "ebcfa7867", "f20b84081", "f3cee4dc4", "fb0bc321d", "fe2720c45"], "source_commits": ["00e243e67", "01b5ef7df", "26dd3cac2", "3c41f5534", "87357a606", "8e909812d", "e3a2bea41", "e5babf754", "ebcfa7867", "fe2720c45"], "source_entry_id": "17.10/changes/002", "db_id": "f0345a5abb8aa96f05fce3fbd32e6535", "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8", "relations": [{"rule": 2, "type": "equivalent", "target": "2566881ea25d8a61c2245b4b04c49f1a", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}}, {"rule": 2, "type": "equivalent", "target": "295b1d4dab2d6e770a4f53cf19a7aaa0", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}}, {"rule": 2, "type": "equivalent", "target": "8efe22f93b8d48d1a299e86b11c402e5", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}}, {"rule": 2, "type": "equivalent", "target": "acba67a334312f97f378ad9d28899a71", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "acba67a334312f97f378ad9d28899a71", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复内存分配计算中的多处整数溢出问题", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}, "url": "/docs/compare/?release=18.4#18.4-0ecf0348f34312bf", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "8efe22f93b8d48d1a299e86b11c402e5", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复内存分配计算中的多处整数溢出问题", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}, "url": "/docs/compare/?release=16.14#16.14-effcbd2d1a71fba3", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "295b1d4dab2d6e770a4f53cf19a7aaa0", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复内存分配计算中的多处整数溢出问题", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}, "url": "/docs/compare/?release=15.18#15.18-77623f915f7592d9", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "2566881ea25d8a61c2245b4b04c49f1a", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复内存分配计算中的多处整数溢出问题", "evidence": {"same_day": true, "patch_ids": ["0ef31353c016842f07a477e36bffc11a", "18b75605d90ace7a2cf8047352074614", "522ba1e579ed17edbf8f9a554cef9734", "5ee943f19c8b14a26d6f6e850b4c2e4a", "67e33d81b6d11e90e4032802100b1f9a", "722cd5796fd759e519e27c59ed0f5bc7", "8b4c7be6720ec411561a3216285eb5c2", "9be6f17ccc7861ac218a3159257353f5", "9c6a62a34c14fe610b5925191c0d43bf", "ac6798245b6fb47cbaf616c47755bec8"], "statement_hash": "e134dbaa858fe12a3a5fc6391ac874300d57d4269c0f25b416434cdc943690d8"}, "url": "/docs/compare/?release=14.23#14.23-1cae472cd8aafd7d", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-927543ba721f9720", "cves": ["CVE-2026-6476"], "html": "<p>在 <span>pg_createsubscriber</span> 中正确为订阅名称加引号（Nathan Bossart）<a href=\"https://postgr.es/c/d7de7fa84\">§</a></p>\n<p>给定的订阅名称未经加引号就被插入到 SQL 命令中，因此在订阅名称来自不可信来源的（也许不太可能的）情况下，可能实现 SQL 注入。</p>\n<p><span>PostgreSQL</span> 项目感谢 Yu Kunpeng 报告此问题。（CVE-2026-6476）</p>", "text": "在 pg_createsubscriber 中正确为订阅名称加引号（Nathan Bossart）§ 给定的订阅名称未经加引号就被插入到 SQL 命令中，因此在订阅名称来自不可信来源的（也许不太可能的）情况下，可能实现 SQL 注入。 PostgreSQL 项目感谢 Yu Kunpeng 报告此问题。（CVE-2026-6476）", "title": "在 pg_createsubscriber 中正确为订阅名称加引号", "commits": ["d7de7fa84"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "4807d6f79bb16ec55a0c1ebb8826b5ad865ff50428dc408b9d0b6a5a1f5bbbb3", "section_path": ["变更"], "commit_groups": [["c2e44c370", "d389415ff", "d7de7fa84"]], "identity_text": "Properly quote subscription names in pg_createsubscriber (Nathan Bossart) The given subscription name was inserted into SQL commands without quoting, so that SQL injection could be achieved in the (perhaps unlikely) case that the subscription name comes from an untrusted source. The PostgreSQL Project thanks Yu Kunpeng for reporting this problem. (CVE-2026-6476)", "commit_aliases": ["c2e44c370", "d389415ff", "d7de7fa84"], "source_commits": ["d7de7fa84"], "source_entry_id": "17.10/changes/003", "db_id": "c1016302d421112d19c9bbb963270941", "patch_ids": ["e720680b86f42b77dffa98182668476a"], "statement_hash": "ab8d616fe93986f065230107e451ba6882c134da9ddc1a51188a772cce10dc27", "relations": [{"rule": 2, "type": "equivalent", "target": "eda2bad4600ad30b4d662076df8c2604", "evidence": {"same_day": true, "patch_ids": ["e720680b86f42b77dffa98182668476a"], "statement_hash": "ab8d616fe93986f065230107e451ba6882c134da9ddc1a51188a772cce10dc27"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "eda2bad4600ad30b4d662076df8c2604", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 pg_createsubscriber 中正确为订阅名称加引号", "evidence": {"same_day": true, "patch_ids": ["e720680b86f42b77dffa98182668476a"], "statement_hash": "ab8d616fe93986f065230107e451ba6882c134da9ddc1a51188a772cce10dc27"}, "url": "/docs/compare/?release=18.4#18.4-5bdcbd2e82271018", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-fdd0ba1867f4cdc1", "cves": ["CVE-2026-6638"], "html": "<p>在逻辑复制源检查中正确引用对象名称（Pavel Kohout）<a href=\"https://postgr.es/c/f0f59b658\">§</a></p>\n<p><code>ALTER SUBSCRIPTION ... REFRESH PUBLICATION</code> 将模式名和关系名未经引用就插入到 SQL 命令中，从而允许在发布者上执行任意 SQL。</p>\n<p><span>PostgreSQL</span> 项目感谢 Pavel Kohout 报告此问题。（CVE-2026-6638）</p>", "text": "在逻辑复制源检查中正确引用对象名称（Pavel Kohout）§ ALTER SUBSCRIPTION ... REFRESH PUBLICATION 将模式名和关系名未经引用就插入到 SQL 命令中，从而允许在发布者上执行任意 SQL。 PostgreSQL 项目感谢 Pavel Kohout 报告此问题。（CVE-2026-6638）", "title": "在逻辑复制源检查中正确引用对象名称", "commits": ["f0f59b658"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "2e13f748ebe4ad7152ef3046f43d32a61acbc156151d02fd824bb9e886e85d59", "section_path": ["变更"], "commit_groups": [["248a433cd", "46b4f5c11", "cb35d7306", "f0f59b658"]], "identity_text": "Properly quote object names in logical replication origin checks (Pavel Kohout) ALTER SUBSCRIPTION ... REFRESH PUBLICATION interpolated schema and relation names into SQL commands without quoting them, allowing execution of arbitrary SQL on the publisher. The PostgreSQL Project thanks Pavel Kohout for reporting this problem. (CVE-2026-6638)", "commit_aliases": ["248a433cd", "46b4f5c11", "cb35d7306", "f0f59b658"], "source_commits": ["f0f59b658"], "source_entry_id": "17.10/changes/004", "db_id": "6b9ad77c2d8c8cf7ed6c43c56746b015", "patch_ids": ["a9b5d94f4021c4259f919029b9984225"], "statement_hash": "13a92db4a9747d0e4148764ace1c5b2427bc1582543dea88fe555dd3a4b24743", "relations": [{"rule": 2, "type": "equivalent", "target": "160fa6992f90d49b5edf0769aa32c248", "evidence": {"same_day": true, "patch_ids": ["a9b5d94f4021c4259f919029b9984225"], "statement_hash": "13a92db4a9747d0e4148764ace1c5b2427bc1582543dea88fe555dd3a4b24743"}}, {"rule": 2, "type": "equivalent", "target": "f75aecc1c0c865955094a916f7c78463", "evidence": {"same_day": true, "patch_ids": ["a9b5d94f4021c4259f919029b9984225"], "statement_hash": "13a92db4a9747d0e4148764ace1c5b2427bc1582543dea88fe555dd3a4b24743"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "160fa6992f90d49b5edf0769aa32c248", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在逻辑复制源检查中正确引用对象名称", "evidence": {"same_day": true, "patch_ids": ["a9b5d94f4021c4259f919029b9984225"], "statement_hash": "13a92db4a9747d0e4148764ace1c5b2427bc1582543dea88fe555dd3a4b24743"}, "url": "/docs/compare/?release=18.4#18.4-a09de455386cd30a", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "f75aecc1c0c865955094a916f7c78463", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在逻辑复制源检查中正确引用对象名称", "evidence": {"same_day": true, "patch_ids": ["a9b5d94f4021c4259f919029b9984225"], "statement_hash": "13a92db4a9747d0e4148764ace1c5b2427bc1582543dea88fe555dd3a4b24743"}, "url": "/docs/compare/?release=16.14#16.14-de346e2ac011900c", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-b66b265350df29d2", "cves": ["CVE-2026-6473"], "html": "<p>拒绝 <code>ts_headline()</code> 中过长的选项（Michael Paquier）<a href=\"https://postgr.es/c/3ed3dbbf4\">§</a></p>\n<p><code>StartSel</code>、<code>StopSel</code> 和 <code>FragmentDelimiter</code> 字符串的长度不得超过 32Kb，但此前没有对此进行检查。过长的值通常会使服务器崩溃。</p>\n<p><span>PostgreSQL</span> 项目感谢 Xint Code 报告此问题。（CVE-2026-6473）</p>", "text": "拒绝 ts_headline() 中过长的选项（Michael Paquier）§ StartSel、StopSel 和 FragmentDelimiter 字符串的长度不得超过 32Kb，但此前没有对此进行检查。过长的值通常会使服务器崩溃。 PostgreSQL 项目感谢 Xint Code 报告此问题。（CVE-2026-6473）", "title": "拒绝 ts_headline() 中过长的选项", "commits": ["3ed3dbbf4"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "7cf11858483a91e864077bd53d40c4e8c0400f42e14901b411f7dcfe3eda34e8", "section_path": ["变更"], "commit_groups": [["2d267ffc4", "3ed3dbbf4", "5919e0005", "62ad26266", "7fe365693", "d388e1d7f"]], "identity_text": "Reject over-length options in ts_headline() (Michael Paquier) The StartSel, StopSel and FragmentDelimiter strings must not exceed 32Kb in length, but this was not checked for. An over-length value would typically crash the server. The PostgreSQL Project thanks Xint Code for reporting this problem. (CVE-2026-6473)", "commit_aliases": ["2d267ffc4", "3ed3dbbf4", "5919e0005", "62ad26266", "7fe365693", "d388e1d7f"], "source_commits": ["3ed3dbbf4"], "source_entry_id": "17.10/changes/005", "db_id": "0d396ecb6f57179d943c76706100debf", "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330", "relations": [{"rule": 2, "type": "equivalent", "target": "4e96017be5ce2c6f1d23bf476a962747", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}}, {"rule": 2, "type": "equivalent", "target": "afe38bbdb09239daec9610fc4bf0002f", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}}, {"rule": 2, "type": "equivalent", "target": "c2a972753505f1b0a01bf236c883ccad", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}}, {"rule": 2, "type": "equivalent", "target": "ca39bd1c4d36eb3d5c6808cd66068408", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "afe38bbdb09239daec9610fc4bf0002f", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "拒绝 ts_headline() 中过长的选项", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}, "url": "/docs/compare/?release=18.4#18.4-2463210164fd4e42", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "4e96017be5ce2c6f1d23bf476a962747", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "拒绝 ts_headline() 中过长的选项", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}, "url": "/docs/compare/?release=16.14#16.14-d9ce899f638fe2e1", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "c2a972753505f1b0a01bf236c883ccad", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "拒绝 ts_headline() 中过长的选项", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}, "url": "/docs/compare/?release=15.18#15.18-c3608e796458d13b", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "ca39bd1c4d36eb3d5c6808cd66068408", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "拒绝 ts_headline() 中过长的选项", "evidence": {"same_day": true, "patch_ids": ["8457c408eab825cef1442be8b008d331"], "statement_hash": "fa5b62f6b191298714caf3ad9670542a5ca5106f71c0bcc2d9d2de48ba2a0330"}, "url": "/docs/compare/?release=14.23#14.23-c4c6b68f62616df1", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-f68835d296474e15", "cves": ["CVE-2026-6474"], "html": "<p>防范 <code>timeofday()</code> 和 <code>pg_strftime()</code> 中的恶意时区名（Tom Lane）<a href=\"https://postgr.es/c/4197c880c\">§</a> <a href=\"https://postgr.es/c/a386d14fe\">§</a></p>\n<p>精心构造的时区设置可能将 <code>%</code> 序列传递给 <code>snprintf()</code>，从而可能造成崩溃或泄露服务器内存。另一条导致类似结果的路径，是让 <code>pg_strftime()</code> 使用的固定大小输出缓冲区溢出。</p>\n<p><span>PostgreSQL</span> 项目感谢 Xint Code 报告此问题。（CVE-2026-6474）</p>", "text": "防范 timeofday() 和 pg_strftime() 中的恶意时区名（Tom Lane）§ § 精心构造的时区设置可能将 % 序列传递给 snprintf()，从而可能造成崩溃或泄露服务器内存。另一条导致类似结果的路径，是让 pg_strftime() 使用的固定大小输出缓冲区溢出。 PostgreSQL 项目感谢 Xint Code 报告此问题。（CVE-2026-6474）", "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "commits": ["4197c880c", "a386d14fe"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "4fd55743792fde17e697b9bb26fe7c2f6f0be0f2fd47701d165ecf91326990f1", "section_path": ["变更"], "commit_groups": [["126a236ba", "24e0e3254", "4197c880c", "76ab76f87", "a50ae8306", "ba27389c2"], ["2c8226f52", "79b7847c7", "a386d14fe", "c3fff3950", "c6e7a9ef3", "ec8ded4b3"]], "identity_text": "Guard against malicious time zone names in timeofday() and pg_strftime() (Tom Lane) A crafted time zone setting could pass % sequences to snprintf(), potentially causing crashes or disclosure of server memory. Another path to similar results was to overflow the limited-size output buffer used by pg_strftime(). The PostgreSQL Project thanks Xint Code for reporting this problem. (CVE-2026-6474)", "commit_aliases": ["126a236ba", "24e0e3254", "2c8226f52", "4197c880c", "76ab76f87", "79b7847c7", "a386d14fe", "a50ae8306", "ba27389c2", "c3fff3950", "c6e7a9ef3", "ec8ded4b3"], "source_commits": ["4197c880c", "a386d14fe"], "source_entry_id": "17.10/changes/006", "db_id": "943c74b8816c45111e8f6f3e4682a426", "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806", "relations": [{"rule": 2, "type": "equivalent", "target": "2a60ebdc5466fdb8ded5b7dd70ff560e", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}}, {"rule": 2, "type": "equivalent", "target": "4746c5c97c413c4b367427dcc53d74f9", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}}, {"rule": 2, "type": "equivalent", "target": "c35bb2a8a5d8d6153139912fa574f1be", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}}, {"rule": 2, "type": "equivalent", "target": "f0c61a3ee0b896c91466e00b431d94ba", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "2a60ebdc5466fdb8ded5b7dd70ff560e", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}, "url": "/docs/compare/?release=18.4#18.4-3645e80ffc91fcb0", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "c35bb2a8a5d8d6153139912fa574f1be", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}, "url": "/docs/compare/?release=16.14#16.14-168ea3bfaefc6d61", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "f0c61a3ee0b896c91466e00b431d94ba", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}, "url": "/docs/compare/?release=15.18#15.18-f5ceddac85b73b26", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "4746c5c97c413c4b367427dcc53d74f9", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "evidence": {"same_day": true, "patch_ids": ["3f00e8116f67649860ad5a155650db89", "b65bcdf6c5ef035597912c09e793606a"], "statement_hash": "28222af75396ae38d496fb3a6ca7635e107ba94454753d5b681b8db434552806"}, "url": "/docs/compare/?release=14.23#14.23-4b161a739a37e73b", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-7b894433ca4b5fde", "cves": ["CVE-2026-6472"], "html": "<p>创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 <code>CREATE</code> 权限（Jelte Fennema-Nio）<a href=\"https://postgr.es/c/c27ba08cd\">§</a></p>\n<p>多范围类型可以放入不同于其父范围类型的模式中，但此前在这样做时遗漏了必需的权限检查。</p>\n<p><span>PostgreSQL</span> 项目感谢 Jelte Fennema-Nio 报告此问题。（CVE-2026-6472）</p>", "text": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限（Jelte Fennema-Nio）§ 多范围类型可以放入不同于其父范围类型的模式中，但此前在这样做时遗漏了必需的权限检查。 PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。（CVE-2026-6472）", "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "commits": ["c27ba08cd"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "b9a1dee4e2ef9bf197f9e5b67381deb33fce2904ae28b8062794839bc3fba70e", "section_path": ["变更"], "commit_groups": [["08c397b02", "4793fc41f", "8bca85e9f", "a44780f41", "c27ba08cd", "d92852d62"]], "identity_text": "When creating a multirange type, ensure the user has CREATE privilege on the schema specified for the multirange type (Jelte Fennema-Nio) The multirange type can be put into a different schema than its parent range type, but we neglected to apply the required privilege check when doing so. The PostgreSQL Project thanks Jelte Fennema-Nio for reporting this problem. (CVE-2026-6472)", "commit_aliases": ["08c397b02", "4793fc41f", "8bca85e9f", "a44780f41", "c27ba08cd", "d92852d62"], "source_commits": ["c27ba08cd"], "source_entry_id": "17.10/changes/007", "db_id": "482afe166c3411e42aa15c76ef043f3e", "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd", "relations": [{"rule": 2, "type": "equivalent", "target": "65fdc90a340d7a6f096d34d54ccaf154", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}}, {"rule": 2, "type": "equivalent", "target": "8f0e03a85bb45cde24bbedf7f781a5d5", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}}, {"rule": 2, "type": "equivalent", "target": "c06039568f80f491221fd94687f0285e", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}}, {"rule": 2, "type": "equivalent", "target": "d9b882bba9a59b55e34aa99621e22473", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "d9b882bba9a59b55e34aa99621e22473", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}, "url": "/docs/compare/?release=18.4#18.4-5cd7cd57980a1193", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "65fdc90a340d7a6f096d34d54ccaf154", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}, "url": "/docs/compare/?release=16.14#16.14-c48a9f98e69b525d", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "8f0e03a85bb45cde24bbedf7f781a5d5", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}, "url": "/docs/compare/?release=15.18#15.18-5774e1af35e1add1", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "c06039568f80f491221fd94687f0285e", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "evidence": {"same_day": true, "patch_ids": ["1c201360c1e263b311b7234d83ff89be"], "statement_hash": "d04d5cbb5906b8e6e39e901491618574dca51ad80d7a3a625a786fceaddfddfd"}, "url": "/docs/compare/?release=14.23#14.23-9d3fa6790baf242e", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-61c7a5bccb286bea", "cves": ["CVE-2026-6478"], "html": "<p>在认证代码中使用时序安全的字符串比较（Michael Paquier）<a href=\"https://postgr.es/c/c4e7435b3\">§</a> <a href=\"https://postgr.es/c/8e34acfda\">§</a></p>\n<p>在检查口令、hash 等值时，使用 <code>timingsafe_bcmp()</code> 而不是 <code>memcmp()</code> 或 <code>strcmp()</code>。尚不清楚这些函数的数据依赖性在这些位置是否真的可被有效利用，但为安全起见，将其替换。</p>\n<p><span>PostgreSQL</span> 项目感谢 Joe Conway 报告此问题。（CVE-2026-6478）</p>", "text": "在认证代码中使用时序安全的字符串比较（Michael Paquier）§ § 在检查口令、hash 等值时，使用 timingsafe_bcmp() 而不是 memcmp() 或 strcmp()。尚不清楚这些函数的数据依赖性在这些位置是否真的可被有效利用，但为安全起见，将其替换。 PostgreSQL 项目感谢 Joe Conway 报告此问题。（CVE-2026-6478）", "title": "在认证代码中使用时序安全的字符串比较", "commits": ["8e34acfda", "c4e7435b3"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "f2d72cb6646d379b1267d67a86b2b61d54a56e50dad1f012554afe36d6d63647", "section_path": ["变更"], "commit_groups": [["00e27235e", "4608619a1", "5924e256c", "c4e7435b3", "c95275f18", "d93ef4131"], ["1604939b2", "8e34acfda", "9dcfcb92f", "b282280e9"]], "identity_text": "Use timing-safe string comparisons in authentication code (Michael Paquier) Use timingsafe_bcmp() instead of memcmp() or strcmp() when checking passwords, hashes, etc. It is not known whether the data dependency of those functions is usefully exploitable in any of these places, but in the interests of safety, replace them. The PostgreSQL Project thanks Joe Conway for reporting this problem. (CVE-2026-6478)", "commit_aliases": ["00e27235e", "1604939b2", "4608619a1", "5924e256c", "8e34acfda", "9dcfcb92f", "b282280e9", "c4e7435b3", "c95275f18", "d93ef4131"], "source_commits": ["8e34acfda", "c4e7435b3"], "source_entry_id": "17.10/changes/008", "db_id": "f4fc92fe7fa973d00f46d80cff768f2c", "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149", "relations": [{"rule": 2, "type": "equivalent", "target": "049d75b9e50ceb48ee3ba2c6a5d0f494", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}}, {"rule": 2, "type": "equivalent", "target": "0851fa23f0d4449b2336783af8c0b37f", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}}, {"rule": 2, "type": "equivalent", "target": "15b60135e3ecea3f472e4441792a26d0", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}}, {"rule": 2, "type": "equivalent", "target": "c468a98baa6993bf40cb569c73528c72", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "c468a98baa6993bf40cb569c73528c72", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在认证代码中使用时序安全的字符串比较", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}, "url": "/docs/compare/?release=18.4#18.4-81a3fe71f66e6eb4", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "0851fa23f0d4449b2336783af8c0b37f", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在认证代码中使用时序安全的字符串比较", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}, "url": "/docs/compare/?release=16.14#16.14-827503d5fab7e32f", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "15b60135e3ecea3f472e4441792a26d0", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在认证代码中使用时序安全的字符串比较", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}, "url": "/docs/compare/?release=15.18#15.18-94e55aad3ebd8168", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "049d75b9e50ceb48ee3ba2c6a5d0f494", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在认证代码中使用时序安全的字符串比较", "evidence": {"same_day": true, "patch_ids": ["4f5cfd9b1166f378c5d2d04fe94dad87", "7fbe706dd59ebe4eced7f18fe6cbf482"], "statement_hash": "7b7eca3255c6f7cb268565088cc6e073ca0b27ad15442af2772a39e51cbfd149"}, "url": "/docs/compare/?release=14.23#14.23-cc5cacc93416a361", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-a3a6ffe2e68f9c70", "cves": ["CVE-2026-6477"], "html": "<p>将 <code>PQfn()</code> 标记为不安全，并避免在 <span>libpq</span> 内部使用它（Nathan Bossart）<a href=\"https://postgr.es/c/d88c7be15\">§</a></p>\n<p>对于非整数结果类型，<code>PQfn()</code> 不会获得输出缓冲区的大小，因此它无法检查服务器返回的数据能否放入缓冲区。恶意服务器因而可能覆盖客户端内存。若不改变 API 就无法修复这一点，所以将该函数标记为已废弃。在 <span>libpq</span> 内部，改用一个能够执行缺失检查的变体版本。</p>\n<p><span>PostgreSQL</span> 项目感谢 Yu Kunpeng 和 Martin Heistermann 报告此问题。（CVE-2026-6477）</p>", "text": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它（Nathan Bossart）§ 对于非整数结果类型，PQfn() 不会获得输出缓冲区的大小，因此它无法检查服务器返回的数据能否放入缓冲区。恶意服务器因而可能覆盖客户端内存。若不改变 API 就无法修复这一点，所以将该函数标记为已废弃。在 libpq 内部，改用一个能够执行缺失检查的变体版本。 PostgreSQL 项目感谢 Yu Kunpeng 和 Martin Heistermann 报告此问题。（CVE-2026-6477）", "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "commits": ["d88c7be15"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ee352ae6aa97942af1ad1aa901fcb3e81575a0a92d8ff5aa3132ec277c1962a1", "section_path": ["变更"], "commit_groups": [["614474996", "8ac723b2b", "bd4811493", "be0136440", "d88c7be15", "e3a1f83ea"]], "identity_text": "Mark PQfn() as unsafe, and avoid using it within libpq (Nathan Bossart) For a non-integral result type, PQfn() is not passed the size of the output buffer, so it cannot check that the data returned by the server will fit. A malicious server could therefore overwrite client memory. This is unfixable without an API change, so mark the function as deprecated. Internally to libpq, use a variant version that can apply the missing check. The PostgreSQL Project thanks Yu Kunpeng and Martin Heistermann for reporting this problem. (CVE-2026-6477)", "commit_aliases": ["614474996", "8ac723b2b", "bd4811493", "be0136440", "d88c7be15", "e3a1f83ea"], "source_commits": ["d88c7be15"], "source_entry_id": "17.10/changes/009", "db_id": "5659c5fab9b3c23718775a073679d763", "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b", "relations": [{"rule": 2, "type": "equivalent", "target": "4ab9970767b3ef4f9da60c3566967c2b", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}}, {"rule": 2, "type": "equivalent", "target": "847daceb397313a24d7c441b2b0558f1", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}}, {"rule": 2, "type": "equivalent", "target": "954548c0ee471a5891175ee04e881030", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}}, {"rule": 2, "type": "equivalent", "target": "fcce310e332c33500cf3c168aae9bd79", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "847daceb397313a24d7c441b2b0558f1", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}, "url": "/docs/compare/?release=18.4#18.4-d46d3c9f5a15e9ff", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "4ab9970767b3ef4f9da60c3566967c2b", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}, "url": "/docs/compare/?release=16.14#16.14-0f3817e9da4bdc58", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "fcce310e332c33500cf3c168aae9bd79", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}, "url": "/docs/compare/?release=15.18#15.18-aa006983b88ec66f", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "954548c0ee471a5891175ee04e881030", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "evidence": {"same_day": true, "patch_ids": ["751c917289b90832d6991f8f4911d6cc"], "statement_hash": "1bf9b2e2db6cb6f0cc68cfddc7ca5a446d8e7408a35bce897eda2f59aec7605b"}, "url": "/docs/compare/?release=14.23#14.23-0894c376482213b5", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-91d502adb9e9905a", "cves": ["CVE-2026-6475"], "html": "<p>防止 <span>pg_basebackup</span> 和 <span>pg_rewind</span> 中的路径遍历（Michael Paquier）<a href=\"https://postgr.es/c/8f881e188\">§</a></p>\n<p>这些应用未能验证从其输入中读取的输出文件路径，因而恶意来源可以覆盖这些应用可写的任意文件。通过拒绝绝对路径或包含父目录引用的路径，约束数据可以写入的位置。</p>\n<p><span>PostgreSQL</span> 项目感谢 Tencent Xuanwu Lab 的 XlabAI Team 和 Valery Gubanov 报告此问题。（CVE-2026-6475）</p>", "text": "防止 pg_basebackup 和 pg_rewind 中的路径遍历（Michael Paquier）§ 这些应用未能验证从其输入中读取的输出文件路径，因而恶意来源可以覆盖这些应用可写的任意文件。通过拒绝绝对路径或包含父目录引用的路径，约束数据可以写入的位置。 PostgreSQL 项目感谢 Tencent Xuanwu Lab 的 XlabAI Team 和 Valery Gubanov 报告此问题。（CVE-2026-6475）", "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "commits": ["8f881e188"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "785ad4ffe16487e93f3d0989e395e309e0c1ccbcfdfb6a37d96c3f43ab1d3a1d", "section_path": ["变更"], "commit_groups": [["0c83fe8e4", "498829dca", "6778af13e", "6a67c540a", "8f881e188", "a1063eece"]], "identity_text": "Prevent path traversal in pg_basebackup and pg_rewind (Michael Paquier) These applications failed to validate output file paths read from their input, so that a malicious source could overwrite any file writable by these applications. Constrain where data can be written by rejecting paths that are absolute or contain parent-directory references. The PostgreSQL Project thanks XlabAI Team of Tencent Xuanwu Lab and Valery Gubanov for reporting this problem. (CVE-2026-6475)", "commit_aliases": ["0c83fe8e4", "498829dca", "6778af13e", "6a67c540a", "8f881e188", "a1063eece"], "source_commits": ["8f881e188"], "source_entry_id": "17.10/changes/010", "db_id": "4bae8e6eba13d8b7f663721c981765fa", "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10", "relations": [{"rule": 2, "type": "equivalent", "target": "4327318e7057209dbe42b98400f9d4be", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}}, {"rule": 2, "type": "equivalent", "target": "5bc8c04625ad184faa480aea65f22c87", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}}, {"rule": 2, "type": "equivalent", "target": "869c70a85bc692a897810d4c6c2c8001", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}}, {"rule": 2, "type": "equivalent", "target": "a4a793034a07393a1194f5d901c7e563", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "4327318e7057209dbe42b98400f9d4be", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}, "url": "/docs/compare/?release=18.4#18.4-ad40fa4da3cebaa2", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "5bc8c04625ad184faa480aea65f22c87", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}, "url": "/docs/compare/?release=16.14#16.14-4c65f6e78638d7b8", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "a4a793034a07393a1194f5d901c7e563", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}, "url": "/docs/compare/?release=15.18#15.18-3178339f2560c1fe", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "869c70a85bc692a897810d4c6c2c8001", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "evidence": {"same_day": true, "patch_ids": ["642e466aa03c3fea1f14f662cc164373"], "statement_hash": "f4e8ae9e638997395a0957d148112ff560c0e68ac13f1311986f81899f914d10"}, "url": "/docs/compare/?release=14.23#14.23-1e7e9c27c7b963a2", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-992f2d3fb9146406", "cves": ["CVE-2026-6473"], "html": "<p>防范 <code>contrib/intarray</code> 的 <code>query_int</code> 类型以及 <code>contrib/ltree</code> 的 <code>ltxtquery</code> 类型中的字段溢出（Tom Lane）<a href=\"https://postgr.es/c/c4d04cc48\">§</a> <a href=\"https://postgr.es/c/2b429d887\">§</a></p>\n<p>这些查询结构的解析没有检查 16 位字段溢出，因而可能构造出无效的查询树。执行该查询时，这可能使服务器崩溃。</p>\n<p><span>PostgreSQL</span> 项目感谢 Xint Code 报告此问题。（CVE-2026-6473）</p>", "text": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出（Tom Lane）§ § 这些查询结构的解析没有检查 16 位字段溢出，因而可能构造出无效的查询树。执行该查询时，这可能使服务器崩溃。 PostgreSQL 项目感谢 Xint Code 报告此问题。（CVE-2026-6473）", "title": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出", "commits": ["2b429d887", "c4d04cc48"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "e3662143874c82416b5b55fcb817fd41ae3f2abd0a7402ed64ef3fcb7d472f55", "section_path": ["变更"], "commit_groups": [["05e73b5c3", "2b429d887", "479823a71", "6f0bff33d", "906ea101d", "fc1fd3d97"], ["074702525", "43451a7a2", "5c1069c35", "84a9f2641", "c4d04cc48", "c5790ec4f"]], "identity_text": "Guard against field overflow within contrib/intarray's query_int type and contrib/ltree's ltxtquery type (Tom Lane) Parsing of these query structures did not check for overflow of 16-bit fields, so that construction of an invalid query tree was possible. This can crash the server when executing the query. The PostgreSQL Project thanks Xint Code for reporting this problem. (CVE-2026-6473)", "commit_aliases": ["05e73b5c3", "074702525", "2b429d887", "43451a7a2", "479823a71", "5c1069c35", "6f0bff33d", "84a9f2641", "906ea101d", "c4d04cc48", "c5790ec4f", "fc1fd3d97"], "source_commits": ["2b429d887", "c4d04cc48"], "source_entry_id": "17.10/changes/011", "db_id": "9f97314dd0efbba664c1f83e75fb5fa1", "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7", "relations": [{"rule": 2, "type": "equivalent", "target": "0423b242e381085c16cb62849b04525f", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}}, {"rule": 2, "type": "equivalent", "target": "2ad1fdfa4b929eb7b74591983f7fe071", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}}, {"rule": 2, "type": "equivalent", "target": "9a6b47b64707d2aaa7ed6ba0484070e5", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}}, {"rule": 2, "type": "equivalent", "target": "d29898a37787b811ca1a66114dcaa530", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "9a6b47b64707d2aaa7ed6ba0484070e5", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}, "url": "/docs/compare/?release=18.4#18.4-2061b554e1b2edfa", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "0423b242e381085c16cb62849b04525f", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}, "url": "/docs/compare/?release=16.14#16.14-21fce6af887a0371", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "2ad1fdfa4b929eb7b74591983f7fe071", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}, "url": "/docs/compare/?release=15.18#15.18-b4e159c1c3614019", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "d29898a37787b811ca1a66114dcaa530", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出", "evidence": {"same_day": true, "patch_ids": ["6f7401152b77a4e4d59e752f19e8486b", "b419665d09a38659e641b360731e56da"], "statement_hash": "eab56845994726033024137f96b0dd1e892a863aae111c3043e8a088bf26c0d7"}, "url": "/docs/compare/?release=14.23#14.23-73b4c72ec19c85bf", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-ac24cc16660e8737", "cves": ["CVE-2026-6473"], "html": "<p>防范 <code>contrib/ltree</code> 的 <code>lquery</code> 类型中过长的值（Michael Paquier）<a href=\"https://postgr.es/c/8c3426110\">§</a></p>\n<p>包含超过 64K 个项的值会导致内部溢出，可能造成栈破坏或错误结果。</p>\n<p><span>PostgreSQL</span> 项目感谢 Vergissmeinnicht、A1ex 和 Jihe Wang 报告此问题。（CVE-2026-6473）</p>", "text": "防范 contrib/ltree 的 lquery 类型中过长的值（Michael Paquier）§ 包含超过 64K 个项的值会导致内部溢出，可能造成栈破坏或错误结果。 PostgreSQL 项目感谢 Vergissmeinnicht、A1ex 和 Jihe Wang 报告此问题。（CVE-2026-6473）", "title": "防范 contrib/ltree 的 lquery 类型中过长的值", "commits": ["8c3426110"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "cbb63e023e7c48bc8db0a828a1936c9d4fc4819204a06f4652635f0ad8d0dec6", "section_path": ["变更"], "commit_groups": [["2f1b16e86", "6b6b26fde", "7f019f341", "8c3426110", "9c2fa5b6a", "b545c3787"]], "identity_text": "Guard against overly long values of contrib/ltree's lquery type (Michael Paquier) Values with more than 64K items caused internal overflows, potentially resulting in stack smashes or wrong answers. The PostgreSQL Project thanks Vergissmeinnicht, A1ex, and Jihe Wang for reporting this problem. (CVE-2026-6473)", "commit_aliases": ["2f1b16e86", "6b6b26fde", "7f019f341", "8c3426110", "9c2fa5b6a", "b545c3787"], "source_commits": ["8c3426110"], "source_entry_id": "17.10/changes/012", "db_id": "e57528b755cb641d030a2490a8ecb83e", "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1", "relations": [{"rule": 2, "type": "equivalent", "target": "6aa8f69f3021e6633c690bc4d069a359", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}}, {"rule": 2, "type": "equivalent", "target": "abd21d034ac90949aacffcced38f44c8", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}}, {"rule": 2, "type": "equivalent", "target": "b026af4117fde9e94388242432e381e0", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}}, {"rule": 2, "type": "equivalent", "target": "f1ea7b13a59ce4a556a97a665b13ddd9", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "f1ea7b13a59ce4a556a97a665b13ddd9", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防范 contrib/ltree 的 lquery 类型中过长的值", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}, "url": "/docs/compare/?release=18.4#18.4-eb36ae972f5e73e4", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "6aa8f69f3021e6633c690bc4d069a359", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防范 contrib/ltree 的 lquery 类型中过长的值", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}, "url": "/docs/compare/?release=16.14#16.14-9f75dab6c6486a53", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "abd21d034ac90949aacffcced38f44c8", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防范 contrib/ltree 的 lquery 类型中过长的值", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}, "url": "/docs/compare/?release=15.18#15.18-f7162bdebe6fb249", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "b026af4117fde9e94388242432e381e0", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防范 contrib/ltree 的 lquery 类型中过长的值", "evidence": {"same_day": true, "patch_ids": ["82d1afadeb06a657e558ea1b226d290b"], "statement_hash": "0f082737f7f109cba8da33aebd4d21f85a8ca0c9ac333cd92d1eafa83684e6e1"}, "url": "/docs/compare/?release=14.23#14.23-466881ae2d66f716", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-24a0ab68af146f7d", "cves": ["CVE-2026-6637"], "html": "<p>防止 <code>contrib/spi</code> 中的 SQL 注入和缓冲区越界写（Nathan Bossart）<a href=\"https://postgr.es/c/2dc64ef28\">§</a></p>\n<p><code>check_foreign_key()</code> 在为键值加引号时不够谨慎，并且还使用固定长度缓冲区构造查询。虽然该模块只是作为示例代码，但仍然不应包含此类危险错误。</p>\n<p><span>PostgreSQL</span> 项目感谢 Nikolay Samokhvalov 报告此问题。（CVE-2026-6637）</p>", "text": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写（Nathan Bossart）§ check_foreign_key() 在为键值加引号时不够谨慎，并且还使用固定长度缓冲区构造查询。虽然该模块只是作为示例代码，但仍然不应包含此类危险错误。 PostgreSQL 项目感谢 Nikolay Samokhvalov 报告此问题。（CVE-2026-6637）", "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "commits": ["2dc64ef28"], "section": "变更", "category": "security", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "26a7b8f437438d7d6acfaadcd30b96e83908358857737256dfad055a7b6822e2", "section_path": ["变更"], "commit_groups": [["1ebda7da9", "260e97733", "2b026df29", "2dc64ef28", "710995782", "8053235ab"]], "identity_text": "Prevent SQL injection and buffer overruns in contrib/spi (Nathan Bossart) check_foreign_key() was insufficiently careful about quoting key values, and also used fixed-length buffers for constructing queries. While this module is only meant as example code, it still shouldn't contain such dangerous errors. The PostgreSQL Project thanks Nikolay Samokhvalov for reporting this problem. (CVE-2026-6637)", "commit_aliases": ["1ebda7da9", "260e97733", "2b026df29", "2dc64ef28", "710995782", "8053235ab"], "source_commits": ["2dc64ef28"], "source_entry_id": "17.10/changes/013", "db_id": "80646ad1b79ca8538cfec18dd2e574d7", "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047", "relations": [{"rule": 2, "type": "equivalent", "target": "47e292139214a78fca35c140daf58270", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}}, {"rule": 2, "type": "equivalent", "target": "5c27c1f393abf9296bda616730209a61", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}}, {"rule": 2, "type": "equivalent", "target": "7f0c9646c89bca074cd9e0bbd964087f", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}}, {"rule": 2, "type": "equivalent", "target": "b9f0b8c87f7b233c50090282e467d8ed", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}}], "version": "17.10", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f0c9646c89bca074cd9e0bbd964087f", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}, "url": "/docs/compare/?release=18.4#18.4-723bbbf2b375795c", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "47e292139214a78fca35c140daf58270", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}, "url": "/docs/compare/?release=16.14#16.14-5c04fa5074420944", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "5c27c1f393abf9296bda616730209a61", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}, "url": "/docs/compare/?release=15.18#15.18-9aab90e2decdd59b", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "b9f0b8c87f7b233c50090282e467d8ed", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["41547e1e28b3ed62af00bb9fe154772c"], "statement_hash": "7b1c0422aa1716161960ade63e1f312c46555a948c91e3b00a8e5c748e70d047"}, "url": "/docs/compare/?release=14.23#14.23-6193d19850500f38", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-3d0256182db9ecf0", "cves": [], "html": "<p>在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则（Richard Guo）<a href=\"https://postgr.es/c/d0e73bb18\">§</a> <a href=\"https://postgr.es/c/13226050e\">§</a></p>\n<p>许多规划器优化都会假定，例如，如果 <code>x</code> 上存在唯一索引，则最多只有一个表行能满足 <code>WHERE x = 'abc'</code>。不过，如果该索引和 <code>WHERE</code> 子句附加了不同的排序规则，一般来说这个结论是不安全的。当两个排序规则都是确定性排序规则时这是安全的，因为该属性本质上要求两个字符串相等就意味着逐位相等。但非确定性排序规则并不如此，因此如果 <code>WHERE</code> 子句或索引任一方具有非确定性排序规则，基于唯一匹配假设进行优化就可能给出错误的查询结果。</p>", "text": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则（Richard Guo）§ § 许多规划器优化都会假定，例如，如果 x 上存在唯一索引，则最多只有一个表行能满足 WHERE x = 'abc'。不过，如果该索引和 WHERE 子句附加了不同的排序规则，一般来说这个结论是不安全的。当两个排序规则都是确定性排序规则时这是安全的，因为该属性本质上要求两个字符串相等就意味着逐位相等。但非确定性排序规则并不如此，因此如果 WHERE 子句或索引任一方具有非确定性排序规则，基于唯一匹配假设进行优化就可能给出错误的查询结果。", "title": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则", "commits": ["13226050e", "d0e73bb18"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "8b3c01203598d7c5eb758f258dddb0ec9238d82825de776c37c0ab6dacba390b", "section_path": ["变更"], "commit_groups": [["1132af22c", "ba82de48e"], ["13226050e", "172034f6e", "574581b50", "5a24cef08", "bab4f7fa5", "bed3ffbf9"], ["5a55ea507", "748fe9e60", "8395446df", "872c9fae7", "b62f514ac", "d0e73bb18"], ["5c214b58b", "a1b754558"], ["e8fd5e579", "f76686ce7"]], "identity_text": "Check for nondeterministic collations before assuming that an equality condition on a collatable type implies uniqueness (Richard Guo) Numerous planner optimizations assume that, for example, at most one table row can satisfy WHERE x = 'abc' if there is a unique index on x. However this conclusion is unsafe in general if the index and the WHERE clause have different collations attached. It is safe when both collations are deterministic, because that property essentially requires that equality of two strings means bitwise equality. But nondeterministic collations don't act that way, so that optimizing on the assumption of unique matches can give wrong query answers if either the WHERE clause or the index has a nondeterministic collation.", "commit_aliases": ["1132af22c", "13226050e", "172034f6e", "574581b50", "5a24cef08", "5a55ea507", "5c214b58b", "748fe9e60", "8395446df", "872c9fae7", "a1b754558", "b62f514ac", "ba82de48e", "bab4f7fa5", "bed3ffbf9", "d0e73bb18", "e8fd5e579", "f76686ce7"], "source_commits": ["13226050e", "a1b754558", "ba82de48e", "d0e73bb18", "f76686ce7"], "source_entry_id": "17.10/changes/014", "db_id": "14aca2f70b5d43150bf21abea06182b1", "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f", "relations": [{"rule": 2, "type": "equivalent", "target": "01495853fe95f595fce2399c30d4c266", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}}, {"rule": 2, "type": "equivalent", "target": "ab7deff460d412d778fdd667ced2079e", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}}, {"rule": 2, "type": "equivalent", "target": "be78fda4d4ae3aff51c46044542ecdd6", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}}, {"rule": 2, "type": "equivalent", "target": "c3e4bc289412c6b44dec384e088dc836", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ab7deff460d412d778fdd667ced2079e", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}, "url": "/docs/compare/?release=18.4#18.4-984de78400375246", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "c3e4bc289412c6b44dec384e088dc836", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}, "url": "/docs/compare/?release=16.14#16.14-92fc9301e29135e9", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "be78fda4d4ae3aff51c46044542ecdd6", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}, "url": "/docs/compare/?release=15.18#15.18-9a769206edcfd043", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "01495853fe95f595fce2399c30d4c266", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在假定支持排序规则的类型上的等值条件意味着唯一性之前，检查是否存在非确定性排序规则", "evidence": {"same_day": true, "patch_ids": ["316cf0ea770f560e72ab5371605b5513", "5c112866699f7434ac81094a7defff94", "91c3ff9eba57946197b7ff56e14fa51c", "d3eef434b7b707e4192750663780aead", "fd47d8d847172b542e4dd373ddd10da1"], "statement_hash": "6402b6aac418981ce0968875628d2940ac41a846f0268ecb70dd927a13b74c1f"}, "url": "/docs/compare/?release=14.23#14.23-d0c85a796825fa51", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-d93df01ed01294f0", "cves": [], "html": "<p>修复连接移除期间 <code>RestrictInfo</code> 结构体中关系引用移除不完整的问题（Tom Lane）<a href=\"https://postgr.es/c/766d40286\">§</a> <a href=\"https://postgr.es/c/53cb4ec1d\">§</a></p>\n<p>已经证明这个疏忽会导致规划器失败，例如意外出现 <span>“<span>FULL JOIN is only supported with merge-joinable or hash-joinable join conditions</span>”</span> 错误。它还可能在其他情况下导致未能考虑有效的计划。</p>", "text": "修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题（Tom Lane）§ § 已经证明这个疏忽会导致规划器失败，例如意外出现 “FULL JOIN is only supported with merge-joinable or hash-joinable join conditions” 错误。它还可能在其他情况下导致未能考虑有效的计划。", "title": "修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题", "commits": ["53cb4ec1d", "766d40286"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "4945b26db7e5f7301e6cbe90c9b3aaf2bb10d1913e3fd2ce61a6dcc2e1edb11a", "section_path": ["变更"], "commit_groups": [["16fb94605", "766d40286", "cfcd57111", "d509be4ac"], ["53cb4ec1d", "798dabe83", "f0ac6d494"]], "identity_text": "Fix incomplete removal of relation references in RestrictInfo structs during join removal (Tom Lane) This oversight has been shown to result in planner failures such as unexpected FULL JOIN is only supported with merge-joinable or hash-joinable join conditions errors. It may also have caused failure to consider valid plans in other cases.", "commit_aliases": ["16fb94605", "53cb4ec1d", "766d40286", "798dabe83", "cfcd57111", "d509be4ac", "f0ac6d494"], "source_commits": ["53cb4ec1d", "766d40286"], "source_entry_id": "17.10/changes/015", "db_id": "0a61b6485e0144413b6e68fbe7763a8f", "patch_ids": ["22c06d077427cb5284041785d0e8cde1", "8989faf5448f269deb8ac79dc2a63860"], "statement_hash": "bbc0a2274d4af257fa49e43eafaf28ca0f12217996c9c00ed63e12bf89b35109", "relations": [{"rule": 2, "type": "equivalent", "target": "53d5de052cfe73ed3dbffe04ba42ff12", "evidence": {"same_day": true, "patch_ids": ["22c06d077427cb5284041785d0e8cde1", "8989faf5448f269deb8ac79dc2a63860"], "statement_hash": "bbc0a2274d4af257fa49e43eafaf28ca0f12217996c9c00ed63e12bf89b35109"}}, {"rule": 2, "type": "equivalent", "target": "cbba3da86525413deddd8a183780866b", "evidence": {"same_day": true, "patch_ids": ["22c06d077427cb5284041785d0e8cde1", "8989faf5448f269deb8ac79dc2a63860"], "statement_hash": "bbc0a2274d4af257fa49e43eafaf28ca0f12217996c9c00ed63e12bf89b35109"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "cbba3da86525413deddd8a183780866b", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题", "evidence": {"same_day": true, "patch_ids": ["22c06d077427cb5284041785d0e8cde1", "8989faf5448f269deb8ac79dc2a63860"], "statement_hash": "bbc0a2274d4af257fa49e43eafaf28ca0f12217996c9c00ed63e12bf89b35109"}, "url": "/docs/compare/?release=18.4#18.4-316d774d0290fc1b", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "53d5de052cfe73ed3dbffe04ba42ff12", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题", "evidence": {"same_day": true, "patch_ids": ["22c06d077427cb5284041785d0e8cde1", "8989faf5448f269deb8ac79dc2a63860"], "statement_hash": "bbc0a2274d4af257fa49e43eafaf28ca0f12217996c9c00ed63e12bf89b35109"}, "url": "/docs/compare/?release=16.14#16.14-f353d43afdeb3aa2", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-5a2d4121326fa353", "cves": [], "html": "<p>修正规则动作和规则限定条件中对 <code>NEW</code> 生成列的错误处理（Richard Guo，Dean Rasheed）<a href=\"https://postgr.es/c/9d6208939\">§</a></p>\n<p>此前，在 <code>INSERT</code> 情况下，此类列引用会生成 NULL；在 <code>UPDATE</code> 情况下，则等同于 <code>OLD</code> 值。</p>", "text": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理（Richard Guo，Dean Rasheed）§ 此前，在 INSERT 情况下，此类列引用会生成 NULL；在 UPDATE 情况下，则等同于 OLD 值。", "title": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理", "commits": ["9d6208939"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "097af185d76895df4eac1b0a13cd3d5b6811d5d3e79289b7441c6f828f47b54f", "section_path": ["变更"], "commit_groups": [["07b257189", "7062bd577", "8e39951be", "9d6208939", "c6a79be3f", "e528bfe97"]], "identity_text": "Fix incorrect handling of NEW generated columns in rule actions and rule qualifications (Richard Guo, Dean Rasheed) Previously, such column references would produce NULL in INSERT cases, or be equivalent to the OLD value in UPDATE cases.", "commit_aliases": ["07b257189", "7062bd577", "8e39951be", "9d6208939", "c6a79be3f", "e528bfe97"], "source_commits": ["9d6208939"], "source_entry_id": "17.10/changes/016", "db_id": "8d80511e26d842f1435d2598f5f3bbaf", "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63", "relations": [{"rule": 2, "type": "equivalent", "target": "090655eebbd07936e4cb9d733f25b629", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}}, {"rule": 2, "type": "equivalent", "target": "47046c8c15b5c7b8a2538a455bf90e7f", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}}, {"rule": 2, "type": "equivalent", "target": "924c81d81cc88aec8a63bf143f2a1b9d", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}}, {"rule": 2, "type": "equivalent", "target": "c8b55f6e2f83066024ceec0fb6fec616", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "090655eebbd07936e4cb9d733f25b629", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}, "url": "/docs/compare/?release=18.4#18.4-e3a990357e448509", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "c8b55f6e2f83066024ceec0fb6fec616", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}, "url": "/docs/compare/?release=16.14#16.14-06d72fdc65f84e98", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "924c81d81cc88aec8a63bf143f2a1b9d", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}, "url": "/docs/compare/?release=15.18#15.18-f1d7f68c812128b9", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "47046c8c15b5c7b8a2538a455bf90e7f", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修正规则动作和规则限定条件中对 NEW 生成列的错误处理", "evidence": {"same_day": true, "patch_ids": ["9ef2d4ec0243bfe037d4994449c1e950"], "statement_hash": "af928f89db398ea67c9d32398c345b90e862839c58fbce5eefd58aea84a8cc63"}, "url": "/docs/compare/?release=14.23#14.23-29ba099a9a7800bb", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-ff70dbd91aa208f5", "cves": [], "html": "<p>修复虚假的 <span>“<span>generated columns are not supported in COPY FROM WHERE conditions</span>”</span> 错误（Tom Lane）<a href=\"https://postgr.es/c/681a91d29\">§</a></p>\n<p>在 <code>COPY FROM WHERE</code> 条件中使用系统列时，有时会错误报告此错误。</p>", "text": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误（Tom Lane）§ 在 COPY FROM WHERE 条件中使用系统列时，有时会错误报告此错误。", "title": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误", "commits": ["681a91d29"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "828f4d02fafd599d025b6b6db79bc05e79210125f75e3200097a6b8d404bdff9", "section_path": ["变更"], "commit_groups": [["07e833e3c", "11c2c0cc8", "3c7a6bbe6", "40fa04e7c", "681a91d29"]], "identity_text": "Fix spurious generated columns are not supported in COPY FROM WHERE conditions errors (Tom Lane) Use of a system column in a COPY FROM WHERE condition could sometimes incorrectly report this error.", "commit_aliases": ["07e833e3c", "11c2c0cc8", "3c7a6bbe6", "40fa04e7c", "681a91d29"], "source_commits": ["681a91d29"], "source_entry_id": "17.10/changes/017", "db_id": "8df2189076f2cd8cbe00157fbb1a0189", "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d", "relations": [{"rule": 2, "type": "equivalent", "target": "245fb332b7d69bd5dc49fa8d57502aa2", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}}, {"rule": 2, "type": "equivalent", "target": "440131012dd49c3c07164d3cb19f4dc4", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}}, {"rule": 2, "type": "equivalent", "target": "8f94a546a98010653153df93291c1daa", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}}, {"rule": 2, "type": "equivalent", "target": "91f89865543bf2e44365694aaed7f1c5", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8f94a546a98010653153df93291c1daa", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}, "url": "/docs/compare/?release=18.4#18.4-734d0400d44f5a3f", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "91f89865543bf2e44365694aaed7f1c5", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}, "url": "/docs/compare/?release=16.14#16.14-2358fdc79d78a2e6", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "245fb332b7d69bd5dc49fa8d57502aa2", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}, "url": "/docs/compare/?release=15.18#15.18-f0eb1786f6b6386e", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "440131012dd49c3c07164d3cb19f4dc4", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误", "evidence": {"same_day": true, "patch_ids": ["ffbf1ec2eaa36c2627f1603a95fc907d"], "statement_hash": "d39bf8499a6b555306ab12d7b050ccd17449a702d3330d112766f10a63c6d66d"}, "url": "/docs/compare/?release=14.23#14.23-97a5c279600949a1", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-7ae06d40b417bc3b", "cves": [], "html": "<p>当 <code>MERGE</code> 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败（Tender Wang）<a href=\"https://postgr.es/c/2dcac93c0\">§</a></p>\n<p>此前，这类场景的行为与较低隔离级别中的行为相同。</p>", "text": "当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败（Tender Wang）§ 此前，这类场景的行为与较低隔离级别中的行为相同。", "title": "当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败", "commits": ["2dcac93c0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "079852db8b655741d2e5073b29a6901174de745c49803dc097cbe1a804a8b420", "section_path": ["变更"], "commit_groups": [["13fab378e", "177037341", "2dcac93c0", "8bfaae6fb", "f6e63d4b8"]], "identity_text": "Correctly report a serialization failure when MERGE encounters a concurrently-updated tuple in repeatable-read or serializable mode (Tender Wang) Previously, such cases behaved the same as in lower isolation levels.", "commit_aliases": ["13fab378e", "177037341", "2dcac93c0", "8bfaae6fb", "f6e63d4b8"], "source_commits": ["2dcac93c0"], "source_entry_id": "17.10/changes/018", "db_id": "f9969f9244f4ca14ba57359448274286", "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4", "relations": [{"rule": 2, "type": "equivalent", "target": "3f720165e3e8a599ba151cefd48b97e8", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}}, {"rule": 2, "type": "equivalent", "target": "6827747aec40694708ad07aebaf4d3c0", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}}, {"rule": 2, "type": "equivalent", "target": "bfb26a4ca22c86d79dfde428bbcc3c24", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "bfb26a4ca22c86d79dfde428bbcc3c24", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}, "url": "/docs/compare/?release=18.4#18.4-34de9da81adc1f79", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "6827747aec40694708ad07aebaf4d3c0", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}, "url": "/docs/compare/?release=16.14#16.14-f98d5e856950c9e4", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "3f720165e3e8a599ba151cefd48b97e8", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时，正确报告串行化失败", "evidence": {"same_day": true, "patch_ids": ["569476436f6f49fe3fc1c20af4157acf"], "statement_hash": "298c05dfef81a90cfb05f72e7375c2ceb55354d2b8c327b08b686d82ad2857b4"}, "url": "/docs/compare/?release=15.18#15.18-7ceac60eaa54d492", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}]}, {"id": "17.10-b893eef62a42d4d7", "cves": [], "html": "<p>修复源表包含已删除列时的 <code>CREATE TABLE ... LIKE ... INCLUDING STATISTICS</code>（Julien Tachoires）<a href=\"https://postgr.es/c/a0104b447\">§</a></p>\n<p>在这类情况下，扩展统计信息对象可能会被错误复制，或该命令可能给出错误的报错。</p>", "text": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS（Julien Tachoires）§ 在这类情况下，扩展统计信息对象可能会被错误复制，或该命令可能给出错误的报错。", "title": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS", "commits": ["a0104b447"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "c99174cf64b7eea39c68151182ae03a33c00690a47820e0b9a18f5122be4fcc0", "section_path": ["变更"], "commit_groups": [["149c875fc", "6cf49e804", "76d15a7ee", "7bb519635", "81b56b47c", "a0104b447"]], "identity_text": "Fix CREATE TABLE ... LIKE ... INCLUDING STATISTICS for cases where the source table has dropped column(s) (Julien Tachoires) In such cases, extended statistics objects could be copied incorrectly, or the command could give an incorrect error.", "commit_aliases": ["149c875fc", "6cf49e804", "76d15a7ee", "7bb519635", "81b56b47c", "a0104b447"], "source_commits": ["a0104b447"], "source_entry_id": "17.10/changes/019", "db_id": "e7ce3c2946bfdef059fc3d3621ffd79d", "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62", "relations": [{"rule": 2, "type": "equivalent", "target": "259f6916a28a7dd3bbeb72cc130b41a9", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}}, {"rule": 2, "type": "equivalent", "target": "2e2724c6cc505b0329f5a78d83fd96cb", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}}, {"rule": 2, "type": "equivalent", "target": "4b8420c7de509df1179d8ee1c1364ee6", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}}, {"rule": 2, "type": "equivalent", "target": "d68baf1e5d412f66c44df3a681238123", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "4b8420c7de509df1179d8ee1c1364ee6", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}, "url": "/docs/compare/?release=18.4#18.4-da4a103ca5dfdddc", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "d68baf1e5d412f66c44df3a681238123", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}, "url": "/docs/compare/?release=16.14#16.14-659db987f4321cc2", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "259f6916a28a7dd3bbeb72cc130b41a9", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}, "url": "/docs/compare/?release=15.18#15.18-442a4e22f7b920a0", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "2e2724c6cc505b0329f5a78d83fd96cb", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS", "evidence": {"same_day": true, "patch_ids": ["910e6f19667b7b2c274a7cfa4cfbf09c"], "statement_hash": "468cd074434d5b124a2f3ad7e4d4363935368333f67c114d461285e65aadff62"}, "url": "/docs/compare/?release=14.23#14.23-8c2e835d537dac09", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-a232240e214fd3cc", "cves": [], "html": "<p>允许 <code>ALTER INDEX ... ATTACH PARTITION</code> 在适当时将父索引标记为有效（Sami Imseih）<a href=\"https://postgr.es/c/becf6d269\">§</a></p>\n<p>存在一些边界情况：即使分区索引的所有叶子索引均有效，该分区索引仍可能保持被标记为无效。此变更提供了一种机制，使用户可以在不借助手工更新系统目录的情况下纠正这种情况。</p>", "text": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效（Sami Imseih）§ 存在一些边界情况：即使分区索引的所有叶子索引均有效，该分区索引仍可能保持被标记为无效。此变更提供了一种机制，使用户可以在不借助手工更新系统目录的情况下纠正这种情况。", "title": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效", "commits": ["becf6d269"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "39c45cb24e6043ba94ecb1d9d725935a191b8294323a8e2be61775cb2ec0d7a1", "section_path": ["变更"], "commit_groups": [["0859000d0", "313355d68", "5713ac248", "9d3e094f1", "becf6d269", "d809b16d1"]], "identity_text": "Allow ALTER INDEX ... ATTACH PARTITION to mark the parent index valid if appropriate (Sami Imseih) There are edge cases in which a partitioned index might remain marked as invalid even when all its leaf indexes are valid. This change provides a mechanism whereby a user can correct such a situation without resorting to manual catalog updates.", "commit_aliases": ["0859000d0", "313355d68", "5713ac248", "9d3e094f1", "becf6d269", "d809b16d1"], "source_commits": ["becf6d269"], "source_entry_id": "17.10/changes/020", "db_id": "73eae229fd96afa624d3ae9343724889", "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5", "relations": [{"rule": 2, "type": "equivalent", "target": "15a0dfb907bce338c1244951e2379584", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}}, {"rule": 2, "type": "equivalent", "target": "3b47c18aac1b9d5d839c6ae4de3ae964", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}}, {"rule": 2, "type": "equivalent", "target": "9efa82150808ee72d1b174825d7f47d3", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}}, {"rule": 2, "type": "equivalent", "target": "ef8cca025501a2f559a921e005a2df3a", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "9efa82150808ee72d1b174825d7f47d3", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}, "url": "/docs/compare/?release=18.4#18.4-720217f77930b818", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "3b47c18aac1b9d5d839c6ae4de3ae964", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}, "url": "/docs/compare/?release=16.14#16.14-afd48d79cce62769", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "15a0dfb907bce338c1244951e2379584", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}, "url": "/docs/compare/?release=15.18#15.18-216b3db2d84f9f35", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "ef8cca025501a2f559a921e005a2df3a", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效", "evidence": {"same_day": true, "patch_ids": ["6f61faf076a411f9a9c18c51b74befa0"], "statement_hash": "d56280bb59ca7a2079394584e577949d3d1706a31278203bdc18b376a97f5ff5"}, "url": "/docs/compare/?release=14.23#14.23-eb7da046cd9a17ab", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-c4bb8ccc29a46458", "cves": [], "html": "<p>修复 <code>ALTER FOREIGN DATA WRAPPER</code>，使其不要删除包装器对象对其处理器函数的依赖（Jeff Davis）<a href=\"https://postgr.es/c/876fa84a2\">§</a></p>", "text": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖（Jeff Davis）§", "title": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖", "commits": ["876fa84a2"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "db16cb7d7a97901a1ac6770ca08532bc006d25c5f57fdeff179d4a7ee468afa5", "section_path": ["变更"], "commit_groups": [["3a35ab1d0", "703fee3b2", "876fa84a2", "a19edb66a", "c11f87b1a", "c6f369e58"]], "identity_text": "Fix ALTER FOREIGN DATA WRAPPER to not drop the wrapper object's dependency on its handler function (Jeff Davis)", "commit_aliases": ["3a35ab1d0", "703fee3b2", "876fa84a2", "a19edb66a", "c11f87b1a", "c6f369e58"], "source_commits": ["876fa84a2"], "source_entry_id": "17.10/changes/021", "db_id": "40f08757d4fdd0da278e5767f13b1a9d", "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6", "relations": [{"rule": 2, "type": "equivalent", "target": "36e2e07d71e68b4283223f19d2984e7c", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}}, {"rule": 2, "type": "equivalent", "target": "44fad7589f9dabcb24fd01bc1b9f0ef9", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}}, {"rule": 2, "type": "equivalent", "target": "b31bf5bb21c7900491a09645d594ea7f", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}}, {"rule": 2, "type": "equivalent", "target": "f47e2288275d1a173744e2f85b16ba59", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "36e2e07d71e68b4283223f19d2984e7c", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}, "url": "/docs/compare/?release=18.4#18.4-58699ca9b2eb6554", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "44fad7589f9dabcb24fd01bc1b9f0ef9", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}, "url": "/docs/compare/?release=16.14#16.14-7bc648cad1956f2b", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "f47e2288275d1a173744e2f85b16ba59", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}, "url": "/docs/compare/?release=15.18#15.18-fe342cfc5fa5e736", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "b31bf5bb21c7900491a09645d594ea7f", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复 ALTER FOREIGN DATA WRAPPER，使其不要删除包装器对象对其处理器函数的依赖", "evidence": {"same_day": true, "patch_ids": ["ab36c14d9b156ed146006d208e168c67"], "statement_hash": "1a75240d366859df37d3b685fc9650cc7048b3331f03f5d7f2e32b3b26bb2ef6"}, "url": "/docs/compare/?release=14.23#14.23-7c81b1eb4ce06e8a", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-a17faaa60c3b23db", "cves": [], "html": "<p>不允许复合类型通过多范围成为自身的成员（Heikki Linnakangas）<a href=\"https://postgr.es/c/54343f6f9\">§</a></p>\n<p>当中间类型是域、数组、复合类型或范围时，我们已经禁止此类情况；但此前遗漏了多范围。</p>", "text": "不允许复合类型通过多范围成为自身的成员（Heikki Linnakangas）§ 当中间类型是域、数组、复合类型或范围时，我们已经禁止此类情况；但此前遗漏了多范围。", "title": "不允许复合类型通过多范围成为自身的成员", "commits": ["54343f6f9"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "d3d4f65dcea0cb79998f9b950559b14f52edc3897ec665e0966422c6b5c164fe", "section_path": ["变更"], "commit_groups": [["06e304524", "34ebeb15c", "54343f6f9", "c7a1d5fc6", "dd4069197", "ff8f27d6e"]], "identity_text": "Disallow making a composite type be a member of itself via a multirange (Heikki Linnakangas) We already forbade such cases when the intermediate type is a domain, array, composite type, or range; but multiranges were overlooked.", "commit_aliases": ["06e304524", "34ebeb15c", "54343f6f9", "c7a1d5fc6", "dd4069197", "ff8f27d6e"], "source_commits": ["54343f6f9"], "source_entry_id": "17.10/changes/022", "db_id": "dbfa0390a811562580299aed6addef7f", "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2", "relations": [{"rule": 2, "type": "equivalent", "target": "aaf1253e3301e7ce01966fdecb2168ff", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}}, {"rule": 2, "type": "equivalent", "target": "db27ce7162c0f5f66e5e36b2b4394be0", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}}, {"rule": 2, "type": "equivalent", "target": "e0d6011d1ad1750ec99d7b452609aa5c", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}}, {"rule": 2, "type": "equivalent", "target": "e65839c47b604979321948f58b376888", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "e65839c47b604979321948f58b376888", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "不允许复合类型通过多范围成为自身的成员", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}, "url": "/docs/compare/?release=18.4#18.4-ccc5811ee220170a", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "aaf1253e3301e7ce01966fdecb2168ff", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "不允许复合类型通过多范围成为自身的成员", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}, "url": "/docs/compare/?release=16.14#16.14-320b63dd288d6613", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "db27ce7162c0f5f66e5e36b2b4394be0", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "不允许复合类型通过多范围成为自身的成员", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}, "url": "/docs/compare/?release=15.18#15.18-1b434ad500a69006", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "e0d6011d1ad1750ec99d7b452609aa5c", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "不允许复合类型通过多范围成为自身的成员", "evidence": {"same_day": true, "patch_ids": ["31c00f6d7ed28a6712dcf1e113075156"], "statement_hash": "6b4527853dd5e8e984500173324ec598d423dfc66e71302f1bdff48a4af1e5d2"}, "url": "/docs/compare/?release=14.23#14.23-50453b6dffac196c", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-0fb5ea65c461a113", "cves": [], "html": "<p>修复 Datum 镜像比较，使其不受符号扩展差异影响（David Rowley）<a href=\"https://postgr.es/c/d29808e35\">§</a></p>\n<p>这修复了一些此前会导致 <span>“<span>could not find memoization table entry</span>”</span> 错误或错误查询结果的情况。</p>", "text": "修复 Datum 镜像比较，使其不受符号扩展差异影响（David Rowley）§ 这修复了一些此前会导致 “could not find memoization table entry” 错误或错误查询结果的情况。", "title": "修复 Datum 镜像比较，使其不受符号扩展差异影响", "commits": ["d29808e35"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ccc9af25f994bd2829c8d173776f703ac30a49ca5ab8fd28baef88660e9624e0", "section_path": ["变更"], "commit_groups": [["0d866282b", "1bd90c887", "49315de0c", "6b2e091f0", "6ce5c310b", "d29808e35"]], "identity_text": "Fix datum-image comparisons to be insensitive to sign-extension variations (David Rowley) This fixes some situations that previously led to could not find memoization table entry errors or wrong query results.", "commit_aliases": ["0d866282b", "1bd90c887", "49315de0c", "6b2e091f0", "6ce5c310b", "d29808e35"], "source_commits": ["d29808e35"], "source_entry_id": "17.10/changes/023", "db_id": "f9a962dc778922758842bad523e4e935", "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a", "relations": [{"rule": 2, "type": "equivalent", "target": "5cabc37ab2a14b9bb0980c3ed400e023", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}}, {"rule": 2, "type": "equivalent", "target": "6de901a8850aaba4f6cb4f60757fd10b", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}}, {"rule": 2, "type": "equivalent", "target": "c5c180d0b102c66e23f3e5c67497661a", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}}, {"rule": 2, "type": "equivalent", "target": "e186e88d722a03078d4189e25842fa12", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c5c180d0b102c66e23f3e5c67497661a", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 Datum 镜像比较，使其不受符号扩展差异影响", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}, "url": "/docs/compare/?release=18.4#18.4-4ed3df97c772ff79", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "e186e88d722a03078d4189e25842fa12", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 Datum 镜像比较，使其不受符号扩展差异影响", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}, "url": "/docs/compare/?release=16.14#16.14-8586f1e2f65191db", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "6de901a8850aaba4f6cb4f60757fd10b", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 Datum 镜像比较，使其不受符号扩展差异影响", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}, "url": "/docs/compare/?release=15.18#15.18-35c4133cc110d098", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "5cabc37ab2a14b9bb0980c3ed400e023", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复 Datum 镜像比较，使其不受符号扩展差异影响", "evidence": {"same_day": true, "patch_ids": ["8b2152dc84fbefe58a465b0d497fe197"], "statement_hash": "95b38df8932c40bbb6eed0884f5ec817fd4ee7218c45df42545da1f44dd8095a"}, "url": "/docs/compare/?release=14.23#14.23-92e44334a5563e50", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-c7e5a864f1920ba5", "cves": [], "html": "<p>修复带非严格等值操作符的 hash <code>IN</code>/<code>NOT IN</code> 的错误逻辑（Chengpeng Yan）<a href=\"https://postgr.es/c/3fda3e12f\">§</a></p>\n<p>此前的代码可能崩溃或给出错误结果。所有内置数据类型都有严格的等值操作符，因此此问题只可能出现在扩展数据类型上。</p>", "text": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑（Chengpeng Yan）§ 此前的代码可能崩溃或给出错误结果。所有内置数据类型都有严格的等值操作符，因此此问题只可能出现在扩展数据类型上。", "title": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑", "commits": ["3fda3e12f"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ff77748ad998449b557ee83bd7f3fc29e4d02d37f028ecd87cf49a60a6901213", "section_path": ["变更"], "commit_groups": [["035c520db", "109de35b7", "3fda3e12f", "622f8b530", "94219a73f", "a2a0060d5"]], "identity_text": "Fix incorrect logic for hashed IN/NOT IN with non-strict equality operator (Chengpeng Yan) The previous coding could crash or give wrong answers. All built-in data types have strict equality operators, so that this issue could only arise with an extension data type.", "commit_aliases": ["035c520db", "109de35b7", "3fda3e12f", "622f8b530", "94219a73f", "a2a0060d5"], "source_commits": ["3fda3e12f"], "source_entry_id": "17.10/changes/024", "db_id": "6a9e4a1d32172e81ee680d6f0342ca63", "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d", "relations": [{"rule": 2, "type": "equivalent", "target": "2a86497013a318262f46769723449b63", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}}, {"rule": 2, "type": "equivalent", "target": "450e4329b437178c4c67084a2ce52024", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}}, {"rule": 2, "type": "equivalent", "target": "c26aa4cfe9a48bc8f6b4f3924802efa7", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}}, {"rule": 2, "type": "equivalent", "target": "d1a95a788ffc450fd8a8b393d2c3e55d", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "d1a95a788ffc450fd8a8b393d2c3e55d", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}, "url": "/docs/compare/?release=18.4#18.4-e5344bf8a6d35197", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "c26aa4cfe9a48bc8f6b4f3924802efa7", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}, "url": "/docs/compare/?release=16.14#16.14-0eb4bde24f0d6fca", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "450e4329b437178c4c67084a2ce52024", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}, "url": "/docs/compare/?release=15.18#15.18-60c7c179902fa568", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "2a86497013a318262f46769723449b63", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑", "evidence": {"same_day": true, "patch_ids": ["73bcd2dbc996c0415640dea74d4f247f"], "statement_hash": "f620e21c617639503e22ec199ea3bdfd888287e95b5e026131bfa74e2fd18e5d"}, "url": "/docs/compare/?release=14.23#14.23-7486ce91b98a0959", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-ead7a4370e3d50c0", "cves": [], "html": "<p>在 <code>to_char()</code> 中截断过长的区域设置相关数字符号（Tom Lane）<a href=\"https://postgr.es/c/c97a28618\">§</a></p>\n<p>如果某个区域设置指定了长度超过 8 字节的货币符号、千位分隔符、小数符号或正负号符号，就可能出现缓冲区越界写。现实世界中不存在这样的区域设置，而且非特权攻击者也不太可能在 Postgres 服务器下安装恶意区域设置定义；但为安全起见，检查过长符号并在需要时截断。</p>", "text": "在 to_char() 中截断过长的区域设置相关数字符号（Tom Lane）§ 如果某个区域设置指定了长度超过 8 字节的货币符号、千位分隔符、小数符号或正负号符号，就可能出现缓冲区越界写。现实世界中不存在这样的区域设置，而且非特权攻击者也不太可能在 Postgres 服务器下安装恶意区域设置定义；但为安全起见，检查过长符号并在需要时截断。", "title": "在 to_char() 中截断过长的区域设置相关数字符号", "commits": ["c97a28618"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "53cf2ded33c30d4ec26265057cf50e563b91c3c3bebb51b84cc29388502b10a7", "section_path": ["变更"], "commit_groups": [["580e7be88", "8a6f08c0c", "a50777680", "c97a28618", "e1e60f148", "f60d25986"]], "identity_text": "Truncate overly-long locale-specific numeric symbols in to_char() (Tom Lane) If a locale specified a currency symbol, thousands separator, or decimal or sign symbol more than 8 bytes long, a buffer overrun was possible. No such locales exist in the real world, and it's impractical for an unprivileged attacker to install a malicious locale definition underneath a Postgres server; but for safety's sake check for overlength symbols and truncate if needed.", "commit_aliases": ["580e7be88", "8a6f08c0c", "a50777680", "c97a28618", "e1e60f148", "f60d25986"], "source_commits": ["c97a28618"], "source_entry_id": "17.10/changes/025", "db_id": "07daab7dbccbfcc34db05980b3a74098", "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0", "relations": [{"rule": 2, "type": "equivalent", "target": "29acc0aac3cc6b0ee03ac19b4559887d", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}}, {"rule": 2, "type": "equivalent", "target": "606d4464f34532059b31083c8d4b85db", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}}, {"rule": 2, "type": "equivalent", "target": "7477baaf42cc60c640f8610e0225343b", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}}, {"rule": 2, "type": "equivalent", "target": "da89f430482b72634ad3d2f296bb5a93", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "606d4464f34532059b31083c8d4b85db", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 to_char() 中截断过长的区域设置相关数字符号", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}, "url": "/docs/compare/?release=18.4#18.4-695d3a73d2ecfb3e", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "7477baaf42cc60c640f8610e0225343b", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 to_char() 中截断过长的区域设置相关数字符号", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}, "url": "/docs/compare/?release=16.14#16.14-eda4c756b58b4a86", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "29acc0aac3cc6b0ee03ac19b4559887d", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在 to_char() 中截断过长的区域设置相关数字符号", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}, "url": "/docs/compare/?release=15.18#15.18-d044032a493dc642", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "da89f430482b72634ad3d2f296bb5a93", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在 to_char() 中截断过长的区域设置相关数字符号", "evidence": {"same_day": true, "patch_ids": ["a55b3cc17f0905d7ae426fd181a6dfc3"], "statement_hash": "faa5531634d9cdfe864f4512cf61a4628efe72bf20a627237eac6e0fc2e723b0"}, "url": "/docs/compare/?release=14.23#14.23-a905b9ca587d8842", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-666b81e0c79b2b28", "cves": [], "html": "<p>防止解析 <code>Ispell</code> 字典的词缀文件时发生缓冲区越界写（Tom Lane）<a href=\"https://postgr.es/c/ea5f0d176\">§</a> <a href=\"https://postgr.es/c/a5426dbf8\">§</a></p>\n<p>损坏或恶意的词缀文件可能使服务器崩溃。这不被视为安全问题，因为文本检索配置文件被假定为可信，但仍然值得修复。</p>", "text": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写（Tom Lane）§ § 损坏或恶意的词缀文件可能使服务器崩溃。这不被视为安全问题，因为文本检索配置文件被假定为可信，但仍然值得修复。", "title": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写", "commits": ["a5426dbf8", "ea5f0d176"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "f6920ec6017618c6fcbb9b943af3649958ca32d2d839dba22c80d2ba174bd0f2", "section_path": ["变更"], "commit_groups": [["00c6e0819", "0b196d3db", "21a24d709", "42383d32d", "d7970e7e9", "ea5f0d176"], ["17f72e037", "6cae0c2bd", "844bb90d4", "a5426dbf8", "c2bfeb3bb", "f852c9093"]], "identity_text": "Prevent buffer overruns when parsing an affix file for an Ispell dictionary (Tom Lane) A corrupt or malicious affix file could crash the server. This is not considered a security issue because text search configuration files are presumed trustworthy, but it still seems worth fixing.", "commit_aliases": ["00c6e0819", "0b196d3db", "17f72e037", "21a24d709", "42383d32d", "6cae0c2bd", "844bb90d4", "a5426dbf8", "c2bfeb3bb", "d7970e7e9", "ea5f0d176", "f852c9093"], "source_commits": ["a5426dbf8", "ea5f0d176"], "source_entry_id": "17.10/changes/026", "db_id": "2b5095497f4832976becc4b644155c51", "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8", "relations": [{"rule": 2, "type": "equivalent", "target": "12f322f4feb75f55804ad196b114a9d6", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}}, {"rule": 2, "type": "equivalent", "target": "5f8b6d695a4f9576cfb99b263e2e4ff7", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}}, {"rule": 2, "type": "equivalent", "target": "cd403cd225ef88fed48df9f593dd683b", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}}, {"rule": 2, "type": "equivalent", "target": "f2129c1b029d4e186640295ff2fd808d", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "12f322f4feb75f55804ad196b114a9d6", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}, "url": "/docs/compare/?release=18.4#18.4-e6587b3cd0787b2e", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "cd403cd225ef88fed48df9f593dd683b", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}, "url": "/docs/compare/?release=16.14#16.14-0a0d8d6349e3929d", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "5f8b6d695a4f9576cfb99b263e2e4ff7", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}, "url": "/docs/compare/?release=15.18#15.18-87e3f08b5312ecda", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "f2129c1b029d4e186640295ff2fd808d", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防止解析 Ispell 字典的词缀文件时发生缓冲区越界写", "evidence": {"same_day": true, "patch_ids": ["3b2347be1395aa44c1c6ae6a8fa24149", "fb61cc9fc6ef6ecc94c4f87d31a648bd"], "statement_hash": "6442ebdc43f39cc7a336c76cc8f8bcdfb68cc5683190ee35457bd8a1cd9e22d8"}, "url": "/docs/compare/?release=14.23#14.23-1446a031fd4414f4", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-9cc0aae20d353dbd", "cves": [], "html": "<p>防范窗口聚合的帧起始和结束位置计算中的整数溢出（Richard Guo）<a href=\"https://postgr.es/c/f8736f8bc\">§</a></p>\n<p>用户指定的极大偏移量（接近 INT64_MAX）可能导致错误或错误的查询结果。</p>", "text": "防范窗口聚合的帧起始和结束位置计算中的整数溢出（Richard Guo）§ 用户指定的极大偏移量（接近 INT64_MAX）可能导致错误或错误的查询结果。", "title": "防范窗口聚合的帧起始和结束位置计算中的整数溢出", "commits": ["f8736f8bc"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "74fda3083bc64696c73c73794bdb207409c7c3c6fa0cf56465e94020ade48175", "section_path": ["变更"], "commit_groups": [["0fe032e6a", "305cf0df0", "4da71fc37", "8b6c89e37", "bfc7dff26", "f8736f8bc"]], "identity_text": "Guard against integer overflow in calculations of frame start and end positions for window aggregates (Richard Guo) Very large user-specified offsets (close to INT64_MAX) could result in errors or incorrect query results.", "commit_aliases": ["0fe032e6a", "305cf0df0", "4da71fc37", "8b6c89e37", "bfc7dff26", "f8736f8bc"], "source_commits": ["f8736f8bc"], "source_entry_id": "17.10/changes/027", "db_id": "f1cd95144d4553602b7e2fbfe36961ad", "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544", "relations": [{"rule": 2, "type": "equivalent", "target": "511c913495519e0301f1fb895b89e0e3", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}}, {"rule": 2, "type": "equivalent", "target": "8ad5f4df6d3f1b7115577a0c720eb3e0", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}}, {"rule": 2, "type": "equivalent", "target": "9a742821f3f95e4a90a5c8c342890d50", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}}, {"rule": 2, "type": "equivalent", "target": "cac7bd4fb899dfb735baa61da9c859ec", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "511c913495519e0301f1fb895b89e0e3", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防范窗口聚合的帧起始和结束位置计算中的整数溢出", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}, "url": "/docs/compare/?release=18.4#18.4-e679f36c64f131bf", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "9a742821f3f95e4a90a5c8c342890d50", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防范窗口聚合的帧起始和结束位置计算中的整数溢出", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}, "url": "/docs/compare/?release=16.14#16.14-ed110186d7aac633", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "8ad5f4df6d3f1b7115577a0c720eb3e0", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防范窗口聚合的帧起始和结束位置计算中的整数溢出", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}, "url": "/docs/compare/?release=15.18#15.18-41f6cd511e262ba3", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "cac7bd4fb899dfb735baa61da9c859ec", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防范窗口聚合的帧起始和结束位置计算中的整数溢出", "evidence": {"same_day": true, "patch_ids": ["55f185c77388b5ccf5f79078a7a19b0b"], "statement_hash": "84aa1ad98df37853c6497eff68ec71c4a468e09bd91604bc168bf3a8ad45d544"}, "url": "/docs/compare/?release=14.23#14.23-170736a74064aa19", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-62d51a1802de9407", "cves": [], "html": "<p>修复 <code>array_agg_array_combine()</code>，使其正确组合数组的空值位图（Dmytro Astapov）<a href=\"https://postgr.es/c/d6c9432cb\">§</a></p>\n<p>此错误导致并行化的 <code>array_agg(anyarray)</code> 计算有时产生不正确输出。</p>", "text": "修复 array_agg_array_combine()，使其正确组合数组的空值位图（Dmytro Astapov）§ 此错误导致并行化的 array_agg(anyarray) 计算有时产生不正确输出。", "title": "修复 array_agg_array_combine()，使其正确组合数组的空值位图", "commits": ["d6c9432cb"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ec8bf3299156fb183b7379523f68f47f5073ea77fd903342cb443440f2c1359b", "section_path": ["变更"], "commit_groups": [["14bf2c39e", "6582010c8", "bb959269e", "d6c9432cb"]], "identity_text": "Fix array_agg_array_combine() to combine the arrays' null bitmaps correctly (Dmytro Astapov) This mistake resulted in sometimes-incorrect output from parallelized array_agg(anyarray) calculations.", "commit_aliases": ["14bf2c39e", "6582010c8", "bb959269e", "d6c9432cb"], "source_commits": ["d6c9432cb"], "source_entry_id": "17.10/changes/028", "db_id": "a8336f214d5ae7c6da31f007fe97cf91", "patch_ids": ["ea7de144946d1e8d4f970b72ca97aad3"], "statement_hash": "3153d0ad054c1a724bee8e6bdd93263c76849c422ce44c5776bb015aec005d04", "relations": [{"rule": 2, "type": "equivalent", "target": "0e5d5bedebe61a4b8b996f87006ba93b", "evidence": {"same_day": true, "patch_ids": ["ea7de144946d1e8d4f970b72ca97aad3"], "statement_hash": "3153d0ad054c1a724bee8e6bdd93263c76849c422ce44c5776bb015aec005d04"}}, {"rule": 2, "type": "equivalent", "target": "723a8eeb14f51a9627e04c54cff2c321", "evidence": {"same_day": true, "patch_ids": ["ea7de144946d1e8d4f970b72ca97aad3"], "statement_hash": "3153d0ad054c1a724bee8e6bdd93263c76849c422ce44c5776bb015aec005d04"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "723a8eeb14f51a9627e04c54cff2c321", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 array_agg_array_combine()，使其正确组合数组的空值位图", "evidence": {"same_day": true, "patch_ids": ["ea7de144946d1e8d4f970b72ca97aad3"], "statement_hash": "3153d0ad054c1a724bee8e6bdd93263c76849c422ce44c5776bb015aec005d04"}, "url": "/docs/compare/?release=18.4#18.4-468cc4bcd201b1ba", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "0e5d5bedebe61a4b8b996f87006ba93b", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 array_agg_array_combine()，使其正确组合数组的空值位图", "evidence": {"same_day": true, "patch_ids": ["ea7de144946d1e8d4f970b72ca97aad3"], "statement_hash": "3153d0ad054c1a724bee8e6bdd93263c76849c422ce44c5776bb015aec005d04"}, "url": "/docs/compare/?release=16.14#16.14-1a064ff9422dee0d", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-9fc5c83ef66b127c", "cves": [], "html": "<p>如果 <code>sync_file_range()</code> 返回错误码 <code>EINTR</code>，则进行重试（DaeMyung Kang）<a href=\"https://postgr.es/c/5499be332\">§</a></p>", "text": "如果 sync_file_range() 返回错误码 EINTR，则进行重试（DaeMyung Kang）§", "title": "如果 sync_file_range() 返回错误码 EINTR，则进行重试", "commits": ["5499be332"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "633aaab922b1cd10090a9d228d6088d5e70bcf4a78ef2afaf5889f7cae72846d", "section_path": ["变更"], "commit_groups": [["3b35c10a4", "5499be332", "5941e7f09", "6cb307251"]], "identity_text": "Retry sync_file_range() if it returns error code EINTR (DaeMyung Kang)", "commit_aliases": ["3b35c10a4", "5499be332", "5941e7f09", "6cb307251"], "source_commits": ["5499be332"], "source_entry_id": "17.10/changes/029", "db_id": "263733ae017f01e103baa9c76806929c", "patch_ids": ["6860aa5d70c2979dafc25bb7868b4ebf"], "statement_hash": "5956c28ffd0a101c20228e6e7f9aced284c8ed83dedde4d57ecb4ad6f634b225", "relations": [{"rule": 2, "type": "equivalent", "target": "2d88dc837a682f6290290ff2f8ed8b78", "evidence": {"same_day": true, "patch_ids": ["6860aa5d70c2979dafc25bb7868b4ebf"], "statement_hash": "5956c28ffd0a101c20228e6e7f9aced284c8ed83dedde4d57ecb4ad6f634b225"}}, {"rule": 2, "type": "equivalent", "target": "7fde099d3089697de30b435de5e86e2c", "evidence": {"same_day": true, "patch_ids": ["6860aa5d70c2979dafc25bb7868b4ebf"], "statement_hash": "5956c28ffd0a101c20228e6e7f9aced284c8ed83dedde4d57ecb4ad6f634b225"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7fde099d3089697de30b435de5e86e2c", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "如果 sync_file_range() 返回错误码 EINTR，则进行重试", "evidence": {"same_day": true, "patch_ids": ["6860aa5d70c2979dafc25bb7868b4ebf"], "statement_hash": "5956c28ffd0a101c20228e6e7f9aced284c8ed83dedde4d57ecb4ad6f634b225"}, "url": "/docs/compare/?release=18.4#18.4-6abb19c703f2cc3c", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "2d88dc837a682f6290290ff2f8ed8b78", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "如果 sync_file_range() 返回错误码 EINTR，则进行重试", "evidence": {"same_day": true, "patch_ids": ["6860aa5d70c2979dafc25bb7868b4ebf"], "statement_hash": "5956c28ffd0a101c20228e6e7f9aced284c8ed83dedde4d57ecb4ad6f634b225"}, "url": "/docs/compare/?release=16.14#16.14-2f6b9e0e1667c471", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-8b259c7f97a0d7e9", "cves": [], "html": "<p>修复 <code>pg_stat_reset_single_table_counters()</code> 在共享系统目录上的错误行为（Chao Li）<a href=\"https://postgr.es/c/a4fefb3e0\">§</a></p>\n<p>这类场景会产生重置当前数据库的 <code>stat_reset_timestamp</code> 的副作用，而这不是有意的。</p>", "text": "修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为（Chao Li）§ 这类场景会产生重置当前数据库的 stat_reset_timestamp 的副作用，而这不是有意的。", "title": "修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为", "commits": ["a4fefb3e0"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "9caef814d325cb3eb1df51b22bf1a229dae6cabe681c96e8465704c0d681d497", "section_path": ["变更"], "commit_groups": [["80156cee0", "a4fefb3e0", "b081c5b07", "c6d3f0585", "c7cdcbd3e"]], "identity_text": "Fix incorrect behavior of pg_stat_reset_single_table_counters() on a shared catalog (Chao Li) Such cases had a side-effect of resetting the current database's stat_reset_timestamp, which was unintended.", "commit_aliases": ["80156cee0", "a4fefb3e0", "b081c5b07", "c6d3f0585", "c7cdcbd3e"], "source_commits": ["a4fefb3e0"], "source_entry_id": "17.10/changes/030", "db_id": "78582be8ad9510fda737b311e1159d46", "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467", "relations": [{"rule": 2, "type": "equivalent", "target": "09d4f3d68a99c0eb46beb34f51959dbd", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}}, {"rule": 2, "type": "equivalent", "target": "388698576be55b507a9b7abb256a6450", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}}, {"rule": 2, "type": "equivalent", "target": "6e037b0ab13babc0a57068f559d9947e", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "388698576be55b507a9b7abb256a6450", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}, "url": "/docs/compare/?release=18.4#18.4-58b13d376507a808", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "6e037b0ab13babc0a57068f559d9947e", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}, "url": "/docs/compare/?release=16.14#16.14-26884dfd6ebea54e", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "09d4f3d68a99c0eb46beb34f51959dbd", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为", "evidence": {"same_day": true, "patch_ids": ["236f11c0f7cc166c8c1135c864e37524"], "statement_hash": "fe3dc0ad7d2fbda95b8fb3c33b60666a7ab7a47f2d3398dd4e2a9cb2ef4c7467"}, "url": "/docs/compare/?release=15.18#15.18-aab21cd0a2fb21de", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}]}, {"id": "17.10-ab22f7a64370fbd6", "cves": [], "html": "<p>当并行应用工作进程空闲时更新活动统计信息（Zhijie Hou）<a href=\"https://postgr.es/c/88d7fdcc9\">§</a></p>\n<p>以前，刚完成事务的统计信息可能长时间不被报告，尤其在工作负载较轻时。</p>", "text": "当并行应用工作进程空闲时更新活动统计信息（Zhijie Hou）§ 以前，刚完成事务的统计信息可能长时间不被报告，尤其在工作负载较轻时。", "title": "当并行应用工作进程空闲时更新活动统计信息", "commits": ["88d7fdcc9"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "cb9e6cd136b0bb86d1e09583d4c62584630a1c238ff2e7f3884765b3d7598403", "section_path": ["变更"], "commit_groups": [["090c4297e", "44c8dc280", "88d7fdcc9", "d052f6c7d"]], "identity_text": "Update activity statistics when a parallel apply worker is idle (Zhijie Hou) Previously, statistics from a recently-completed transaction might go unreported for long intervals, particularly if the workload is light.", "commit_aliases": ["090c4297e", "44c8dc280", "88d7fdcc9", "d052f6c7d"], "source_commits": ["88d7fdcc9"], "source_entry_id": "17.10/changes/031", "db_id": "96a3e2b2d17bbc2072d29a84e39fe9f0", "patch_ids": ["2d9114e9de0545265b46f9271e79774e"], "statement_hash": "1425951cf41b73475715e34b86444749dadef32d8dd753ca05fb84c5dcab7db0", "relations": [{"rule": 2, "type": "equivalent", "target": "677b87203fcf8da98790d6378484a333", "evidence": {"same_day": true, "patch_ids": ["2d9114e9de0545265b46f9271e79774e"], "statement_hash": "1425951cf41b73475715e34b86444749dadef32d8dd753ca05fb84c5dcab7db0"}}, {"rule": 2, "type": "equivalent", "target": "980b17cc0e380660feb5723048978d0c", "evidence": {"same_day": true, "patch_ids": ["2d9114e9de0545265b46f9271e79774e"], "statement_hash": "1425951cf41b73475715e34b86444749dadef32d8dd753ca05fb84c5dcab7db0"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "980b17cc0e380660feb5723048978d0c", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "当并行应用工作进程空闲时更新活动统计信息", "evidence": {"same_day": true, "patch_ids": ["2d9114e9de0545265b46f9271e79774e"], "statement_hash": "1425951cf41b73475715e34b86444749dadef32d8dd753ca05fb84c5dcab7db0"}, "url": "/docs/compare/?release=18.4#18.4-c51eded9a9ad369c", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "677b87203fcf8da98790d6378484a333", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "当并行应用工作进程空闲时更新活动统计信息", "evidence": {"same_day": true, "patch_ids": ["2d9114e9de0545265b46f9271e79774e"], "statement_hash": "1425951cf41b73475715e34b86444749dadef32d8dd753ca05fb84c5dcab7db0"}, "url": "/docs/compare/?release=16.14#16.14-46ffad47336d7f40", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-b34c916fe548b623", "cves": [], "html": "<p>修复集合操作中估算数组长度时出现的 <span>“<span>no relation entry for relid 0</span>”</span> 失败（Tender Wang）<a href=\"https://postgr.es/c/93ed18720\">§</a></p>", "text": "修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败（Tender Wang）§", "title": "修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败", "commits": ["93ed18720"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "c2198678d068b878eeead02e98b71dfbe403564a71e7946bd7b5cffa4a812d6b", "section_path": ["变更"], "commit_groups": [["13e20d1c9", "77d0e82e5", "93ed18720"]], "identity_text": "Fix no relation entry for relid 0 failure while estimating array lengths in set operations (Tender Wang)", "commit_aliases": ["13e20d1c9", "77d0e82e5", "93ed18720"], "source_commits": ["93ed18720"], "source_entry_id": "17.10/changes/032", "db_id": "767acd748e88add4e0b136661b09348d", "patch_ids": ["564821c3480587e28f1a951776d143da"], "statement_hash": "79d2c12d4a24236694523bc4108c4ef1ad8487e654635a5140572e534f35ca67", "relations": [{"rule": 2, "type": "equivalent", "target": "8b93ba333f257971520839fdfb923dc8", "evidence": {"same_day": true, "patch_ids": ["564821c3480587e28f1a951776d143da"], "statement_hash": "79d2c12d4a24236694523bc4108c4ef1ad8487e654635a5140572e534f35ca67"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8b93ba333f257971520839fdfb923dc8", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败", "evidence": {"same_day": true, "patch_ids": ["564821c3480587e28f1a951776d143da"], "statement_hash": "79d2c12d4a24236694523bc4108c4ef1ad8487e654635a5140572e534f35ca67"}, "url": "/docs/compare/?release=18.4#18.4-9a9061bf537ff043", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-fc2a0ba457a12efa", "cves": [], "html": "<p>修复 <code>pglz_decompress()</code> 接收损坏输入时的缓冲区越界读问题（Andrew Dunstan）<a href=\"https://postgr.es/c/c05c3baf1\">§</a></p>\n<p>此前可能读取输入末尾之后的几个字节，在极其不走运的情况下可能导致崩溃。</p>", "text": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题（Andrew Dunstan）§ 此前可能读取输入末尾之后的几个字节，在极其不走运的情况下可能导致崩溃。", "title": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题", "commits": ["c05c3baf1"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "4b17f906aa7eb8ad7e4507cbd56fe8b41b68db07a64205263a914fd24fb6b1cb", "section_path": ["变更"], "commit_groups": [["2b5ba2a0a", "c05c3baf1", "c3e436b1c", "c88ad3a21", "de32a01e7", "e630f65d0"]], "identity_text": "Fix buffer overread when pglz_decompress() receives corrupt input (Andrew Dunstan) It was possible to read a few bytes past the end of the input, which in very unlucky cases might cause a crash.", "commit_aliases": ["2b5ba2a0a", "c05c3baf1", "c3e436b1c", "c88ad3a21", "de32a01e7", "e630f65d0"], "source_commits": ["c05c3baf1"], "source_entry_id": "17.10/changes/033", "db_id": "7d77c3cf4d2df5b2b05bab302e7d6447", "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d", "relations": [{"rule": 2, "type": "equivalent", "target": "0ae0f8c53b17ca5f253bbab76a0d9b74", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}}, {"rule": 2, "type": "equivalent", "target": "31b4e32fc9a04113a1aeaa4d2e794a7e", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}}, {"rule": 2, "type": "equivalent", "target": "8f0710244d42d6ab314f2ef4a78fa91d", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}}, {"rule": 2, "type": "equivalent", "target": "f313199e743d40f3a6df92ac0387bcfa", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0ae0f8c53b17ca5f253bbab76a0d9b74", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}, "url": "/docs/compare/?release=18.4#18.4-1b7a6be51f8649d8", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "f313199e743d40f3a6df92ac0387bcfa", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}, "url": "/docs/compare/?release=16.14#16.14-43db7f38ffec18ea", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "8f0710244d42d6ab314f2ef4a78fa91d", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}, "url": "/docs/compare/?release=15.18#15.18-e99de70478646f68", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "31b4e32fc9a04113a1aeaa4d2e794a7e", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题", "evidence": {"same_day": true, "patch_ids": ["c0bb5d07bdfbe114b7578587383a80fa"], "statement_hash": "bd7b2a40bb8d7d7798cf8ecb76df72f44a9455b09e9d2f6b36769b9fa697b84d"}, "url": "/docs/compare/?release=14.23#14.23-a9f0074e1ae26260", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-4d205143d096f8a7", "cves": [], "html": "<p>修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理（Andrew Dunstan）<a href=\"https://postgr.es/c/2e373785e\">§</a></p>\n<p>过去可能接受格式不正确的数字，导致后续失败。</p>", "text": "修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理（Andrew Dunstan）§ 过去可能接受格式不正确的数字，导致后续失败。", "title": "修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理", "commits": ["2e373785e"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "33325669276531c82dd02bf7df15732f7f5ae68f70ba2e81bc9b4b4c02141d9b", "section_path": ["变更"], "commit_groups": [["2478bd5db", "2e373785e", "3e4955630"]], "identity_text": "Fix incremental JSON parser's handling of numeric tokens that cross input buffer boundaries (Andrew Dunstan) It was possible to accept an incorrectly-formatted number, leading to failures later.", "commit_aliases": ["2478bd5db", "2e373785e", "3e4955630"], "source_commits": ["2e373785e"], "source_entry_id": "17.10/changes/034", "db_id": "56aacc58e4b3c19869652bc7bccc257f", "patch_ids": ["3a87b59bc06c42cccbaad53a59170a0f"], "statement_hash": "e510b6a330131e0a9e306a9599eda0558466f19ce69118716f8d3a5ac91b7463", "relations": [{"rule": 2, "type": "equivalent", "target": "19c77cbe8cf7f7f6073b8df365b35790", "evidence": {"same_day": true, "patch_ids": ["3a87b59bc06c42cccbaad53a59170a0f"], "statement_hash": "e510b6a330131e0a9e306a9599eda0558466f19ce69118716f8d3a5ac91b7463"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "19c77cbe8cf7f7f6073b8df365b35790", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理", "evidence": {"same_day": true, "patch_ids": ["3a87b59bc06c42cccbaad53a59170a0f"], "statement_hash": "e510b6a330131e0a9e306a9599eda0558466f19ce69118716f8d3a5ac91b7463"}, "url": "/docs/compare/?release=18.4#18.4-dd2acc7c0ea39340", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-1a6869f33820ce4a", "cves": [], "html": "<p>防止恢复增量备份时关系可见性映射膨胀（Robert Haas）<a href=\"https://postgr.es/c/076bc57fa\">§</a></p>\n<p>由于错误计算预期文件长度，恢复可能向可见性映射追加许多零块。这不会导致数据损坏，但可能浪费大量磁盘空间。</p>", "text": "防止恢复增量备份时关系可见性映射膨胀（Robert Haas）§ 由于错误计算预期文件长度，恢复可能向可见性映射追加许多零块。这不会导致数据损坏，但可能浪费大量磁盘空间。", "title": "防止恢复增量备份时关系可见性映射膨胀", "commits": ["076bc57fa"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "1e80d02fef5aadca82ddebd7cf41b40a0532ba63207742c20123562cc728b8a5", "section_path": ["变更"], "commit_groups": [["076bc57fa", "9540c0e5d", "ffc226ab6"]], "identity_text": "Prevent bloating relation visibility maps during restore of an incremental backup (Robert Haas) Restore could append many blocks of zeroes to a visibility map, due to incorrect computation of the expected file length. This does not result in data corruption, but it could waste a substantial amount of disk space.", "commit_aliases": ["076bc57fa", "9540c0e5d", "ffc226ab6"], "source_commits": ["076bc57fa"], "source_entry_id": "17.10/changes/035", "db_id": "8d78dd5d30d4094d87fbfc3de7307fc9", "patch_ids": ["738fd594a90796c809e728fbc5651d22"], "statement_hash": "8be561d5ad13698eca7d90b5fd9fbde1028f705a3031ab9e786774f2c9f7b3a2", "relations": [{"rule": 2, "type": "equivalent", "target": "53b7f65c3e08f9341b47945f095569e8", "evidence": {"same_day": true, "patch_ids": ["738fd594a90796c809e728fbc5651d22"], "statement_hash": "8be561d5ad13698eca7d90b5fd9fbde1028f705a3031ab9e786774f2c9f7b3a2"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "53b7f65c3e08f9341b47945f095569e8", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止恢复增量备份时关系可见性映射膨胀", "evidence": {"same_day": true, "patch_ids": ["738fd594a90796c809e728fbc5651d22"], "statement_hash": "8be561d5ad13698eca7d90b5fd9fbde1028f705a3031ab9e786774f2c9f7b3a2"}, "url": "/docs/compare/?release=18.4#18.4-7eaea7144baecfd7", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-a4c0aebef3a26164", "cves": [], "html": "<p>在文本列上的系统目录缓存查找中使用 C 排序规则，而不是数据库的默认排序规则（Jeff Davis）<a href=\"https://postgr.es/c/9dda30dd3\">§</a></p>\n<p>这避免了某些边缘场景中的失败，例如物理复制启动时没有已确定的数据库，因而无法确定默认排序规则。</p>", "text": "在文本列上的系统目录缓存查找中使用 C 排序规则，而不是数据库的默认排序规则（Jeff Davis）§ 这避免了某些边缘场景中的失败，例如物理复制启动时没有已确定的数据库，因而无法确定默认排序规则。", "title": "在文本列上的系统目录缓存查找中使用 C 排序规则，而不是数据库的默认排序规则", "commits": ["9dda30dd3"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "881bf17ac375351c42b978fb1777565f85077b618a99451953fc1307ca23fb4d", "section_path": ["变更"], "commit_groups": [["03c4f243e", "9dda30dd3", "dbf217c1c"]], "identity_text": "Use C collation, not the database's default collation, in catalog cache lookups on text columns (Jeff Davis) This avoids failures in edge cases such as physical replication startup, where there is no identified database so that a default collation cannot be determined.", "commit_aliases": ["03c4f243e", "9dda30dd3", "dbf217c1c"], "source_commits": ["9dda30dd3"], "source_entry_id": "17.10/changes/036", "db_id": "b4e242e2dfdaddd1a84c10f08ab6fdb6", "patch_ids": ["1a030429f091c1d56d52205c2930f3cc"], "statement_hash": "c93618f8a7ca56819cbbb9cf9df80953c6fe150819de3e1e7fad58e879a5f52f", "relations": [{"rule": 2, "type": "equivalent", "target": "eedc842000f52b63d80fc16df2a3a7fa", "evidence": {"same_day": true, "patch_ids": ["1a030429f091c1d56d52205c2930f3cc"], "statement_hash": "c93618f8a7ca56819cbbb9cf9df80953c6fe150819de3e1e7fad58e879a5f52f"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "eedc842000f52b63d80fc16df2a3a7fa", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在文本列上的系统目录缓存查找中使用 C 排序规则，而不是数据库的默认排序规则", "evidence": {"same_day": true, "patch_ids": ["1a030429f091c1d56d52205c2930f3cc"], "statement_hash": "c93618f8a7ca56819cbbb9cf9df80953c6fe150819de3e1e7fad58e879a5f52f"}, "url": "/docs/compare/?release=18.4#18.4-3a216fc3a56d1f2e", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-f9ca5e51b9e70665", "cves": [], "html": "<p>防止卡住的 slotsync 工作进程阻塞备库提升（Nisha Moond、Ajin Cherian）<a href=\"https://postgr.es/c/15910b1c3\">§</a> <a href=\"https://postgr.es/c/586f4266f\">§</a> <a href=\"https://postgr.es/c/4bed04d39\">§</a></p>\n<p>一个徒劳等待主库响应的工作进程，会让提升延迟一段不合理的时间。</p>", "text": "防止卡住的 slotsync 工作进程阻塞备库提升（Nisha Moond、Ajin Cherian）§ § § 一个徒劳等待主库响应的工作进程，会让提升延迟一段不合理的时间。", "title": "防止卡住的 slotsync 工作进程阻塞备库提升", "commits": ["15910b1c3", "4bed04d39", "586f4266f"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "8c18f1365ef8d4f33d75f546c46b888c3171bd67f6bdb59d957558e4d0f6bee6", "section_path": ["变更"], "commit_groups": [["1362bc33e", "4bed04d39", "94efd308b"], ["15910b1c3", "58c1188a3", "db93032a7"], ["586f4266f", "acf49bfed"]], "identity_text": "Prevent stuck slotsync worker processes from blocking promotion of a standby server (Nisha Moond, Ajin Cherian) A worker process that was vainly waiting for a response from the primary would delay promotion for an unreasonable amount of time.", "commit_aliases": ["1362bc33e", "15910b1c3", "4bed04d39", "586f4266f", "58c1188a3", "94efd308b", "acf49bfed", "db93032a7"], "source_commits": ["15910b1c3", "4bed04d39", "586f4266f"], "source_entry_id": "17.10/changes/037", "db_id": "299696a41fbafef0ba66bb25a5daba56", "patch_ids": ["0631393988a6e439ca6c21edde5e08d0", "d9eacc799b9f25f84495940918c9855b", "f0a73f0938081885d684993c67dca652"], "statement_hash": "86bf0b738194ea614f01e7178f35891e27741d55257e8b4157bf2182cf0b6509", "relations": [{"rule": 2, "type": "equivalent", "target": "e197fe7e68af6fc16360be64080650fb", "evidence": {"same_day": true, "patch_ids": ["0631393988a6e439ca6c21edde5e08d0", "d9eacc799b9f25f84495940918c9855b", "f0a73f0938081885d684993c67dca652"], "statement_hash": "86bf0b738194ea614f01e7178f35891e27741d55257e8b4157bf2182cf0b6509"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "e197fe7e68af6fc16360be64080650fb", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止卡住的 slotsync 工作进程阻塞备库提升", "evidence": {"same_day": true, "patch_ids": ["0631393988a6e439ca6c21edde5e08d0", "d9eacc799b9f25f84495940918c9855b", "f0a73f0938081885d684993c67dca652"], "statement_hash": "86bf0b738194ea614f01e7178f35891e27741d55257e8b4157bf2182cf0b6509"}, "url": "/docs/compare/?release=18.4#18.4-401593c891e36279", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-f979cb3196409f3b", "cves": [], "html": "<p>修复空闲 slotsync 工作进程产生过多日志输出的问题（Zhijie Hou）<a href=\"https://postgr.es/c/91741b7cb\">§</a></p>", "text": "修复空闲 slotsync 工作进程产生过多日志输出的问题（Zhijie Hou）§", "title": "修复空闲 slotsync 工作进程产生过多日志输出的问题", "commits": ["91741b7cb"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "184befbf180482a913e10d475d9913df6db34b1278b0ec8b0fd84da77c7f49f3", "section_path": ["变更"], "commit_groups": [["540fe8fb5", "85c17f612", "91741b7cb"]], "identity_text": "Fix excessive log output from idle slotsync worker processes (Zhijie Hou)", "commit_aliases": ["540fe8fb5", "85c17f612", "91741b7cb"], "source_commits": ["91741b7cb"], "source_entry_id": "17.10/changes/038", "db_id": "823fb36d471b0ef6060bc9363c89e12c", "patch_ids": ["fc452e68c97468e4711e1e83f06f17af"], "statement_hash": "2a2af3205a99361da43475c5da46b1c66376f789f13a1c2ee0f23624cbb849a4", "relations": [{"rule": 2, "type": "equivalent", "target": "695bd513323417fe3250f7a82dc60ff8", "evidence": {"same_day": true, "patch_ids": ["fc452e68c97468e4711e1e83f06f17af"], "statement_hash": "2a2af3205a99361da43475c5da46b1c66376f789f13a1c2ee0f23624cbb849a4"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "695bd513323417fe3250f7a82dc60ff8", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复空闲 slotsync 工作进程产生过多日志输出的问题", "evidence": {"same_day": true, "patch_ids": ["fc452e68c97468e4711e1e83f06f17af"], "statement_hash": "2a2af3205a99361da43475c5da46b1c66376f789f13a1c2ee0f23624cbb849a4"}, "url": "/docs/compare/?release=18.4#18.4-59479740d5b1c42c", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-c10485892a0cc1b6", "cves": [], "html": "<p>确保即使发生错误后，tuplestore 数据结构在内部也保持一致（Tom Lane）<a href=\"https://postgr.es/c/1f5b6a5e5\">§</a></p>\n<p>此前代码对此不够谨慎，这在大多数时候没有问题，但对于支撑 <code>WITH HOLD</code> 游标的 tuplestore 则有问题。在 v15 及更早版本中，这会导致容易重现的崩溃；目前尚不知道较新分支是否易受影响，但最好在所有分支中保持一致性。</p>", "text": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致（Tom Lane）§ 此前代码对此不够谨慎，这在大多数时候没有问题，但对于支撑 WITH HOLD 游标的 tuplestore 则有问题。在 v15 及更早版本中，这会导致容易重现的崩溃；目前尚不知道较新分支是否易受影响，但最好在所有分支中保持一致性。", "title": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致", "commits": ["1f5b6a5e5"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "76499e356c1f81b4efc6c23c6c754171d5a2d9e4a0ead736178dbe289ebcea50", "section_path": ["变更"], "commit_groups": [["1f5b6a5e5", "59c139d53", "739477345", "7cd23aad2", "811f3263a", "adb7873bb"]], "identity_text": "Ensure that tuplestore data structures are internally consistent even after an error (Tom Lane) The code was previously careless about this, which is fine most of the time but is problematic for the tuplestore backing a WITH HOLD cursor. In v15 and before this leads to easily-reproducible crashes; later branches are not known to be vulnerable, but it seems best to preserve consistency in all.", "commit_aliases": ["1f5b6a5e5", "59c139d53", "739477345", "7cd23aad2", "811f3263a", "adb7873bb"], "source_commits": ["1f5b6a5e5"], "source_entry_id": "17.10/changes/039", "db_id": "b3f61452eefb1fe329d018b311fb82a7", "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3", "relations": [{"rule": 2, "type": "equivalent", "target": "22646346c25b1d7d6643cd61087c0609", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}}, {"rule": 2, "type": "equivalent", "target": "4bce4b0b77897bdec13cc979f743e388", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}}, {"rule": 2, "type": "equivalent", "target": "7a6f561d7317700ce105d1b02cced73b", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}}, {"rule": 2, "type": "equivalent", "target": "7ecc452c7ec1d9dbb53c7da2da6ff0fb", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "22646346c25b1d7d6643cd61087c0609", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}, "url": "/docs/compare/?release=18.4#18.4-2024d132beedef06", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "7ecc452c7ec1d9dbb53c7da2da6ff0fb", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}, "url": "/docs/compare/?release=16.14#16.14-aae90f52ee7bf039", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "7a6f561d7317700ce105d1b02cced73b", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}, "url": "/docs/compare/?release=15.18#15.18-b60e6a9d5bee1be5", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "4bce4b0b77897bdec13cc979f743e388", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "确保即使发生错误后，tuplestore 数据结构在内部也保持一致", "evidence": {"same_day": true, "patch_ids": ["d5b0ad2ecd5b574958d883210df966b5"], "statement_hash": "01eb563295b1dc8cc7ddc77849a3cd6efe3a0ce73c200fb3aca3280239db80d3"}, "url": "/docs/compare/?release=14.23#14.23-5ea1dd55be87debe", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-aef7dca4bced6a82", "cves": [], "html": "<p>修复 <code>pg_stat_replication</code> 中过早报告 NULL 延迟的问题（Shinya Kato）<a href=\"https://postgr.es/c/fdce5de55\">§</a></p>\n<p>即使复制活动正在发生，延迟列也经常读作 NULL。</p>", "text": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题（Shinya Kato）§ 即使复制活动正在发生，延迟列也经常读作 NULL。", "title": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题", "commits": ["fdce5de55"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "936e36df3b44ffa2909dacd5d2f1bf73c91e0d1cbccb740c7a29cd9171819085", "section_path": ["变更"], "commit_groups": [["246c296f0", "98e96e579", "bf7ecf353", "eef1ba704", "f42105001", "fdce5de55"]], "identity_text": "Fix premature NULL lag reporting in pg_stat_replication (Shinya Kato) The lag columns frequently read as NULL even while replication activity was happening.", "commit_aliases": ["246c296f0", "98e96e579", "bf7ecf353", "eef1ba704", "f42105001", "fdce5de55"], "source_commits": ["fdce5de55"], "source_entry_id": "17.10/changes/040", "db_id": "5851dbb38f0eb77c8633d934a8c81fbc", "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920", "relations": [{"rule": 2, "type": "equivalent", "target": "65eb4d53da31a74e1d2b5ae72a4b3f98", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}}, {"rule": 2, "type": "equivalent", "target": "8f5d9efb9934b105d69fddf797f34e0b", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}}, {"rule": 2, "type": "equivalent", "target": "915ec8a085b4d90eb64720a431768f9b", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}}, {"rule": 2, "type": "equivalent", "target": "bf6218705be170d40b881423fbe0391f", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bf6218705be170d40b881423fbe0391f", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}, "url": "/docs/compare/?release=18.4#18.4-8789ffc8666b33f9", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "65eb4d53da31a74e1d2b5ae72a4b3f98", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}, "url": "/docs/compare/?release=16.14#16.14-f26d51c0546fa772", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "915ec8a085b4d90eb64720a431768f9b", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}, "url": "/docs/compare/?release=15.18#15.18-fea30dc889e7ae5f", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "8f5d9efb9934b105d69fddf797f34e0b", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复 pg_stat_replication 中过早报告 NULL 延迟的问题", "evidence": {"same_day": true, "patch_ids": ["7704c6b94c92f272f76de1954c53eb5b"], "statement_hash": "bcd10a6c1d43f2b961925210744b26778b15baa46851120a0a4df4d6146ed920"}, "url": "/docs/compare/?release=14.23#14.23-bcb3e939d63d9120", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-81df83553a9e021a", "cves": [], "html": "<p>避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败（Tomas Vondra）<a href=\"https://postgr.es/c/6ef36bb35\">§</a></p>\n<p>不记录 WAL 的 GiST 索引有时仍可能产生 <span>“<span>xlog flush request <em><code>n/nnnn</code></em> is not satisfied</span>”</span> 错误，原因是错误地选择了一个<span>“<span>假 LSN</span>”</span> 来表示插入点。</p>", "text": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败（Tomas Vondra）§ 不记录 WAL 的 GiST 索引有时仍可能产生 “xlog flush request n/nnnn is not satisfied” 错误，原因是错误地选择了一个“假 LSN” 来表示插入点。", "title": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败", "commits": ["6ef36bb35"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "dfcb4f83ab65930b4283c74e25ae40c8962575e53769b2e29734516a86436efa", "section_path": ["变更"], "commit_groups": [["4f4025eac", "5b3f63a1b", "6ef36bb35", "b1f14c967", "c0ffc725f", "ce06b5740"]], "identity_text": "Avoid rare flush failure when working with non-WAL-logged GiST indexes (Tomas Vondra) A non-logged GiST index could nonetheless sometimes produce xlog flush request n/nnnn is not satisfied errors, due to incorrect selection of a fake LSN to represent an insertion point.", "commit_aliases": ["4f4025eac", "5b3f63a1b", "6ef36bb35", "b1f14c967", "c0ffc725f", "ce06b5740"], "source_commits": ["6ef36bb35"], "source_entry_id": "17.10/changes/041", "db_id": "83b71f6a6d871542c65ada24311dc7eb", "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1", "relations": [{"rule": 2, "type": "equivalent", "target": "722f27b43d438fc0b96acc89768d5c59", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}}, {"rule": 2, "type": "equivalent", "target": "7f24f05678451ef9707b5c36a7e8d868", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}}, {"rule": 2, "type": "equivalent", "target": "e347189d3e54dada6ed98ca299883a76", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}}, {"rule": 2, "type": "equivalent", "target": "fdbfdef092c5340666d36a36f384cef5", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f24f05678451ef9707b5c36a7e8d868", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}, "url": "/docs/compare/?release=18.4#18.4-7270a57d5bd56fee", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "e347189d3e54dada6ed98ca299883a76", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}, "url": "/docs/compare/?release=16.14#16.14-0b6ea33dc78e8d08", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "722f27b43d438fc0b96acc89768d5c59", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}, "url": "/docs/compare/?release=15.18#15.18-1314048fa2caf68a", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "fdbfdef092c5340666d36a36f384cef5", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败", "evidence": {"same_day": true, "patch_ids": ["1219f2eae7af870fcd0ca6d917389cce"], "statement_hash": "d11afd4ede0aa409767b589a5b5e9dcb340b6c781cc05a9ff7edfd8ae5178fd1"}, "url": "/docs/compare/?release=14.23#14.23-e4b03579b2345154", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-530a8cbdc6f714b9", "cves": [], "html": "<p>修复对非常规大小的段所需 DSA 页面映射大小的低估问题（Paul Bunn）<a href=\"https://postgr.es/c/2543b9ea9\">§</a></p>\n<p>此误算导致越界访问，并进而造成服务器崩溃。</p>", "text": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题（Paul Bunn）§ 此误算导致越界访问，并进而造成服务器崩溃。", "title": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题", "commits": ["2543b9ea9"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "61684a91bb1434333b16a9febd67c0487557bddb01b1c33c7f68a1cfe1fbb7a5", "section_path": ["变更"], "commit_groups": [["0af5e64e9", "2543b9ea9", "46c93b705", "4da2afd01", "a0f38604d", "eb11d7a91"]], "identity_text": "Fix underestimate of required size of DSA page maps for odd-size segments (Paul Bunn) This miscalculation led to out-of-bounds accesses and hence server crashes.", "commit_aliases": ["0af5e64e9", "2543b9ea9", "46c93b705", "4da2afd01", "a0f38604d", "eb11d7a91"], "source_commits": ["2543b9ea9"], "source_entry_id": "17.10/changes/042", "db_id": "feb50a4056ee0c9561081c3bd1a5fd94", "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e", "relations": [{"rule": 2, "type": "equivalent", "target": "132eccad33a03f9808709ff243633e21", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}}, {"rule": 2, "type": "equivalent", "target": "6c9b24cf6c2959b6e084b0f1468cc147", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}}, {"rule": 2, "type": "equivalent", "target": "c0162fa5c8bd731ee869a6a910d5a618", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}}, {"rule": 2, "type": "equivalent", "target": "d358ff7daadf000c76becae39274dcc8", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c0162fa5c8bd731ee869a6a910d5a618", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}, "url": "/docs/compare/?release=18.4#18.4-6a31304d211cadfa", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "6c9b24cf6c2959b6e084b0f1468cc147", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}, "url": "/docs/compare/?release=16.14#16.14-8bb5b1022d86c764", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "132eccad33a03f9808709ff243633e21", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}, "url": "/docs/compare/?release=15.18#15.18-1a4308d681901087", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "d358ff7daadf000c76becae39274dcc8", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复对非常规大小的段所需 DSA 页面映射大小的低估问题", "evidence": {"same_day": true, "patch_ids": ["51396541ad50c671641591d5c032f25c"], "statement_hash": "b77594e65c1a09137763e6965f04edfa079771b8c115cc6bbea72232ff10e97e"}, "url": "/docs/compare/?release=14.23#14.23-11bc13dcca69d74b", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-cfa55dcb71d57c12", "cves": [], "html": "<p>修复共享内存中 oldest-multixact 数组的索引（Yura Sokolov）<a href=\"https://postgr.es/c/dcd9c06a4\">§</a> <a href=\"https://postgr.es/c/969576dab\">§</a></p>\n<p>这一错误可能导致一个已预备但尚未提交的事务所持有的行锁在其他会话看来不可见，或者导致该事务结果出现其他可见性问题。在 max_connections 设置非常小时，也可能发生内存踩踏。</p>", "text": "修复共享内存中 oldest-multixact 数组的索引（Yura Sokolov）§ § 这一错误可能导致一个已预备但尚未提交的事务所持有的行锁在其他会话看来不可见，或者导致该事务结果出现其他可见性问题。在 max_connections 设置非常小时，也可能发生内存踩踏。", "title": "修复共享内存中 oldest-multixact 数组的索引", "commits": ["969576dab", "dcd9c06a4"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "676444ac6c37147ba6d109f63e56a7ebc3f8a2f2ecd35fc1f603f44408cc766f", "section_path": ["变更"], "commit_groups": [["0a50ef094", "ccae90abd", "dcd9c06a4"], ["969576dab", "fa3b328e6", "fe08113ae"]], "identity_text": "Fix indexing of oldest-multixact arrays in shared memory (Yura Sokolov) This mistake could cause a prepared-but-not-yet-committed transaction's row locks to appear invisible to other sessions, or other visibility issues for the results of such a transaction. With a very small max_connections setting, memory stomps were also possible.", "commit_aliases": ["0a50ef094", "969576dab", "ccae90abd", "dcd9c06a4", "fa3b328e6", "fe08113ae"], "source_commits": ["969576dab", "dcd9c06a4"], "source_entry_id": "17.10/changes/043", "db_id": "440f1367bcb7bd58aa010daa1ed5105b", "patch_ids": ["9f4b51556384588dee12dabbaa9a5068", "c295c29115de3784af1baea84dd9ddfc"], "statement_hash": "e8c1956b7f46db612ff4602b13580b3f19536358ea0d47bc73cf87584e556dac", "relations": [{"rule": 2, "type": "equivalent", "target": "257e52645de77966b485d158daff2049", "evidence": {"same_day": true, "patch_ids": ["9f4b51556384588dee12dabbaa9a5068", "c295c29115de3784af1baea84dd9ddfc"], "statement_hash": "e8c1956b7f46db612ff4602b13580b3f19536358ea0d47bc73cf87584e556dac"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "257e52645de77966b485d158daff2049", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复共享内存中 oldest-multixact 数组的索引", "evidence": {"same_day": true, "patch_ids": ["9f4b51556384588dee12dabbaa9a5068", "c295c29115de3784af1baea84dd9ddfc"], "statement_hash": "e8c1956b7f46db612ff4602b13580b3f19536358ea0d47bc73cf87584e556dac"}, "url": "/docs/compare/?release=18.4#18.4-d3cfc20eaff1d676", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}]}, {"id": "17.10-55b28f30732d7db3", "cves": [], "html": "<p>修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃（Michael Paquier）<a href=\"https://postgr.es/c/530b6b02f\">§</a></p>\n<p>如果该数据类型的 typanalyze 函数没有计算任何有用的统计信息，就可能发生 NULL 指针解引用。核心内置的 typanalyze 函数都不会这样表现，但扩展可能会如此。</p>", "text": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃（Michael Paquier）§ 如果该数据类型的 typanalyze 函数没有计算任何有用的统计信息，就可能发生 NULL 指针解引用。核心内置的 typanalyze 函数都不会这样表现，但扩展可能会如此。", "title": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃", "commits": ["530b6b02f"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "a50b7d8142e111ecd2bc93acc53477635dab3f7a0640b55bb25baa2683e51c8d", "section_path": ["变更"], "commit_groups": [["038c7d4a3", "04745ba9c", "3b7a6fa15", "530b6b02f", "83671c0da", "f033abc6c"]], "identity_text": "Fix possible server crash when processing extended statistics on expressions of extension data types (Michael Paquier) NULL pointer dereferences were possible if the data type's typanalyze function does not compute any useful statistics. No in-core typanalyze function behaves that way, but extensions could.", "commit_aliases": ["038c7d4a3", "04745ba9c", "3b7a6fa15", "530b6b02f", "83671c0da", "f033abc6c"], "source_commits": ["530b6b02f"], "source_entry_id": "17.10/changes/044", "db_id": "80939c27c6a18cbd33af67b54738ffbb", "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a", "relations": [{"rule": 2, "type": "equivalent", "target": "11bb9497f3c67aace227015bc936b98e", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}}, {"rule": 2, "type": "equivalent", "target": "1c1afd4ac22d6baac4a29928c824292c", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}}, {"rule": 2, "type": "equivalent", "target": "7060172e893faabd38e47a052f25c75c", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}}, {"rule": 2, "type": "equivalent", "target": "e3fcd13894196d38b7fdafd82a39872b", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "e3fcd13894196d38b7fdafd82a39872b", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}, "url": "/docs/compare/?release=18.4#18.4-d17ff570c253e2a4", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "1c1afd4ac22d6baac4a29928c824292c", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}, "url": "/docs/compare/?release=16.14#16.14-0be3354f36793154", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "7060172e893faabd38e47a052f25c75c", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}, "url": "/docs/compare/?release=15.18#15.18-66aee329c6813e82", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "11bb9497f3c67aace227015bc936b98e", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃", "evidence": {"same_day": true, "patch_ids": ["57808080730ecfb17eedfbeb01bceb92"], "statement_hash": "0b6cefc1fdc0c8f91af788bfe5a8b6d0b6b4059af142c8779ab898a1590a8d8a"}, "url": "/docs/compare/?release=14.23#14.23-4ba256fc57391391", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-e802516615666acf", "cves": [], "html": "<p>修复基于 ICU 的字符串处理中轻微的内存泄漏（Jeff Davis）<a href=\"https://postgr.es/c/4761f2eee\">§</a></p>", "text": "修复基于 ICU 的字符串处理中轻微的内存泄漏（Jeff Davis）§", "title": "修复基于 ICU 的字符串处理中轻微的内存泄漏", "commits": ["4761f2eee"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ba69d6b7d1f90c012ec84fd21898e70f572ec42d5e5b94ec3c9f8df012f9a826", "section_path": ["变更"], "commit_groups": [["4761f2eee", "4abf63c62", "a4515c9b4", "d942511f0"]], "identity_text": "Fix minor memory leaks in ICU-based string processing (Jeff Davis)", "commit_aliases": ["4761f2eee", "4abf63c62", "a4515c9b4", "d942511f0"], "source_commits": ["4761f2eee"], "source_entry_id": "17.10/changes/045", "db_id": "bd584e4f7982ffc4b076ab2f17b9df9c", "patch_ids": ["6d9d38d08dbad42448b9071321caaf61"], "statement_hash": "b7a1562c011305e92a0b8937cd9fca1c2e7a7555c23e50eef91b5ced9490aa97", "relations": [{"rule": 2, "type": "equivalent", "target": "50b72add33aaee1a9925c87cbf7716b3", "evidence": {"same_day": true, "patch_ids": ["6d9d38d08dbad42448b9071321caaf61"], "statement_hash": "b7a1562c011305e92a0b8937cd9fca1c2e7a7555c23e50eef91b5ced9490aa97"}}, {"rule": 2, "type": "equivalent", "target": "837bd67b8c3f6368b3c27a6551f80927", "evidence": {"same_day": true, "patch_ids": ["6d9d38d08dbad42448b9071321caaf61"], "statement_hash": "b7a1562c011305e92a0b8937cd9fca1c2e7a7555c23e50eef91b5ced9490aa97"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "837bd67b8c3f6368b3c27a6551f80927", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复基于 ICU 的字符串处理中轻微的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["6d9d38d08dbad42448b9071321caaf61"], "statement_hash": "b7a1562c011305e92a0b8937cd9fca1c2e7a7555c23e50eef91b5ced9490aa97"}, "url": "/docs/compare/?release=18.4#18.4-d03de691fc9de456", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "50b72add33aaee1a9925c87cbf7716b3", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复基于 ICU 的字符串处理中轻微的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["6d9d38d08dbad42448b9071321caaf61"], "statement_hash": "b7a1562c011305e92a0b8937cd9fca1c2e7a7555c23e50eef91b5ced9490aa97"}, "url": "/docs/compare/?release=16.14#16.14-9c6d58940b19e710", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-ae6a8b961252ec16", "cves": [], "html": "<p>如果启动进程失败，在 postmaster 退出前正确关闭其他子进程（Ayush Tiwari）<a href=\"https://postgr.es/c/e381843cf\">§</a></p>\n<p>对此情况的处理依赖于一个早已过时的假定：启动进程运行时不存在其他 postmaster 子进程，因此可以立即退出 postmaster。孤立的子进程最终会注意到 postmaster 已死亡并自行退出，但更干净的关闭过程仍然是可取的。</p>", "text": "如果启动进程失败，在 postmaster 退出前正确关闭其他子进程（Ayush Tiwari）§ 对此情况的处理依赖于一个早已过时的假定：启动进程运行时不存在其他 postmaster 子进程，因此可以立即退出 postmaster。孤立的子进程最终会注意到 postmaster 已死亡并自行退出，但更干净的关闭过程仍然是可取的。", "title": "如果启动进程失败，在 postmaster 退出前正确关闭其他子进程", "commits": ["e381843cf"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "a71fbe38cda7e7697f7fe8e09dcb20abeeca36e994d2d2246215eac18ae908ff", "section_path": ["变更"], "commit_groups": [["23cebf672", "2d347f2cd", "9b43e6793", "affdb2dd5", "e381843cf"]], "identity_text": "If the startup process fails, properly shut down other child processes before exiting the postmaster (Ayush Tiwari) The handling of this situation relied on a long-obsolete assumption that no other postmaster children exist while the startup process is running, so that immediate postmaster exit is acceptable. Orphaned children would eventually notice the postmaster's death and exit on their own, but a cleaner shutdown procedure is desirable.", "commit_aliases": ["23cebf672", "2d347f2cd", "9b43e6793", "affdb2dd5", "e381843cf"], "source_commits": ["e381843cf"], "source_entry_id": "17.10/changes/046", "db_id": "1258e1d70ad8d20566f8bef565afb542", "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5", "relations": [{"rule": 2, "type": "equivalent", "target": "2a31a83d114004ec62a45d4511e6eea8", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}}, {"rule": 2, "type": "equivalent", "target": "35889e010982e213ace67b19129690cc", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}}, {"rule": 2, "type": "equivalent", "target": "60187dd7a7a6b60a0c3449316b65aa78", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "60187dd7a7a6b60a0c3449316b65aa78", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "如果启动进程失败，在 postmaster 退出前正确关闭其他子进程", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}, "url": "/docs/compare/?release=18.4#18.4-fbb8a60e8a0fb7fa", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "35889e010982e213ace67b19129690cc", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "如果启动进程失败，在 postmaster 退出前正确关闭其他子进程", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}, "url": "/docs/compare/?release=16.14#16.14-0b7f6a3235e38857", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "2a31a83d114004ec62a45d4511e6eea8", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "如果启动进程失败，在 postmaster 退出前正确关闭其他子进程", "evidence": {"same_day": true, "patch_ids": ["336655f61a8e613f6d655ff5a808f10d"], "statement_hash": "cb4e5d59e127aafd8bb2c9e2c73437dd551d9591dd8c7309ec60a48a3299d4f5"}, "url": "/docs/compare/?release=15.18#15.18-59e230aa6a0adc1d", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}]}, {"id": "17.10-b851403e0c059925", "cves": [], "html": "<p>修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件（Heikki Linnakangas）<a href=\"https://postgr.es/c/1ca385032\">§</a></p>\n<p>跟随来自较旧小版本主库的 WAL 的备库，可能陷入反复崩溃和重启的循环，并抱怨 <span>“<span>could not access status of transaction</span>”</span>。</p>", "text": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件（Heikki Linnakangas）§ 跟随来自较旧小版本主库的 WAL 的备库，可能陷入反复崩溃和重启的循环，并抱怨 “could not access status of transaction”。", "title": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件", "commits": ["1ca385032"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "61979bfd660e0fa6770622b7a05714d887d0babcd41cb2c7a008ce624cc6cf4c", "section_path": ["变更"], "commit_groups": [["0852643e1", "1ca385032", "77dff5d93", "a5f412107", "e35e466f6"]], "identity_text": "Fix race condition between WAL replay of checkpoints and multixact ID creations (Heikki Linnakangas) A standby server following WAL from a primary of an older minor version could get into a crash-and-restart loop complaining about could not access status of transaction.", "commit_aliases": ["0852643e1", "1ca385032", "77dff5d93", "a5f412107", "e35e466f6"], "source_commits": ["1ca385032"], "source_entry_id": "17.10/changes/047", "db_id": "7656c6c266fb5f623679c473e6534cb4", "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192", "relations": [{"rule": 2, "type": "equivalent", "target": "2dd877a931aebbb79cf02748fddc6985", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}}, {"rule": 2, "type": "equivalent", "target": "61f30ae9ddadfa030207bdea7cb12e70", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}}, {"rule": 2, "type": "equivalent", "target": "85b276d385b6533daa45fb10a83fcdc6", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}}, {"rule": 2, "type": "equivalent", "target": "bdf695af62de33084d77c352623dcee3", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "2dd877a931aebbb79cf02748fddc6985", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}, "url": "/docs/compare/?release=18.4#18.4-b95009e302c19df6", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "bdf695af62de33084d77c352623dcee3", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}, "url": "/docs/compare/?release=16.14#16.14-b3cb622e85e826dc", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "85b276d385b6533daa45fb10a83fcdc6", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}, "url": "/docs/compare/?release=15.18#15.18-729165d8f77b8c3e", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "61f30ae9ddadfa030207bdea7cb12e70", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件", "evidence": {"same_day": true, "patch_ids": ["bc2293c8457ac75a2ee41b1da5cae860"], "statement_hash": "966d18f3bd64c03cfe6fcbf5ad572276df81e74e4f0e0228686357c47c7ba192"}, "url": "/docs/compare/?release=14.23#14.23-c6d1cb4b3f13c969", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-3ccf02812257acd0", "cves": [], "html": "<p>防止 WAL 发送进程关闭时无限期等待（Anthonin Bonnefoy）<a href=\"https://postgr.es/c/bbbc0888b\">§</a> <a href=\"https://postgr.es/c/8ee536c89\">§</a></p>\n<p>在发布逻辑复制数据的集簇关闭时，WAL 发送进程会等待所有待处理 WAL 被写出。但它没有正确请求执行此操作，因此在某些情况下这可能变成无限期等待。</p>", "text": "防止 WAL 发送进程关闭时无限期等待（Anthonin Bonnefoy）§ § 在发布逻辑复制数据的集簇关闭时，WAL 发送进程会等待所有待处理 WAL 被写出。但它没有正确请求执行此操作，因此在某些情况下这可能变成无限期等待。", "title": "防止 WAL 发送进程关闭时无限期等待", "commits": ["8ee536c89", "bbbc0888b"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "001a22a95454b9347ed8a035a05a463fad268f8c978b0ec43c8e56d5a65cf69f", "section_path": ["变更"], "commit_groups": [["3bf6f22ce", "3eb2fecdb", "42734f296", "6eedb2a5f", "82935467a", "bbbc0888b"], ["8ee536c89", "980498138", "d927b4bd9", "da21ecf57", "f15471464", "fa9f2e317"]], "identity_text": "Prevent indefinite wait in shutdown of a walsender process (Anthonin Bonnefoy) At shutdown of a cluster that is publishing logical replication data, the walsender waits for all pending WAL to be written out. But it did not correctly request that to happen, so that in some cases this could become an indefinite wait.", "commit_aliases": ["3bf6f22ce", "3eb2fecdb", "42734f296", "6eedb2a5f", "82935467a", "8ee536c89", "980498138", "bbbc0888b", "d927b4bd9", "da21ecf57", "f15471464", "fa9f2e317"], "source_commits": ["8ee536c89", "bbbc0888b"], "source_entry_id": "17.10/changes/048", "db_id": "a7b932fcfa614135f399c6d16936a3ee", "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530", "relations": [{"rule": 2, "type": "equivalent", "target": "45420fcd1c11fe55a25c2e6f51f48363", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}}, {"rule": 2, "type": "equivalent", "target": "58a67f2d4d7fff6342315f22db6849a6", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}}, {"rule": 2, "type": "equivalent", "target": "dd2e9c6da8c31f99c801d2fd16385b3c", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}}, {"rule": 2, "type": "equivalent", "target": "f5dd9be5d5ba1e08ae8e1a43cf926484", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "dd2e9c6da8c31f99c801d2fd16385b3c", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "防止 WAL 发送进程关闭时无限期等待", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}, "url": "/docs/compare/?release=18.4#18.4-a9cb192589c0f7aa", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "58a67f2d4d7fff6342315f22db6849a6", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "防止 WAL 发送进程关闭时无限期等待", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}, "url": "/docs/compare/?release=16.14#16.14-817a820bc49c0dcf", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "45420fcd1c11fe55a25c2e6f51f48363", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "防止 WAL 发送进程关闭时无限期等待", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}, "url": "/docs/compare/?release=15.18#15.18-1a0fb49c7d011cf8", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "f5dd9be5d5ba1e08ae8e1a43cf926484", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "防止 WAL 发送进程关闭时无限期等待", "evidence": {"same_day": true, "patch_ids": ["472a5975808282fa6bd581c79c39f9ea", "76b367fc789f138e1eeabf0d364392af"], "statement_hash": "82e19a553da5241f427aaa49312a19ba9fb5200bffa8a85355d78e7c64e1a530"}, "url": "/docs/compare/?release=14.23#14.23-b352d254dd3297f4", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-fe407982706e6121", "cves": [], "html": "<p>确保恢复期间对表空闲空间映射的更改会被持久化（Alexey Makhmutov）<a href=\"https://postgr.es/c/1cf010f21\">§</a></p>\n<p>此前，在重放应当改变空闲空间映射的操作时，WAL 重放确实会更新该映射；但如果启用了校验和，映射页缓冲区不会被标记为脏，因此这些更改可能永远不会被写出。在备库上，随着时间推移，这会导致映射与表的实际内容严重不符。虽然该映射只作为提示使用，但在备库被提升为活跃服务器后，直到大部分映射被更新修复之前，这种情况可能在一段时间内造成显著性能下降。</p>", "text": "确保恢复期间对表空闲空间映射的更改会被持久化（Alexey Makhmutov）§ 此前，在重放应当改变空闲空间映射的操作时，WAL 重放确实会更新该映射；但如果启用了校验和，映射页缓冲区不会被标记为脏，因此这些更改可能永远不会被写出。在备库上，随着时间推移，这会导致映射与表的实际内容严重不符。虽然该映射只作为提示使用，但在备库被提升为活跃服务器后，直到大部分映射被更新修复之前，这种情况可能在一段时间内造成显著性能下降。", "title": "确保恢复期间对表空闲空间映射的更改会被持久化", "commits": ["1cf010f21"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "904dff0aac615f433ce1cbec4b7b1f9fe8c7392f99b23ae5c483cd4fcb851e95", "section_path": ["变更"], "commit_groups": [["1cf010f21", "54537de35", "ac3b97db3", "c06d1a4ba", "ca259b084", "f5d1038d9"]], "identity_text": "Ensure that changes to tables' free space maps are persisted during recovery (Alexey Makhmutov) Previously, while WAL replay did update the free space map while replaying operations that should change it, the map page buffer did not get marked dirty if checksums are enabled, so that the changes might never get written out. On a standby server, over time this would result in a map wildly at variance with the table's actual contents. While the map is only used as a hint, this condition could cause significant performance degradation for some period of time after the standby server is promoted to be active, until most of the map has been repaired by updates.", "commit_aliases": ["1cf010f21", "54537de35", "ac3b97db3", "c06d1a4ba", "ca259b084", "f5d1038d9"], "source_commits": ["1cf010f21"], "source_entry_id": "17.10/changes/049", "db_id": "d0b2b7eb40b300341a738f0c8f9b9486", "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba", "relations": [{"rule": 2, "type": "equivalent", "target": "0a850a82a0e101c371b76446a16834eb", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}}, {"rule": 2, "type": "equivalent", "target": "0ab544ccf54b9ef9d9a67d11e0edd7e6", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}}, {"rule": 2, "type": "equivalent", "target": "5d55832b6f7b480606ba52039c22d06e", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}}, {"rule": 2, "type": "equivalent", "target": "ef79709e772e43cd7f13cd40fd54ce08", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0ab544ccf54b9ef9d9a67d11e0edd7e6", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "确保恢复期间对表空闲空间映射的更改会被持久化", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}, "url": "/docs/compare/?release=18.4#18.4-97e2910c41fa9a19", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "ef79709e772e43cd7f13cd40fd54ce08", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "确保恢复期间对表空闲空间映射的更改会被持久化", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}, "url": "/docs/compare/?release=16.14#16.14-8125cf51d6ed071a", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "0a850a82a0e101c371b76446a16834eb", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "确保恢复期间对表空闲空间映射的更改会被持久化", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}, "url": "/docs/compare/?release=15.18#15.18-c1ccf41821cc2c15", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "5d55832b6f7b480606ba52039c22d06e", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "确保恢复期间对表空闲空间映射的更改会被持久化", "evidence": {"same_day": true, "patch_ids": ["290b85a9a01972ea333ff078f1b803bd"], "statement_hash": "94dbd19b3ba5c2d1d6d0c3e547d4c2b99593a3f783f7d830b8bd54b62553c5ba"}, "url": "/docs/compare/?release=14.23#14.23-01e5d1d4b9c66a74", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-4e8f75e7518f8860", "cves": [], "html": "<p>修复某些 <span>ecpg</span> 函数在没有已建立连接的情况下被调用时的崩溃（Shruthi Gowda）<a href=\"https://postgr.es/c/5d67549d9\">§</a></p>", "text": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃（Shruthi Gowda）§", "title": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃", "commits": ["5d67549d9"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "ebf95698cce6b4a2cc0ef14585389a7e9fa1c7e602f0f0da443d3e6219a4ae23", "section_path": ["变更"], "commit_groups": [["5d67549d9", "6916f4410", "7e4c871f4", "c34a280c8", "e2688ea5e", "f0e3f9732"]], "identity_text": "Fix crashes in some ecpg functions when called without any established connection (Shruthi Gowda)", "commit_aliases": ["5d67549d9", "6916f4410", "7e4c871f4", "c34a280c8", "e2688ea5e", "f0e3f9732"], "source_commits": ["5d67549d9"], "source_entry_id": "17.10/changes/050", "db_id": "bdf9527e3b31fa7d5ae8f9823d072d3d", "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a", "relations": [{"rule": 2, "type": "equivalent", "target": "7907242716f81b2600bf11b638097726", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}}, {"rule": 2, "type": "equivalent", "target": "80c1fd60cd9f0d7c266d99b227c860c1", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}}, {"rule": 2, "type": "equivalent", "target": "c0c7dfbc8d8c6bcae16ae7205d190917", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}}, {"rule": 2, "type": "equivalent", "target": "feefd46320fbb1731e40ec3e06323dbb", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "c0c7dfbc8d8c6bcae16ae7205d190917", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}, "url": "/docs/compare/?release=18.4#18.4-7aa817666dd07903", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "7907242716f81b2600bf11b638097726", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}, "url": "/docs/compare/?release=16.14#16.14-44793a559af5c464", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "80c1fd60cd9f0d7c266d99b227c860c1", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}, "url": "/docs/compare/?release=15.18#15.18-c008865e32c5c2bd", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "feefd46320fbb1731e40ec3e06323dbb", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃", "evidence": {"same_day": true, "patch_ids": ["c7a6bafc62f4feae4e980b1e35da2b80"], "statement_hash": "d082bcf56e345df427e58be27130fd3aa6a1679e210b9c2dac559e63adb7e00a"}, "url": "/docs/compare/?release=14.23#14.23-0d4724d0f0edd35d", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-608dfcd402c79cc9", "cves": [], "html": "<p>修复备份解压和 tar 解析代码中的多项错误（Andrew Dunstan, Tom Lane, Chao Li）<a href=\"https://postgr.es/c/f1298a4c2\">§</a> <a href=\"https://postgr.es/c/8b198b093\">§</a> <a href=\"https://postgr.es/c/2640c5ba7\">§</a></p>\n<p><span>pg_basebackup</span> 和 <span>pg_verifybackup</span> 中使用的解压和 tar 文件读取代码，会错误处理 tar 文件填充数据，在边界情况下可能损坏 LZ4 压缩数据，未检查一些异常错误条件，压缩/解压错误后未退出（导致级联错误报告），并且会泄漏内存。</p>", "text": "修复备份解压和 tar 解析代码中的多项错误（Andrew Dunstan, Tom Lane, Chao Li）§ § § pg_basebackup 和 pg_verifybackup 中使用的解压和 tar 文件读取代码，会错误处理 tar 文件填充数据，在边界情况下可能损坏 LZ4 压缩数据，未检查一些异常错误条件，压缩/解压错误后未退出（导致级联错误报告），并且会泄漏内存。", "title": "修复备份解压和 tar 解析代码中的多项错误", "commits": ["2640c5ba7", "8b198b093", "f1298a4c2"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "e94f69be37df14faa58e45f7131f37ef653046ed6266eac12ba6af6358301087", "section_path": ["变更"], "commit_groups": [["01d58d7e3", "1590723f0", "5095f3f4a", "d3bb7841b", "f1298a4c2"], ["2640c5ba7", "415cc943f", "4548e8746", "78dc9a808", "c70f6dc6b"], ["8b198b093", "9a42888a3", "a01a592b1", "ac0accafd", "cce939c71"]], "identity_text": "Fix assorted bugs in backup decompression and tar-parsing code (Andrew Dunstan, Tom Lane, Chao Li) The decompression and tar-file reading code used in pg_basebackup and pg_verifybackup mishandled tar-file padding data, could corrupt LZ4-compressed data in edge cases, failed to check for some unusual error conditions, failed to exit after compression/decompression errors (leading to cascading error reports), and leaked memory.", "commit_aliases": ["01d58d7e3", "1590723f0", "2640c5ba7", "415cc943f", "4548e8746", "5095f3f4a", "78dc9a808", "8b198b093", "9a42888a3", "a01a592b1", "ac0accafd", "c70f6dc6b", "cce939c71", "d3bb7841b", "f1298a4c2"], "source_commits": ["2640c5ba7", "8b198b093", "f1298a4c2"], "source_entry_id": "17.10/changes/051", "db_id": "bb9e0889e1a5adbf796ceaf3f2bba54a", "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829", "relations": [{"rule": 2, "type": "equivalent", "target": "212902cab1e6fcee0bcc358f8fa492ef", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}}, {"rule": 2, "type": "equivalent", "target": "2c1767e33fbd2c5b0ad76b3984a83f2d", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}}, {"rule": 2, "type": "equivalent", "target": "34c5828614b646d0ee1635c733748049", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "2c1767e33fbd2c5b0ad76b3984a83f2d", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复备份解压和 tar 解析代码中的多项错误", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}, "url": "/docs/compare/?release=18.4#18.4-3efb2ed246686260", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "212902cab1e6fcee0bcc358f8fa492ef", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复备份解压和 tar 解析代码中的多项错误", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}, "url": "/docs/compare/?release=16.14#16.14-55b8ddc2c336b3f6", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "34c5828614b646d0ee1635c733748049", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复备份解压和 tar 解析代码中的多项错误", "evidence": {"same_day": true, "patch_ids": ["776d5a67dae4e90312023436a1a121e4", "a09bdaf76ce8e50fc1ed232d629496d1", "e611dc8dc55e1b7e28e7918dce0a5440"], "statement_hash": "14975a7d452ebd245adc06195cb53e296e97faf277282e3324587b2fcb641829"}, "url": "/docs/compare/?release=15.18#15.18-bb7e1f982c3d3fbb", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}]}, {"id": "17.10-abb35676e2703512", "cves": [], "html": "<p>在 <span>pg_dumpall</span> 中，不要跳过具有悬挂授权者 OID 的角色 <code>GRANT</code>（Tom Lane）<a href=\"https://postgr.es/c/1cd783d20\">§</a></p>\n<p>作为替代，像 v16 之前那样，通过发出不带任何 <code>GRANTED BY</code> 子句的 <code>GRANT</code> 来处理此类情况。这可以避免在可预见的情况下丢失授权，因为 v16 之前的服务器不会阻止删除授权者角色。继续针对缺失的授权者发出警告，但仅当源服务器为 v16 或更高版本时才这样做。</p>", "text": "在 pg_dumpall 中，不要跳过具有悬挂授权者 OID 的角色 GRANT（Tom Lane）§ 作为替代，像 v16 之前那样，通过发出不带任何 GRANTED BY 子句的 GRANT 来处理此类情况。这可以避免在可预见的情况下丢失授权，因为 v16 之前的服务器不会阻止删除授权者角色。继续针对缺失的授权者发出警告，但仅当源服务器为 v16 或更高版本时才这样做。", "title": "在 pg_dumpall 中，不要跳过具有悬挂授权者 OID 的角色 GRANT", "commits": ["1cd783d20"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "257495d27b650b476432eb49c4e840fb405d8d2dc1626e66f57ca6ccdec0c4cc", "section_path": ["变更"], "commit_groups": [["1cd783d20", "74b4438a7", "a4649c50a", "b09158cc7"]], "identity_text": "In pg_dumpall, don't skip role GRANTs with dangling grantor OIDs (Tom Lane) Instead, handle such cases by emitting GRANT without any GRANTED BY clause, as we did before v16. This avoids losing the grant in foreseeable cases, since pre-v16 servers didn't prevent dropping the grantor role. Continue to emit a warning about the missing grantor, but only if the source server is v16 or later.", "commit_aliases": ["1cd783d20", "74b4438a7", "a4649c50a", "b09158cc7"], "source_commits": ["1cd783d20"], "source_entry_id": "17.10/changes/052", "db_id": "48b5ddf02369d30a0910158589f12b23", "patch_ids": ["be27d62b6c1cd4dc0e48f0fff55be1a3"], "statement_hash": "3b7728d29b36a1645aabd692297c54bf41cba11df9227a8bbeea29920949c298", "relations": [{"rule": 2, "type": "equivalent", "target": "498d15925e49297bef5794701969b9e3", "evidence": {"same_day": true, "patch_ids": ["be27d62b6c1cd4dc0e48f0fff55be1a3"], "statement_hash": "3b7728d29b36a1645aabd692297c54bf41cba11df9227a8bbeea29920949c298"}}, {"rule": 2, "type": "equivalent", "target": "aaca3c112b54f50cb3d0aef43fa40117", "evidence": {"same_day": true, "patch_ids": ["be27d62b6c1cd4dc0e48f0fff55be1a3"], "statement_hash": "3b7728d29b36a1645aabd692297c54bf41cba11df9227a8bbeea29920949c298"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "498d15925e49297bef5794701969b9e3", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 pg_dumpall 中，不要跳过具有悬挂授权者 OID 的角色 GRANT", "evidence": {"same_day": true, "patch_ids": ["be27d62b6c1cd4dc0e48f0fff55be1a3"], "statement_hash": "3b7728d29b36a1645aabd692297c54bf41cba11df9227a8bbeea29920949c298"}, "url": "/docs/compare/?release=18.4#18.4-4c4f381190f9d053", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "aaca3c112b54f50cb3d0aef43fa40117", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 pg_dumpall 中，不要跳过具有悬挂授权者 OID 的角色 GRANT", "evidence": {"same_day": true, "patch_ids": ["be27d62b6c1cd4dc0e48f0fff55be1a3"], "statement_hash": "3b7728d29b36a1645aabd692297c54bf41cba11df9227a8bbeea29920949c298"}, "url": "/docs/compare/?release=16.14#16.14-4e7525a189b69460", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}]}, {"id": "17.10-cf34513657c8c0c2", "cves": [], "html": "<p>在 <span>pg_upgrade</span> 中，连接到较旧源服务器时注意使用正确的协议版本（Jacob Champion）<a href=\"https://postgr.es/c/ad7fc3f1f\">§</a></p>\n<p>在尝试从 2018 年以前的服务器升级时，这可能会造成问题。</p>", "text": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本（Jacob Champion）§ 在尝试从 2018 年以前的服务器升级时，这可能会造成问题。", "title": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本", "commits": ["ad7fc3f1f"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "485074045be8dbbd23ff097775c921fa4d4784ab798c5994ad12d8b0ec170f57", "section_path": ["变更"], "commit_groups": [["1b2773179", "a38ed212f", "a60a10338", "ad7fc3f1f", "c47744ede", "e726620d2"]], "identity_text": "In pg_upgrade, take care to use the correct protocol version when connecting to older source servers (Jacob Champion) This could be problematic when attempting to upgrade from a pre-2018 server.", "commit_aliases": ["1b2773179", "a38ed212f", "a60a10338", "ad7fc3f1f", "c47744ede", "e726620d2"], "source_commits": ["ad7fc3f1f"], "source_entry_id": "17.10/changes/053", "db_id": "29ee5ab07783ca431d54fc60a7a68ac6", "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c", "relations": [{"rule": 2, "type": "equivalent", "target": "330e067151809e2b5b18a2ce11b3f4a8", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}}, {"rule": 2, "type": "equivalent", "target": "6e7bc01c77ad0b62b80fffc021e1f621", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}}, {"rule": 2, "type": "equivalent", "target": "b441ea3af4b648902039f9d5d3831785", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}}, {"rule": 2, "type": "equivalent", "target": "df5ddbd0c6e2f445b5c35f53b9f74046", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b441ea3af4b648902039f9d5d3831785", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}, "url": "/docs/compare/?release=18.4#18.4-f5f35647f03db5de", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "df5ddbd0c6e2f445b5c35f53b9f74046", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}, "url": "/docs/compare/?release=16.14#16.14-187bc32bd33adec9", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "330e067151809e2b5b18a2ce11b3f4a8", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}, "url": "/docs/compare/?release=15.18#15.18-e68e0ef207bfd5a9", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "6e7bc01c77ad0b62b80fffc021e1f621", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在 pg_upgrade 中，连接到较旧源服务器时注意使用正确的协议版本", "evidence": {"same_day": true, "patch_ids": ["566020049e5cf4849b3dd9a9935a3aba"], "statement_hash": "6ea9a20b0f199ebe33de09e3497f924a73ae542c7d6af134326d0792ad8e087c"}, "url": "/docs/compare/?release=14.23#14.23-2b24a61f4f7f3458", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-760c43569faae613", "cves": [], "html": "<p>在 <code>contrib/basic_archive</code> 中，允许启动时归档目录不存在（Nathan Bossart）<a href=\"https://postgr.es/c/f510577de\">§</a></p>\n<p>此前，如果 <code>basic_archive.archive_directory</code> 的设置没有指向一个已存在的目录，就会被拒绝。这并不理想，因为即使该目录稍后出现，归档也会无限期卡住。</p>", "text": "在 contrib/basic_archive 中，允许启动时归档目录不存在（Nathan Bossart）§ 此前，如果 basic_archive.archive_directory 的设置没有指向一个已存在的目录，就会被拒绝。这并不理想，因为即使该目录稍后出现，归档也会无限期卡住。", "title": "在 contrib/basic_archive 中，允许启动时归档目录不存在", "commits": ["f510577de"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "841dbb62e60bbee6e16746f85b336fc4ccb18f2a99205f812ea4a64725959816", "section_path": ["变更"], "commit_groups": [["28c2b7896", "8fc45ac5d", "bde9ad315", "cc774c543", "f510577de"]], "identity_text": "In contrib/basic_archive, allow the archive directory to be missing at startup (Nathan Bossart) Previously, the setting of basic_archive.archive_directory was rejected if it didn't point to an existing directory. This is undesirable because archiving will be stuck indefinitely, even if the directory appears later.", "commit_aliases": ["28c2b7896", "8fc45ac5d", "bde9ad315", "cc774c543", "f510577de"], "source_commits": ["f510577de"], "source_entry_id": "17.10/changes/054", "db_id": "90e1038fbb68d1913c7ac6d7fe93e376", "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0", "relations": [{"rule": 2, "type": "equivalent", "target": "1ad9930c22ef55daa7211338a55a1d96", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}}, {"rule": 2, "type": "equivalent", "target": "616d8fa76e38a5c20f94d74810bf0dfa", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}}, {"rule": 2, "type": "equivalent", "target": "b41103d47758e1bb2b7b7dfae49365b9", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b41103d47758e1bb2b7b7dfae49365b9", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 contrib/basic_archive 中，允许启动时归档目录不存在", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}, "url": "/docs/compare/?release=18.4#18.4-ab15ea8c2f16b1a1", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "1ad9930c22ef55daa7211338a55a1d96", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 contrib/basic_archive 中，允许启动时归档目录不存在", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}, "url": "/docs/compare/?release=16.14#16.14-63d7fb0d7caa58c8", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "616d8fa76e38a5c20f94d74810bf0dfa", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在 contrib/basic_archive 中，允许启动时归档目录不存在", "evidence": {"same_day": true, "patch_ids": ["d1199a3c8097e254072ab83b54c1e1d5"], "statement_hash": "1134bcc987b009966d8cddeefda2e4c96240c13b4f2dc3f1b7e280d8ebf0f2f0"}, "url": "/docs/compare/?release=15.18#15.18-89c4e31aafebc123", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}]}, {"id": "17.10-6f3016280c8e2025", "cves": [], "html": "<p>修复 <code>contrib/ltree</code>，使其能够处理大小写折叠改变字符串字节长度的情况（Jeff Davis）<a href=\"https://postgr.es/c/d1bd9a7dc\">§</a></p>\n<p>此前，指定大小写不敏感匹配的 <code>lquery</code> 模式，可能无法匹配本应匹配的标签。</p>", "text": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况（Jeff Davis）§ 此前，指定大小写不敏感匹配的 lquery 模式，可能无法匹配本应匹配的标签。", "title": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况", "commits": ["d1bd9a7dc"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "348e4ea13cf0e392f12f215fa8f1391f7291da201a9ccb81c770c1dc202bcf69", "section_path": ["变更"], "commit_groups": [["058710d41", "2b993167f", "3ed2c7ef7", "53a57cae1", "d1bd9a7dc"], ["b3c2a3d38", "c8308a984"]], "identity_text": "Fix contrib/ltree to cope when case-folding changes a string's byte length (Jeff Davis) Previously, lquery patterns specifying case-insensitive matching might fail to match labels they should match.", "commit_aliases": ["058710d41", "2b993167f", "3ed2c7ef7", "53a57cae1", "b3c2a3d38", "c8308a984", "d1bd9a7dc"], "source_commits": ["c8308a984", "d1bd9a7dc"], "source_entry_id": "17.10/changes/055", "db_id": "c90a1fd6362ebfccf11986cdf78fdcbf", "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468", "relations": [{"rule": 2, "type": "equivalent", "target": "64aaf0bd209b1b9e176ded962a3a5b0a", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}}, {"rule": 2, "type": "equivalent", "target": "88979c94ad494073327481ff0f109ebc", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}}, {"rule": 2, "type": "equivalent", "target": "b472005379ddc1793ee9ef6ac751eae2", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}}, {"rule": 2, "type": "equivalent", "target": "e7145d49a5e4620268f44ce6ce59f66b", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "64aaf0bd209b1b9e176ded962a3a5b0a", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}, "url": "/docs/compare/?release=18.4#18.4-3cede858d59bf5c2", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "88979c94ad494073327481ff0f109ebc", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}, "url": "/docs/compare/?release=16.14#16.14-efa7dba7dee29519", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "b472005379ddc1793ee9ef6ac751eae2", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}, "url": "/docs/compare/?release=15.18#15.18-30910f903ea7af7e", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "e7145d49a5e4620268f44ce6ce59f66b", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "修复 contrib/ltree，使其能够处理大小写折叠改变字符串字节长度的情况", "evidence": {"same_day": true, "patch_ids": ["7e19748e0b856cea1d9ea13667371829", "9e7c128fe050a45459da3c9572bf888b"], "statement_hash": "c8d7a89f3c07f177066f6fedd62b1119638bbf94ea0046714ce7e210c42a4468"}, "url": "/docs/compare/?release=14.23#14.23-fb2120b452b43577", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-c843d842d1a0089b", "cves": [], "html": "<p>在 <code>contrib/pg_stat_statements</code> 中，如果解析 <code>pgss_query_texts.stat</code> 文件时发生错误，不要泄漏内存（Heikki Linnakangas）<a href=\"https://postgr.es/c/351e59f34\">§</a></p>", "text": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存（Heikki Linnakangas）§", "title": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存", "commits": ["351e59f34"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "a5fd95e6e0b5ece630bb5e744356d16558d044f15bb7ba2324c3d5a41931d62e", "section_path": ["变更"], "commit_groups": [["25b02320e", "351e59f34", "3c74cb576", "52edaf9d9", "92cf11171", "a6d03067f"]], "identity_text": "In contrib/pg_stat_statements, don't leak memory if an error occurs while parsing the pgss_query_texts.stat file (Heikki Linnakangas)", "commit_aliases": ["25b02320e", "351e59f34", "3c74cb576", "52edaf9d9", "92cf11171", "a6d03067f"], "source_commits": ["351e59f34"], "source_entry_id": "17.10/changes/056", "db_id": "07ffe7eed989081f7577ca43593bd960", "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad", "relations": [{"rule": 2, "type": "equivalent", "target": "2b59e021939b9e9d9f09b01df770c280", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}}, {"rule": 2, "type": "equivalent", "target": "5405c5216994c7e3f308af24044493d4", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}}, {"rule": 2, "type": "equivalent", "target": "98f2c3414fd70c5c98ac19bfad5464b8", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}}, {"rule": 2, "type": "equivalent", "target": "e5a91133c6748bd29d99483810ddb96c", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "5405c5216994c7e3f308af24044493d4", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}, "url": "/docs/compare/?release=18.4#18.4-d1fd29b11b780a8b", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "98f2c3414fd70c5c98ac19bfad5464b8", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}, "url": "/docs/compare/?release=16.14#16.14-cb16ea40ed7db838", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "2b59e021939b9e9d9f09b01df770c280", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}, "url": "/docs/compare/?release=15.18#15.18-bff45324f0b06366", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "e5a91133c6748bd29d99483810ddb96c", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在 contrib/pg_stat_statements 中，如果解析 pgss_query_texts.stat 文件时发生错误，不要泄漏内存", "evidence": {"same_day": true, "patch_ids": ["525c92ce9cbe0762a36b169c9be69fcf"], "statement_hash": "ac5942ed996a5e15c9177f4bd0925874631fd5bf85f5253845cd79fbf3ddf0ad"}, "url": "/docs/compare/?release=14.23#14.23-9a190d7cbde2b3f7", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-488be0605ad9d4ad", "cves": [], "html": "<p>在 <code>contrib/postgres_fdw</code> 中，避免因过早清理失败连接而崩溃（Etsuro Fujita）<a href=\"https://postgr.es/c/af8f9248f\">§</a></p>\n<p>如果远程连接的中止清理失败，我们就不能再使用它。但要将关闭连接对象延迟到事务结束时执行，因为打开的游标等数据结构中可能仍有对它的引用。</p>", "text": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃（Etsuro Fujita）§ 如果远程连接的中止清理失败，我们就不能再使用它。但要将关闭连接对象延迟到事务结束时执行，因为打开的游标等数据结构中可能仍有对它的引用。", "title": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃", "commits": ["af8f9248f"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "84ce363096cf71d57f6c5553a14d4ce2882ced43fc2e05a7b774e01833077b0a", "section_path": ["变更"], "commit_groups": [["1352651c2", "34c18a225", "648818ba3", "af8f9248f", "c318777da", "fd5b36ab1"]], "identity_text": "In contrib/postgres_fdw, avoid crash due to premature cleanup of a failed connection (Etsuro Fujita) If a remote connection fails abort cleanup, we can't use it any longer. But delay closing the connection object until end of transaction, because there might still be references to it within data structures such as open cursors.", "commit_aliases": ["1352651c2", "34c18a225", "648818ba3", "af8f9248f", "c318777da", "fd5b36ab1"], "source_commits": ["af8f9248f"], "source_entry_id": "17.10/changes/057", "db_id": "9bcb1c284d9f8abb68fce372f4df9301", "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48", "relations": [{"rule": 2, "type": "equivalent", "target": "5debbdff219f6645c34f0afc23c6c9a8", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}}, {"rule": 2, "type": "equivalent", "target": "701d8322decc496c951bc0d7ecfdd513", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}}, {"rule": 2, "type": "equivalent", "target": "8c8ea6b283a201d99cb3d8c9f57cd142", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}}, {"rule": 2, "type": "equivalent", "target": "b0783885375212755fb05950c3052a4a", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}}], "version": "17.10", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "5debbdff219f6645c34f0afc23c6c9a8", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}, "url": "/docs/compare/?release=18.4#18.4-78a75773cc77437b", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "8c8ea6b283a201d99cb3d8c9f57cd142", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}, "url": "/docs/compare/?release=16.14#16.14-c88b56bc0749f951", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "701d8322decc496c951bc0d7ecfdd513", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}, "url": "/docs/compare/?release=15.18#15.18-9110118db586478d", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "b0783885375212755fb05950c3052a4a", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "在 contrib/postgres_fdw 中，避免因过早清理失败连接而崩溃", "evidence": {"same_day": true, "patch_ids": ["73eecb88ff1f4197b1eb6900521746ca"], "statement_hash": "c7e9961353a3aad5643e55ab0c89f89d4bd050418724e45b79a4a1fb13cd1c48"}, "url": "/docs/compare/?release=14.23#14.23-c4a00b3d7115895d", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}, {"id": "17.10-1e6fcd0fa95c5ce6", "cves": [], "html": "<p>将时区数据文件更新到 <span>tzdata</span> 2026b 发布版本（Tom Lane）<a href=\"https://postgr.es/c/4c0eab6f0\">§</a></p>\n<p>British Columbia（America/Vancouver）将从 2026 年 11 月开始全年采用 UTC-07（实际上就是永久 DST）。本次发布假定其 TZ 缩写从那时起为 <code>MST</code>。这看起来可能会改变，但尚不清楚会使用什么新缩写。另外还有一项针对 Moldova 的历史修正：自 2022 年以来，他们一直遵循 EU 的 DST 转换时间。</p>", "text": "将时区数据文件更新到 tzdata 2026b 发布版本（Tom Lane）§ British Columbia（America/Vancouver）将从 2026 年 11 月开始全年采用 UTC-07（实际上就是永久 DST）。本次发布假定其 TZ 缩写从那时起为 MST。这看起来可能会改变，但尚不清楚会使用什么新缩写。另外还有一项针对 Moldova 的历史修正：自 2022 年以来，他们一直遵循 EU 的 DST 转换时间。", "title": "将时区数据文件更新到 tzdata 2026b 发布版本", "commits": ["4c0eab6f0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/17.10/#RELEASE-17-10-CHANGES", "source_hash": "d454a052abc39e98d934bf496b8d137e98bd4bd20e23f7c8498f76d861e964bc", "section_path": ["变更"], "commit_groups": [["0465c999e", "4c0eab6f0", "8a431b6d6", "affd929c9", "e28fc73d5", "f64f62f5b"]], "identity_text": "Update time zone data files to tzdata release 2026b (Tom Lane) British Columbia (America/Vancouver) will be on year-round UTC-07 (effectively, permanent DST) beginning in November 2026. This release assumes that their TZ abbreviation will be MST from that time forward. That seems likely to change, but it's unclear what new abbreviation will be used. Also a historical correction for Moldova: they have followed EU DST transition times since 2022.", "commit_aliases": ["0465c999e", "4c0eab6f0", "8a431b6d6", "affd929c9", "e28fc73d5", "f64f62f5b"], "source_commits": ["4c0eab6f0"], "source_entry_id": "17.10/changes/058", "db_id": "ae0d24039285853394af147eee246b73", "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681", "relations": [{"rule": 2, "type": "equivalent", "target": "4bebcc2956a5ca291072c22c03407356", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}}, {"rule": 2, "type": "equivalent", "target": "614039d003cde35ab46fd98561df1111", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}}, {"rule": 2, "type": "equivalent", "target": "c75239b417c7eb143ce21787698f02df", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}}, {"rule": 2, "type": "equivalent", "target": "de255c626ba35a131ca34e075c96784f", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}}], "version": "17.10", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4bebcc2956a5ca291072c22c03407356", "kind": "equivalent", "version": "18.4", "label": "18.4", "title": "将时区数据文件更新到 tzdata 2026b 发布版本", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}, "url": "/docs/compare/?release=18.4#18.4-a78c59e453b0788d", "source_url": "/docs/release/18.4/#RELEASE-18-4-CHANGES"}, {"db_id": "de255c626ba35a131ca34e075c96784f", "kind": "equivalent", "version": "16.14", "label": "16.14", "title": "将时区数据文件更新到 tzdata 2026b 发布版本", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}, "url": "/docs/compare/?release=16.14#16.14-d0a6ee4c3af9be4b", "source_url": "/docs/release/16.14/#RELEASE-16-14-CHANGES"}, {"db_id": "c75239b417c7eb143ce21787698f02df", "kind": "equivalent", "version": "15.18", "label": "15.18", "title": "将时区数据文件更新到 tzdata 2026b 发布版本", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}, "url": "/docs/compare/?release=15.18#15.18-3f18ea3122bf2fa5", "source_url": "/docs/release/15.18/#RELEASE-15-18-CHANGES"}, {"db_id": "614039d003cde35ab46fd98561df1111", "kind": "equivalent", "version": "14.23", "label": "14.23", "title": "将时区数据文件更新到 tzdata 2026b 发布版本", "evidence": {"same_day": true, "patch_ids": ["30506a0fee43471a4652ed9a4d616395"], "statement_hash": "54d3f56bdf06c07ea93842bb8072e38e1e0d631d40ae890c2e29184e60d57681"}, "url": "/docs/compare/?release=14.23#14.23-ea01fb303eaf105f", "source_url": "/docs/release/14.23/#RELEASE-14-23-CHANGES"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 58}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 24}, {"key": "security", "label": "安全相关", "count": 13}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 21}], "total": 58, "release_count": 1, "cross_major": false, "cve_count": 10, "cves": [{"id": "CVE-2026-6637", "url": "https://www.postgresql.org/support/security/CVE-2026-6637/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 8.8, "title": "防止 contrib/spi 中的 SQL 注入和缓冲区越界写", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6637", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "contrib module", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Stack buffer overflow in PostgreSQL module \"refint\" allows an unprivileged database user to execute arbitrary code as the operating system user running the database. A distinct attack is possible if the application declares a user-controlled column as a \"refint\" cascade primary key and facilitates user-controlled updates to that column. In that case, a SQL injection allows a primary key update value provider to execute arbitrary SQL as the database user performing the primary key update. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6477", "url": "https://www.postgresql.org/support/security/CVE-2026-6477/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 8.8, "title": "将 PQfn() 标记为不安全，并避免在 libpq 内部使用它", "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6477", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "client", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Use of inherently dangerous function PQfn(..., result_is_int=0, ...) in PostgreSQL libpq lo_export(), lo_read(), lo_lseek64(), and lo_tell64() functions allows the server superuser to overwrite a client stack buffer with an arbitrarily-large response. Like gets(), PQfn(..., result_is_int=0, ...) stores arbitrary-length, server-determined data into a buffer of unspecified size. Because both the \\lo_export command in psql and pg_dump call lo_read(), the server superuser can overwrite pg_dump or psql stack memory. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6475", "url": "https://www.postgresql.org/support/security/CVE-2026-6475/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 8.8, "title": "防止 pg_basebackup 和 pg_rewind 中的路径遍历", "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6475", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "client", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Symlink following in PostgreSQL pg_basebackup plain format and in pg_rewind allows an origin superuser to overwrite local files, e.g. /var/lib/postgres/.bashrc, that hijack the operating system account. It will remain the case that starting the server after these commands implicitly trusts the origin superuser, due to features like shared_preload_libraries. Hence, the attack has practical implications only if one takes relevant action between these commands and server start, like moving the files to a different VM or snapshotting the VM. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6473", "url": "https://www.postgresql.org/support/security/CVE-2026-6473/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 8.8, "title": "修复内存分配计算中的多处整数溢出问题", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6473", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Integer wraparound in multiple PostgreSQL server features allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds. This may execute arbitrary code as the operating system user running the database. In applications that pass gigabyte-scale user inputs to the relevant database functions, the application input provider may achieve a segmentation fault. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6479", "url": "https://www.postgresql.org/support/security/CVE-2026-6479/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 7.5, "title": "防止处理启动包时发生无界递归", "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6479", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Uncontrolled recursion in PostgreSQL SSL and GSS negotiation allows an attacker able to connect to a PostgreSQL AF_UNIX socket to achieve sustained denial of service. If SSL and GSS are both disabled, an attacker can do the same via access to a PostgreSQL TCP socket. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6476", "url": "https://www.postgresql.org/support/security/CVE-2026-6476/", "fixed": {"17": "17.10", "18": "18.4"}, "score": 7.2, "title": "在 pg_createsubscriber 中正确为订阅名称加引号", "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6476", "affected": {"17": "17", "18": "18"}, "component": "client", "published": {"17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "SQL injection in PostgreSQL pg_createsubscriber allows an attacker with pg_create_subscription rights to execute arbitrary SQL as a superuser. The attack takes effect when pg_createsubscriber next runs. Within major versions 17 and 18, minor versions before PostgreSQL 18.4 and 17.10 are affected. Versions before PostgreSQL 17 are unaffected.", "affected_ranges": [{"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6478", "url": "https://www.postgresql.org/support/security/CVE-2026-6478/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 6.5, "title": "在认证代码中使用时序安全的字符串比较", "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6478", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Covert timing channel in comparison of MD5-hashed password in PostgreSQL authentication allows an attacker to recover user credentials sufficient to authenticate. This does not affect scram-sha-256 passwords, the default in all supported releases. However, current databases may have MD5-hashed passwords originating in upgrades from PostgreSQL 13 or earlier. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6472", "url": "https://www.postgresql.org/support/security/CVE-2026-6472/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 5.4, "title": "创建多范围类型时，确保用户在为该多范围类型指定的模式上拥有 CREATE 权限", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6472", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Missing authorization in PostgreSQL CREATE TYPE allows an object creator to hijack other queries that use search_path to find user-defined types, including extension-defined types. That is to say, the victim will execute arbitrary SQL functions of the attacker's choice. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6474", "url": "https://www.postgresql.org/support/security/CVE-2026-6474/", "fixed": {"14": "14.23", "15": "15.18", "16": "16.14", "17": "17.10", "18": "18.4"}, "score": 4.3, "title": "防范 timeofday() 和 pg_strftime() 中的恶意时区名", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6474", "affected": {"14": "14", "15": "15", "16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"14": "2026-05-14", "15": "2026-05-14", "16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Externally-controlled format string in PostgreSQL timeofday() function allows an attacker to retrieve portions of server memory, via crafted timezone zones. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "affected_ranges": [{"from": "0", "until": "14.23"}, {"from": "15", "until": "15.18"}, {"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}, {"id": "CVE-2026-6638", "url": "https://www.postgresql.org/support/security/CVE-2026-6638/", "fixed": {"16": "16.14", "17": "17.10", "18": "18.4"}, "score": 3.7, "title": "在逻辑复制源检查中正确引用对象名称", "vector": "AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2026-6638", "affected": {"16": "16", "17": "17", "18": "18"}, "component": "core server", "published": {"16": "2026-05-14", "17": "2026-05-14", "18": "2026-05-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "SQL injection in PostgreSQL logical replication ALTER SUBSCRIPTION ... REFRESH PUBLICATION allows a subscriber table creator to execute arbitrary SQL with the subscription's publication-side credentials. The attack takes effect at the next REFRESH PUBLICATION. Within major versions 16, 17, and 18, minor versions before PostgreSQL 18.4, 17.10, and 16.14 are affected. Versions before PostgreSQL 16 are unaffected.", "affected_ranges": [{"from": "16", "until": "16.14"}, {"from": "17", "until": "17.10"}, {"from": "18", "until": "18.4"}], "first_published": "2026-05-14", "fixed_version": "17.10"}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 58, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}