{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2019-02-14", "build": "9.4.21", "major": "9.4", "minor": 21, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.21", "eol_date": "2020-02-13", "date_text": "2019-02-14", "supported": false, "manual_url": "/docs/9.4/release-9-4-21.html", "source_url": "/docs/release/9.4.21/", "entry_count": 35, "placeholder": false, "content_hash": "099a68a006935fba1e9b8f01d025d10f9679315c04130c093705c4a1a680cca2", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 35, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是从早于 9.4.18 的版本升级，请参见<a href=\"/docs/9.4/release-9-4-18.html\" title=\"E.9. 版本 9.4.18\">第 E.9 节</a>。</p>", "compatibility_count": 0, "label": "9.4.21", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 2785, "support_days": -2421}, "groups": [{"date": "2019-02-14", "build": "9.4.21", "major": "9.4", "minor": 21, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.21", "eol_date": "2020-02-13", "date_text": "2019-02-14", "supported": false, "manual_url": "/docs/9.4/release-9-4-21.html", "source_url": "/docs/release/9.4.21/", "entry_count": 35, "placeholder": false, "content_hash": "099a68a006935fba1e9b8f01d025d10f9679315c04130c093705c4a1a680cca2", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 35, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是从早于 9.4.18 的版本升级，请参见<a href=\"/docs/9.4/release-9-4-18.html\" title=\"E.9. 版本 9.4.18\">第 E.9 节</a>。</p>", "compatibility_count": 0, "label": "9.4.21", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 2785, "support_days": -2421, "entries": [{"id": "9.4.21-1b2d4e9d0c94e304", "cves": [], "html": "<p>默认情况下，<code>fsync()</code> 失败后 panic 而不是重试，以避免可能的数据损坏（Craig Ringer、Thomas Munro）</p>\n<p>一些流行的操作系统在无法写出内核数据缓冲区时会将其丢弃，并把这报告为 <code>fsync()</code> 失败。如果我们重新发出 <code>fsync()</code> 请求它会成功，但实际上数据已经丢失，因此继续下去有数据库损坏的风险。通过引发 panic 条件，我们可以从 WAL 重放——这种情况下 WAL 中可能包含数据的唯一剩余副本。虽然这无疑丑陋且低效，但几乎没有其他选择，所幸这种情况很少发生。</p>\n<p>新增了服务器参数<a href=\"/docs/9.4/runtime-config-error-handling.html#GUC-DATA-SYNC-RETRY\">data_sync_retry</a>来控制这一行为；如果你确定你的内核在此类场景下不会丢弃脏数据缓冲区，可以把 <code>data_sync_retry</code> 设为 <code>on</code> 恢复旧行为。</p>", "text": "默认情况下，fsync() 失败后 panic 而不是重试，以避免可能的数据损坏（Craig Ringer、Thomas Munro） 一些流行的操作系统在无法写出内核数据缓冲区时会将其丢弃，并把这报告为 fsync() 失败。如果我们重新发出 fsync() 请求它会成功，但实际上数据已经丢失，因此继续下去有数据库损坏的风险。通过引发 panic 条件，我们可以从 WAL 重放——这种情况下 WAL 中可能包含数据的唯一剩余副本。虽然这无疑丑陋且低效，但几乎没有其他选择，所幸这种情况很少发生。 新增了服务器参数data_sync_retry来控制这一行为；如果你确定你的内核在此类场景下不会丢弃脏数据缓冲区，可以把 data_sync_retry 设为 on 恢复旧行为。", "title": "默认情况下，fsync() 失败后 panic 而不是重试，以避免可能的数据损坏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "9b8a392323eda52c556e453eb1ce2e1ac0a8a44974b689de2975316510fdd605", "section_path": ["变更"], "commit_groups": [["312435232", "6534d544c", "9ccdd7f66", "afbe03f65", "b9cce9ddf", "f1ff5f51d"]], "identity_text": "By default, panic instead of retrying after fsync() failure, to avoid possible data corruption (Craig Ringer, Thomas Munro) Some popular operating systems discard kernel data buffers when unable to write them out, reporting this as fsync() failure. If we reissue the fsync() request it will succeed, but in fact the data has been lost, so continuing risks database corruption. By raising a panic condition instead, we can replay from WAL, which may contain the only remaining copy of the data in such a situation. While this is surely ugly and inefficient, there are few alternatives, and fortunately the case happens very rarely. A new server parameter guc-data-sync-retry has been added to control this; if you are certain that your kernel does not discard dirty data buffers in such scenarios, you can set data_sync_retry to on to restore the old behavior.", "commit_aliases": ["312435232", "6534d544c", "9ccdd7f66", "afbe03f65", "b9cce9ddf", "f1ff5f51d"], "source_commits": ["f1ff5f51d"], "source_entry_id": "9.4.21/changes/001", "db_id": "c30342616267698884b38e953ccaa620", "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c", "relations": [{"rule": 2, "type": "equivalent", "target": "04c328284becc54430b265ccea5bb2b4", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}}, {"rule": 2, "type": "equivalent", "target": "2de3ac171ddc2856721ffd607512e2e2", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}}, {"rule": 2, "type": "equivalent", "target": "8618df39ed6f253f6af6ade4524563f4", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}}, {"rule": 2, "type": "equivalent", "target": "8ce6bd55929a0b3c450ee07d29f592c1", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "8ce6bd55929a0b3c450ee07d29f592c1", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "默认在 fsync() 失败后触发 panic，而不重试，以避免可能的数据损坏", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}, "url": "/docs/compare/?release=11.2#11.2-95c937dd40c23a27", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "04c328284becc54430b265ccea5bb2b4", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "默认在 fsync() 失败后触发 panic，而不重试，以避免可能的数据损坏", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}, "url": "/docs/compare/?release=10.7#10.7-95c937dd40c23a27", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "8618df39ed6f253f6af6ade4524563f4", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "默认情况下，fsync() 失败后 panic 而不是重试，以避免可能的数据损坏", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}, "url": "/docs/compare/?release=9.6.12#9.6.12-1b2d4e9d0c94e304", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "2de3ac171ddc2856721ffd607512e2e2", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "默认情况下，fsync() 失败后 panic 而不是重试，以避免可能的数据损坏", "evidence": {"same_day": true, "patch_ids": ["1cd20419bd6603ee4fa060589acd75a7"], "statement_hash": "98e41f64860dadd2ea173c160870aedaa4ce240185b3e6a65783b799ed55f23c"}, "url": "/docs/compare/?release=9.5.16#9.5.16-1b2d4e9d0c94e304", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-063aea2d3c25829a", "cves": [], "html": "<p>每个大版本分支的文档只包含该分支的发行说明，而不是该分支及所有之后分支的（Tom Lane）</p>\n<p>以前的政策造成的重复越来越失控。我们的计划是在项目网站上提供完整的发行说明归档，而不是在每个发行版中重复它。</p>", "text": "每个大版本分支的文档只包含该分支的发行说明，而不是该分支及所有之后分支的（Tom Lane） 以前的政策造成的重复越来越失控。我们的计划是在项目网站上提供完整的发行说明归档，而不是在每个发行版中重复它。", "title": "每个大版本分支的文档只包含该分支的发行说明，而不是该分支及所有之后分支的", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "eb4672b82676dd2319656528a3f5b5dd6da81540f386eb5bcdb4cfed3fb0a5a0", "section_path": ["变更"], "commit_groups": [["0d13dd371", "2b2427115", "527b5ed1a", "60b1d6c2a", "bb428cb11", "ed64db588"]], "identity_text": "Include each major release branch's release notes in the documentation for only that branch, rather than that branch and all later ones (Tom Lane) The duplication induced by the previous policy was getting out of hand. Our plan is to provide a full archive of release notes on the project's web site, but not duplicate it within each release.", "commit_aliases": ["0d13dd371", "2b2427115", "527b5ed1a", "60b1d6c2a", "bb428cb11", "ed64db588"], "source_commits": ["bb428cb11"], "source_entry_id": "9.4.21/changes/002", "db_id": "6e11681ce0757e659f9ee169e455395b", "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae", "relations": [{"rule": 2, "type": "equivalent", "target": "450c05467c6eb16175952aa5f906c571", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}}, {"rule": 2, "type": "equivalent", "target": "4646d309f18ac7fa2bf41e21e3575e15", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}}, {"rule": 2, "type": "equivalent", "target": "e673f6c4ec8d4ea12161e9fdfd743fc5", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}}, {"rule": 2, "type": "equivalent", "target": "fb65ab094feb449fa0c25a657a0529c7", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "450c05467c6eb16175952aa5f906c571", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "仅在各大版本分支的文档中包含该分支的发布说明，而非在该分支及所有后续分支中重复包含", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}, "url": "/docs/compare/?release=11.2#11.2-a87585c29ba688d4", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "fb65ab094feb449fa0c25a657a0529c7", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "仅在各大版本分支的文档中包含该分支的发布说明，而非在该分支及所有后续分支中重复包含", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}, "url": "/docs/compare/?release=10.7#10.7-a87585c29ba688d4", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "4646d309f18ac7fa2bf41e21e3575e15", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "每个大版本分支的文档只包含该分支的发行说明，而不是该分支及所有之后分支的", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}, "url": "/docs/compare/?release=9.6.12#9.6.12-063aea2d3c25829a", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "e673f6c4ec8d4ea12161e9fdfd743fc5", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "每个大版本分支的文档只包含该分支的发行说明，而不是该分支及所有之后分支的", "evidence": {"same_day": true, "patch_ids": ["3a494ea15551633c6fadd8d8b3872657"], "statement_hash": "def87da337acf6afa1339c1007c8e019555ec62f013cacbdbd412a84dae2f5ae"}, "url": "/docs/compare/?release=9.5.16#9.5.16-063aea2d3c25829a", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-e32e085076ba5f7b", "cves": [], "html": "<p>避免获取多个缓冲区锁时可能出现的死锁（Nishant Fnu）</p>", "text": "避免获取多个缓冲区锁时可能出现的死锁（Nishant Fnu）", "title": "避免获取多个缓冲区锁时可能出现的死锁", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "8c1eb875bd1b2cfe9cab91f7e47fdeb92ab68217644d5d4c7bf34780888f5591", "section_path": ["变更"], "commit_groups": [["073afae81", "0b8bdb3c3", "1ca33fc7b", "6a2c9c633", "904413637", "fba0a8292"]], "identity_text": "Avoid possible deadlock when acquiring multiple buffer locks (Nishant Fnu)", "commit_aliases": ["073afae81", "0b8bdb3c3", "1ca33fc7b", "6a2c9c633", "904413637", "fba0a8292"], "source_commits": ["fba0a8292"], "source_entry_id": "9.4.21/changes/003", "db_id": "ea246181e943f4546fe1ae6adaab9bdc", "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2", "relations": [{"rule": 2, "type": "equivalent", "target": "78b9f126b3060e1d305df93bd566410a", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}}, {"rule": 2, "type": "equivalent", "target": "a6802b29e18623bb5196a29c35621a96", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}}, {"rule": 2, "type": "equivalent", "target": "d3245f2dd4ecb5ea89aa5072bf6eda4c", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}}, {"rule": 2, "type": "equivalent", "target": "defb797ad958ab34d7af549635e5845a", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "d3245f2dd4ecb5ea89aa5072bf6eda4c", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免获取多个缓冲区锁时可能发生的死锁", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}, "url": "/docs/compare/?release=11.2#11.2-b4880c83e8f0c175", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "a6802b29e18623bb5196a29c35621a96", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免获取多个缓冲区锁时可能发生的死锁", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}, "url": "/docs/compare/?release=10.7#10.7-b4880c83e8f0c175", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "78b9f126b3060e1d305df93bd566410a", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免获取多个缓冲区锁时可能的死锁", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}, "url": "/docs/compare/?release=9.6.12#9.6.12-3f8e63b270ab51ac", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "defb797ad958ab34d7af549635e5845a", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免获取多个缓冲区锁时可能的死锁", "evidence": {"same_day": true, "patch_ids": ["d6cdc40d09bb3828720fd4070de421ce"], "statement_hash": "fa8378628893357246e80c535a0a4cfef76fa472e73a0ea99d0e2c55b6fc13b2"}, "url": "/docs/compare/?release=9.5.16#9.5.16-3f8e63b270ab51ac", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-4201b1f3c63bc162", "cves": [], "html": "<p>避免热备查询与 GIN 索引页删除重放之间的死锁（Alexander Korotkov）</p>", "text": "避免热备查询与 GIN 索引页删除重放之间的死锁（Alexander Korotkov）", "title": "避免热备查询与 GIN 索引页删除重放之间的死锁", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "5f4725b2aafc132a1ea86d41600409c3ffaca2c10afa4009b3e1b9126defe881", "section_path": ["变更"], "commit_groups": [["19cf52e6c", "225b5c9c4", "80d4d8d71", "865870374", "c6ade7a8c", "f6c44e1b5"], ["bf0e5a73b"]], "identity_text": "Avoid deadlock between hot-standby queries and replay of GIN index page deletion (Alexander Korotkov)", "commit_aliases": ["19cf52e6c", "225b5c9c4", "80d4d8d71", "865870374", "bf0e5a73b", "c6ade7a8c", "f6c44e1b5"], "source_commits": ["19cf52e6c", "bf0e5a73b"], "source_entry_id": "9.4.21/changes/004", "db_id": "b0033c4189816213e103a6b95148d608", "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658", "relations": [{"rule": 2, "type": "equivalent", "target": "0034f749d32ed3f471748bf57c933ffc", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}}, {"rule": 2, "type": "equivalent", "target": "04cc7864472df4a6726a934fd320ac0f", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}}, {"rule": 2, "type": "equivalent", "target": "67175c01685a4cc69b78be23ba91af92", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}}, {"rule": 2, "type": "equivalent", "target": "7d3c7b87fd66a83712c5b75fe7daeaa1", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "7d3c7b87fd66a83712c5b75fe7daeaa1", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免热备查询与 GIN 索引页面删除重放之间的死锁", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}, "url": "/docs/compare/?release=11.2#11.2-7d22fc85157598df", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "0034f749d32ed3f471748bf57c933ffc", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免热备查询与 GIN 索引页面删除重放之间的死锁", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}, "url": "/docs/compare/?release=10.7#10.7-7d22fc85157598df", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "04cc7864472df4a6726a934fd320ac0f", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免热备查询与 GIN 索引页删除重放之间的死锁", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}, "url": "/docs/compare/?release=9.6.12#9.6.12-4201b1f3c63bc162", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "67175c01685a4cc69b78be23ba91af92", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免热备查询与 GIN 索引页删除重放之间的死锁", "evidence": {"same_day": true, "patch_ids": ["a2eedd6b8d3f5bee276bea50644a7ae1", "a3c647e6b68276d7538b4eb56aee6622"], "statement_hash": "adcffdc4a3e3255d815e645b8b4bc6160fac12eb9e5490631155be19b20f8658"}, "url": "/docs/compare/?release=9.5.16#9.5.16-4201b1f3c63bc162", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-b07545abf9e2741e", "cves": [], "html": "<p>修复使用索引表达式或谓词时逻辑复制可能崩溃的问题（Peter Eisentraut）</p>", "text": "修复使用索引表达式或谓词时逻辑复制可能崩溃的问题（Peter Eisentraut）", "title": "修复使用索引表达式或谓词时逻辑复制可能崩溃的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "81ed1909c7ce0dc74c23c85be106200139505e5b8a0f1e8324fbd81fffbafb5d", "section_path": ["变更"], "commit_groups": [["2bac1d8c9", "452253eae", "650296f8f", "cf25498f7", "dfa774ff9", "edd8278c5"]], "identity_text": "Fix possible crashes in logical replication when index expressions or predicates are in use (Peter Eisentraut)", "commit_aliases": ["2bac1d8c9", "452253eae", "650296f8f", "cf25498f7", "dfa774ff9", "edd8278c5"], "source_commits": ["452253eae"], "source_entry_id": "9.4.21/changes/005", "db_id": "7ea74fa8edd2f696d641d7ec0b11428a", "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6", "relations": [{"rule": 2, "type": "equivalent", "target": "0461d4f7ca50ed8c9a3a985fb55ca168", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}}, {"rule": 2, "type": "equivalent", "target": "328ba089843dd7c8f19ff5cbf7b7165b", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}}, {"rule": 2, "type": "equivalent", "target": "ba61e3eea0a6ab823ee3513474bdeffa", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}}, {"rule": 2, "type": "equivalent", "target": "ef280c9bb22f9d27a7d505f43a5d23d9", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "ef280c9bb22f9d27a7d505f43a5d23d9", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复使用索引表达式或谓词时逻辑复制中可能发生的崩溃", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}, "url": "/docs/compare/?release=11.2#11.2-99dfdf52bd53f341", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "328ba089843dd7c8f19ff5cbf7b7165b", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复使用索引表达式或谓词时逻辑复制中可能发生的崩溃", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}, "url": "/docs/compare/?release=10.7#10.7-99dfdf52bd53f341", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "0461d4f7ca50ed8c9a3a985fb55ca168", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复使用索引表达式或谓词时逻辑复制可能的崩溃", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}, "url": "/docs/compare/?release=9.6.12#9.6.12-6ae8705f682e76ba", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "ba61e3eea0a6ab823ee3513474bdeffa", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复使用索引表达式或谓词时逻辑复制可能的崩溃", "evidence": {"same_day": true, "patch_ids": ["ca3f14f7c5a22a796b2f51fc0c0b4bc3"], "statement_hash": "a13c110a61af0d3df64537341093d5e1b9716dc20c2fe64de3e2530d33e718f6"}, "url": "/docs/compare/?release=9.5.16#9.5.16-6ae8705f682e76ba", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-af1484a7f9ebca8e", "cves": [], "html": "<p>避免在表重写期间对 TOAST 数据进行无用且昂贵的逻辑解码（Tomas Vondra）</p>", "text": "避免在表重写期间对 TOAST 数据进行无用且昂贵的逻辑解码（Tomas Vondra）", "title": "避免在表重写期间对 TOAST 数据进行无用且昂贵的逻辑解码", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "536c2794747daa26615d79decca6ef61560e4a1c865a879d78008571d627674a", "section_path": ["变更"], "commit_groups": [["4e7395d83", "77d2815e4", "b86d148ae", "c1a5caea8", "f69c959df", "f8397c955"]], "identity_text": "Avoid useless and expensive logical decoding of TOAST data during a table rewrite (Tomas Vondra)", "commit_aliases": ["4e7395d83", "77d2815e4", "b86d148ae", "c1a5caea8", "f69c959df", "f8397c955"], "source_commits": ["c1a5caea8"], "source_entry_id": "9.4.21/changes/006", "db_id": "8130c609a17348303d80eedbf53b7a46", "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98", "relations": [{"rule": 2, "type": "equivalent", "target": "01e1ad5b166c2fb76f0af438f882523e", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}}, {"rule": 2, "type": "equivalent", "target": "90bc2f83bb21a49a601945dc9f7115bd", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}}, {"rule": 2, "type": "equivalent", "target": "a013358b21559ec30543059e8e5e5344", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}}, {"rule": 2, "type": "equivalent", "target": "cc2d54ff133ad9241a37b0c8112efaf1", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "90bc2f83bb21a49a601945dc9f7115bd", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免在表重写期间对 TOAST 数据进行无用且代价高昂的逻辑解码", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}, "url": "/docs/compare/?release=11.2#11.2-c94be3312f6176b1", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "01e1ad5b166c2fb76f0af438f882523e", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免在表重写期间对 TOAST 数据进行无用且代价高昂的逻辑解码", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}, "url": "/docs/compare/?release=10.7#10.7-c94be3312f6176b1", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "a013358b21559ec30543059e8e5e5344", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免表重写期间对 TOAST 数据无用而昂贵的逻辑解码", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}, "url": "/docs/compare/?release=9.6.12#9.6.12-178d4046924c95aa", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "cc2d54ff133ad9241a37b0c8112efaf1", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免表重写期间对 TOAST 数据无用而昂贵的逻辑解码", "evidence": {"same_day": true, "patch_ids": ["c7ada9f9cd38c4d17098eac7ae7eb1a6"], "statement_hash": "8cf0b33217e43b9d5790a54d8cd2868939e4584873bfe2d69483791a5e395f98"}, "url": "/docs/compare/?release=9.5.16#9.5.16-178d4046924c95aa", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-00b845208e817fe7", "cves": [], "html": "<p>修复启用同步复制时停止部分 WAL 发送进程的逻辑（Paul Guo、Michael Paquier）</p>", "text": "修复启用同步复制时停止部分 WAL 发送进程的逻辑（Paul Guo、Michael Paquier）", "title": "修复启用同步复制时停止部分 WAL 发送进程的逻辑", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "ec0dac2d165b5fb824e0e49215cacd3f27321fb9ad56568becca7e6821ec8c6a", "section_path": ["变更"], "commit_groups": [["04e381a19", "4c703369a", "8340eba6d", "b81d08d60", "b9bdbf8c1", "bad41764a"]], "identity_text": "Fix logic for stopping a subset of WAL senders when synchronous replication is enabled (Paul Guo, Michael Paquier)", "commit_aliases": ["04e381a19", "4c703369a", "8340eba6d", "b81d08d60", "b9bdbf8c1", "bad41764a"], "source_commits": ["b81d08d60"], "source_entry_id": "9.4.21/changes/007", "db_id": "d14df341bfed88059dab45579948be4d", "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990", "relations": [{"rule": 2, "type": "equivalent", "target": "44ffa5cb8eb96843c180dddb29f6ed7f", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}}, {"rule": 2, "type": "equivalent", "target": "4a5d6c9ae25ae162ed116ba3a7e0070d", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}}, {"rule": 2, "type": "equivalent", "target": "8690585395202edcbdf4fb0e2b2cde5f", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}}, {"rule": 2, "type": "equivalent", "target": "e4b8501d9955310194b7c17f5b400613", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "e4b8501d9955310194b7c17f5b400613", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复启用同步复制时停止部分 WAL 发送进程的逻辑", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}, "url": "/docs/compare/?release=11.2#11.2-00b845208e817fe7", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "4a5d6c9ae25ae162ed116ba3a7e0070d", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复启用同步复制时停止部分 WAL 发送进程的逻辑", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}, "url": "/docs/compare/?release=10.7#10.7-00b845208e817fe7", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "44ffa5cb8eb96843c180dddb29f6ed7f", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复启用同步复制时只停止一部分 WAL 发送者的逻辑", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}, "url": "/docs/compare/?release=9.6.12#9.6.12-612cdd3b89c541e5", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "8690585395202edcbdf4fb0e2b2cde5f", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复启用同步复制时只停止一部分 WAL 发送者的逻辑", "evidence": {"same_day": true, "patch_ids": ["d20e5f5a40b6783989426c0d3e1645e1"], "statement_hash": "52ea76644deb231363f232adcd759c8671dbff4ffffeda9a5e273ecf6eab3990"}, "url": "/docs/compare/?release=9.5.16#9.5.16-612cdd3b89c541e5", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-b82473b0642f3b89", "cves": [], "html": "<p>避免在元组删除 WAL 记录中写入错误的副本标识字段（Stas Kelvich）</p>", "text": "避免在元组删除 WAL 记录中写入错误的副本标识字段（Stas Kelvich）", "title": "避免在元组删除 WAL 记录中写入错误的副本标识字段", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "dff21d55217350759e1e65a8fa683b95238410ccb314a45f1ab12304cf0995c4", "section_path": ["变更"], "commit_groups": [["014763e97", "05d24cf7c", "47412e075", "478e0069f", "90f1ba7ec", "eb8c9f0bc"]], "identity_text": "Avoid possibly writing an incorrect replica identity field in a tuple deletion WAL record (Stas Kelvich)", "commit_aliases": ["014763e97", "05d24cf7c", "47412e075", "478e0069f", "90f1ba7ec", "eb8c9f0bc"], "source_commits": ["05d24cf7c"], "source_entry_id": "9.4.21/changes/008", "db_id": "98ce6a70875f0f5e8fe26ab23a72ad9d", "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc", "relations": [{"rule": 2, "type": "equivalent", "target": "4b0fa9e7fbf47ab605f0422dafc76700", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}}, {"rule": 2, "type": "equivalent", "target": "66fb8cdc333158ee73a6fae077157490", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}}, {"rule": 2, "type": "equivalent", "target": "7d0c0cc6d4380eaf2ebead677ab35b7b", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}}, {"rule": 2, "type": "equivalent", "target": "e4a59bd60faed5b215e7f57ee7ca981c", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4b0fa9e7fbf47ab605f0422dafc76700", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免在元组删除 WAL 记录中写入不正确的复制标识字段", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}, "url": "/docs/compare/?release=11.2#11.2-0a7d20efb78ef80c", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "66fb8cdc333158ee73a6fae077157490", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免在元组删除 WAL 记录中写入不正确的复制标识字段", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}, "url": "/docs/compare/?release=10.7#10.7-0a7d20efb78ef80c", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "e4a59bd60faed5b215e7f57ee7ca981c", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免在元组删除 WAL 记录中可能写入错误的副本身份字段", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}, "url": "/docs/compare/?release=9.6.12#9.6.12-6f0265d6d89f12b9", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "7d0c0cc6d4380eaf2ebead677ab35b7b", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免在元组删除 WAL 记录中可能写入错误的副本身份字段", "evidence": {"same_day": true, "patch_ids": ["40e03536fea4bcb2ac3c575edb75178e"], "statement_hash": "9ccf70c6f337df25e1b9d44f38db0997bf19ea561d397376282e030a186906cc"}, "url": "/docs/compare/?release=9.5.16#9.5.16-6f0265d6d89f12b9", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-4a0d59430beb47d6", "cves": [], "html": "<p>避免<span>libxml2</span>返回空错误消息时崩溃（Sergio Conde Gómez）</p>", "text": "避免libxml2返回空错误消息时崩溃（Sergio Conde Gómez）", "title": "避免libxml2返回空错误消息时崩溃", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "375a78d302737b853c94ff31d1f7ba3f8056b4ae4f6095548dcdd60dadedff61", "section_path": ["变更"], "commit_groups": [["0d7d71b64", "0edef16d7", "37f3a7751", "7821a4d60", "8e2956734", "ef922faea"]], "identity_text": "Avoid crash if libxml2 returns a null error message (Sergio Conde Gómez)", "commit_aliases": ["0d7d71b64", "0edef16d7", "37f3a7751", "7821a4d60", "8e2956734", "ef922faea"], "source_commits": ["37f3a7751"], "source_entry_id": "9.4.21/changes/009", "db_id": "cd0ea67859104d8dca4e73127e3466cd", "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9", "relations": [{"rule": 2, "type": "equivalent", "target": "1387d78c9243333e07793e10eea9f6e4", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}}, {"rule": 2, "type": "equivalent", "target": "294aa1f458016522ac69d75341bf8752", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}}, {"rule": 2, "type": "equivalent", "target": "4fd8345e31bf46d7156f7c05feb39327", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}}, {"rule": 2, "type": "equivalent", "target": "5541174a4de609c53f81cbb8b8bead93", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "294aa1f458016522ac69d75341bf8752", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免 libxml2 返回空错误消息时发生崩溃", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}, "url": "/docs/compare/?release=11.2#11.2-3a5cdf58c7af36e7", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "5541174a4de609c53f81cbb8b8bead93", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免 libxml2 返回空错误消息时发生崩溃", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}, "url": "/docs/compare/?release=10.7#10.7-3a5cdf58c7af36e7", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "4fd8345e31bf46d7156f7c05feb39327", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免 libxml2 返回空错误消息时崩溃", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}, "url": "/docs/compare/?release=9.6.12#9.6.12-8c33afde1a29db66", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "1387d78c9243333e07793e10eea9f6e4", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免 libxml2 返回空错误消息时崩溃", "evidence": {"same_day": true, "patch_ids": ["756e7b21ff4acff04aeb731313e5eb12"], "statement_hash": "36824cc82ae51a6995057dd5e9f812c862c647537ed5268a803c9ed08923b7b9"}, "url": "/docs/compare/?release=9.5.16#9.5.16-8c33afde1a29db66", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-bf56af9074252e63", "cves": [], "html": "<p>修复排序规则分配处理不一致导致的虚假分组相关分析器错误（Andrew Gierth）</p>\n<p>某些情况下，如果表达式包含对可排序数据类型的操作，本应被视为匹配的表达式没有被看作匹配。</p>", "text": "修复排序规则分配处理不一致导致的虚假分组相关分析器错误（Andrew Gierth） 某些情况下，如果表达式包含对可排序数据类型的操作，本应被视为匹配的表达式没有被看作匹配。", "title": "修复排序规则分配处理不一致导致的虚假分组相关分析器错误", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "6cd4d8f581fa7b847b569aabe502158f66e7a3999ce09b70deaa6a98f118eb2e", "section_path": ["变更"], "commit_groups": [["174fab993", "409230a72", "624046abe", "91448e7dc", "d16d45387", "e74d8c508"]], "identity_text": "Fix spurious grouping-related parser errors caused by inconsistent handling of collation assignment (Andrew Gierth) In some cases, expressions that should be considered to match were not seen as matching, if they included operations on collatable data types.", "commit_aliases": ["174fab993", "409230a72", "624046abe", "91448e7dc", "d16d45387", "e74d8c508"], "source_commits": ["174fab993"], "source_entry_id": "9.4.21/changes/010", "db_id": "1c59b58c733f2c85fcf942d986bef1a3", "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f", "relations": [{"rule": 2, "type": "equivalent", "target": "060be4642903ea45c671de9a768bd647", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}}, {"rule": 2, "type": "equivalent", "target": "9de8a6f3f5bf764272f6f8bc82c57111", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}}, {"rule": 2, "type": "equivalent", "target": "adefdbaad9b4829e6d0acd5506afe442", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}}, {"rule": 2, "type": "equivalent", "target": "b14d1ad44f4f9a1753a80a190bb2b4af", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "9de8a6f3f5bf764272f6f8bc82c57111", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复因排序规则分配处理不一致而引发的虚假分组相关解析器错误", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}, "url": "/docs/compare/?release=11.2#11.2-d5b2cdd9ff3fa984", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "060be4642903ea45c671de9a768bd647", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复因排序规则分配处理不一致而引发的虚假分组相关解析器错误", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}, "url": "/docs/compare/?release=10.7#10.7-d5b2cdd9ff3fa984", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "b14d1ad44f4f9a1753a80a190bb2b4af", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复排序规则分配处理不一致导致的虚假分组相关分析器错误", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}, "url": "/docs/compare/?release=9.6.12#9.6.12-bf56af9074252e63", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "adefdbaad9b4829e6d0acd5506afe442", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复排序规则分配处理不一致导致的虚假分组相关分析器错误", "evidence": {"same_day": true, "patch_ids": ["1505483bf7a831488d1704cafcd0f825"], "statement_hash": "9b8b2121ff38e3866696396677aab1e475cd9087a8a7e8a0ed288e4ac118db6f"}, "url": "/docs/compare/?release=9.5.16#9.5.16-bf56af9074252e63", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-bf335adebd4b10d4", "cves": [], "html": "<p>检查 <code>LEAST()</code> 或 <code>GREATEST()</code> 底层的比较函数是否防泄漏，而不是直接假定它防泄漏（Tom Lane）</p>\n<p>btree 比较函数的实际信息泄漏通常很难诱发，但原则上可能发生。</p>", "text": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而不是直接假定它防泄漏（Tom Lane） btree 比较函数的实际信息泄漏通常很难诱发，但原则上可能发生。", "title": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而不是直接假定它防泄漏", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "028dadf1993f6c32e6db074962e2f2e535165c9e9a1356ea80ebac5c949795a9", "section_path": ["变更"], "commit_groups": [["099063340", "64edc788b", "68a13f28b", "c27c3993e", "d6b37cdb6", "f8b9b8097"]], "identity_text": "Check whether the comparison function underlying LEAST() or GREATEST() is leakproof, rather than just assuming it is (Tom Lane) Actual information leaks from btree comparison functions are typically hard to provoke, but in principle they could happen.", "commit_aliases": ["099063340", "64edc788b", "68a13f28b", "c27c3993e", "d6b37cdb6", "f8b9b8097"], "source_commits": ["d6b37cdb6"], "source_entry_id": "9.4.21/changes/011", "db_id": "4a48718b3f267d0e84af709c736400f0", "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1", "relations": [{"rule": 2, "type": "equivalent", "target": "2f4dc72bb3dab3438fcd9fb0351b5437", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}}, {"rule": 2, "type": "equivalent", "target": "51fe53d8127248de741bb349f298e27a", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}}, {"rule": 2, "type": "equivalent", "target": "be7605ab0906c2e02cca861022499953", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}}, {"rule": 2, "type": "equivalent", "target": "cdfd242c3e04a220e1c4e4f8cc327493", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "be7605ab0906c2e02cca861022499953", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而非直接假定它防泄漏", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}, "url": "/docs/compare/?release=11.2#11.2-7d5d774129cea68f", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "2f4dc72bb3dab3438fcd9fb0351b5437", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而非直接假定它防泄漏", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}, "url": "/docs/compare/?release=10.7#10.7-7d5d774129cea68f", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "51fe53d8127248de741bb349f298e27a", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而不是直接假定它防泄漏", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}, "url": "/docs/compare/?release=9.6.12#9.6.12-bf335adebd4b10d4", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "cdfd242c3e04a220e1c4e4f8cc327493", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏，而不是直接假定它防泄漏", "evidence": {"same_day": true, "patch_ids": ["10243ca6f385a264e2070242b9f73b72"], "statement_hash": "e296eb59769fc5095e9df54d61fbac3ec99331bc016ec251e60574a712d94bf1"}, "url": "/docs/compare/?release=9.5.16#9.5.16-bf335adebd4b10d4", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-3a4d69bc3cdf76f7", "cves": [], "html": "<p>修复横向引用必须在外部表扫描处求值的查询规划错误的问题（Tom Lane）</p>", "text": "修复横向引用必须在外部表扫描处求值的查询规划错误的问题（Tom Lane）", "title": "修复横向引用必须在外部表扫描处求值的查询规划错误的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "b1be77045d55b6fb84ebd6a29ccf3c7a2fa1dd9983029ba84dedbf5869dda3fc", "section_path": ["变更"], "commit_groups": [["1eeee6909", "34ea1ab7f", "876fd37fc", "9d6d2b213", "d468da0d6", "e3101a031"]], "identity_text": "Fix incorrect planning of queries in which a lateral reference must be evaluated at a foreign table scan (Tom Lane)", "commit_aliases": ["1eeee6909", "34ea1ab7f", "876fd37fc", "9d6d2b213", "d468da0d6", "e3101a031"], "source_commits": ["876fd37fc"], "source_entry_id": "9.4.21/changes/012", "db_id": "3531afe827dc600e49c040c0ce648222", "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9", "relations": [{"rule": 2, "type": "equivalent", "target": "354d2112f020f99f16e1450a3cd1025f", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}}, {"rule": 2, "type": "equivalent", "target": "4f8191ef4325da8ce0c5b095f97f4db7", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}}, {"rule": 2, "type": "equivalent", "target": "5b7564d69abdb31fc354f01bb0d390c2", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}}, {"rule": 2, "type": "equivalent", "target": "bda1eb21f9480626ad4d9bf00073346e", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bda1eb21f9480626ad4d9bf00073346e", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复必须在外部表扫描处对横向引用求值的查询的不正确规划", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}, "url": "/docs/compare/?release=11.2#11.2-e807c77d8d848fe2", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "4f8191ef4325da8ce0c5b095f97f4db7", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复必须在外部表扫描处对横向引用求值的查询的不正确规划", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}, "url": "/docs/compare/?release=10.7#10.7-e807c77d8d848fe2", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "5b7564d69abdb31fc354f01bb0d390c2", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复必须在外部表扫描处求值横向引用的查询的错误规划", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}, "url": "/docs/compare/?release=9.6.12#9.6.12-fe6062fd1b04833f", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "354d2112f020f99f16e1450a3cd1025f", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复必须在外部表扫描处求值横向引用的查询的错误规划", "evidence": {"same_day": true, "patch_ids": ["5336bcec2f5932123cd50ba929c09635"], "statement_hash": "f3091c700511a6d7a2c1ce5cc02e01c0e3ef669e204ee0d11f67ad84402d15a9"}, "url": "/docs/compare/?release=9.5.16#9.5.16-fe6062fd1b04833f", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-736d497984b7f310", "cves": [], "html": "<p>修复归并连接代价的边界低估（Tom Lane）</p>\n<p>当外键范围远小于内键范围时，即使内侧有如此多的重复键以至于这是糟糕的选择，规划器也可能偏爱归并连接。</p>", "text": "修复归并连接代价的边界低估（Tom Lane） 当外键范围远小于内键范围时，即使内侧有如此多的重复键以至于这是糟糕的选择，规划器也可能偏爱归并连接。", "title": "修复归并连接代价的边界低估", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "e8ccd04bdb210a7b4e24c704e36f4468e5a2efc6f629816ef9ac70931b72ab5c", "section_path": ["变更"], "commit_groups": [["72a626e68", "7c2bc40b8", "ad425aaf0", "d16567093", "d364e8815", "ef673a32d"]], "identity_text": "Fix corner-case underestimation of the cost of a merge join (Tom Lane) The planner could prefer a merge join when the outer key range is much smaller than the inner key range, even if there are so many duplicate keys on the inner side that this is a poor choice.", "commit_aliases": ["72a626e68", "7c2bc40b8", "ad425aaf0", "d16567093", "d364e8815", "ef673a32d"], "source_commits": ["ef673a32d"], "source_entry_id": "9.4.21/changes/013", "db_id": "f83041a6e870e795da2ed3a6ada57352", "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17", "relations": [{"rule": 2, "type": "equivalent", "target": "1e50a972cb40096b25a48680c1810ea4", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}}, {"rule": 2, "type": "equivalent", "target": "59072165ff62b908831246d189ccdd3f", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}}, {"rule": 2, "type": "equivalent", "target": "a9b825e90ea5bfde11ce4b49ec05bbd8", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}}, {"rule": 2, "type": "equivalent", "target": "dc36638f2802173341812995b8e58e6b", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "59072165ff62b908831246d189ccdd3f", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复边界情况下低估归并连接代价的问题", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}, "url": "/docs/compare/?release=11.2#11.2-3ced48b41a8de8ac", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "a9b825e90ea5bfde11ce4b49ec05bbd8", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复边界情况下低估归并连接代价的问题", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}, "url": "/docs/compare/?release=10.7#10.7-3ced48b41a8de8ac", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "1e50a972cb40096b25a48680c1810ea4", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复归并连接代价的边界低估", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}, "url": "/docs/compare/?release=9.6.12#9.6.12-736d497984b7f310", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "dc36638f2802173341812995b8e58e6b", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复归并连接代价的边界低估", "evidence": {"same_day": true, "patch_ids": ["6340549505356d918a295f3ea6c5f596"], "statement_hash": "3aa9e70862272955da108fbeba34d23fcd4accdcd545e34bcf5783c2723d3f17"}, "url": "/docs/compare/?release=9.5.16#9.5.16-736d497984b7f310", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-bdb68921210a87f8", "cves": [], "html": "<p>避免查询包含数千个可索引子句时规划时间 O(N^2) 增长的问题（Tom Lane）</p>", "text": "避免查询包含数千个可索引子句时规划时间 O(N^2) 增长的问题（Tom Lane）", "title": "避免查询包含数千个可索引子句时规划时间 O(N^2) 增长的问题", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "5132039435513b600368c80b5bfb7ae84d8353089e933d850901352fe9e388c0", "section_path": ["变更"], "commit_groups": [["15b9d47c8", "2abc87953", "92dbbe90c", "c6b3835c7", "e3f005d97", "fe66fc6f9"]], "identity_text": "Avoid O(N^2) planning time growth when a query contains many thousand indexable clauses (Tom Lane)", "commit_aliases": ["15b9d47c8", "2abc87953", "92dbbe90c", "c6b3835c7", "e3f005d97", "fe66fc6f9"], "source_commits": ["2abc87953"], "source_entry_id": "9.4.21/changes/014", "db_id": "e006c28481e2a55db16d28c805352633", "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73", "relations": [{"rule": 2, "type": "equivalent", "target": "0a496a38c0b0b6f4ab2f6638c619f1b4", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}}, {"rule": 2, "type": "equivalent", "target": "a8c9373aada4826cbc39f1c06cfbe049", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}}, {"rule": 2, "type": "equivalent", "target": "ab6454b9c1c6337e8af4edb10bfdd0f1", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}}, {"rule": 2, "type": "equivalent", "target": "ca0ac4ee39d73cb3de7c04797db89709", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0a496a38c0b0b6f4ab2f6638c619f1b4", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免查询包含成千上万个可使用索引的子句时，规划时间以 O(N^2) 增长", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}, "url": "/docs/compare/?release=11.2#11.2-ce36192f0c0a7fdd", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "ca0ac4ee39d73cb3de7c04797db89709", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免查询包含成千上万个可使用索引的子句时，规划时间以 O(N^2) 增长", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}, "url": "/docs/compare/?release=10.7#10.7-ce36192f0c0a7fdd", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "ab6454b9c1c6337e8af4edb10bfdd0f1", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免查询包含数千个可索引子句时 O(N^2) 的规划时间增长", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}, "url": "/docs/compare/?release=9.6.12#9.6.12-644584d931a7f6d1", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "a8c9373aada4826cbc39f1c06cfbe049", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免查询包含数千个可索引子句时 O(N^2) 的规划时间增长", "evidence": {"same_day": true, "patch_ids": ["0912f086f01bc30847925ec6bc7d7489"], "statement_hash": "3195b99f61e63a1563de767582a58805cdd4a00e87311931ec01c60a5742ff73"}, "url": "/docs/compare/?release=9.5.16#9.5.16-644584d931a7f6d1", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-a558c732906fb020", "cves": [], "html": "<p>改进 <code>ANALYZE</code> 对并发更新行的处理（Jeff Janes、Tom Lane）</p>\n<p>此前，进行中事务删除的行被排除在 <code>ANALYZE</code> 的样本之外，但事实证明这比包含它们导致更多不一致。现在，样本实际上对应 <code>ANALYZE</code> 开始时刻的 MVCC 快照。</p>", "text": "改进 ANALYZE 对并发更新行的处理（Jeff Janes、Tom Lane） 此前，进行中事务删除的行被排除在 ANALYZE 的样本之外，但事实证明这比包含它们导致更多不一致。现在，样本实际上对应 ANALYZE 开始时刻的 MVCC 快照。", "title": "改进 ANALYZE 对并发更新行的处理", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "68b92b979f0f1e1a2a34d498d6326199d215f56d8a965fba7cb66ef80b2cabea", "section_path": ["变更"], "commit_groups": [["3010de813", "60de80cd2", "708931c2d", "7170268ef", "d2557c42a", "fc8adddd9"]], "identity_text": "Improve ANALYZE's handling of concurrently-updated rows (Jeff Janes, Tom Lane) Previously, rows deleted by an in-progress transaction were omitted from ANALYZE's sample, but this has been found to lead to more inconsistency than including them would do. In effect, the sample now corresponds to an MVCC snapshot as of ANALYZE's start time.", "commit_aliases": ["3010de813", "60de80cd2", "708931c2d", "7170268ef", "d2557c42a", "fc8adddd9"], "source_commits": ["3010de813"], "source_entry_id": "9.4.21/changes/015", "db_id": "a05df9f2fd20ee32f21f0d5e0ba1dc51", "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40", "relations": [{"rule": 2, "type": "equivalent", "target": "2fb9837020438844d1fb354dc4240f57", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}}, {"rule": 2, "type": "equivalent", "target": "45348ab6ed1c570431a1d61d73eebcd6", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}}, {"rule": 2, "type": "equivalent", "target": "65e06740e546a93ed9c9bb2f5c0ca8b2", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}}, {"rule": 2, "type": "equivalent", "target": "9a69f4d0cbaa57a27d628df448272eb9", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "65e06740e546a93ed9c9bb2f5c0ca8b2", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "改进 ANALYZE 对并发更新行的处理", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}, "url": "/docs/compare/?release=11.2#11.2-a558c732906fb020", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "2fb9837020438844d1fb354dc4240f57", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "改进 ANALYZE 对并发更新行的处理", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}, "url": "/docs/compare/?release=10.7#10.7-a558c732906fb020", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "9a69f4d0cbaa57a27d628df448272eb9", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "改进 ANALYZE 对并发更新行的处理", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}, "url": "/docs/compare/?release=9.6.12#9.6.12-a558c732906fb020", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "45348ab6ed1c570431a1d61d73eebcd6", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "改进 ANALYZE 对并发更新行的处理", "evidence": {"same_day": true, "patch_ids": ["3c34cbfb351f59987d9a949d4feb7c47"], "statement_hash": "913ee89a1c2564947f98228968097621de88b282c2722f24c6200ea4a49fae40"}, "url": "/docs/compare/?release=9.5.16#9.5.16-a558c732906fb020", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-44f0f31362cefde2", "cves": [], "html": "<p>让 <code>TRUNCATE</code> 忽略作为其他会话临时表的继承子表（Amit Langote、Michael Paquier）</p>\n<p>这使 <code>TRUNCATE</code> 与其他命令的行为一致。此前这种情况通常以失败告终。</p>", "text": "让 TRUNCATE 忽略作为其他会话临时表的继承子表（Amit Langote、Michael Paquier） 这使 TRUNCATE 与其他命令的行为一致。此前这种情况通常以失败告终。", "title": "让 TRUNCATE 忽略作为其他会话临时表的继承子表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "9177c508f3b577a0823d2d58c891e8dbbd4d985a8f00c535da39f16c52eba7db", "section_path": ["变更"], "commit_groups": [["0a323ae67", "1d7007671", "1e504f01d", "285abc8df", "b30b9dce1", "d4486700b"]], "identity_text": "Make TRUNCATE ignore inheritance child tables that are temporary tables of other sessions (Amit Langote, Michael Paquier) This brings TRUNCATE into line with the behavior of other commands. Previously, such cases usually ended in failure.", "commit_aliases": ["0a323ae67", "1d7007671", "1e504f01d", "285abc8df", "b30b9dce1", "d4486700b"], "source_commits": ["1d7007671"], "source_entry_id": "9.4.21/changes/016", "db_id": "ba9b63c069d724acd9ecc209c77d9c9e", "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab", "relations": [{"rule": 2, "type": "equivalent", "target": "299a173b84bdbba2b2ef7d7f5e68b412", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}}, {"rule": 2, "type": "equivalent", "target": "58b5ad27b1ad1e5d9ed30605286a7461", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}}, {"rule": 2, "type": "equivalent", "target": "c205e6791fa6f13866b21b6fa8dc3e6a", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}}, {"rule": 2, "type": "equivalent", "target": "e6df38661dbacd724751a1c6fbdf5b3b", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "e6df38661dbacd724751a1c6fbdf5b3b", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "使 TRUNCATE 忽略属于其他会话临时表的继承子表", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}, "url": "/docs/compare/?release=11.2#11.2-dc553965b9743522", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "58b5ad27b1ad1e5d9ed30605286a7461", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "使 TRUNCATE 忽略属于其他会话临时表的继承子表", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}, "url": "/docs/compare/?release=10.7#10.7-dc553965b9743522", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "299a173b84bdbba2b2ef7d7f5e68b412", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "让 TRUNCATE 忽略作为其他会话临时表的继承子表", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}, "url": "/docs/compare/?release=9.6.12#9.6.12-44f0f31362cefde2", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "c205e6791fa6f13866b21b6fa8dc3e6a", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "让 TRUNCATE 忽略作为其他会话临时表的继承子表", "evidence": {"same_day": true, "patch_ids": ["f92fd323b016dddd573493fc747398a4"], "statement_hash": "a99e870d67a97dea8231a9ec6a842903fcc5c68a387617d68b96f61c231754ab"}, "url": "/docs/compare/?release=9.5.16#9.5.16-44f0f31362cefde2", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-1a47f779c74d6724", "cves": [], "html": "<p>允许在热备模式下执行 <code>UNLISTEN</code>（Shay Rojansky）</p>\n<p>这必然是无操作，因为热备模式下不允许 <code>LISTEN</code>；但允许这个哑操作可以简化客户端的会话状态重置逻辑。</p>", "text": "允许在热备模式下执行 UNLISTEN（Shay Rojansky） 这必然是无操作，因为热备模式下不允许 LISTEN；但允许这个哑操作可以简化客户端的会话状态重置逻辑。", "title": "允许在热备模式下执行 UNLISTEN", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "f2739f22ad3cfc1b9e5a3920a824db91e8cd767312852a2aed69c3cac6e40c4e", "section_path": ["变更"], "commit_groups": [["0d5b27351", "549d2a238", "741ee4890", "c0aed6959", "e8ec19cd1", "ebfe20dc7"]], "identity_text": "Allow UNLISTEN in hot-standby mode (Shay Rojansky) This is necessarily a no-op, because LISTEN isn't allowed in hot-standby mode; but allowing the dummy operation simplifies session-state-reset logic in clients.", "commit_aliases": ["0d5b27351", "549d2a238", "741ee4890", "c0aed6959", "e8ec19cd1", "ebfe20dc7"], "source_commits": ["549d2a238"], "source_entry_id": "9.4.21/changes/017", "db_id": "6625060b7927b8eafc9245abfea8044c", "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55", "relations": [{"rule": 2, "type": "equivalent", "target": "708768e253446bd06415b86a54662152", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}}, {"rule": 2, "type": "equivalent", "target": "7b8867c396479789254d6f0f60c9c8bd", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}}, {"rule": 2, "type": "equivalent", "target": "94cef92c80be30a48888bcd91173fd61", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}}, {"rule": 2, "type": "equivalent", "target": "e2fccb10c50ec1ea815a44f2d6f7296c", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "e2fccb10c50ec1ea815a44f2d6f7296c", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "允许在热备模式下执行 UNLISTEN", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}, "url": "/docs/compare/?release=11.2#11.2-1a47f779c74d6724", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "708768e253446bd06415b86a54662152", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "允许在热备模式下执行 UNLISTEN", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}, "url": "/docs/compare/?release=10.7#10.7-1a47f779c74d6724", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "94cef92c80be30a48888bcd91173fd61", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "允许在热备模式下执行 UNLISTEN", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}, "url": "/docs/compare/?release=9.6.12#9.6.12-1a47f779c74d6724", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "7b8867c396479789254d6f0f60c9c8bd", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "允许在热备模式下执行 UNLISTEN", "evidence": {"same_day": true, "patch_ids": ["2ba9a4b7c4ee7927fd90c84d2f4a9f19"], "statement_hash": "fab9e03189f5d0663ef17e90457644cd321e734ecc54c35abcee773819afdb55"}, "url": "/docs/compare/?release=9.5.16#9.5.16-1a47f779c74d6724", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-3b43e6814038026c", "cves": [], "html": "<p>修复某些模式和数据类型权限列表中缺失的角色依赖（Tom Lane）</p>\n<p>某些情况下可以删除已被授予权限的角色。这不会立即造成问题，但之后的转储/恢复或升级会失败，症状涉及尝试向全数字角色名授予权限。</p>", "text": "修复某些模式和数据类型权限列表中缺失的角色依赖（Tom Lane） 某些情况下可以删除已被授予权限的角色。这不会立即造成问题，但之后的转储/恢复或升级会失败，症状涉及尝试向全数字角色名授予权限。", "title": "修复某些模式和数据类型权限列表中缺失的角色依赖", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "14c30d6b1c3223bd20a46e90d3ce35fe4a7fe9a889b2dd2b10b0eec47ca6284c", "section_path": ["变更"], "commit_groups": [["1b55acb2c", "277602dfe", "2d83863ea", "47088c599", "d431dff1a", "fa2952d8e"]], "identity_text": "Fix missing role dependencies in some schema and data type permissions lists (Tom Lane) In some cases it was possible to drop a role to which permissions had been granted. This caused no immediate problem, but a subsequent dump/reload or upgrade would fail, with symptoms involving attempts to grant privileges to all-numeric role names.", "commit_aliases": ["1b55acb2c", "277602dfe", "2d83863ea", "47088c599", "d431dff1a", "fa2952d8e"], "source_commits": ["277602dfe"], "source_entry_id": "9.4.21/changes/018", "db_id": "4eda5d9ab12a7448ef8e5446fd8c876b", "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac", "relations": [{"rule": 2, "type": "equivalent", "target": "1f9dbe8d83e50c9dfbb8a4a84ac9cf3c", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}}, {"rule": 2, "type": "equivalent", "target": "41a2c2a31ea2bddf0ea59232dc00f373", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}}, {"rule": 2, "type": "equivalent", "target": "4c08124dc69c204f4ca81d42af9564a8", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}}, {"rule": 2, "type": "equivalent", "target": "f3a1e2db616132bd97c4a5cbf0c40e7d", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "4c08124dc69c204f4ca81d42af9564a8", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复某些模式和数据类型权限列表中缺失的角色依赖关系", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}, "url": "/docs/compare/?release=11.2#11.2-dfe979458f83b322", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "f3a1e2db616132bd97c4a5cbf0c40e7d", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复某些模式和数据类型权限列表中缺失的角色依赖关系", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}, "url": "/docs/compare/?release=10.7#10.7-dfe979458f83b322", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "41a2c2a31ea2bddf0ea59232dc00f373", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复某些模式和数据类型权限列表中缺失的角色依赖", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}, "url": "/docs/compare/?release=9.6.12#9.6.12-3b43e6814038026c", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "1f9dbe8d83e50c9dfbb8a4a84ac9cf3c", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复某些模式和数据类型权限列表中缺失的角色依赖", "evidence": {"same_day": true, "patch_ids": ["5ac55c03b44ba05b76a8d540ef004213"], "statement_hash": "982275dc540653641963ac36ffa17bd21b9593ff3ec13e97427705b369dba8ac"}, "url": "/docs/compare/?release=9.5.16#9.5.16-3b43e6814038026c", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-70e42571f10e957a", "cves": [], "html": "<p>确保重命名约束后关系缓存被正确更新（Amit Langote）</p>", "text": "确保重命名约束后关系缓存被正确更新（Amit Langote）", "title": "确保重命名约束后关系缓存被正确更新", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "5e42bf51399ea051aa38151bc0b3b244289a3e7f2214d8f33e5f8db73c357746", "section_path": ["变更"], "commit_groups": [["25b8094d3", "5812be7b6", "b13fd344c", "d5d86e2cd", "d79cd555d", "da13d90a5"], ["419bd6371", "67915fb8e", "696c68c2b", "91fc2a088", "c7567e09d", "e83e0988d"]], "identity_text": "Ensure relation caches are updated properly after renaming constraints (Amit Langote)", "commit_aliases": ["25b8094d3", "419bd6371", "5812be7b6", "67915fb8e", "696c68c2b", "91fc2a088", "b13fd344c", "c7567e09d", "d5d86e2cd", "d79cd555d", "da13d90a5", "e83e0988d"], "source_commits": ["696c68c2b", "d5d86e2cd"], "source_entry_id": "9.4.21/changes/019", "db_id": "b092e5abaaa4e2a09d95b524be4dcf6a", "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea", "relations": [{"rule": 2, "type": "equivalent", "target": "8ae7a2b7e62bf1b39ef2e189d295ef75", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}}, {"rule": 2, "type": "equivalent", "target": "9177ddb98c6a588683d9d46ee0f12f8b", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}}, {"rule": 2, "type": "equivalent", "target": "af9014d4600b1600abbfdce2728a3606", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}}, {"rule": 2, "type": "equivalent", "target": "ea437fbace73394111d185889a2c5941", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8ae7a2b7e62bf1b39ef2e189d295ef75", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "确保重命名约束后正确更新关系缓存", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}, "url": "/docs/compare/?release=11.2#11.2-71386491ae57fa0d", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "ea437fbace73394111d185889a2c5941", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "确保重命名约束后正确更新关系缓存", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}, "url": "/docs/compare/?release=10.7#10.7-71386491ae57fa0d", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "9177ddb98c6a588683d9d46ee0f12f8b", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "确保重命名约束之后正确更新关系缓存", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}, "url": "/docs/compare/?release=9.6.12#9.6.12-58effc13a3cc301f", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "af9014d4600b1600abbfdce2728a3606", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "确保重命名约束之后正确更新关系缓存", "evidence": {"same_day": true, "patch_ids": ["7935b6f19f2fafdf66a2920f71fb4433", "c5b90155b42004f82cd49beca064ac22"], "statement_hash": "d7ae29c47b4519923e1534ecb7ceb8cfb548cebcf38d4650ad194e41161a23ea"}, "url": "/docs/compare/?release=9.5.16#9.5.16-58effc13a3cc301f", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-c879f8068116d476", "cves": [], "html": "<p>让自动清理更积极地移除遗留的临时表，并在 <code>DISCARD TEMP</code> 期间也移除遗留临时表（Álvaro Herrera）</p>\n<p>这有助于确保崩溃会话的残留更及时地被清理。</p>", "text": "让自动清理更积极地移除遗留的临时表，并在 DISCARD TEMP 期间也移除遗留临时表（Álvaro Herrera） 这有助于确保崩溃会话的残留更及时地被清理。", "title": "让自动清理更积极地移除遗留的临时表，并在 DISCARD TEMP 期间也移除遗留临时表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "8f26a05930277b7cbd2ce4134407188d8ec7f3178c3534dc27ed97b0e5638a4c", "section_path": ["变更"], "commit_groups": [["2602838fa", "3c4ca2109", "aa2e84d2c", "b7258a30a"], ["5199abaca", "7fc2363a6", "a6ca47cd2", "a85045ccc"]], "identity_text": "Make autovacuum more aggressive about removing leftover temporary tables, and also remove leftover temporary tables during DISCARD TEMP (Álvaro Herrera) This helps ensure that remnants from a crashed session are cleaned up more promptly.", "commit_aliases": ["2602838fa", "3c4ca2109", "5199abaca", "7fc2363a6", "a6ca47cd2", "a85045ccc", "aa2e84d2c", "b7258a30a"], "source_commits": ["2602838fa", "5199abaca"], "source_entry_id": "9.4.21/changes/020", "db_id": "40eaccd78b6f81b22d8851702823f7aa", "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f", "relations": [{"rule": 2, "type": "equivalent", "target": "05ef076011bdfb0351d7a612d523f872", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}}, {"rule": 2, "type": "equivalent", "target": "9de8f5cc1ca5851f7e58bbc5ae8dd71d", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}}, {"rule": 2, "type": "equivalent", "target": "df3a9825a1e11da00e756da6cd5ab7b8", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "df3a9825a1e11da00e756da6cd5ab7b8", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "使自动清理更积极地移除残留临时表，并在 DISCARD TEMP 期间也移除残留临时表", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}, "url": "/docs/compare/?release=10.7#10.7-8c06144b06267ae2", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "9de8f5cc1ca5851f7e58bbc5ae8dd71d", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "让自动清理更积极地移除遗留的临时表，并在 DISCARD TEMP 期间也移除遗留临时表", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}, "url": "/docs/compare/?release=9.6.12#9.6.12-c879f8068116d476", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "05ef076011bdfb0351d7a612d523f872", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "让自动清理更积极地移除遗留的临时表，并在 DISCARD TEMP 期间也移除遗留临时表", "evidence": {"same_day": true, "patch_ids": ["455619fed1294a8366e80fef6d18238d", "68bb75b8f35bfc70496671d38a09f9e6"], "statement_hash": "1fb426492ae09d2a8ff21ddf8a115c37390e99ec874d4dc94156d74a5246372f"}, "url": "/docs/compare/?release=9.5.16#9.5.16-c879f8068116d476", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-7ee7e7bb88d5bc6e", "cves": [], "html": "<p>防止空的 GIN 索引页被过快回收而导致并发搜索失败（Andrey Borodin、Alexander Korotkov）</p>", "text": "防止空的 GIN 索引页被过快回收而导致并发搜索失败（Andrey Borodin、Alexander Korotkov）", "title": "防止空的 GIN 索引页被过快回收而导致并发搜索失败", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "8ddbfce89baacc0720052e2b2597e09a1346df0e4a2c1b5de43c0294f5751a90", "section_path": ["变更"], "commit_groups": [["1cf175c74", "52ac6cd2d", "a0696d295", "ad6ebcfcb", "cd24b4eae", "dd951dc34"]], "identity_text": "Prevent empty GIN index pages from being reclaimed too quickly, causing failures of concurrent searches (Andrey Borodin, Alexander Korotkov)", "commit_aliases": ["1cf175c74", "52ac6cd2d", "a0696d295", "ad6ebcfcb", "cd24b4eae", "dd951dc34"], "source_commits": ["1cf175c74"], "source_entry_id": "9.4.21/changes/021", "db_id": "e4e38acaedb25796b89997c3ca1e52ee", "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc", "relations": [{"rule": 2, "type": "equivalent", "target": "3b43bca06e3d86d77965231396d53731", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}}, {"rule": 2, "type": "equivalent", "target": "c67eaad49f3b340ee599e655c5022f9c", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}}, {"rule": 2, "type": "equivalent", "target": "e9ee59ea363bbacadc9b0ff06e603540", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}}, {"rule": 2, "type": "equivalent", "target": "fa9d017f7b5fe28f0e3b15789d1f24f7", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "fa9d017f7b5fe28f0e3b15789d1f24f7", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "防止过快回收空 GIN 索引页而导致并发搜索失败", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}, "url": "/docs/compare/?release=11.2#11.2-7e0da53694738bdb", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "c67eaad49f3b340ee599e655c5022f9c", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "防止过快回收空 GIN 索引页而导致并发搜索失败", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}, "url": "/docs/compare/?release=10.7#10.7-7e0da53694738bdb", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "e9ee59ea363bbacadc9b0ff06e603540", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "防止空 GIN 索引页被过快回收导致并发搜索失败", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}, "url": "/docs/compare/?release=9.6.12#9.6.12-baf0199c82e59955", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "3b43bca06e3d86d77965231396d53731", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "防止空 GIN 索引页被过快回收导致并发搜索失败", "evidence": {"same_day": true, "patch_ids": ["176f89fff105e5b2fb146ac5afff4bea"], "statement_hash": "b7681bb53c5466ddf4658caa76606878d987b0c82da15b58354e7021e3bf06bc"}, "url": "/docs/compare/?release=9.5.16#9.5.16-baf0199c82e59955", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-43085d804c0ed040", "cves": [], "html": "<p>修复浮点到整数强制转换的边界失败（Andrew Gierth、Tom Lane）</p>\n<p>略高于最大有效整数值的值可能未被拒绝，随后发生溢出，产生最小有效整数。另外，本应舍入到最小或最大整数值的值可能被错误拒绝。</p>", "text": "修复浮点到整数强制转换的边界失败（Andrew Gierth、Tom Lane） 略高于最大有效整数值的值可能未被拒绝，随后发生溢出，产生最小有效整数。另外，本应舍入到最小或最大整数值的值可能被错误拒绝。", "title": "修复浮点到整数强制转换的边界失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "3b74196a392cc448f3622f909708f5cc10e7dc805359d1aca611a80b948820c3", "section_path": ["变更"], "commit_groups": [["1e78603a5", "452b637d4", "93eec1238", "c382a2b66", "d5231253e", "e473e1f2b"], ["1f99d0867", "298510cae", "3645d3193", "745871483", "bf9fb00dd"], ["cbdb8b4c0"]], "identity_text": "Fix edge-case failures in float-to-integer coercions (Andrew Gierth, Tom Lane) Values very slightly above the maximum valid integer value might not be rejected, and then would overflow, producing the minimum valid integer instead. Also, values that should round to the minimum or maximum integer value might be incorrectly rejected.", "commit_aliases": ["1e78603a5", "1f99d0867", "298510cae", "3645d3193", "452b637d4", "745871483", "93eec1238", "bf9fb00dd", "c382a2b66", "cbdb8b4c0", "d5231253e", "e473e1f2b"], "source_commits": ["bf9fb00dd", "cbdb8b4c0", "d5231253e"], "source_entry_id": "9.4.21/changes/022", "db_id": "1ef0cef16e8053402d0790f6a3ac03aa", "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a", "relations": [{"rule": 2, "type": "equivalent", "target": "81a2ae019c7c1966d10fc81a4d3110d8", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}}, {"rule": 2, "type": "equivalent", "target": "a8bc9a54d333b9c766b9cdd860ad0c9f", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}}, {"rule": 2, "type": "equivalent", "target": "b50067b48d850e56dbdaf39760cde494", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}}, {"rule": 2, "type": "equivalent", "target": "bd715bf807d1e5defdffedec1ff0887b", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bd715bf807d1e5defdffedec1ff0887b", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复浮点数到整数强制转换在边界情况下的失败", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}, "url": "/docs/compare/?release=11.2#11.2-b7ce5cf7a988fee2", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "81a2ae019c7c1966d10fc81a4d3110d8", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复浮点数到整数强制转换在边界情况下的失败", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}, "url": "/docs/compare/?release=10.7#10.7-b7ce5cf7a988fee2", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "b50067b48d850e56dbdaf39760cde494", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复浮点到整数强制转换的边界失败", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}, "url": "/docs/compare/?release=9.6.12#9.6.12-43085d804c0ed040", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "a8bc9a54d333b9c766b9cdd860ad0c9f", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复浮点到整数强制转换的边界失败", "evidence": {"same_day": true, "patch_ids": ["2b7d199aea91cf666d8d1637425eeac9", "c7d5b25589c9e08d303a9743dcfebbb0", "e2b707cdc8d37ec8590791fd287e35d6"], "statement_hash": "892523caf934df8ab44c92ca64867536471202af374bae37e9065d5696806d8a"}, "url": "/docs/compare/?release=9.5.16#9.5.16-43085d804c0ed040", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-4af5d80e9c619b26", "cves": [], "html": "<p>禁止把 <code>client_min_messages</code> 设得比 <code>ERROR</code> 更高（Jonah Harris、Tom Lane）</p>\n<p>此前可以把该变量设为 <code>FATAL</code> 或 <code>PANIC</code>，效果是抑制向客户端传输普通错误消息。然而这违背了 <span>PostgreSQL</span> 线上协议规范中给出的保证，并导致一些客户端非常困惑。在已发布分支中，通过把这种设置静默地当作 <code>ERROR</code> 处理来修复。版本 12 及之后将彻底拒绝这些选项。</p>", "text": "禁止把 client_min_messages 设得比 ERROR 更高（Jonah Harris、Tom Lane） 此前可以把该变量设为 FATAL 或 PANIC，效果是抑制向客户端传输普通错误消息。然而这违背了 PostgreSQL 线上协议规范中给出的保证，并导致一些客户端非常困惑。在已发布分支中，通过把这种设置静默地当作 ERROR 处理来修复。版本 12 及之后将彻底拒绝这些选项。", "title": "禁止把 client_min_messages 设得比 ERROR 更高", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "6283b795fee8aa1a027a5e75e714ac86c0a2ff31d484fbef381c73d96ae75509", "section_path": ["变更"], "commit_groups": [["041ad9a66", "2407d4807", "3d360e20c", "7b08b4a8a", "88275ac19", "c09daa910"]], "identity_text": "Disallow setting client_min_messages higher than ERROR (Jonah Harris, Tom Lane) Previously, it was possible to set this variable to FATAL or PANIC, which had the effect of suppressing transmission of ordinary error messages to the client. However, that's contrary to guarantees that are given in the PostgreSQL wire protocol specification, and it caused some clients to become very confused. In released branches, fix this by silently treating such settings as meaning ERROR instead. Version 12 and later will reject those alternatives altogether.", "commit_aliases": ["041ad9a66", "2407d4807", "3d360e20c", "7b08b4a8a", "88275ac19", "c09daa910"], "source_commits": ["2407d4807"], "source_entry_id": "9.4.21/changes/023", "db_id": "d27351c52e3bcf245b344371ca961ac0", "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73", "relations": [{"rule": 2, "type": "equivalent", "target": "00afac51149d596e81beb96b7961f8ac", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}}, {"rule": 2, "type": "equivalent", "target": "576a15adacf237a3eea4307a28cac774", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}}, {"rule": 2, "type": "equivalent", "target": "58f9c63185a21e00c0eb32062d09e85b", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}}, {"rule": 2, "type": "equivalent", "target": "e48d0ef4451aa657e2263bc107d75299", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "58f9c63185a21e00c0eb32062d09e85b", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "禁止将 client_min_messages 设置为高于 ERROR 的级别", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}, "url": "/docs/compare/?release=11.2#11.2-0dc4426a09ca2188", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "00afac51149d596e81beb96b7961f8ac", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "禁止将 client_min_messages 设置为高于 ERROR 的级别", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}, "url": "/docs/compare/?release=10.7#10.7-0dc4426a09ca2188", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "e48d0ef4451aa657e2263bc107d75299", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "禁止把 client_min_messages 设得比 ERROR 更高", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}, "url": "/docs/compare/?release=9.6.12#9.6.12-4af5d80e9c619b26", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "576a15adacf237a3eea4307a28cac774", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "禁止把 client_min_messages 设得比 ERROR 更高", "evidence": {"same_day": true, "patch_ids": ["9a86cb436a2089c18bd5a31ec45c903e"], "statement_hash": "6ff305814c145e16d87d251b327ccae28792a746d8eb5bac329573c5a8792f73"}, "url": "/docs/compare/?release=9.5.16#9.5.16-4af5d80e9c619b26", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-24df55732709ec80", "cves": [], "html": "<p>修复 <span>ecpglib</span> 优先使用 <code>uselocale()</code> 或 <code>_configthreadlocale()</code> 而不是 <code>setlocale()</code>（Michael Meskes、Tom Lane）</p>\n<p>由于 <code>setlocale()</code> 不是线程局部的，甚至可能不是线程安全的，原来的编码在多线程 <span>ecpg</span> 应用中造成问题。</p>", "text": "修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()（Michael Meskes、Tom Lane） 由于 setlocale() 不是线程局部的，甚至可能不是线程安全的，原来的编码在多线程 ecpg 应用中造成问题。", "title": "修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "338159133dcab8f457174d136f113eb4ed6436b518fa7b9013d8ba1793f94df0", "section_path": ["变更"], "commit_groups": [["1d334ab6e", "2cf91ccb7", "773f59440", "7ac0e71aa", "b620cf2d4", "dd815a94c"], ["6106f9dd7", "844d91fd6", "c9ff6cbfc", "eb3e90cad", "ee27584c4", "f305e8457"], ["8eb4a9312"]], "identity_text": "Fix ecpglib to use uselocale() or _configthreadlocale() in preference to setlocale() (Michael Meskes, Tom Lane) Since setlocale() is not thread-local, and might not even be thread-safe, the previous coding caused problems in multi-threaded ecpg applications.", "commit_aliases": ["1d334ab6e", "2cf91ccb7", "6106f9dd7", "773f59440", "7ac0e71aa", "844d91fd6", "8eb4a9312", "b620cf2d4", "c9ff6cbfc", "dd815a94c", "eb3e90cad", "ee27584c4", "f305e8457"], "source_commits": ["773f59440", "8eb4a9312", "c9ff6cbfc"], "source_entry_id": "9.4.21/changes/024", "db_id": "3f96a8054b473aa8da500d6b375865dd", "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9", "relations": [{"rule": 2, "type": "equivalent", "target": "33a6d563bd4b29c92a63f6b684bf6fb6", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}}, {"rule": 2, "type": "equivalent", "target": "45d213b7196fa46471cd8cef8f127df4", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}}, {"rule": 2, "type": "equivalent", "target": "625b5b92d86d5f7ec6c3f0d1ad82c1fc", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}}, {"rule": 2, "type": "equivalent", "target": "de6c21cfe18fc1799ec8f7320e27e927", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "de6c21cfe18fc1799ec8f7320e27e927", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复 ecpglib，使其优先使用 uselocale() 或 _configthreadlocale()，而非 setlocale()", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}, "url": "/docs/compare/?release=11.2#11.2-fd24e422418d0b2b", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "45d213b7196fa46471cd8cef8f127df4", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复 ecpglib，使其优先使用 uselocale() 或 _configthreadlocale()，而非 setlocale()", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}, "url": "/docs/compare/?release=10.7#10.7-fd24e422418d0b2b", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "33a6d563bd4b29c92a63f6b684bf6fb6", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}, "url": "/docs/compare/?release=9.6.12#9.6.12-24df55732709ec80", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "625b5b92d86d5f7ec6c3f0d1ad82c1fc", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()", "evidence": {"same_day": true, "patch_ids": ["4e535b9607623c7334107aea49d29b4c", "a13fd1c0b6e15010d5239deebefc848f", "c4411694bb26d3e522cd39983bc36b49"], "statement_hash": "4626b06fdf5f6400e94bcc1adf023536868d98d7ac8de44a216107da573db8b9"}, "url": "/docs/compare/?release=9.5.16#9.5.16-24df55732709ec80", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-fc680b6513160f6d", "cves": [], "html": "<p>修复通过 <span>ecpg</span> <acronym>SQLDA</acronym>（SQL 描述符区域）传递的 numeric 数据的错误结果（Daisuke Higuchi）</p>\n<p>带前导零的值没有被正确复制。</p>", "text": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的 numeric 数据的错误结果（Daisuke Higuchi） 带前导零的值没有被正确复制。", "title": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的 numeric 数据的错误结果", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "aba1bd79306e14b0532491247b8d57a6e1deb69d9b192a7e292b7420e9888942", "section_path": ["变更"], "commit_groups": [["06c723447", "2e8ed4659", "41609776f", "4618fdd67", "68f30638a", "f9e25ba14"], ["32060f678", "68393f3fd", "9e5e3861c", "be38945c6", "e1f259012", "ecfd55795"]], "identity_text": "Fix incorrect results for numeric data passed through an ecpg SQLDA (SQL Descriptor Area) (Daisuke Higuchi) Values with leading zeroes were not copied correctly.", "commit_aliases": ["06c723447", "2e8ed4659", "32060f678", "41609776f", "4618fdd67", "68393f3fd", "68f30638a", "9e5e3861c", "be38945c6", "e1f259012", "ecfd55795", "f9e25ba14"], "source_commits": ["41609776f", "9e5e3861c"], "source_entry_id": "9.4.21/changes/025", "db_id": "b1c1d33dbed698c77a751b8f391cc2d1", "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797", "relations": [{"rule": 2, "type": "equivalent", "target": "01d435523e7c790e12b2b8dfcc84cbf6", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}}, {"rule": 2, "type": "equivalent", "target": "0c9f1340d6467102413c6d9b3b8feb42", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}}, {"rule": 2, "type": "equivalent", "target": "d5e68bd908a05fdb6610828b56036d0d", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}}, {"rule": 2, "type": "equivalent", "target": "d9a5d1d2e05d9ec248430f8e7952bd18", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0c9f1340d6467102413c6d9b3b8feb42", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的数值数据结果不正确的问题", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}, "url": "/docs/compare/?release=11.2#11.2-45dbc194b94f4cbe", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "01d435523e7c790e12b2b8dfcc84cbf6", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的数值数据结果不正确的问题", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}, "url": "/docs/compare/?release=10.7#10.7-45dbc194b94f4cbe", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "d5e68bd908a05fdb6610828b56036d0d", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的 numeric 数据的错误结果", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}, "url": "/docs/compare/?release=9.6.12#9.6.12-fc680b6513160f6d", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "d9a5d1d2e05d9ec248430f8e7952bd18", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复通过 ecpg SQLDA（SQL 描述符区域）传递的 numeric 数据的错误结果", "evidence": {"same_day": true, "patch_ids": ["3e2ed163afd32784067e11ef1d92585f", "d368ed5b1a0dbe4032c0bb31b6671f10"], "statement_hash": "d0a89e5e9f09f214e6300b13c4222fefbca457a005efe79f12366b4a5f55f797"}, "url": "/docs/compare/?release=9.5.16#9.5.16-fc680b6513160f6d", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-9277e36b7b4ec631", "cves": [], "html": "<p>让 <span>psql</span> 的 LaTeX 输出格式正确渲染特殊字符（Tom Lane）</p>\n<p>反斜线和某些其他 ASCII 标点字符没有被正确渲染，导致文档语法错误或输出中的错误字符。</p>", "text": "让 psql 的 LaTeX 输出格式正确渲染特殊字符（Tom Lane） 反斜线和某些其他 ASCII 标点字符没有被正确渲染，导致文档语法错误或输出中的错误字符。", "title": "让 psql 的 LaTeX 输出格式正确渲染特殊字符", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "906a91139be6520262dddbee664afda07fbf2f9cc427d86d2015d2be4cdf2094", "section_path": ["变更"], "commit_groups": [["18a0a8548", "70d7e507e", "74bfb5388", "815409093", "ac305ff8c", "b352cf7a8"]], "identity_text": "Make psql's LaTeX output formats render special characters properly (Tom Lane) Backslash and some other ASCII punctuation characters were not rendered correctly, leading to document syntax errors or wrong characters in the output.", "commit_aliases": ["18a0a8548", "70d7e507e", "74bfb5388", "815409093", "ac305ff8c", "b352cf7a8"], "source_commits": ["74bfb5388"], "source_entry_id": "9.4.21/changes/026", "db_id": "12adaa842f4599e25d434ab48835f6e0", "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544", "relations": [{"rule": 2, "type": "equivalent", "target": "34cef121c7493649d500f2d8e0fc6c3e", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}}, {"rule": 2, "type": "equivalent", "target": "41f1ae7aff68bf8c0a07d0e75df1c8cb", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}}, {"rule": 2, "type": "equivalent", "target": "82efaccc909edce2e198d3044d547df2", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}}, {"rule": 2, "type": "equivalent", "target": "b85bd708bcef2c922bd53a37ba150d27", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "41f1ae7aff68bf8c0a07d0e75df1c8cb", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "使 psql 的 LaTeX 输出格式正确呈现特殊字符", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}, "url": "/docs/compare/?release=11.2#11.2-0764c5ad9aea9a88", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "82efaccc909edce2e198d3044d547df2", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "使 psql 的 LaTeX 输出格式正确呈现特殊字符", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}, "url": "/docs/compare/?release=10.7#10.7-0764c5ad9aea9a88", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "b85bd708bcef2c922bd53a37ba150d27", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "让 psql 的 LaTeX 输出格式正确渲染特殊字符", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}, "url": "/docs/compare/?release=9.6.12#9.6.12-9277e36b7b4ec631", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "34cef121c7493649d500f2d8e0fc6c3e", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "让 psql 的 LaTeX 输出格式正确渲染特殊字符", "evidence": {"same_day": true, "patch_ids": ["0d22e3a5a55971379d0c07fd29212ac8"], "statement_hash": "1780726b51bc0a6d0b5a07ecf49a5eeab18852953ebc9d571ed19f81e9392544"}, "url": "/docs/compare/?release=9.5.16#9.5.16-9277e36b7b4ec631", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-826fd7f161eaee93", "cves": [], "html": "<p>修复 <span>pg_dump</span> 对间接依赖主键的物化视图的处理（Tom Lane）</p>\n<p>这导致此类视图的转储归档条目被错误标记，产生关于 <span>“<span>archive items not in correct section order</span>”</span> 的无害警告；更有害的是，依赖这些标签的选择性恢复选项（如 <code>--section</code>）可能行为异常。</p>", "text": "修复 pg_dump 对间接依赖主键的物化视图的处理（Tom Lane） 这导致此类视图的转储归档条目被错误标记，产生关于 “archive items not in correct section order” 的无害警告；更有害的是，依赖这些标签的选择性恢复选项（如 --section）可能行为异常。", "title": "修复 pg_dump 对间接依赖主键的物化视图的处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "fa27fbf54bfff32968e30c1e82d9b35cfb2b405a98ca745af159303c03591d36", "section_path": ["变更"], "commit_groups": [["16e0464a1", "2f93b74bf", "6e4d45b5f", "9368ba174", "b8de846a5", "dc42602f1"]], "identity_text": "Fix pg_dump's handling of materialized views with indirect dependencies on primary keys (Tom Lane) This led to mis-labeling of such views' dump archive entries, causing harmless warnings about archive items not in correct section order; less harmlessly, selective-restore options depending on those labels, such as --section, might misbehave.", "commit_aliases": ["16e0464a1", "2f93b74bf", "6e4d45b5f", "9368ba174", "b8de846a5", "dc42602f1"], "source_commits": ["2f93b74bf"], "source_entry_id": "9.4.21/changes/027", "db_id": "dcc06d23939bee8c416fc5d25fc9e2f6", "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85", "relations": [{"rule": 2, "type": "equivalent", "target": "0c84a59475fdf415649c3fca62db12e9", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}}, {"rule": 2, "type": "equivalent", "target": "ac45cc38f0e92596abe6e88dd63627c4", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}}, {"rule": 2, "type": "equivalent", "target": "ed75610318f26953695685c0cc9914ea", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}}, {"rule": 2, "type": "equivalent", "target": "f3494c6e100c97ff9ac7c9af38b0f919", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f3494c6e100c97ff9ac7c9af38b0f919", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复 pg_dump 对间接依赖主键的物化视图的处理", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}, "url": "/docs/compare/?release=11.2#11.2-826fd7f161eaee93", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "ed75610318f26953695685c0cc9914ea", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复 pg_dump 对间接依赖主键的物化视图的处理", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}, "url": "/docs/compare/?release=10.7#10.7-826fd7f161eaee93", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "ac45cc38f0e92596abe6e88dd63627c4", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复 pg_dump 对间接依赖主键的物化视图的处理", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}, "url": "/docs/compare/?release=9.6.12#9.6.12-826fd7f161eaee93", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "0c84a59475fdf415649c3fca62db12e9", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复 pg_dump 对间接依赖主键的物化视图的处理", "evidence": {"same_day": true, "patch_ids": ["225a035e5d0a62deac6d9cad98b020bb"], "statement_hash": "2910d1a5028eb80b5f1d0afde01e4f07726e139e3aa8aad32ace8df485beea85"}, "url": "/docs/compare/?release=9.5.16#9.5.16-826fd7f161eaee93", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-7dba63c6ef94f6e3", "cves": [], "html": "<p>避免<span>pg_dump</span>或<span>pg_restore</span>尝试报告错误时在某些平台上出现空指针解引用崩溃（Tom Lane）</p>", "text": "避免pg_dump或pg_restore尝试报告错误时在某些平台上出现空指针解引用崩溃（Tom Lane）", "title": "避免pg_dump或pg_restore尝试报告错误时在某些平台上出现空指针解引用崩溃", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "9c4d383883044df741c3aa0d7aa17598fe49646148a68a4d9107c239b1b229c2", "section_path": ["变更"], "commit_groups": [["2b6009e2a", "2c8332177", "4dbe19690", "73668c590", "ed46d0d32", "ef9bf3593"]], "identity_text": "Avoid null-pointer-dereference crash on some platforms when pg_dump or pg_restore tries to report an error (Tom Lane)", "commit_aliases": ["2b6009e2a", "2c8332177", "4dbe19690", "73668c590", "ed46d0d32", "ef9bf3593"], "source_commits": ["ed46d0d32"], "source_entry_id": "9.4.21/changes/028", "db_id": "076130892bd0f29ac59b6750d52a01cf", "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948", "relations": [{"rule": 2, "type": "equivalent", "target": "21be836bee7a64905e1235eb537030b4", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}}, {"rule": 2, "type": "equivalent", "target": "646b79b07847b0b3cc9f38999c955953", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}}, {"rule": 2, "type": "equivalent", "target": "7cd4fd1329cb6190a2d9dc9a02a62ce8", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}}, {"rule": 2, "type": "equivalent", "target": "d78f112d08578b7d46e95c08df306243", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "21be836bee7a64905e1235eb537030b4", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免 pg_dump 或 pg_restore 尝试报告错误时，在某些平台上因空指针解引用而崩溃", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}, "url": "/docs/compare/?release=11.2#11.2-99b4668cd3f3529f", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "d78f112d08578b7d46e95c08df306243", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免 pg_dump 或 pg_restore 尝试报告错误时，在某些平台上因空指针解引用而崩溃", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}, "url": "/docs/compare/?release=10.7#10.7-99b4668cd3f3529f", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "646b79b07847b0b3cc9f38999c955953", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免 pg_dump 或 pg_restore 尝试报告错误时在某些平台上的空指针解引用崩溃", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}, "url": "/docs/compare/?release=9.6.12#9.6.12-bd4d066aa0f3ea5e", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "7cd4fd1329cb6190a2d9dc9a02a62ce8", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免 pg_dump 或 pg_restore 尝试报告错误时在某些平台上的空指针解引用崩溃", "evidence": {"same_day": true, "patch_ids": ["8449bac03ac98ea37ec791b5fc11c33d"], "statement_hash": "d52b019aabe44c168eded5320c19bf9f077f75b13d187e77fbfde5f3dba93948"}, "url": "/docs/compare/?release=9.5.16#9.5.16-bd4d066aa0f3ea5e", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-eb794b19b24b956c", "cves": [], "html": "<p>修复 <code>contrib/hstore</code> 为 8.4 或更早版本中创建的空 <code>hstore</code> 值计算正确的哈希值（Andrew Gierth）</p>\n<p>原来的编码给出的结果与更新版本创建的空 <code>hstore</code> 值不同，因此可能导致哈希连接或哈希聚合的错误结果。如果表可能包含最早存储于 8.4 且此后从未转储/恢复过的数据，建议对 <code>hstore</code> 列上的哈希索引执行 REINDEX。</p>", "text": "修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值（Andrew Gierth） 原来的编码给出的结果与更新版本创建的空 hstore 值不同，因此可能导致哈希连接或哈希聚合的错误结果。如果表可能包含最早存储于 8.4 且此后从未转储/恢复过的数据，建议对 hstore 列上的哈希索引执行 REINDEX。", "title": "修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "126e199f6fb7baf3d476e3cef2b5eb95be4c9c9cfee8c2d555af9c4c0cc8f063", "section_path": ["变更"], "commit_groups": [["02e669c0f", "239abfff1", "8087788f6", "bcbb68278", "d5890f49d", "e5a6ae97e"]], "identity_text": "Fix contrib/hstore to calculate correct hash values for empty hstore values that were created in version 8.4 or before (Andrew Gierth) The previous coding did not give the same result as for an empty hstore value created by a newer version, thus potentially causing wrong results in hash joins or hash aggregation. It is advisable to reindex any hash indexes built on hstore columns, if the table might contain data that was originally stored as far back as 8.4 and was never dumped/reloaded since then.", "commit_aliases": ["02e669c0f", "239abfff1", "8087788f6", "bcbb68278", "d5890f49d", "e5a6ae97e"], "source_commits": ["e5a6ae97e"], "source_entry_id": "9.4.21/changes/029", "db_id": "055834090bf88d5f92e466160d3bbda4", "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5", "relations": [{"rule": 2, "type": "equivalent", "target": "434a271b68add8d6a8b515e094e66783", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}}, {"rule": 2, "type": "equivalent", "target": "876fabb14ec0313206f04e471d934643", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}}, {"rule": 2, "type": "equivalent", "target": "97160ddd803569a7384f09ff7e91186a", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}}, {"rule": 2, "type": "equivalent", "target": "c8cb8ec0847b1a07ec02b663fdf12de7", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "434a271b68add8d6a8b515e094e66783", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复 contrib/hstore，使其为版本 8.4 或更早版本创建的空 hstore 值计算正确的 hash 值", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}, "url": "/docs/compare/?release=11.2#11.2-d2344a23897ef634", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "c8cb8ec0847b1a07ec02b663fdf12de7", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复 contrib/hstore，使其为版本 8.4 或更早版本创建的空 hstore 值计算正确的 hash 值", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}, "url": "/docs/compare/?release=10.7#10.7-d2344a23897ef634", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "876fabb14ec0313206f04e471d934643", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}, "url": "/docs/compare/?release=9.6.12#9.6.12-eb794b19b24b956c", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "97160ddd803569a7384f09ff7e91186a", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值", "evidence": {"same_day": true, "patch_ids": ["bab1287e035cd1bef1182b510084a83a"], "statement_hash": "9ea45f86214864f0c30a2635096eaf9da5a010645be120d3607d5f7be63b02b5"}, "url": "/docs/compare/?release=9.5.16#9.5.16-eb794b19b24b956c", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-791b5a9e6a6f72a3", "cves": [], "html": "<p>避免<code>contrib/intarray</code>的<code>gist__int_ops</code>索引支持在大型输入下崩溃和运行时间过长的问题（Andrew Gierth）</p>", "text": "避免contrib/intarray的gist__int_ops索引支持在大型输入下崩溃和运行时间过长的问题（Andrew Gierth）", "title": "避免contrib/intarray的gist__int_ops索引支持在大型输入下崩溃和运行时间过长的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "a402826996425792014de3d87a5c006e9e204c5d8174c83eda2a35456934f729", "section_path": ["变更"], "commit_groups": [["2e497ed23", "2f30b311d", "5f11a500f", "757c5182f", "e193fb991", "f0bfc7a2b"]], "identity_text": "Avoid crashes and excessive runtime with large inputs to contrib/intarray's gist__int_ops index support (Andrew Gierth)", "commit_aliases": ["2e497ed23", "2f30b311d", "5f11a500f", "757c5182f", "e193fb991", "f0bfc7a2b"], "source_commits": ["2f30b311d"], "source_entry_id": "9.4.21/changes/030", "db_id": "e16afb4ec1547edea943adb4b1999d71", "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91", "relations": [{"rule": 2, "type": "equivalent", "target": "35763572b5498b6720ca94621d06af46", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}}, {"rule": 2, "type": "equivalent", "target": "457ba9fee0f51ef77ce9f6d12c17dce3", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}}, {"rule": 2, "type": "equivalent", "target": "5bbebf444cc855fc74a5f10f052e6aaf", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}}, {"rule": 2, "type": "equivalent", "target": "e5e618310e7dddb6e6db3fabbc3054e9", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "e5e618310e7dddb6e6db3fabbc3054e9", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "避免向 contrib/intarray 的 gist__int_ops 索引支持代码提供大量输入时发生崩溃或运行时间过长", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}, "url": "/docs/compare/?release=11.2#11.2-f4030e8a81984f1f", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "457ba9fee0f51ef77ce9f6d12c17dce3", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "避免向 contrib/intarray 的 gist__int_ops 索引支持代码提供大量输入时发生崩溃或运行时间过长", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}, "url": "/docs/compare/?release=10.7#10.7-f4030e8a81984f1f", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "5bbebf444cc855fc74a5f10f052e6aaf", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}, "url": "/docs/compare/?release=9.6.12#9.6.12-7ba8f0749e9920f5", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "35763572b5498b6720ca94621d06af46", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间", "evidence": {"same_day": true, "patch_ids": ["862b3d2b14eb14439b1f23072c53f8d8"], "statement_hash": "25c9c9db3018edd06c81a384c659889a43ce41cb14478d2a40ee6f21fb231c91"}, "url": "/docs/compare/?release=9.5.16#9.5.16-7ba8f0749e9920f5", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-a6fe7657ac0911fa", "cves": [], "html": "<p>调整 <span>configure</span> 对线程相关编译器标志和库的选择，使其与后续 <span>PostgreSQL</span> 版本的做法一致（Tom Lane）</p>\n<p>此前 9.4 和 9.5 分支中使用的代码在一些较新的平台上彻底失败，因此将其与 9.6 及更高版本的做法同步。</p>", "text": "调整 configure 对线程相关编译器标志和库的选择，使其与后续 PostgreSQL 版本的做法一致（Tom Lane） 此前 9.4 和 9.5 分支中使用的代码在一些较新的平台上彻底失败，因此将其与 9.6 及更高版本的做法同步。", "title": "调整 configure 对线程相关编译器标志和库的选择，使其与后续 PostgreSQL 版本的做法一致", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "749285fb08ee268d32042acd8c8cd63df0218253df79a3e1c7f05ecb7cd2dcff", "section_path": ["变更"], "commit_groups": [["100535bba", "7c86b9431"]], "identity_text": "Adjust configure's selection of threading-related compiler flags and libraries to match what later PostgreSQL releases do (Tom Lane) The coding previously used in the 9.4 and 9.5 branches fails outright on some newer platforms, so sync it with what 9.6 and later have been doing.", "commit_aliases": ["100535bba", "7c86b9431"], "source_commits": ["7c86b9431"], "source_entry_id": "9.4.21/changes/031", "db_id": "8188a6b8aeabecd6654a925e8d0d45e8", "patch_ids": ["4a8d51718c132f5051710e4e95b08f6e"], "statement_hash": "6d6db8d52050ab877e0d6d0659950a47c0b04f62002a1487b59e6f04d992d93e", "relations": [{"rule": 2, "type": "equivalent", "target": "81462e8543a2870ca2b37cf35200fc6c", "evidence": {"same_day": true, "patch_ids": ["4a8d51718c132f5051710e4e95b08f6e"], "statement_hash": "6d6db8d52050ab877e0d6d0659950a47c0b04f62002a1487b59e6f04d992d93e"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "81462e8543a2870ca2b37cf35200fc6c", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "调整 configure 对线程相关编译器标志和库的选择，使其与后续 PostgreSQL 版本的做法一致", "evidence": {"same_day": true, "patch_ids": ["4a8d51718c132f5051710e4e95b08f6e"], "statement_hash": "6d6db8d52050ab877e0d6d0659950a47c0b04f62002a1487b59e6f04d992d93e"}, "url": "/docs/compare/?release=9.5.16#9.5.16-a6fe7657ac0911fa", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-292d711db799ce9b", "cves": [], "html": "<p>支持 <span>pgxs</span> 构建中的新 Makefile 变量 <code>PG_CFLAGS</code>、<code>PG_CXXFLAGS</code> 和 <code>PG_LDFLAGS</code>（Christoph Berg）</p>\n<p>这简化了扩展构建过程的自定义。</p>", "text": "支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS（Christoph Berg） 这简化了扩展构建过程的自定义。", "title": "支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "7b2785fa930108cedea55e915365ae481b7523f22c793a00de54d06522cb2c02", "section_path": ["变更"], "commit_groups": [["12ff406f3", "42b204db2", "5e63df827", "946430da6", "ac3a9afdb", "da14c9b19"]], "identity_text": "Support new Makefile variables PG_CFLAGS, PG_CXXFLAGS, and PG_LDFLAGS in pgxs builds (Christoph Berg) This simplifies customization of extension build processes.", "commit_aliases": ["12ff406f3", "42b204db2", "5e63df827", "946430da6", "ac3a9afdb", "da14c9b19"], "source_commits": ["42b204db2"], "source_entry_id": "9.4.21/changes/032", "db_id": "ea426904ed3ce354fd0b873bd95dae9f", "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad", "relations": [{"rule": 2, "type": "equivalent", "target": "49b22414c6b01d95f919cbef4b006901", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}}, {"rule": 2, "type": "equivalent", "target": "905aa0c9bcd5ae5bd19ffc3cb6d8b68f", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}}, {"rule": 2, "type": "equivalent", "target": "a0fbf30e3f583db5874a0438fb748310", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}}, {"rule": 2, "type": "equivalent", "target": "f154fe88c596f38aeac6bd613bc0c606", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "f154fe88c596f38aeac6bd613bc0c606", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "在 pgxs 构建中支持新的 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}, "url": "/docs/compare/?release=11.2#11.2-2a0601e9442e6eef", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "a0fbf30e3f583db5874a0438fb748310", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "在 pgxs 构建中支持新的 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}, "url": "/docs/compare/?release=10.7#10.7-2a0601e9442e6eef", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "49b22414c6b01d95f919cbef4b006901", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}, "url": "/docs/compare/?release=9.6.12#9.6.12-292d711db799ce9b", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "905aa0c9bcd5ae5bd19ffc3cb6d8b68f", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS", "evidence": {"same_day": true, "patch_ids": ["ce4a810a3179bfb02a9c7783c12b18df"], "statement_hash": "4b60fa6125a36c0310cff0cd9db1a2cdc82bf67a538a3c9ce8381a23788bc2ad"}, "url": "/docs/compare/?release=9.5.16#9.5.16-292d711db799ce9b", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-7685e24a3edc3845", "cves": [], "html": "<p>修复 Perl 编写的构建脚本，不再假设搜索路径中包含<span>“<span><code>.</code></span>”</span>，因为较新的 Perl 版本不再默认包含它（Andrew Dunstan）</p>", "text": "修复 Perl 编写的构建脚本，不再假设搜索路径中包含“.”，因为较新的 Perl 版本不再默认包含它（Andrew Dunstan）", "title": "修复 Perl 编写的构建脚本，不再假设搜索路径中包含“.”，因为较新的 Perl 版本不再默认包含它", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "73fdc40a18fc02d73ed927d7f777a154f2799af4c81ade55afe4d1b2de9005f4", "section_path": ["变更"], "commit_groups": [["11f11e1e0", "13e95662c", "1f28906bf", "324c92646", "592123efb", "8d2741452"], ["1a6244216", "2689e8e33", "42345284c", "59927f99a", "77173d0cc", "f83419b73"], ["1fbb9bda0", "4e7a51302", "772d4b769", "7a3763318", "a25b04933", "f884a9681"], ["51884fa16", "a82ca6ffb", "be037c11b"]], "identity_text": "Fix Perl-coded build scripts to not assume . is in the search path, since recent Perl versions don't include that (Andrew Dunstan)", "commit_aliases": ["11f11e1e0", "13e95662c", "1a6244216", "1f28906bf", "1fbb9bda0", "2689e8e33", "324c92646", "42345284c", "4e7a51302", "51884fa16", "592123efb", "59927f99a", "77173d0cc", "772d4b769", "7a3763318", "8d2741452", "a25b04933", "a82ca6ffb", "be037c11b", "f83419b73", "f884a9681"], "source_commits": ["13e95662c", "2689e8e33", "51884fa16", "7a3763318"], "source_entry_id": "9.4.21/changes/033", "db_id": "e63b82ea5dc747d39c5403bb23e8d64b", "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69", "relations": [{"rule": 2, "type": "equivalent", "target": "5feff61c5da811b9505a77ce4704cdc9", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}}, {"rule": 2, "type": "equivalent", "target": "babf771f2176629b4e9c39611c62f1e2", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}}, {"rule": 2, "type": "equivalent", "target": "be020029fbce24265349fdbd6c61fd12", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}}, {"rule": 2, "type": "equivalent", "target": "dbce47d7369084d0a50658e294a60595", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "babf771f2176629b4e9c39611c62f1e2", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复以 Perl 编写的构建脚本，使其不再假定搜索路径包含 “.”，因为近期 Perl 版本已不再包含它", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}, "url": "/docs/compare/?release=11.2#11.2-fd47fb5d8b943bc2", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "5feff61c5da811b9505a77ce4704cdc9", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复以 Perl 编写的构建脚本，使其不再假定搜索路径包含 “.”，因为近期 Perl 版本已不再包含它", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}, "url": "/docs/compare/?release=10.7#10.7-fd47fb5d8b943bc2", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "dbce47d7369084d0a50658e294a60595", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复 Perl 编写的构建脚本不假定 “.” 在搜索路径中，因为最近的 Perl 版本不包含它", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}, "url": "/docs/compare/?release=9.6.12#9.6.12-ae1e70912cb0a143", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "be020029fbce24265349fdbd6c61fd12", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复 Perl 编写的构建脚本不假定 “.” 在搜索路径中，因为最近的 Perl 版本不包含它", "evidence": {"same_day": true, "patch_ids": ["0ded4067d557dad634afe0d73dc977e1", "48ae0597594a2b9db7c6f100401cd710", "9f3b6053bfeb993875e9ed0618925e2c", "ad3c5cc2c6849ea5370e52c293300028"], "statement_hash": "ddf2130d130aed3bffc4bc8148913acede169b5d15ea7632d5bcc2d83e4bad69"}, "url": "/docs/compare/?release=9.5.16#9.5.16-ae1e70912cb0a143", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-11741a01130df4fc", "cves": [], "html": "<p>修复 OpenBSD 上服务器命令行选项解析的问题（Tom Lane）</p>", "text": "修复 OpenBSD 上服务器命令行选项解析的问题（Tom Lane）", "title": "修复 OpenBSD 上服务器命令行选项解析的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "4bdf8709e7856c624af06e9cd01025016bb2e54c84dfebcc0de4c9e1138d9cfb", "section_path": ["变更"], "commit_groups": [["139e42742", "167ba6b15", "69bcd718d", "b161ffe31", "dc2dee438", "e4ffa0dcb"]], "identity_text": "Fix server command-line option parsing problems on OpenBSD (Tom Lane)", "commit_aliases": ["139e42742", "167ba6b15", "69bcd718d", "b161ffe31", "dc2dee438", "e4ffa0dcb"], "source_commits": ["b161ffe31"], "source_entry_id": "9.4.21/changes/034", "db_id": "ac12c45ea23584595c82886f75e5a3f5", "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414", "relations": [{"rule": 2, "type": "equivalent", "target": "4d069c7e918437549867fde24d7f25f9", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}}, {"rule": 2, "type": "equivalent", "target": "65db162d02c4b6854b98a2a7673e3435", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}}, {"rule": 2, "type": "equivalent", "target": "74b4e5f3c8390541ea96e4142d96711e", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}}, {"rule": 2, "type": "equivalent", "target": "bf70a1754599d33d8fed5b4a84a1c76a", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}}], "version": "9.4.21", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bf70a1754599d33d8fed5b4a84a1c76a", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "修复 OpenBSD 上服务器命令行选项的解析问题", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}, "url": "/docs/compare/?release=11.2#11.2-27240ef7394d27c4", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "65db162d02c4b6854b98a2a7673e3435", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "修复 OpenBSD 上服务器命令行选项的解析问题", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}, "url": "/docs/compare/?release=10.7#10.7-27240ef7394d27c4", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "4d069c7e918437549867fde24d7f25f9", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "修复 OpenBSD 上服务器命令行选项解析的问题", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}, "url": "/docs/compare/?release=9.6.12#9.6.12-11741a01130df4fc", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "74b4e5f3c8390541ea96e4142d96711e", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "修复 OpenBSD 上服务器命令行选项解析的问题", "evidence": {"same_day": true, "patch_ids": ["bba58387f09acc5f86949d2b8323329d"], "statement_hash": "02c0d40cb597c765b8f274fd3040575740751391f76a68a2e33188621dd6f414"}, "url": "/docs/compare/?release=9.5.16#9.5.16-11741a01130df4fc", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}, {"id": "9.4.21-b36be6f5324a6314", "cves": [], "html": "<p>更新时区数据文件到 <span>tzdata</span> 版本 2018i，涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二，创建了新时区 Asia/Qostanay，因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。</p>", "text": "更新时区数据文件到 tzdata 版本 2018i，涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二，创建了新时区 Asia/Qostanay，因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。", "title": "更新时区数据文件到 tzdata 版本 2018i，涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二，创建了新时区 Asia/Qostanay，因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.21/#id-1.11.6.10.6", "source_hash": "2585d8863c5519134f1915e343cacfe296bf87379c58e3b19246e526502b99d6", "section_path": ["变更"], "commit_groups": [["09c5f045c", "4232a650b", "46b454096", "a683df403", "d63dc0aa0", "f6db9f8ab"]], "identity_text": "Update time zone data files to tzdata release 2018i for DST law changes in Kazakhstan, Metlakatla, and Sao Tome and Principe. Kazakhstan's Qyzylorda zone is split in two, creating a new zone Asia/Qostanay, as some areas did not change UTC offset. Historical corrections for Hong Kong and numerous Pacific islands.", "commit_aliases": ["09c5f045c", "4232a650b", "46b454096", "a683df403", "d63dc0aa0", "f6db9f8ab"], "source_commits": ["a683df403"], "source_entry_id": "9.4.21/changes/035", "db_id": "9e69c9f4cb374d08796dba2770b5fb49", "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895", "relations": [{"rule": 2, "type": "equivalent", "target": "712c715b99423912677db044780ae49c", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}}, {"rule": 2, "type": "equivalent", "target": "7f0d750645e2c102237305043ce3b2be", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}}, {"rule": 2, "type": "equivalent", "target": "8fe8423f1e22b0dc72ef463701d7b1ce", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}}, {"rule": 2, "type": "equivalent", "target": "d5351f963ffd87df9396537ed3ee15ae", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}}], "version": "9.4.21", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "712c715b99423912677db044780ae49c", "kind": "equivalent", "version": "11.2", "label": "11.2", "title": "将时区数据文件更新到 tzdata 2018i 版，以反映哈萨克斯坦、梅特拉卡特拉及圣多美和普林西比的夏令时法规变更。由于部分地区未更改 UTC 偏移量，哈萨克斯坦的 Qyzylorda 时区被一分为二，创建了新时区 Asia/Qostanay。同时修正了香港及众多太平洋岛屿的历史数据。", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}, "url": "/docs/compare/?release=11.2#11.2-1375076aa0ed6bb5", "source_url": "/docs/release/11.2/#id-1.11.6.25.5"}, {"db_id": "7f0d750645e2c102237305043ce3b2be", "kind": "equivalent", "version": "10.7", "label": "10.7", "title": "将时区数据文件更新到 tzdata 2018i 版，以反映哈萨克斯坦、梅特拉卡特拉及圣多美和普林西比的夏令时法规变更。由于部分地区未更改 UTC 偏移量，哈萨克斯坦的 Qyzylorda 时区被一分为二，创建了新时区 Asia/Qostanay。同时修正了香港及众多太平洋岛屿的历史数据。", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}, "url": "/docs/compare/?release=10.7#10.7-1375076aa0ed6bb5", "source_url": "/docs/release/10.7/#id-1.11.6.21.5"}, {"db_id": "d5351f963ffd87df9396537ed3ee15ae", "kind": "equivalent", "version": "9.6.12", "label": "9.6.12", "title": "更新时区数据文件到 tzdata 版本 2018i，涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二，创建了新时区 Asia/Qostanay，因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}, "url": "/docs/compare/?release=9.6.12#9.6.12-b36be6f5324a6314", "source_url": "/docs/release/9.6.12/#id-1.11.6.17.5"}, {"db_id": "8fe8423f1e22b0dc72ef463701d7b1ce", "kind": "equivalent", "version": "9.5.16", "label": "9.5.16", "title": "更新时区数据文件到 tzdata 版本 2018i，涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二，创建了新时区 Asia/Qostanay，因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。", "evidence": {"same_day": true, "patch_ids": ["600522b7a4fbb2aa981b105b9de13502"], "statement_hash": "10d03897798403ffce249e08c73faf46d13fdff611b447ec34239e94ca7c8895"}, "url": "/docs/compare/?release=9.5.16#9.5.16-b36be6f5324a6314", "source_url": "/docs/release/9.5.16/#id-1.11.6.14.5"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 35}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 19}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 16}], "total": 35, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 35, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}